Automatisch Php Codesniffer reformat Code

0

Am Anfang des Clean Code Webdevelopment steht der Code Standard. Eine Konvention, wie die Formatierung des PHP-Codes projektweit definiert wird. Über die Formatierung hinaus können hier auch Konventionen zu Dateinamen, Beschreibungen, Variablennamen und vielen mehr getroffen werden. Das ist aber jetzt nicht der Inhalt des Artikels. Hier geht es um den Einstieg und die ersten Maßnahmen.

Ziel eines Code Standards

Automatisch Php Codesniffer reformat Code

Automatisch Php Codesniffer reformat Code

In der PHP Welt gibt es bereits viele etablierte und bekannte Code Standards. Die bekanntesten werden direkt mit dem PHP Codesniffer mitgeliefet. Dazu zählen auch die Codestandards PSR-1 und PSR-1, die sich sehr gut dazu eignen mit der Einführung eines Code Standars für sein PHP Projekt zu starten. Bekannte CMS-Frameworks, wie TYPO3, haben auch einen eigenen TYPO3-Codesniffer. Das gilt auch für PHP-Frameworks z.B. Symfony-Codesniffer. Ein Code Standard ist wichtig, damit man im Team, also mit mehreren Webdevelopern, effektiv an seinem Quellcode arbeiten kann ohne in Produktivitätskiller für Programmierer zu geraten. Clean Code umfasst einen Code Standard. Aber ein Code Standard ist auf keinen fall Clean Code. Quatsch kann man auch formatiert schreiben.

Automatisch Php Codesniffer reformat Code

In bestehenden Projekten kann man mit dem PHP Code Beautifier and Fixer schnell automatisiert ca. 50% des Quellcodes automatisch formatieren lassen. Das hier ausformulierte Beispiel befindet sich auch auf der offiziellen GitHub Seite vom Php Codesniffer unter dem Kapitel Fixing errors automatically. Zuerst führ man den Php Codesniffer aus.

$ phpcs /path/to/code/myfile.php

FILE: /path/to/code/myfile.php
——————————————————————————–
FOUND 5 ERRORS AFFECTING 4 LINES
——————————————————————————–
2 | ERROR | [ ] Missing file doc comment
3 | ERROR | [x]TRUE, FALSE and NULL must be lowercase; expected „false“ but
| | found „FALSE“
5 | ERROR | [x]Line indented incorrectly; expected at least 4 spaces, found 1
8 | ERROR | [ ] Missing function doc comment
8 | ERROR | [ ] Opening brace should be on a new line
——————————————————————————–
PHPCBF CAN FIX THE 2 MARKED SNIFF VIOLATIONS AUTOMATICALLY
——————————————————————————–

Hier sieht man den im Terminal ausgeführten Phpcodesniffer Befehl und das daraus resultierende Ergebnis. In dem Ergebnis wird auch direkt angezeigt, welche Errors auch wie in der Headline „Automatisch Php Codesniffer reformat Code“ versprochen automatisch behoben werden können. In meinem persönlichen Code Standard lege ich übrigens Wert darauf TRUE, FALSE und NULL Uppercase zu schreiben. Das werde ich später vorstellen. Grundsätzlich wird ca. 50% richtig formatiert und gerade die Umstellung von Tabs auf Spaces ist schon eine große und schöne Arbeitserleichterung. Reformatting Code wirkt sich auch nicht auf dessen lauffähigkeit zumindest bei PHP-Files aus.

CLI Command Automatisch Php Codesniffer reformat Code

Vorab kann man sich natürlich auch erst einmal das Ergebnis einer automatischen Php Codesniffer Formatierung ausgeben lassen. Im oben genannten Falle wird dann folgender Code im Command Line Interface ausgegeben.

$ phpcs --report=diff /path/to/code

— /path/to/code/file.php
+++ PHP_CodeSniffer
@@ -1,8 +1,8 @@

-if ($foo === FALSE) {
+if ($foo === false) {
+ echo ‚hi‘;
echo ‚hi‘;
– echo ‚hi‘;
}

function foo() {

Wie bereits im ersten Code Abschnitt ausgegeben wird „FALSE“ in „false“ umgeschrieben. durch den Parameter –report=diff sieht man in der Voransicht, wie sich die Zeile ändert. Und als zweiten Error auch die richtige Einrückung der echo-Ausgabe. Das ganze kann man dann auch rekursiv auf eine komplette Verzeichnisstruktur anwenden. Eine mögliche Ausgabe ist dann

$ phpcbf /path/to/code
Processing init.php [PHP => 7875 tokens in 960 lines]... DONE in 274ms (12 fixable violations)
=> Fixing file: 0/12 violations remaining [made 3 passes]... DONE in 412ms
Processing config.php [PHP => 8009 tokens in 957 lines]... DONE in 421ms (155 fixable violations)
=> Fixing file: 0/155 violations remaining [made 7 passes]... DONE in 937ms
Patched 2 files
Time: 2.55 secs, Memory: 25.00Mb

Damit kann man sehr schnell ein gutes Ergebnis erzielen. Es wird natürlich leider nicht alles behoben. Hier bietet es sich dann an den Codesniffer immer direkt in seiner IDE mitlaufen zu lassen. Php Codesniffer in PhpStorm.

Php Codesniffer Installation

About Author

PHP Kurs und Inhouse Schulungen für Webdevelopment mit Continuous Integration - Clean Coder, Blogger, Autor, Dozent und Senior Webdeveloper www.rolandgolla.de

Leave A Reply

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.