Facebook
Twitter
Google+
Kommentare
0

PHP Code Sniffer – Installation und Verwendung

Wie gestern schon erwähnt, soll der heute Beitrag der Installation und der rudimentären Verwendung des PHP Code Sniffers gewidmet werden. Ich gehe mal davon aus, dass die meisten von euch einen Linux Server verwenden, auf dem ihre PHP Anwendung läuft, aus diesem Grund werde ich auch “nur” die Installation unter Linux erläutern.

sniffer

Installation

Wie ihr ja bereits wisst, ist PCS Teil der PEAR Komponenten Bibliothek und kann deshalb auch ganz einfach unter Verwendung des PEAR Installers auf dem System installiert werden.

pear install PHP_CodeSniffer-1.2.0a1

Da die Version 1.2.0a1 zum Zeitpunkt, als ich dieses Tutorial erstellt habe die aktuellste war kann es natürlich sein, dass ihr zu einem späteren Zeitpunkt eine andere Version bevorzugen solltet. Für alle, die kein PEAR auf ihrem System installiert haben, die können dies ganz einfach, falls apt-get vorhanden, mit den folgenden Zeilen ändern:

apt-get install php-pear

Eigentlich sollte jetzt der Verwendung des Sniffers nichts mehr im Wege stehen. Ein Aufruf von phpcs sollte jetzt das Kommandozeilen Tool, das übrigens komplett in PHP geschrieben wurde, starten und die möglichen Optionen anzeigen. Bevor ihr die installieren Dateien suchen müsst, hier der Pfad, in dem PEAR das Tool installiert hat:

/usr/share/php/PHP/CodeSniffer

Was ich vielleicht noch dazu sagen sollte. Ich habe das ganze auf einem Debian System aufgesetzt, falls es also bei euren Linux Distributionen ein wenig anders läuft, dann wundert euch bitte nicht. Ihr könnt natürlich auch all eure Fragen und Anmerkungen hier im Kommentarbereich hinterlassen. Die Chance ist groß, dass sie jemand findet, der euch behilflich sein kann.

[sc:adsense]

Verwendung

Da wir den PHP Code Sniffer soeben erfolgreich installiert haben und das Tool uns nun von überall auf der Kommandozeile zur Verfügung steht, können wir anfangen unsere Code ein wenig zu analysieren.

Fangen wie aber ganz einfach an. Wir erstellen eine einfache Klasse und schauen, ob wir sie gegen die Zend Framework Regeln verifizieren können. Da es sich hier um ein Tutorial handelt, nehmen wir natürlich eine Klasse, die dies nicht schafft. Um es mit den Worten eines berühmten Moderators zu sagen: “Ich habe da schon mal was vorbereitet”. Die badClass Klasse.

Lassen wir also PCS über unseren Code drüber laufen. Dies geht ganz einfach mit dem folgenden Aufruf

phpcs --standard=zend badClass.php

Ich denke der Parameter ist selbstredend, aber um sicher zu gehen, dass jeder es verstanden hat, --standard definiert den Standard, wer hätte es gedacht, der verwendet werden soll. Ein Standard ist einfach eine bestimmte Zusammenstellung von Regeln, die zur Validierung hinzugezogen werden. Alle weiteren Standard findet ihr unter /usr/share/php/PHP/CodeSniffer/Standards, wo wir am Tag vier auch unsere eigenen Standards hinpacken werden. Jetzt aber wieder zu unserem Beispiel. Der oben genannte Aufruf erzeugt den folgenden Output:

FILE: /var/www/phpcodesniffer/badClass.php
--------------------------------------------------------------------------------
FOUND 5 ERROR(S) AND 0 WARNING(S) AFFECTING 5 LINE(S)
--------------------------------------------------------------------------------
  5 | ERROR | Spaces must be used to indent lines; tabs are not allowed
  7 | ERROR | Spaces must be used to indent lines; tabs are not allowed
  8 | ERROR | Spaces must be used to indent lines; tabs are not allowed
 10 | ERROR | Spaces must be used to indent lines; tabs are not allowed
 13 | ERROR | A closing tag is not permitted at the end of a PHP file
--------------------------------------------------------------------------------

War ja ziemlich einfach. Der Zend Standard verbietet also die Verwendung von Tabs und das schließende PHP Tag am Ende einer Datei (was ich übrigens noch einen Beitrag wert finde). Ist einem diese Prüfung zu langweilig, der kann sich die gleiche Datei noch mal mit dem PEAR Standard ansehen.

[sc:adsense]

FILE: /var/www/phpcodesniffer/badClass.php
--------------------------------------------------------------------------------
FOUND 11 ERROR(S) AND 0 WARNING(S) AFFECTING 6 LINE(S)
--------------------------------------------------------------------------------
  2 | ERROR | Missing file doc comment
  3 | ERROR | Missing class doc comment
  3 | ERROR | Class name must begin with a capital letter
  5 | ERROR | Line indented incorrectly; expected at least 4 spaces, found 1
  5 | ERROR | Spaces must be used to indent lines; tabs are not allowed
  5 | ERROR | Class constants must be uppercase; expected MYCONSTANT but found
    |       | MyConstant
  7 | ERROR | Spaces must be used to indent lines; tabs are not allowed
  7 | ERROR | Missing function doc comment
  7 | ERROR | Line indented incorrectly; expected 4 spaces, found 1
  8 | ERROR | Spaces must be used to indent lines; tabs are not allowed
 10 | ERROR | Spaces must be used to indent lines; tabs are not allowed
--------------------------------------------------------------------------------

Man sieht, dass PEAR ein wenig strengere Regeln besitzt, was ich gut finde. Prinzipiell sieht das Ganze aber fast identisch aus. Reparieren wir unsere Datei nun und versuchen wir es noch mal neu. GoodClass.

phpcs --standard=zend goodClass.php

Leider gibt es überhaupt keinen Output, falls man eine Datei Sniffed, die keine Verletzungen aufweißt. Dies kann man aber ganz einfach mit -v ändern. Dieser Parameter macht PCS ein wenig gesprächiger und lässt ihn folgenden Output produzieren:

Registering sniffs in Zend standard... DONE (15 sniffs registered)
Processing goodClass.php [36 tokens in 11 lines]... DONE in < 1 second (0 errors, 0 warnings)

Eigentlich wollte ich ja heute noch ein wenig auf die Verwendung der anderen Parameter eingehen, was ich aber doch lieber auf morgen verschiebe, da ich nicht zu viel in einen Beitrag reinpacken will. Morgen geht es also weiter mit den wichtigsten Parametern und der Zusammenstellung der ersten eigenen Regelsätze.

Über den Autor

Nils Langner

Nils Langner ist der Gründer von "the web hates me" und auch der Hauptautor. Im wahren Leben leitet er das Qualitätsmanagementteam im Gruner+Jahr-Digitalbereich und ist somit für Seiten wie stern.de, eltern.de und gala.de aus Qualitätssicht verantwortlich. Nils schreibt seit den Anfängen von phphatesme, welches er ebenfalls gegründet hat, nicht nur für diverse Blogs, sondern auch für Fachmagazine, wie das PHP Magazin, die t3n, die c't oder die iX. Nebenbei ist er noch ein gern gesehener Sprecher auf Konferenzen. Herr Langner schreibt die Texte über sich gerne in der dritten Form.
Kommentare

Leave a Comment.

Link erfolgreich vorgeschlagen.

Vielen Dank, dass du einen Link vorgeschlagen hast. Wir werden ihn sobald wie möglich prüfen. Schließen