Domanda

Sto cercando un'utilità simile a gprof che genererà un call graph per PHP codice. Preferirei qualcosa che possa produrre un output grafico, o almeno un output di testo che possa essere interpretato da GraphViz o simili, ma mi accontenterò di un output di testo semplice.

Qualcuno sa di qualsiasi strumento in grado di farlo?

È stato utile?

Soluzione

Proverei sicuramente Doxygen . Ha il supporto per PHP e i grafici delle chiamate e i grafici dei chiamanti che ha creato sono stati molto utili nell'esplorazione di "codice straniero" per me in precedenza.

Esempio di grafico di chiamata doxygen

Altri suggerimenti

Non sono sicuro che esista qualcosa che possa analizzare il codice sorgente scritto in PHP per generarlo ... Ma c'è una possibilità, quando si esegue il codice.

Potresti dare un'occhiata all'estensione Xdebug : porta profiling su PHP e genera file simili a callgrind, che possono essere letti con KCacheGrind su Linux.

E questo è in grado di generare una sorta di callgraph.


Può anche essere integrato con PHPUNit, per generare copertura del codice durante l'esecuzione di unit test
Qualche tempo fa, PHPUnit è stato in grado di generare alcuni callgraph con graphviz; Non trovo più questa opzione, però :-(


EDIT: è la prima volta che ne sento parlare, ma c'è un progetto chiamato phpCallGraph che potrebbe essere in grado di aiutarti anche tu ... e sembra che ci sia lavoro in corso, se lo guardo log delle modifiche

Come già notato, Doxygen può generare grafici di chiamata.

Xdebug può generare tracce di funzioni . Questi differiscono dai grafici di doxygen in quanto sono generati dal codice di runtime, mentre doxygen è generato staticamente. Non conosco strumenti che possano trasformare le tracce della funzione in una rappresentazione visiva, anche se non dovrebbe essere così difficile da fare.

Esiste anche l'estensione bytekit , la cui funzione principale è mostrare il bytecode che il codice sorgente php creare. Può mostrarlo in un grafico, che è essenzialmente un callgraph.

Questo è un vecchio argomento, ma nel caso qualcuno lo trovi utile ....

  • kKCachegrind produrrà callgraphs che mostrano i thread di esecuzione effettivi.

  • PHPCallGraph è un graphviz abbastanza semplice che esegue l'analisi statica

  • C'è anche il mio sforzo personale che è simile a PHPCallGraph ma aggiunge informazioni su loop / strutture condizionali e fornisce un metodo per aggiungere callback ai nodi. Alcuni script di esempio sono in bundle con il toolkit, ma puoi anche incorporarlo nei tuoi script.

Se hai bisogno di qualcosa di interattivo, dai un'occhiata al nuovo nWire per PHP . È un plug-in Eclipse che funziona con PDT 2.1 e Zend Studio 7.0.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top