83 votes

Comment pouvez-vous trouver des fonctions inutilisées dans le code Python?

Donc, vous avez un code existant qui traînent dans un assez lourd projet. Comment pouvez-vous trouver et supprimer les dead fonctions?

J'ai vu ces deux références: Trouver code inutilisé et Outil pour trouver des fonctions inutilisées dans le projet php, mais ils semblent spécifiques à la C# et PHP, respectivement.

Est-il un Python outil qui va vous aider à trouver les fonctions qui ne sont pas référencés nulle part ailleurs dans le code source (à l'exception de réflexion/etc.)?

125voto

Jendrik Points 196

En python, vous pouvez trouver de code inutilisé par l'aide de dynamique ou statique des analyseurs de code. Deux exemples pour la dynamique analyseurs de couverture et figleaf. Ils ont l'inconvénient de ce que vous avez à courir tous les possibles branches de votre code afin de trouver des parties non utilisées, mais elles ont aussi l'avantage que vous obtenez des résultats très fiables.

Alternativement, vous pouvez utiliser des analyseurs de code, qu'il suffit de regarder ton code, mais n'ont pas réellement l'exécuter. Ceci a l'avantage qu'ils s'exécutent beaucoup plus rapidement, mais en raison de python est dynamique et les résultats ne sont pas 100% précis et vous pouvez double-vérifier. Deux outils qui vous viennent à l'esprit, voici pyflakes et vautour. Ils sont complémentaires: Pyflakes trouve inutilisés importations et inutilisés, les variables locales, tandis que le vautour trouve des fonctions inutilisées, les méthodes, les classes, les variables et les attributs.

Les outils sont tous disponibles à l'Python Package Index http://pypi.python.org/pypi.

6voto

Anonymous Points 1568

Pylint peut faire ce que tu veux.

4voto

Noah Points 3398

Je ne suis pas sûr que cela soit utile, mais vous pouvez essayer d'utiliser la couverture , figleaf ou d'autres modules similaires, qui enregistrent les parties de votre code source utilisées lors de l'exécution de vos scripts / applications.

3voto

Oli Points 65050

En raison de la présentation assez stricte du code python, serait-il si difficile de construire une liste de fonctions basée sur une regex recherchant def function_name(..) ?

Ensuite, recherchez chaque nom et indiquez le nombre de fois qu’il figure dans le code. Cela ne prendrait naturellement pas en compte les commentaires, mais tant que vous examinerez les fonctions comportant moins de deux ou trois instances ...

C'est un peu spartiate mais cela ressemble à une belle tâche de fin de semaine endormie =)

2voto

Stefano Borini Points 36904

sauf si vous savez que votre code utilise la réflexion, comme vous l'avez dit, je pencherais pour un trivial grep. Ne sous-estimez pas la puissance de l'astérisque dans vim ainsi () effectue une recherche du mot que vous avez sous votre curseur dans le fichier), mais ce n'est limitée que dans le fichier en cours d'édition.

Une autre solution pourrait mettre en œuvre est d'avoir un très bon testsuite (rarement, malheureusement), puis les envelopper la routine avec une dépréciation de la routine. si vous obtenez la désapprobation de sortie, cela signifie que la routine a été appelé, de sorte qu'il est encore utilisé de quelque part. Cela fonctionne même pour la réflexion comportement, mais bien sûr, vous ne pouvez jamais être sûr si vous ne déclenchent pas la situation au moment de votre appel de routine est effectuée.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X