am 18. August 2009
Heute geht es mal wieder um nützliche Tools. Nachdem ich mich die letze Zeit ein wenig an Coding Guidelines beschäfftigt habe und auch das ein oder andere mit dem PHP_CodeSniffer verbrochen habe, möchte ich euch ein kleines Helferchen vorstellen, mit dem man seinen Code ein wenig aufräumen kann.
Der Code Beautifier wird dazu genutzt um nach bestimmten Richtlinien Code zu formatieren. Wie so oft ist auch dies ein Paket des PEAR Projektes und kann somit wirklich, wie gewohnt, leicht installiert werden.
pear install PHP_Beautifier-0.1.14
Und schwupps kann ich es nutzen. Habe ich überhaupt erklärt, was genau ich nutzen will? Nein? Dann hole ich das einfach nach. Nehmen wir an, ihr habt in eurer Firma einen Coding Standard, der auch “aufzwingt” die Spaces statt Tabs zu verwenden. Da ich ein Gewohnheitstier bin mache ich trotzdem Tabs. Ist natürlich blöd, denn ich mache ja was “Verbotenes”. Vielleicht nicht so verboten, wie eine Bank aussrauben, aber schon nicht nett.
Jetzt kann ich natürlich einfach jede Datei öffnen und den Source Code reparieren. Händisch. Aber das ist mir zu doof. Ich nehme den PHP_Beautifier. Einfach auf der Kommandozeile ein wenig zaubern und schon sind alle Sorgen verpufft.
php_beautifier -s2 index.php index_new.php
Fertig. War doch einfach, oder? Der Beautifier kann aber nocht viel mehr. Ich habe zum Beispiel die Möglichkeit neue Zeilen einzufügen, an den Stellen, an denen ich sie brauche. Will ich zum Beispiel vor jedem if eine neue Zeile haben, so würde mein Aufruf wie folgt aussehen:
php_beautifier --filters "NewLines(before=T_IF)"
Die Syntax finde ich ein wenig gewöhnungsbedürftig. Aber hat man sie einmal verstanden, kann man schon damit leben. Schaut euch einfach die PHP Tokens an, dann wird schon einiges klar werden. Wenn nicht, dann könnt ihr hier auch einfach fragen.
Ansonsten gibt es es noch weitere Filter, wie tum Beispiel das korrekte Einrücken von Arrays (ArrayNested), Umwandlung aller reservierten Wörter in Kleinschreibweise (Lowercase) und noch einige anderen. Man kann zwar nicht alles damit lösen, aber vieles und das ist ja schon mal wichtig.
Ich bin übrigens gerade dabei das Ganze so zu konfigurieren, dass man es als externes Tool in Eclipse nutzen kann. Ist nur leider nicht so einfach, da der Code in einer Linux VMWare liegt und ich mit Windows arbeite. Wenn es aber soweit ist, werde ich natürlich darüber berichten.
ArrayNested