2010-02-23 8 views
16

In cerca di software che analizzerà il codice php (ovvero tutto il wordpress o il tema tematico) e mostrami delle belle immagini (forse un block diagram) di tutte le connessioni per aiutarmi a capire più rapidamente dove sono le cose e cosa è connesso che cosa.Esistono strumenti di visualizzazione del codice PHP?

Idealmente, questo software potrebbe funzionare su un Mac, ma mi prendo nulla:, Linux, web-based di Windows, ecc

+7

Penso che ci sia qualcosa di fondamentalmente sbagliato circa il disegno di blogging software che richiede di avere un visualizzatore di codice PHP per capire il suo temi. –

+1

http://www.nwiresoftware.com/ viene in mente. Ma è commerciale. – Gordon

+0

@John non proprio, ma quando si inizia, può essere difficile districarsi dal groviglio. Ho desiderato qualcosa di simile in alcuni progetti, ma poi ho memorizzato le loro strutture da solo. –

risposta

3
  • KCachegrind - Con Xdebug è possibile profilo l'esecuzione degli script, KCachegrind può generare alcuni piuttosto impressionante call graphs da questo
  • nwire per Eclipse
1

BOUML può fare diagrammi UML di codice PHP esistente

+1

Software PAID :( – sMyles

+0

@Myles La vecchia versione era gratuita, forse la trovi? – powtac

4

[AGGIORNAMENTO: Questa risposta non gestisce gli spazi dei nomi, quindi è praticamente obsoleto. Lascio qui nel caso in cui qualcuno trova l'approccio DOT interessante.]

Ecco un modo semplice per rappresentare graficamente l'ereditarietà delle classi in PHP.

Grep per le definizioni di classe e quindi trasformare l'output grep in sintassi DOT. NOTA: questo processo richiederà prove ed errori nella tua situazione. Esegui il grep separatamente e modificalo per mostrare le giuste linee di definizione della classe prima di inserirlo nello script!

Questo script era per PHP su standard * nix (ho usato Ubuntu), con graphviz installato, e usando grep -v per escludere alcune directory che non erano di alcun interesse perché stavo guardando un codebase di CakePHP. Fdp ha funzionato meglio di sfdp, dot, circo o neato in questa situazione.

Creare generateClassHierarchy.sh

#!/bin/bash 
echo 'digraph code {' > code.dot; 
grep -r "^class " * | grep -v "^app/vendors" | grep -v "^cake/" | grep -v "Binary file" | sed 's/.*://' | sed 's/class/ /' | sed 's/ extends/-> /' | sed 's/ implements .*//' | sed 's/ \?{.*$//' | sort >> code.dot 
echo '}' >> code.dot; 
fdp -Tpng -ocode.fdp.png code.dot 2> /dev/null # Ignore syntax error 
echo "OK"; 

Poi basta:

cd /var/www/my_app/      # or wherever 
bash ~/shell/generateClassHierarchy.sh # or wherever 
eog code.fdp.png 

Sostituire eog con il visualizzatore di immagini preferito. L'ho eseguito su Zend Framework come test e prodotto un grafico PNG da 22 megabyte. L'esecuzione su un solo Zend_Db mostra questo (esempio è sul mio sito):

http://chapman.id.au/generate-php-class-inheritance-diagrams-in-graphviz

+2

bella, grazie ho ottimizzato le cose includendo anche le classi astratte, il primo bit diventa 'egrep -r"^(abstract class | class) " 'nota che potete concatenare ulteriormente grep e grep -v cose per limitare su quali classi volete operare. – dbu

0

nWire non è aggiornato, non supporta tutte le versioni di PHP (namespace). La versione community di Visual Paradigm è gratuita per progetti non commerciali, ma non funziona anche nelle ultime versioni di PHP.

phUML è uno strumento gratuito molto utile Non è più mantenuto, ma funziona ancora bene per PHP 5. Gli utenti Mac devono installare anche graphviz.

0

Sulla base delle risposte di cui sopra, vale la pena fare questa distinzione:

  • Diagrammi di classi/metodi di codice PHP (analisi statica del codice). Questa è la cosa che stai chiedendo. Un'altra opzione potrebbe essere PHPDependencyAnalysis, è open source.
  • Strumenti di visualizzazione/analisi dei dati con librerie grafiche. Uno strumento molto popolare è JGraph e quelli come Sisense che hanno conveniente API cui si può accedere con PHP