Ho ereditato un enorme numero di codici in cui ho bisogno di apportare alcune piccole modifiche. Mi chiedevo se ci sono programmi di utilità che analizzino il codice Python e forniscano dipendenze tra le funzioni, perché se apporto modifiche a una funzione, voglio essere sicuro di non interrompere altre funzioni, quindi se potessi vedere in un grafico come il diagramma mi renderebbe la vita più facileCreazione di grafici delle dipendenze in Python
risposta
- Di solito "dipendenza" è definita per importazione modulo/pacchetto.
Quello che stai cercando è una visualizzazione del flusso di chiamate.
È possibile ancora non garantisce che non sarà possibile interrompere la funzionalità :)
mia esperienza e la soluzione:
Molte volte, ho trovato il flusso di chiamate dati schiaccianti e il diagramma troppo complesso. Quindi quello che faccio di solito è tracciare il flusso di chiamate parzialmente per la funzione, mi interessa.
Questo viene fatto utilizzando la funzione sys.settrace (...). Dopo aver generato i flussi di chiamata come dati testuali, ho generato un grafico di chiamata utilizzando graphviz.
- http://docs.python.org/library/sys.html
- On call tracing
- Per generare grafici, utilizzare soluzioni graphviz da networkX.
[Edit: sulla base dei commenti]
Quindi la mia soluzione frammentaria funziona meglio. Basta inserire il codice e utilizzare il decoratore su una funzione che si desidera tracciare. Vedrete le lacune in cui la differita entra in scena ma che può essere risolta. Non otterrai l'immagine completa direttamente.
Ho cercato di farlo e ho fatto un few post che funziona su quella comprensione.
+1 per l'ultimo punto sulle garanzie. Sarei molto colpito se potesse seguire gran parte del tipo di codice che utilizza un sacco di HOF e altre caratteristiche dinamiche. Immagino che sarebbe utile soprattutto per valutare il lavoro dei programmatori che non sono abbastanza intelligenti da usare tali funzioni o abbastanza intelligenti da non farlo. – aaronasterling
Non sto cercando un proiettile d'argento. Quello che sto cercando è più di darmi un'idea generale. – anijhaw
@anijhaw: Allora hai capito. :) pycallgraph dovrebbe fare il tuo lavoro. Ho anche fornito la soluzione che uso più frequentemente per imparare cosa sta succedendo. Questo può essere reso difficile però. Prova a rintracciare le chiamate in un'applicazione contorta. – pyfunc
- 1. Esclusione di intestazioni specifiche dai grafici delle dipendenze
- 2. Python una delle molte dipendenze
- 3. Confronto di velocità delle librerie di creazione di grafici JavaScript
- 4. Buon framework per la creazione di grafici live in Python?
- 5. R grafici: creazione delle linee di barre orizzontali di Tufte
- 6. Creazione di grafici di rete
- 7. Creazione di un AntiForgeryToken tramite Iniezione delle dipendenze
- 8. Creazione di grafici Excel in Java
- 9. Grafici di controllo in Python
- 10. Gestione delle dipendenze delle promesse
- 11. Creazione di grafici su un iPad/iPhone
- 12. Creazione dinamica di grafici con jQuery
- 13. Specifica delle dipendenze opzionali in pypi python setup.py
- 14. Test delle versioni delle dipendenze in maven
- 15. Ordine in legenda grafici python
- 16. Gestione delle dipendenze delle formiche
- 17. installazione delle dipendenze in haskell
- 18. Risoluzione delle dipendenze in Linux
- 19. Creazione di grafici fitdist con ggplot2
- 20. Styling la creazione di grafici asp.net controlla
- 21. Disegno di grafici cluster in Python
- 22. Libreria Python per la creazione di grafici ad albero da oggetti Python annidati (dicts)
- 23. Iniettare l'iniettore delle dipendenze usando l'iniezione delle dipendenze
- 24. Individuazione delle dipendenze di makefile
- 25. Iniezione delle dipendenze nelle prove
- 26. Shimming dipendenze delle dipendenze con browserify-shim
- 27. Ldd mostra anche le dipendenze delle dipendenze?
- 28. DDD, gestione delle dipendenze
- 29. AngularJS: Gestione delle dipendenze
- 30. Gestione delle dipendenze JavaScript
Vedere anche http://stackoverflow.com/questions/798389/python-tool-that-builds-a-dipendency-diagram-for-methods-of-a-class – Vanuan