• Projektwerkstatt: LegacySniffer

    von am 12. November 2008

    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.

    Nils Langner

    Auch wenn Ihr es mir nicht glauben werdet, aber ich habe nichts gegen PHP. Ich rege mich einfach nur gerne auf. Ok so schlimm ist es auch nicht. Eigentlich wollte ich schon immer einen Blog haben und da ...

    Zum Profil von Nils Langner

    Keine Kommentare »

    Noch keine Kommentare

    RSS Feed für Kommentare zu diesem Artikel. TrackBack URL

    Hinterlasse einen Kommentar

    Werbung
    PHP Magazin
    Ausgabe 02/2010

    Dieses Mal mit Artikeln zu den Themen OpenSocial und Apache Shindig, Graphentheorie, Smarty3

    t3n
    Ausgabe 19

    Social Media (R)evolution. Weitere Themen sind noSQL, Crowdsourcing ...

    PHP Journal
    Ausgabe 2/2010

    PHP & Windows optimal nutzen, die besten PHP-CMS im Überblick, Google-API mit Zend Framework nutzen.

    Wir wurden schon öfters gefragt, ob man uns nicht irgendwie unterstützen kann. Die Antwort war immer einfach: Klar! Am einfachsten ist es eure nächsten Einkäufe bei Amazon über unsere Link abzuwickeln. Damit würdet ihr uns schon sehr helfen. Über Co-Autoren freuen wir uns aber noch mehr.