J'ai hérité d'une énorme base de code dans laquelle j'ai besoin de faire de petits changements. Je me demandais s'il y a des utilitaires qui analyseraient le code python et donneraient des dépendances entre les fonctions, comme si je faisais des changements à une fonction je veux être sûr de ne pas casser d'autres fonctions, donc si je pouvais voir dans un diagramme rendrait ma vie plus facile.Création de graphes de dépendances en Python
Répondre
- Habituellement, la "dépendance" est définie pour l'importation de module/paquet.
Ce que vous cherchez est un flux d'appel de visualisation.
Vous ne pouvez toujours pas garantir que vous ne cassera pas la fonctionnalité :)
Mon expérience et de solution:
Plus d'une fois, j'ai trouvé le flux d'appels données écrasantes et le diagramme trop complexe. Donc ce que je fais habituellement est de suivre le flux d'appels partiellement pour la fonction, je suis intéressé.
Ceci est fait en utilisant la fonction sys.settrace (...). Après avoir généré les flux d'appels sous forme de données textuelles, je génère un graphique d'appel en utilisant graphviz.
- http://docs.python.org/library/sys.html
- On call tracing
- Pour générer des graphiques, utiliser des solutions de graphviz de networkX.
[Edit: en fonction des commentaires]
Ensuite, ma solution fragmentaire fonctionne mieux. Il suffit d'insérer le code et d'utiliser le décorateur sur une fonction que vous souhaitez tracer. Vous verrez des lacunes où différé entre en image mais cela peut être résolu. Vous n'obtiendrez pas l'image complète directement.
J'ai essayé de faire cela et j'ai fait un few post qui fonctionne sur cette compréhension.
+1 pour le dernier point sur les garanties. Je serais très impressionné si cela pouvait suivre une grande partie du type de code qui utilise beaucoup de fonctionnalités HOF et autres dynamiques. J'imagine que ce serait utile surtout pour évaluer le travail des programmeurs qui ne sont pas assez intelligents pour utiliser de telles fonctionnalités ou assez intelligents pour ne pas le faire. – aaronasterling
Je ne cherche pas de solution miracle. Ce que je cherche, c'est plus pour me donner une idée générale. – anijhaw
@anijhaw: Alors vous l'avez. :) pycallgraph devrait faire votre travail. J'ai également fourni la solution que j'utilise plus fréquemment pour apprendre ce qui se passe. Cela peut être rendu difficile cependant. Essayez de suivre les appels dans une application tordue. – pyfunc
- 1. Profileurs de graphes d'appel en Python
- 2. Python: outil de visualisation pour les graphes
- 3. Création de threads en python
- 4. Création de liste en python
- 5. Création de dépendances dans Xcode 4
- 6. Graphes en temps réel
- 7. partitionnement de digrammes en sous-graphes
- 8. Bibliothèque de graphes Java pour comparer 2 graphes
- 9. Création d'acronymes en Python
- 10. Python-dépendances, windows (CMake)
- 11. Création d'une liste de fonctions en python
- 12. Création d'intervalles de date en Python
- 13. Création de profils utilisateur en Python
- 14. Création de fonctions dynamiques en Python
- 15. Python: Création de répertoires
- 16. Création de dépendances de projet Visual Studio sans références?
- 17. Algorithme de découverte de corrélation de graphes
- 18. Génération de la forêt de graphes BFS
- 19. Création dynamique de classes - Python
- 20. Création conditionnelle de classe (Python)
- 21. Injection de dépendances en PHP
- 22. Optimisation de la disposition des graphes en C#
- 23. La bibliothèque de graphes Jung2 peut-elle parcourir un digramme?
- 24. Test des dépendances du module Python en cours d'installation
- 25. Théorème des graphes de Kowalski prouvant
- 26. Qu'est-ce qu'une "sculpture de graphes"?
- 27. GraphViz: quelle bibliothèque de graphes utiliser?
- 28. Algorithme d'espacement des graphes
- 29. Une question de code dans la théorie des graphes de python essais
- 30. Graphes 3D utilisant pChart
Voir aussi http://stackoverflow.com/questions/798389/python-tool-that-builds-a-dependency-diagram-for-methods-of-a-class – Vanuan