© klyaksun/Shutterstock.com
Spielerische Fehlersuche in PHP

PHPStan – Gamification für Entwickler und Teams


Gamification ist toll, das wissen wir alle. Wie wäre es, wenn wir das Prinzip auf die Verbesserung unseres Quellcodes anwenden könnten, und das am besten mit nur einer Zeile im Terminal? Herzlich willkommen bei der statischen Codeanalyse mit PHPStan.

PHPStan ist mehr als nur ein einfacher PHP Linter: Die Möglichkeiten gehen über das übliche Finden von Syntaxfehlern und fehlender Dependencies hinaus. Das Tool schafft es, Code zu analysieren und auf dieser Grundlage gezielt zu verbessern. Das geschieht nicht einfach nach der Hauruckmethode – es muss also nicht das gesamte Projekt auf einmal bearbeitet werden. Der Nutzer kann im Kleinen starten und sich Level für Level weiter nach oben arbeiten. Und die Level bringen einen persönlich als Entwickler*in weiter – genau das wollen wir: uns entwickeln. PHPStan schlägt bessere Lösungswege und Codearchitektur vor. So werden zum Beispiel Array Keys validiert, auf die man zugreifen möchte. Wenn diese nicht gesetzt sind, ist ein Warning die Folge. Auf diese Weise kann man sich auch einmal um solche Dinge kümmern, die sonst vielleicht nur in den Logfiles verschwinden. Das Ergebnis ist deutlich besserer Code, der einen als Entwickler zufriedener macht und auch persönlich weiterbringt. Und gute Software macht alle glücklich, denn sie ist nachhaltig.

Fangen wir also direkt an und installieren PHPStan im aktuellen Projekt als Composer Dependency:

composer require --dev phpstan/phpstan

Ein erster Lauf auf Level 5 im Sulu Core – hier muss eine Zeile in der phpstan.neon einfach entfernt werden:

phpstan analyse src/Sulu/Bundle/PageBundle -c phpstan.neon --level 5 

Als Ergebnis werden, wie in Abbildung 1 zu sehen, 126 Fehler angezeigt.

golla_phpstan_1.tif_fmt1.jpgAbb. 1: Die Fehleranzeige des ersten Durchlaufs

Beim in Abbildung 2 gezeigten Fehler handelt es sich um etwas Anspruchsvolleres, das auf die Softwarearchitektur zurückführen ist. Wir haben mit zwei Befehlen in der Command Line also mindestens einen netten Fehler gefunden – so einfach kann es sein.

golla_phpstan_2.tif_fmt1.jpgAbb. 2: Hier handelt es sich um einen etwas schwerwiegenderen Fehler

Im Team gemeinsam gegen Legacy-Code

Softwarequalität ist eine Teamaufgabe. Es darf einfach kein Legacy-Code mehr geschrieben werden, sonst kommt man mit dem Aufräumen nicht mehr hinterher. Ist das einmal sichergestellt, oder zumindest stark eingeschränkt, kann sehr gut darauf aufgebaut und können schnell Fortschritte erzielt werden. In einem Team gibt es natürlich sehr verschiedene Entwickler und Entwicklerinnen mit unterschiedlichen Skills, die auf einen Nenner gebracht werden müssen. Ähnlich wie beim Training eines Sportlers ist es wichtig, das täglich zu tun. Hier bieten sich die verschiedenen Level von PHPStan fantastisch an. Beginnend bei 1 kann man sich bis Level 8 hocharbeiten. Erfahrungsgemäß kommt man bis Level 5, danach warten wirkliche Herausforderungen.

Cheaten ist erlaubt, macht aber weniger Spaß

Man kann, wenn man das denn unbedingt möchte, bestimmte Regeln ausklammern, vereinzelt ergibt das auch durchaus Sinn. Ein Level besteht aus mehreren Regeln und Rule Sets. So kann man also in Level 5 ankommen und sich zu einem späteren Zeitpunkt um einen bestimmten Abschnitt des Codes kümmern. Aber Cheats sind eben nicht cool und haben keinen Stil. Ausnahmeregelungen sind bei Codestandards verständlich, wenn Teams sich dabei explizit auf interne Regeln einigen und diese in Rule Sets festhalten. Bei PHPStan wird auf diese Weise zwar das erreichte Level nicht wirklich verdient, man sollte also nicht stolz auf Twitter posten, Level 6 erreicht zu haben. Es is...

Neugierig geworden? Wir haben diese Angebote für dich:

Angebote für Gewinner-Teams

Wir bieten Lizenz-Lösungen für Teams jeder Größe: Finden Sie heraus, welche Lösung am besten zu Ihnen passt.

Das Library-Modell:
IP-Zugang

Das Company-Modell:
Domain-Zugang