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
  • ...
War es hilfreich?

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:

Lower-Level-Analysatoren sind:

Runtime-Analysatoren, die für einige Dinge mehr nützlich sind aufgrund PHPs dynamische Natur, sind:

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

Online PHP Flusen

PHPLint

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

berichtet
rjha@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

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top