Gerade in großen Softwareprojekten ist die Qualitätssicherung von großer Bedeutung. Dabei spielen auch zunächst unwichtig erscheinende Dinge, wie Coding Standards eine wichtige Rolle, um die Lesbarkeit und Wiederverwendbarkeit des Codes zu verbessern.
Da es sich bei Coding Standards um klare Definitionen handelt, ist es möglich diese durch Software prüfen zu lassen.
Ein bekanntes Tool dafür ist der PHP_CodeSniffer (http://pear.php.net/package/PHP_CodeSniffer) aus dem Pear-Paket.
Mit ihm können beliebige Dateien auf einen festgelegten Aufbau kontrolliert werden. Wer bereits den PHPDocumentator benutzt, kann sich vorstellen, wie das Ganze funktioniert.
Ein Parser läuft über den Code und meldet entsprechende Abweichungen von den angegebenen Regeln.
Als Bestandteil der PEAR-Bibliothek, kann der PHP_CodeSniffer über die Kommandozeile, beispielsweise per "pear install PHP_CodeSniffer" installiert werden.
Die Ausführungen der Prüfung funktioniert dann ebenfalls über die Kommandozeile (oder automatisiert per Cronjob) durch den Befehl "phpcs -..."
Fehler werden dann beispielsweise in der folgenden Form gemeldet:
$ phpcs /path/to/code/myfile.php
FILE: /path/to/code/myfile.php
--------------------------------------------------------------------------------
FOUND 5 ERRORS AND 1 WARNINGS AFFECTING 5 LINES
--------------------------------------------------------------------------------
2 | ERROR | Missing file doc comment
20 | ERROR | PHP keywords must be lowercase; expected "false" but found
| | "FALSE"
47 | ERROR | Line not indented correctly; expected 4 spaces but found 1
47 | WARNING | Equals sign not aligned with surrounding assignments
51 | ERROR | Missing function doc comment
88 | ERROR | Line not indented correctly; expected 9 spaces but found 6
Die Anleitung zur Verwendung findet ihr hier:
http://pear.php.net/package/PHP_CodeSniffer/docs
Übrigens, die Zend Coding Standards, auf welche ich auch als Freund der ZendFramework setze, sind bereits dabei und sollten sich im Verzeichnis:
"/usr/share/php/PHP/CodeSniffer/Standards/Zend/ZendCodingStandard.php"
befinden.