tiempo - python graficos 2d
¿Cómo puede encontrar funciones no utilizadas en el código de Python? (5)
Así que tienes algún código heredado en un proyecto bastante pesado. ¿Cómo puedes encontrar y eliminar funciones muertas?
He visto estas dos referencias: Buscar código no utilizado y Herramienta para encontrar funciones no utilizadas en el proyecto php , pero parecen específicas para C # y PHP, respectivamente.
¿Hay alguna herramienta de Python que te ayude a encontrar funciones que no están referenciadas en ningún otro lugar del código fuente (a pesar de la reflexión / etc.)?
Debido a la forma bastante estricta en que se presenta el código python, ¿sería tan difícil crear una lista de funciones basada en una expresión regular que buscara def function_name(..)
?
Y luego busca cada nombre y calcula cuántas veces aparece en el código. Naturalmente, no se tomarían en cuenta los comentarios, pero siempre que se tengan en cuenta funciones con menos de dos o tres instancias ...
Es un poco espartano pero suena como una agradable tarea de fin de semana soñoliento =)
a menos que sepas que tu código usa reflexión, como dijiste, buscaría un grep trivial. No subestime el poder del asterisco en vim también (realiza una búsqueda de la palabra que tiene debajo del cursor en el archivo), aunque esto está limitado solo al archivo que está editando actualmente.
Otra solución que podría implementar es tener una muy buena suite de pruebas (por desgracia, desafortunadamente) y luego ajustar la rutina con una rutina de desaprobación. si obtienes la salida de desaprobación, significa que se llamó a la rutina, por lo que todavía se usa en alguna parte. Esto funciona incluso para el comportamiento de reflexión, pero, por supuesto, nunca puede estar seguro si no desencadena la situación cuando se realiza la llamada de rutina.
pylint puede hacer lo que quieras.
En python puede encontrar el código no utilizado mediante el uso de analizadores de código dinámico o estático. Dos ejemplos para los analizadores dinámicos son coverage
y figleaf
. Tienen el inconveniente de que debe ejecutar todas las ramas posibles de su código para encontrar las partes no utilizadas, pero también tienen la ventaja de que obtiene resultados muy confiables.
Alternativamente, puede usar analizadores de código estático que solo miran su código, pero en realidad no lo ejecutan. Funcionan mucho más rápido, pero debido a la naturaleza dinámica de Python, los resultados no son 100% precisos, por lo que es posible que desee verificarlos dos veces. Dos herramientas que vienen a la mente son los pyflakes
y el vulture
. Son complementarios: Pyflakes encuentra las importaciones no utilizadas y las variables locales no utilizadas, mientras que buitre encuentra funciones, métodos, clases, variables y atributos no utilizados.
Las herramientas están disponibles en el Python Package Index http://pypi.python.org/pypi .