Magento Coding Standards mit phpcs prüfen

Kennt ihr den Dienst Triplecheck.io? Hier werden alle Magento-Extensions unter Magento-Connect mit den ECG Coding-Standards geprüft und entsprechend bewertet. Natürlich sagt die Wertung nicht über die eigentlich Qualität einer Extension aus, sondern eher, ob hier keine verrückte Dinge getan wurden und sich die Entwickler wenigstens an die Standards aus dem Magento-Universum halten.

The scores are calculated based on the results of PHPCS and the Magento ECG Coding Standards. All the PHP and PHTML files inside each extension are analyzed, rated and the overall score is calculated using a GPA (Grade point average) ranging from 0 to 5.
Triplecheck-io

Dennoch bekommt man einen guten Eindruck, ob man sich generell an die Extension wagen kann. Meiner Meinung nach sollte man von C-, D- oder F-Wertungen einfach mal Abstand nehmen - das kann auf Dauer nichts Gutes bedeuten. Selbst meine Extension, welche ich vorher nie nach diesen Kriterien geprüft habe, hat es zu einem A gebracht. Man muss also schon viel Mist machen, um so schlecht bewertet zu werden.

Lokale Entwicklungsumgebung

Wer lokal entwickelt mit PHPStorm entwickelt, kann phpcs ebenfalls sehr gut in seinen Workflow integrieren. Dazu wird dann automatische jede Datei gescannt, welche man verändert. So bekommt man nicht erst nach einem commit + push auf die Finger, sondern sieht direkt was man nicht tun sollte.

Für eine Installation wechselt man in das jeweilige bin-Verzeichnis der PHP-Version von MAMP, welche man gerade benutzt. Dort installiert man mittels pear den Code-Sniffer (phpcs). Dann wird in das Standards-Verzeichnis gewechselt und dort der ECG-Standard mit git hingefügt.

cd /Applications/MAMP/bin/php/php5.5.18/bin
./pear install PHP_CodeSniffer-2.3.0
cd /Applications/MAMP/bin/php/php5.5.18/lib/php/PHP/CodeSniffer/Standards
git clone git@github.com:magento-ecg/coding-standard.git ECG

Das war auch schon alles an Installation. Damit man nicht immer die kompletten Pfade für phpcs hinterlegen muss, empfiehlt es sich, das bin-Verzeichnis zum Include-Path hinzufügen (für die Verwendung innerhalb PHPStorm nicht notwendig).

export PATH=/Applications/MAMP/bin/php/php5.5.18/bin:/usr/local/sbin:$PATH

In den Projekteinstellungen von PHPStorm (PHP -> Code Sniffer) konfiguriert man dann einfach den Pfad. Mit einem Klick auf "Validate" bekommt man Rückmeldung, ob alles geklappt hat.

PHPStorm-phpcs

Danach muss man natürlich noch den entsprechenden Coding-Standard festlegen. Dazu geht man in den Projektsettings auf Inspections -> PHP -> PHP Code Sniffer. Diesen Punkt versieht man mit einem Haken und stellt den Coding-Standard auf ECG. Falls der Punkt in dem Dropdown nicht verfügbar sein sollte, einfach ein paar mal auf aktualisieren klicken - scheint noch etwas fehlerhaft zu sein das Ganze.

PHPStorm-Inspections

Damit man das nicht immer wieder machen muss, kann man natürlich auch die Standard-Settings für Projekte bearbeiten. Diese gelten allerdings nur für neue Projekte, welche ihr noch nicht mit PHPStorm geöffnet habt.

Zudem würde ich empfehlen, die "Undefined Method"-Warnings auszuschalten. Das macht unter Magento eh relativ wenig Sinn, da viel zu viele magische Funktionen aufgerufen werden. Ansonsten sieht die richtigen Fehler zwischen den ganzen Warnings gar nicht mehr.

Damit man nicht komplett mit Warnings zugeschmissen wird, würde ich ebenfalls den Haken bei "Show warnings as: ..." rausnehmen. Aber das ist Geschmacksache.

Alternative Standards für Magento

FireGento hat ebenfalls einen Standard für Module auf den Weg gebracht - dieser lässt sich nur leider mit meiner aktuellen phpcs-Version nicht ausführen und wirft Exceptions.

Integration in CI-Umgebung

Wenn man alle Standards befolgt und alles grün ist, dann kann man phpcs auch gerne aus der CI-Umgebung bei jedem Commit anstoßen. Dazu sollte man allerdings von Anfang an ordentlichen Arbeiten, ansonsten wird man ewig damit beschäftigt sein, die entsprechenden Sources aufzuräumen. Warnings würde ich dabei nicht als kritisch einstufen - diese bekommt man immerhin schon bei jedem genutzten "echo" in Template-Dateien - nervt. Daher sieht mein Aufruf folgendermaßen aus:

phpcs -pnv --standard=ECG --extensions=php,phtml .

Fazit

Jeder aufmerksame Entwickler wird die meisten Fehler automatisch vermeiden - aber niemand ist perfekt und jeder macht mal Fehler. Daher ist die Integration von phpcs grundsätzlich ratsam. Das Ganze macht natürlich nur Sinn, wenn alle im Team mitziehen. Ansonsten arbeitet man an Dateien weiter, welche von anderen schon mit Fehlern überstreut wurden.

Wie handhabt ihr die Thematik für Euch?



Ein Beitrag von Matthias Kleine
Matthias's avatar

Matthias Kleine hatte Mitte 2012 die ersten Kontakte mit Magento - dies geschah durch die Anstellung bei der code-x GmbH als Softwareentwickler. Seit dem bildet er sich ständig im Bereich eCommerce fort, schreibt eigene Extensions und stellt diese gerne auch als OpenSource-Projekte auf GitHub zur Verfügung. Seit Ende 2013 wird Matthias auch im Verzeichnis der zertifizierten Magento-Entwickler gelistet. @klein0r

Alle Beiträge von Matthias

Kommentare
Magento-Neuigkeiten #34 am

[…] Kleine zeigte, wie man seinen Code mit phpcs auf Magento-Coding-Standards […]

Dein Kommentar