Skip to content

PHP-CodeSniffer in Netbeans integrieren

Hohe Code-Qualität ist nicht nur in großen Projekten wichtig, an denen mehrere Programmierer sitzen. Auch im Kleinen hilft die Einhaltung formaler Richtlinien (Coding Standards), Fehler zu vermeiden und den Quellcode wartbar zu halten. Mittlerweile existieren auch für PHP diverse Tools, die den Programmierer beim Coden unterstützen. Zwei davon, Code-Sniffer und Mess Detector, bemängeln automatisch anhand definierter Regeln auch kleine Unachtsamkeiten wie fehlende Kommentare, ungenutzte Variablen oder übermäßig komplizierten Code. Diese lassen sich recht einfach auch in IDEs wie Netbeans integrieren, wie ich im folgenden kurz zeige.

PEAR-Pakete downloaden

Voraussetzung sind die PEAR-Pakete PHP_CodeSniffer, das von Greg Sherwood betreut wird, und PHP_MD (PHP Mess Detector von Manuel Pichler). Die Links verweisen auf Installationsanleitungen. In der Regel lassen sich die Pakete mit PEAR-Bordmitteln installieren.

Unter Linux werden unter /usr/bin die beiden Batchfiles phpcs bzw. phpmd installiert, die zum Ausführen der Tools verwendet werden sollten, weil sie Prüfungen vornehmen und benötigte Klassen importieren.

Netbeans-Plugin installieren

Bei der Suche nach entsprechenden CodeSniffer-Plugins für Netbeans habe ich zwei Projekte gefunden. Das Plugin von Benjamin Eberlei wurde im April 2010 zum letzten Mal aktualisiert und hat bei mir nicht richtig funktioniert (YMMV). Das PHP CodeSniffer Netbeans Plugin (Download für Netbeans 6.9.1) lief auf Anhieb und hat auch die Unterstützung für PHP_MD bereits integriert. Zur Installation ladet ihr die *.nbm-Datei herunter und installiert das Plugin in Netbeans unter "Extras → Plugins → Heruntergeladen → Plugins hinzufügen …". Gegebenenfalls ist jetzt ein Neustart von Netbeans nötig.

Tools konfigurieren

Unter "Extras → Optionen → PHP → phpMD bzw. phpCodeSniffer" können nun globale Einstellungen vorgenommen werden. In der Regel müssen zunächst die jeweiligen Batch-Dateien (/usr/bin/phpmd und /usr/bin/phpcs) angegeben werden. Außerdem kann ein Coding-Standard, z.B. "Zend" eingetragen werden (mehr Infos dazu in der Dokumentation). Über die Schaltfläche "Test Settings" lässt sich überprüfen, dass die Batch-Dateien korrekt angegeben wurden.

Wird jetzt eine PHP-Datei im Netbeans-Editor geöffnet, parsen die Tools den Dateiinhalt und geben ihre Ergebnisse im "Aufgaben"-Fenster aus. Dort lassen sich die Resultate auch gruppieren und filtern. Diese variieren natürlich je nach Coding Standard und werden jeweils beim Speichern einer Datei neu ermittelt.

Projektspezifische Einstellungen

Wer möchte, kann sich auch eigene, so genannte "Sniffs" programmieren, also eigene Validierungsregeln aufstellen. Sollen diese allerdings nicht global für alle Projekte gelten, sondern nur für einzelne, ist etwas Handarbeit gefragt. Im Netbeans-Projektverzeichnis, also im Verzeichnis nbprojects, muss eine Datei codesniffer.properties angelegt werden, die projektspezifische Settings beinhaltet. Dort können verschiedene Optionen gesetzt werden, allerdings bin ich mir nicht sicher, ob alle möglichen Kommandozeilenargumente auch dort gesetzt werden können. Soll ein eigenes Ruleset definiert werden kann man darauf verweisen:

phpcs.standard=/pfad/zum/eigenen/ruleset.xml

Es sind im Endeffekt nur kleine Helferlein, aber sie erledigen nützliche Arbeit im Hintergrund. Und sie machen sich nach einer Weile fast selbst überflüssig, wenn man als Programmierer darauf achtet, nicht immer wieder die gleichen Fehler "vorgehalten" zu bekommen.

Deutsches Zend Framework-Wiki im Aufbau

Logo des ZF-WikiEine zentrale deutsche Dokumentation und Antworten auf immer wiederkehrende Fragen zum Zend Framework wollen einige Nutzer des deutschsprachigen Zend Framework-Forums in Form des Zend Framework Wiki sammeln, wie Christian Koncilia auf phphatesme schreibt. Wie üblich bei Wikis kommt es zunächst einmal darauf an, dass es mit dem grundlegenden Content gefüllt wird.

Einige Seiten existieren bereits, etwa zur Installation von Framework und Server und zum CLI Tool. Man darf a) gespannt sein, wie sich das Wiki entwickelt und b) gern selbst einen Eintrag schreiben, schließlich ist es ein Wiki und lebt von der Beteiligung der Community.

Noch zwei Sessions: PHP und Magento

So, das Barcamp Offenburg neigt sich langsam aber sicher dem Ende entgegen, eine allerletzte Session läuft gerade noch, aber ohne mich. Ich trage daher noch Impressionen von zwei Sessions nach, von denen ich eine selbst initiiert habe.

Doch zunächst zur PHP-Session, in der wir uns ganz ungezwungen über unsere PHP-Gewohnheiten austauschten. Übereinkunft bestand darin, dass meistens mit Eclipse und PDT bzw. Zend Studio for Eclipse gearbeitet wird, Mac-User nehmen auch gern mal Textmate. Die großen Frameworks wie Zend, Symfony oder Cake sind sehr interessant, werden aber noch nicht in großem Umfang von allen eingesetzt. Auch die Informiertheit über PHP5.3 oder gar PHP6 ist noch nicht so weit fortgeschritten. Naja. Danach diskutierten wir noch über die Vor- und Nachteile diverser CMSe, über WYSIWYG-Editoren und vermutlich das Wetter ;O) War jedenfalls ein ganz anregender Erfahrungsaustausch

Meine Magento-Session hatte ich nicht vorbereitet, die Idee kam mir heute morgen ganz spontan, auch weil morgen das erste deutsche Magento-Community-Meeting in Frankfurt stattfindet. Insgesamt beeindruckte Magento alle Teilnehmer, auch wenn wir uns nur gemeinsam durch Front- und Backend klickten und ich die Fragen so gut wie möglich zu beantworten versuchte, ohne Folien o.ä. präsentieren zu können. Magento wird die Webshop-Szene fett rocken, darin waren wir uns ziemlich einig. Zum Ende der Session gab es noch einen kleinen Exkurs über Payment-Systeme, auch interessant. Beate Paland hat außerdem auf den Presta-Shop als mögliche Alternative zu Magento hingewiesen - vermutlich ist diese Software aber nicht ganz so umfangreich. Danke an alle Session-Teilnehmer, der Wissensaustausch hat mal wieder sehr viel Spaß gemacht!