Pregunta

Tengo un gran repositorio de fuentes dividido en varios proyectos.Me gustaría producir un informe sobre la salud del código fuente, identificando áreas problemáticas que deben abordarse.

Específicamente, me gustaría señalar rutinas con una alta complejidad ciclomática, identificar repeticiones y tal vez ejecutar algún análisis estático similar a una pelusa para detectar construcciones sospechosas (y, por lo tanto, probablemente erróneas).

¿Cómo podría hacer para elaborar un informe de este tipo?

¿Fue útil?

Solución

Para medir la complejidad ciclomática, hay una buena herramienta disponible en traceback.org.La página también ofrece una buena descripción general de cómo interpretar los resultados.

+1 para pylint.Es excelente para verificar el cumplimiento de los estándares de codificación (ya sea pep8 o la variante de su propia organización), lo que al final puede ayudar a reducir la complejidad ciclomática.

Otros consejos

Para complejidad ciclomática puedes usar radon: https://github.com/rubik/radon

(Usar pip para instalarlo: pip install radon)

Además también tiene estas características:

  • métricas sin procesar (estas incluyen SLOC, líneas de comentarios, líneas en blanco, etc.)
  • Métricas de Halstead (todas)
  • Índice de mantenibilidad (el que se usa en Visual Studio)

Para el análisis estático existe pylint y pychecker.Personalmente uso pylint porque parece ser más completo que pychecker.

Para complejidad ciclomática puedes probar este programa perl, o esto artículo que introduce un programa Python para hacer lo mismo

¡Pycana funciona de maravilla cuando necesitas comprender un nuevo proyecto!

PyCAna (Python Code Analyzer) es un nombre elegante para un analizador de código simple para Python que crea un diagrama de clase después de ejecutar su código.

Mira cómo funciona:http://pycana.sourceforge.net/

producción:

texto alternativo http://pycana.sourceforge.net/relations.png

Gracias a Pydev, puede integrar pylint en el IDE de eclipse realmente fácilmente y obtenga un informe de código cada vez que guarde un archivo modificado.

Usar escama8, que proporciona pep8, pyflakes y análisis de complejidad ciclomática en una sola herramienta

Hay una herramienta llamadaClonDigger que le ayuda a encontrar fragmentos de código similares.

Para comprobar la complejidad ciclomática, existe por supuesto la mccabe paquete.

Instalación:

$ pip install --upgrade mccabe

Uso:

$ python -m mccabe --min=6 path/to/myfile.py

Tenga en cuenta el umbral de 6 anterior.Por esta respuesta, las puntuaciones >5 probablemente deberían simplificarse.

Salida de muestra con --min=3:

68:1: 'Fetcher.fetch' 3
48:1: 'Fetcher._read_dom_tag' 3
103:1: 'main' 3

Opcionalmente también se puede utilizar a través de pylint-mccabe o pytest-mccabe, etc.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top