Da un codice PHP Diff, puoi dire quali classi e funzioni sono cambiate?
Domanda
Sfondo:
PHPDoc ( http://www.phpdoc.org/ ) è uno strumento geniale per l'estrazione documentazione html delle tue classi o metodi dai commenti nel tuo File. L'aggiunta di commenti PHPDoc presenta anche altri vantaggi, se lo si utilizza un IDE come Zend o Netbeans, utilizzerà PHPDocs per mostrarti suggerimenti per il completamento automatico.
La maggior parte dei tracker dei problemi ha una funzione in cui puoi impegnarti sistema di controllo versione con un commento speciale, e lo farà collega automaticamente tale impegno a tale problema.
Quindi, ecco cosa voglio in un sistema: commetto del codice con uno speciale commento, il tracker del mio problema lo collega a un problema. Poi guarda il impegnarsi e capire quali metodi e classi ho cambiato. Allora dice " Se stai cercando documentazione su questo problema, prova questi bit di PHPDoc: ClassX.FunctionY, ClassZ.VariableP " ;. esso indirizza automaticamente gli utenti alla documentazione che potrebbe essere pertinente. Penso che questa sarebbe una grande caratteristica.
Domanda:
Quindi il pezzo che manca è qualcosa per prendere un codice PHP diff, e capire quali classi e metodi sono cambiati. Qualcuno ne ha preso uno puntatori su un codice che può farlo?
Grazie in anticipo, James
Soluzione 3
PHP5 ha metodi per separare una classe ed esaminare tutti i metodi, incluso dandomi i numeri di riga che devo confrontare con il diff. Usando questo posso iniziare a lanciare a mano la mia soluzione.
Altri suggerimenti
Se stai utilizzando subversion , puoi vedere una differenza di tutti i file che sono stati modificati nella progetto. E guarda come sono diversi.
Esistono software con supporto di sovversione integrato, come Trac.
È necessario uno strumento che comprenda a fondo la struttura di PHP, ovvero che sia in grado di analizzare il testo sorgente di PHP proprio come fa il motore PHP.
Il nostro " Smart Diff " fa questo, abilitando un confronto di coppie di file PHP che sai essere la versione originale e modificata. Confronta AST e trova le modifiche minime per mappare l'una nell'altra. Se il vecchio e il nuovo metodo sono del tutto simili, lo scoprirà e ti dirà come uno è stato modificato per ottenere l'altro. Vedi http://www.semdesigns.com/Products/SmartDifferencer/index.html
puoi scrivere uno script post commit che riceve i file modificati e li guarda per fare quello che vuoi