Facebook
Twitter
Google+
Kommentare
0

Projektwerkstatt: LegacySniffer

Ich hatte es ja schon angekündigt, aber heute will ich es auch wahr machen. Mein erstes Projekt, das ich hier vorstellen werde. Na OK, mein erstes Projekt, dass ihr ja alle kennt ist phphatesme, aber hier das zweite. Der LegacySniffer. Bis jetzt existiert das ganze nur auf Papier, aber vielleicht hat ja jemand Lust, dies zu ändern. Ich werde es wohl nicht sein, da ich momentan kaum Zeit für solche Projekte habe. Aber jetzt genug gelabert und auf in den Kampf.

Da auch im PHP Bereich der Fokus immer mehr auf Qualität gelegt wird, ist der Einsatz von Statische Codeanalyse nicht mehr so ungewöhnlich. Der PHPCodeSniffer gehört hier zu den bekanntesten Vertretern dieser Gattung. Mit diesem Tool kann man seinen PHP Code auf Verstöße hin untersuchen. Diese Verstöße werden aufgrund diverser Regeln, die man definieren kann gefunden. Die einfachste Regel, die man sich zum Beispiel vorstellen kann, ist ein verpflichtender PHPDoc Block für eine Methode oder dass Variablennamen klein anfangen. Ist auf jeden Fall eine sehr nette Sache. Das Problem dabei ist nur, dass dieses Analysetool bei einem bereits vorhandenen Projekt sich mit Fehlern überschlägt. Als wir die Statische Codeanalyse eingeführt haben, mussten wir mit mehreren tausend Regelverstößen kämpfen. Wenn man ehrlich ist, machen es einem solche Mengen an Verstößen nicht gerade einfach, einzelne noch ernst zu nehmen. Und genau hier soll der LegacySniffer zum Einsatz kommen. Der PHPCodeSniffer erstellt eine Liste mit gefundenen Problemen. In dieser Liste wird die genaue Codezeile, der Verstoß und die PHP Datei angegeben. Nachdem der Code Sniffer durchgelaufen ist, schnappt sich der LegacySniffer die Datei und prüft, zu welchem Zeitpunkt diese Regel gebrochen wurde. Grundlage für die Funktionsfähigkeit ist hier die Verwendung einer Versionsverwaltung wie SVN (svn blame) oder Perforce (Umweg über die Changelisten), mit der es kein Problem ist rauszufinden, wann diese Zeile das letzte Mal geändert wurde. Was noch besonders schön ist, man findet auch raus, wer sie verändert hat. Mit diesen Informationen kann man nun eine neue Liste erstellen, in der nur die Fehler angezeigt werden, die nach einem bestimmten Datum eingebaut wurden. Und tadaaa. Schon hat man keine Probleme mehr mit Unmengen an Verstößen. Verteil ist auch, dass man so jede Zeile, die man anfasst auch refaktorisieren muss, da sonst eine neue Warnung ausgegeben wird.

Ich denke, dass das ganze Projekt nicht länger als ein oder zwei Wochenenden dauern kann. falls sich also jemand findet, der mitmachen will, der soll sich einfach melden. Dabei wäre es mir wichtig, dass das ganze für SVN und Perforce out of the box funktioniert und auch erweiterbar für anderen Versionsverwaltungen ist. Eine kleine Plugin Schnittstelle wäre auch ganz nett, so dass man bei jeder Verletzung z.B. eine E-Mail an den „Schuldigen“ versenden kann.

Ü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