Petty little joy # 4: Radon - qualidade do código medida em números

Os engenheiros gostam muito de medições e números. Portanto, não é surpreendente que eles estejam tentando medir de forma numérica algo não trivial como a qualidade do código.



As métricas para avaliar os textos dos programas foram bastante inventadas - desde o número banal de linhas de código no projeto até o não tão óbvio "Índice de Manutenção". Detalhes sobre todos os métodos existentes para cobrir o código com todos os tipos de métricas podem ser encontrados neste artigo .


O mundo Python, é claro, tem seu próprio objetivo na avaliação da qualidade do código. É chamado radônio . É escrito no mesmo Python e funciona exclusivamente com arquivos pequenos.


Nós colocamos isso para nós mesmos


pip install radon 

Vamos para a pasta com seu código e começamos a medir.


Estatísticas brutas


Contagem banal do número de linhas na fonte. E também o número de linhas que contêm diretamente o código e o número de linhas de comentário. Métrica não muito informativa, mas é necessária para cálculos adicionais.


 radon raw ./ 

Em resposta, uma lista de arquivos no projeto e estatísticas para cada arquivo cairão.


Complexidade ciclomática


Quanto mais transições (if-else), loops, geradores, manipuladores de exceção e operadores lógicos no código, mais opções o programa tem e mais difícil é manter em mente vários estados do sistema. Uma métrica que mede a complexidade de um código com base no número dessas operações é chamada de complexidade ciclomática de um programa .


É considerado uma equipe.


 radon cc ./ 

Em resposta, você receberá uma lista de arquivos, classes, métodos e funções em seu projeto e seu índice de complexidade, de muito simples a muito complexo. O índice indicará lugares sobrecarregados de lógica que podem ser divididos em partes menores, simplificados ou reescritos (se possível, o algoritmo pode ser muito complexo por si só e as tentativas de quebrá-lo em partes podem apenas piorar a compreensibilidade do código).


Métricas de Halstead


Aqui, consideramos o número de operadores e operandos exclusivos no código e seu número total. Os valores obtidos são substituídos nas fórmulas e é obtido um conjunto de números que descreve a complexidade do programa e a quantidade de esforço que supostamente é gasto na escrita e compreensão do código.


 radon hal ./ 

Índice de Suporte de Código


Esse índice nos diz o quão difícil será manter ou editar uma parte do programa. Este parâmetro é calculado com base nos números obtidos das métricas calculadas acima.


 radon mi ./ 

Em resposta, obtemos uma lista de arquivos no projeto e seu índice de suporte, de leve a muito pesado.


Algoritmos detalhados para calcular métricas e documentação para eles podem ser encontrados aqui .


Onde está tudo isso?


Obviamente, é impossível tirar conclusões sobre a qualidade do código, baseando-se apenas em métricas numéricas. Mas, em alguns casos, uma avaliação rápida com radônio pode ser útil.


  • Você precisa revisar uma grande quantidade de código e não há tempo para dedicar muita atenção a cada arquivo individualmente. A execução dos testes permitirá que você veja a função na qual o novato junior eliminou 40 condições aninhadas.
  • Você precisa orientar o desenvolvimento de um grande número de microsserviços, divididos em pequenos projetos. Uma avaliação rápida (possivelmente até no modo automático) permitirá que você encontre lugares potencialmente problemáticos e os revise manualmente.
  • Obviamente, execute testes em bibliotecas de código aberto (especialmente algumas soluções não muito populares com uma pequena comunidade).

Cognitivamente? Sim Útil e necessário? Talvez às vezes, talvez em certos casos.


Para colocar, reproduzir, executar alguns de seus projetos através de métricas, escrever um pequeno script e conectá-lo ao commit? Talvez um bom projeto para a noite.

Source: https://habr.com/ru/post/pt456150/


All Articles