Improving code quality with the PHP_CodeSniffer tool

Verbesserung der Codequalität mit dem PHP_CodeSniffer-Tool

Das Schreiben von Code gemäß den Standards ermöglicht es Ihnen, die Projekterstellung zu beschleunigen. Es ist leichter erweiterbar und besser lesbar – dank dessen können neue Teammitglieder im Projekt schneller bereitstellen und optimale Lösungen liefern. Die PHP-Community bemüht sich ständig, die Codequalität zu verbessern. Im Laufe der Jahre wurden Tools entwickelt, die helfen, Code zu schreiben, der den Standards entspricht. In diesem Text werde ich eines davon vorstellen: PHP_CodeSniffer.

Ich werde Ihnen auch das Drupal Coder-Modul vorstellen, das Standards für das Schreiben von Code für Drupal enthält. Es kann auch verwendet werden, um den Code automatisch mit phpcbf zu korrigieren.

Was ist PHP CodeSniffer?

PHP_CodeSniffer hilft dabei, Ihren Code sauber und den Standards entsprechend zu halten. Das Tool besteht aus zwei Skripten.

  • phpcs - tokenisiert den PHP-, JS- und CSS-Code und erkennt Abweichungen vom definierten Code-Schreibstandard,
  • phpcbf - korrigiert den Code automatisch gemäß den definierten Regeln.

PHP-Version 5.4.0 oder höher ist für den korrekten Betrieb des Tools erforderlich.

Installation

PHP_CodeSniffer kann mit Composer, cURL oder Wget installiert werden. Ich empfehle die Installation über Composer, aber es sei darauf hingewiesen, dass es auch möglich ist, es innerhalb eines Docker-Containers via Composer zu installieren – wenn Sie Docker verwenden, nutzen Sie diese Installationsmethode.

Composer
composer global require "squizlabs/php_codesniffer=*" 
cURL
curl -OL https://squizlabs.github.io/PHP_CodeSniffer/phpcs.phar
curl -OL https://squizlabs.github.io/PHP_CodeSniffer/phpcbf.phar
Wget
wget https://squizlabs.github.io/PHP_CodeSniffer/phpcs.phar
wget https://squizlabs.github.io/PHP_CodeSniffer/phpcbf.phar

Nach dem Herunterladen der Pakete können Sie diese testen.

Composer

Mögliche Parameter für phpcs-Skript in Composer

Mögliche Parameter für phpcbf-Skript in Composer

cURL, Wget

php phpcs.phar -h
php phpcbf.phar -h

Verwendung

Sowohl die phpcs- als auch die phpcbf-Skripte verwenden den PEAR-Codierstandard. Der Codierstandard kann mit dem Parameter --standard angegeben werden.

Um eine einzelne Datei zu testen, verwenden Sie den Befehl:

$ phpcs dateiname.php 

$ phpcbf dateiname.php 

Sie können auch ein ganzes Verzeichnis testen:

$ phpcs /pfad/zum/verzeichnis 

$ phpcbf /pfad/zum/verzeichnis 

Das phpcs-Skript informiert Sie über gefundene Fehler im Codierstandard. Beispiel für Testergebnisse:

Beispiel von Testergebnissen im phpcs-Skript mit Fehlern im Codierstandard

Jeder Fehler, der mit einem „x“ markiert ist, kann automatisch mit dem phpcbf-Skript behoben werden.

Automatische Behebung von Fehlern im Codierstandard mit dem phpcbf-Skript

Das Beheben der verbleibenden Fehler erfordert die Intervention des Programmierers. In der Regel handelt es sich um Fehler wie fehlende korrekte Tags im Klassenkommentar.

Coder - Drupal-Modul

Das Coder-Modul bietet eine Reihe von Programmierprinzipien, die in Drupal verwendet werden. In Kombination mit PHP_CodeSniffer hilft es, Fehler im Codierstandard zu korrigieren.

Installation

