Artikelformat

PHPlint im Hudson integrieren

Heute gibt es wieder einmal leichte Kost. Ihr dürft euch dafür bei PECL bedanken. Mir war es bisher unmöglich SPL_Types zu installieren, ich habe aber noch nicht aufgegeben, denn ich denke, das ist ein spannendes Thema. Aber zurück zum eigentlichen Thema. PHPlint im Hudson. Wir haben ja bereits gesehen wie man PHP mit dem Hudson verheiratet und sloccount kann man auch damit verbinden und nun kommt ein relativ nahe liegender Gedanke: Warum prüft man den PHP Code nicht auf korrekte Syntax, wenn man den Quelltext schon nicht kompilieren kann?

Und genau das machen wir nun. Dazu kann man sich den PHP-Interpreter schnappen und die Syntaxcheck-Möglichkeit benutzen. Dazu ruft man einfach folgenden Code in einer Kommandozeile auf. Dieses Beispiel ist mal wieder Unix/Linux spezifisch, die Windows User werden es aber mit Sicherheit anpassen können:

1
php -l file.php

Als Ausgabe erhält man entweder No syntax errors detected in file.php oder eine Ausgabe die den Fehler beschreibt. Diese Funktion nutzen wir nun im Hudson und bauen uns dafür ein neues Target das treffenderweise phplint heißt.

1
2
3
4
5
6
7
8
9
10
11
<target name="phplint" depends="prepare">
<apply executable   = "php"
       failonerror  = "true"
       error        = "checkphp.err.txt">
            <arg value="-l" />
            <fileset dir="${base}/svn">
                <include name="**/*.php" />
                <include name="**/*.inc" />
            </fileset>
        </apply>
    </target>

Dieses Fragment baut man in die build-Datei ein und ergänzt die Targets im Hudson um das phplint-Target. Sinnvollerweise direkt nach dem prepare, denn wenn der Code schon nicht syntaktisch korrekt ist, bricht der Build an dieser Stelle ab.

Der Check ist relativ schnell umgesetzt und bringt sicher einen weitaus höheren Mehrwert. Als Alternative sei erwähnt, dass man einen solchen Check auch im SVN als pre-commit Hook hinterlegen könnte. Dann könnte man syntaktisch inkorrekten Code nicht einmal im SVN unterbringen. Diese Information nur am Rande.

By continuing to use the site, you agree to the use of cookies. more information

The cookie settings on this website are set to "allow cookies" to give you the best browsing experience possible. If you continue to use this website without changing your cookie settings or you click "Accept" below then you are consenting to this.

Close