Wie statische Code-Analyse in PHP auszuführen? [geschlossen]
-
22-08-2019 - |
Frage
Gibt es ein statisches Analyse-Tool für PHP-Quelldateien? Die binäre selbst kann auf Syntaxfehler überprüfen, aber ich bin auf der Suche nach etwas, das tut mehr, wie:
- nicht verwendete Variablenzuweisungen
- Arrays, die ohne zuerst initialisiert zugewiesen werden in
- und möglicherweise Code Stil Warnungen
- ...
Lösung
Ausführen php in Fussel-Modus über die Befehlszeile Syntax ohne Ausführung zu überprüfen:
php -l FILENAME
Übergeordnetes statische Analysatoren sind:
- php-sat - Benötigt http://strategoxt.org/
- PHP_Depend
- PHP_CodeSniffer
- PHP Mess Detector
- PHPStan
- PHP-CS-Fixer
- phan
Lower-Level-Analysatoren sind:
- PHP_Parser
- token_get_all (primitive Funktion)
Runtime-Analysatoren, die für einige Dinge mehr nützlich sind aufgrund PHPs dynamische Natur, sind:
- Xdebug hat Code-Coverage- und Funktion verfolgt .
- My PHP Tracer-Tool einen kombinierte statischen / dynamischen Ansatz verwendet, Gebäude auf Xdebug der Funktion Spuren.
Die Dokumentation Bibliotheken phpdoc und doxygen eine Art Code-Analyse durchführen. Doxygen, kann beispielsweise so konfiguriert werden, schöne Vererbungsgraphen zu machen mit graphviz .
Eine weitere Option ist xhprof , die xdebug ähnlich ist, aber leichter, es geeignet machen für Produktionsserver. Das Werkzeug enthält eine PHP-basierte Schnittstelle.
Andere Tipps
unitialized Variablen überprüfen . Link 1 und 2 bereits scheinen dies zu tun ganz gut, aber.
Ich kann nicht sagen, dass ich eine dieser intensiv genutzt haben, aber:)
Für Vollständigkeit -. Auch überprüfen phpCallGraph
PHP Mess Detector ist genial und schnell.
Ich habe versucht, $ php -l und ein paar andere Tools. Doch die besten in meiner Erfahrung (YMMV, natürlich) ist scheck von pfff Toolset . Ich hörte von pfff auf Quoren ( http://www.quora.com / Is-es-a-good-PHP-lint-static-Analyse-Tool )
Sie können es kompilieren und installieren. Es gibt keine schöne Pakete (auf meinem Minze Debian, hatte ich libpcre3-dev, ocaml, libcairo-dev, libgtk-3-Entwickler und libgimp2.0-dev Abhängigkeiten zuerst installieren), aber es sollte einen intsall wert sein.
Die Ergebnisse sind wie
berichtetrjha@mint ~ $ ~/sw/pfff/scheck ~/code/github/sc/
login-now.php:7:4: CHECK: Unused Local variable $title
go-automatic.php:14:77: CHECK: Use of undeclared variable $goUrl.
Siehe Semantic Designs' CloneDR , ein "Klon-Erkennung" Tool, das Kopieren / Einfügen findet / editierten Code. Es wird exakt und in der Nähe von Miss Codefragmente, trotz Leerzeichen, Kommentare und sogar variable Umbenennungen finden. Eine Probe Erkennungsbericht für PHP können an der wesite finden. (Ich bin der Autor).
Die NetBeans IDE prüft auf Syntaxfehler, unusued Variablen und so. Es ist nicht automatisiert, sondern arbeitet für kleine oder mittlere Projekte in Ordnung.
Es gibt ein neues Werkzeug 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 folgende Funktionen:
- Code-Visualisierung - interaktive grafische Darstellung von Komponenten und Verbänden .
- Code-Navigation -. Einzigartige Navigationsansicht zeigt alle Verbände und arbeitet mit Ihnen, während Sie schreiben oder lesen Code
- Schnellsuche -. Suche während der Eingabe für Methoden, Felder, Datei, usw.
PHP PMD (Projekt Chaos-Detektor) und PHP CPD (Kopieren und Einfügen-Detektor) als ehemaliger Teil von PHPUnit
Es gibt RIPS - Eine statische Source Code Analyzer für Schwachstellen in PHP-Skripten . Quellen von RIPS verfügbar unter Source .
Von der RIPS-Website:
RIPS ist ein Werkzeug in PHP geschrieben Schwachstellen in PHP zu finden Anwendungen statische Code-Analyse. Durch die Unterteilung in Token und Parsen alle Quellcodedateien RIPS ist in der Lage PHP-Quellcode in eine verwandeln Programm-Modell und empfindliche Senken zu erkennen (potenziell anfällige Funktionen), die von einem böswilligen von userinput (beeinflussen verdorben werden kann Benutzer) während des Programmablaufs. Neben der strukturierten Ausgabe gefundenen Schwachstellen RIPS bietet auch einen integrierten Code Audit Framework für weitere manuelle Analyse.
Es gibt absolut neues Tool für statische Code-Analyse genannt PHP Analyzer .
Unter den vielen Arten von statischen Analyse sondern bietet auch grundlegende Auto-Befestigungs Funktionalität finden Sie unter
Sie möchten mit Facebook hiphop, um versuchen zu kompilieren. Es hat eine statische Analyse auf das gesamte Projekt und kann das sein, was Sie suchen.