Wir installieren das Modul über Composer: composer require drupal/coder

Verwendung

Das Überprüfen des Codierstandards ist ähnlich wie zuvor gezeigt; verwenden Sie lediglich den Parameter --standard, dem Sie den Wert „Drupal“ geben.

Überprüfung des Codierstandards in Coder, dem Drupal-Modul

Integration mit PHPStorm

Sowohl das PHP_CodeSniffer-Skript als auch das Regelwerk aus dem Coder-Modul können mit den beliebtesten IDEs integriert werden. Lassen Sie uns als Beispiel PHPStorm verwenden.

phpcs

Zuerst müssen Sie den Pfad zum phpcs-Skript in PHPStorm angeben. Gehen Sie dazu zu Einstellungen -> Sprachen und Frameworks -> PHP -> Qualitätstools -> PHP_CodeSniffer

Ansicht der Einstellungen von PHP_CodeSniffer im Qualitätstools-Register in PHPStorm

Dann fügen Sie eine neue Konfiguration hinzu und geben im PHP_CodeSniffer-Pfad den Pfad zum Skript an. Sie können die Richtigkeit des Pfades überprüfen, indem Sie auf die validieren-Schaltfläche klicken.

Hinzufügen eines Pfades zum phpcs-Skript für PHP_CodeSniffer in PHPStorm

Um die Codevalidierung zu aktivieren und den gegebenen Standard zu wählen, gehen Sie zu Einstellungen -> Editor -> Inspektionen -> Qualitätstools und wählen Sie die Option PHP_CodeSniffer-Validierung aus.

Validierung des phpcs-Skripts für PHP_CodeSniffer in PHPStorm

 

Coder

Um das Regelwerk aus dem Coder-Modul hinzuzufügen, wählen Sie Benutzerdefiniert in der Codierstandard-Auswahlliste. Fügen Sie im Popup den Pfad zur ruleset.xml-Datei hinzu, die mit dem Modul bereitgestellt wird.

Hinzufügen des Regelwerks aus Coder, dem Drupal-Modul, in PHPStorm

Damit das Skript die .module, .install, .theme-Dateien überprüft, fügen Sie diese Erweiterungen zur Liste „Dateien mit Erweiterungen überprüfen“ hinzu.

Hinzufügen von .module, .install, theme-Erweiterungen zur Liste Dateien mit Erweiterungen überprüfen in PHPStorm

Zu diesem Zeitpunkt ist phpcs bereits korrekt in PHPStorm integriert.

Falls eine Regel gebrochen wird, wird PHPStorm die nicht den Standards entsprechende Zeile hervorheben, sowie präzise Informationen über die gebrochene Regel liefern.

Beispiel für Informationen über die gebrochene Regel in PHPStorm

PHPStorm kann mit PHP Code Beautifier and Fixer integriert werden und erfordert keine zusätzliche Konfiguration. Auf IDE-Ebene können Sie alle Fehler in der Datei, die Sie zuvor mit diesem Skript im Terminal behoben haben, automatisch korrigieren. Um dies zu tun, finden Sie einen Fehler in der Datei und klicken Sie auf oder drücken Sie  light  Alt+Enter.

Korrigieren des fehlerhaften Codeelements in PHPStorm mit PHP Code Beautifier and Fixer

PHP CodeSniffer - Fazit

Sowohl PHP_CodeSniffer als auch das Coder-Modul verbessern die Arbeit der Programmierer in PHP-Entwicklungsdiensten in unserer Agentur. Der gemäß den Standards geschriebene Code ist leichter zu warten und zu entwickeln. Neue Mitarbeiter im Projekt können schneller bereitstellen. Und wenn das Projekt an ein neues Team übergeben wird, dauert der Implementierungsprozess ebenfalls weniger Zeit. Bei Droptica sind PHP_CodeSniffer und das Coder-Modul der Standard, den jeder Programmierer verwendet.

3. Best practices for software development teams