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.