Los ingenieros son muy aficionados a las medidas y los números. Por lo tanto, no es sorprendente que estén tratando de medir en forma numérica algo tan trivial como la calidad del código.

Las métricas para evaluar los textos de los programas se han inventado mucho, desde el número banal de líneas de código en el proyecto hasta el no tan obvio "Índice de Mantenibilidad". Los detalles sobre todos los métodos existentes para recubrir el código con todo tipo de métricas se pueden encontrar en este artículo .
El mundo de Python, por supuesto, tiene su propio elemento para evaluar la calidad del código. Se llama radón . Está escrito en el mismo Python y funciona exclusivamente con archivos pequeños.
Nos lo ponemos
pip install radon
Vamos a la carpeta con su código y comenzamos a medir.
Estadísticas sin procesar
Recuento banal del número de líneas en la fuente. Y también el número de líneas que contienen directamente el código y el número de líneas de comentarios. Métrica no muy informativa, pero se requiere para realizar más cálculos.
radon raw ./
En respuesta, se caerá una lista de archivos en el proyecto y estadísticas para cada archivo.
Complejidad ciclomática
Cuantas más transiciones (if-else), bucles, generadores, manejadores de excepciones y operadores lógicos en el código, más opciones tiene el programa y más difícil es tener en cuenta varios estados del sistema. Una métrica que mide la complejidad de un código en función del número de estas operaciones se denomina complejidad ciclomática de un programa .
Se considera un equipo.
radon cc ./
En respuesta, recibirá una lista de archivos, clases, métodos y funciones en su proyecto y su índice de complejidad, de muy simple a muy complejo. El índice indicará lugares sobrecargados de lógica que pueden dividirse en partes más pequeñas, simplificadas o reescritas (si es posible, el algoritmo puede ser muy complejo en sí mismo y los intentos de dividirlo en partes solo pueden empeorar la legibilidad del código).
Métricas de Halstead
Aquí consideramos el número de operadores y operandos únicos en el código y su número total. Los valores obtenidos se sustituyen en las fórmulas y se obtiene un conjunto de números que describe la complejidad del programa y la cantidad de esfuerzo que supuestamente se dedica a escribir y comprender el código.
radon hal ./
Índice de soporte de código
Este índice nos dice lo difícil que será mantener o editar una parte del programa. Este parámetro se calcula en función de los números obtenidos de las métricas calculadas anteriormente.
radon mi ./
En respuesta, obtenemos una lista de archivos en el proyecto y su índice de soporte, de ligero a muy pesado.
Los algoritmos detallados para calcular métricas y documentación para ellos se pueden encontrar aquí .
¿Dónde está todo esto?
Por supuesto, es imposible sacar conclusiones sobre la calidad del código, basándose únicamente en métricas numéricas. Pero en algunos casos, una evaluación rápida con radón puede ser útil.
- Debe revisar una gran cantidad de código y no hay tiempo para dedicar mucha atención a cada archivo individualmente. La ejecución de las pruebas le permitirá ver la función en la que el recién llegado junior regó 40 condiciones anidadas.
- Debe dirigir el desarrollo de una gran cantidad de microservicios, divididos en pequeños proyectos. Una evaluación rápida (posiblemente incluso en modo automático) le permitirá encontrar lugares potencialmente problemáticos y revisarlos manualmente.
- Por supuesto, ejecute pruebas en bibliotecas de código abierto (especialmente algunas soluciones no tan populares con una comunidad pequeña).
Cognitivamente? Si Útil y necesario? Quizás a veces, quizás en ciertos casos.
Para poner, jugar, ejecutar una métrica en un par de sus proyectos, escribir un pequeño guión y conectarlo a las confirmaciones. Quizás un buen proyecto para la noche.