Gibt es ein statisches Analysetool für PHP-Quelldateien? Die Binärdatei selbst kann nach Syntaxfehlern suchen, aber ich suche nach etwas, das mehr kann, wie:
- nicht verwendete Variablenzuweisungen
- Arrays, die zugewiesen werden, ohne zuvor initialisiert zu werden
- und möglicherweise Warnungen im Codestil
- ...
php
code-analysis
static-analysis
eswald
quelle
quelle
Antworten:
Führen Sie PHP im Lint-Modus über die Befehlszeile aus, um die Syntax ohne Ausführung zu überprüfen:
php -l FILENAME
Übergeordnete statische Analysegeräte umfassen:
Untergeordnete Analysegeräte umfassen:
Zu den Laufzeitanalysatoren, die aufgrund der Dynamik von PHPs für einige Dinge nützlicher sind, gehören:
Die Dokumentationsbibliotheken phpdoc und doxygen führen eine Art Code-Analyse durch. Doxygen kann beispielsweise so konfiguriert werden, dass mit graphviz schöne Vererbungsdiagramme gerendert werden .
Eine weitere Option ist xhprof , das xdebug ähnelt, jedoch leichter ist und sich daher für Produktionsserver eignet. Das Tool enthält eine PHP-basierte Schnittstelle.
quelle
php -l
immer nur eine Eingabedatei gleichzeitig gelesen werden kann (das heißt, es funktioniert nicht, wenn Sie dies tunphp -l file1.php file2.php
). Stattdessen müssen Sie die-n 1
Option verwenden, die angibtxargs
, dass nur eine Eingabezeile pro Befehlsprozess verwendet werden soll. Dadurch wird es stattdessen ausgeführt,php -l file1.php
gefolgt vonphp -l file2.php
separat. Gleichzeitig können Sie-P <n>
"n" Prozesse gleichzeitig ausführen, um die Ausführung zu parallelisieren:find . -name '*.inc' -o -name '*.php' -print0 | xargs -0 -n1 -P10 php -l
find /your/path -name '*.php' -exec php -l {} \;
arbeitet zuverlässig.php -l
) zu arbeiten, Sie setzen müssendisplay_errors = on
inphp.ini
, sonst werden Sie nur eine allgemeine Meldung über dort seinen Syntaxfehler aber keine näheren Angaben darüber , welche Fehler (n) oder , was Linie (n).-d
Schalter überschreiben . ZBphp -l -d display_errors=on $FILENAME
Online PHP Flusen
PHPLint
Überprüfung auf unitialisierte Variablen . Link 1 und 2 scheinen dies jedoch bereits in Ordnung zu sein.
Ich kann nicht sagen, dass ich eines davon intensiv genutzt habe :)
quelle
Der Vollständigkeit halber überprüfen Sie auch phpCallGraph .
quelle
PHP Mess Detector ist fantastisch und schnell.
quelle
Ich habe versucht, $ php -l und einige andere Tools zu verwenden. Das beste meiner Erfahrung (YMMV natürlich) ist jedoch Scheck of Pfff Toolset . Ich habe auf pora von pfff gehört ( http://www.quora.com/Is-there-a-good-PHP-lint-static-analysis-tool )
Sie können es kompilieren und installieren. Es gibt keine netten Pakete (auf meinem Mint-Debian musste ich zuerst die Abhängigkeiten libpcre3-dev, ocaml, libcairo-dev, libgtk-3-dev und libgimp2.0-dev installieren), aber es sollte einen Gesamtwert wert sein.
Die Ergebnisse werden wie berichtet
quelle
Siehe CloneDR von Semantic Designs , ein Tool zur "Klonerkennung ", das Code zum Kopieren / Einfügen / Bearbeiten findet. Es wird trotz Leerzeichen, Kommentaren und sogar variablen Umbenennungen genaue und nahezu fehlerhafte Codefragmente finden. Ein Beispielerkennungsbericht für PHP finden Sie auf der Website. (Ich bin der Autor).
quelle
Die NetBeans-IDE sucht nach Syntaxfehlern, nicht verwendeten Variablen und dergleichen. Es ist nicht automatisiert, funktioniert aber gut für kleine oder mittlere Projekte.
quelle
Es gibt ein neues Tool namens nWire für PHP . Es ist ein Code Exploration Plugin für Eclipse PDT und Zend Studio 7.x. Es ermöglicht die Echtzeit-Code-Analyse für PHP und bietet die folgenden Tools:
quelle
PHP PMD (Project Mess Detector) und PHP CPD (Copy Paste Detector) als ehemaliger Teil von PHPUnit
quelle
Es gibt RIPS - einen statischen Quellcode-Analysator für Schwachstellen in PHP-Skripten . RIPS-Quellen bei SourceForge erhältlich .
Von der RIPS-Site:
quelle
Es gibt ein absolut neues Tool für die statische Code-Analyse namens PHP Analyzer .
Neben vielen Arten der statischen Analyse bietet es auch grundlegende Funktionen zur automatischen Korrektur, siehe Dokumentation .
UPDATE: PHP-Analyzer ist jetzt ein veraltetes Projekt, aber Sie können weiterhin auf den Legacy-Zweig zugreifen
quelle
Vielleicht möchten Sie versuchen, mit dem HipHop von Facebook zu kompilieren.
Es führt eine statische Analyse des gesamten Projekts durch und ist möglicherweise das, wonach Sie suchen.
https://github.com/facebook/hiphop-php
quelle