pDepend – Eine kurze Einführung
Ob es jetzt phpDepend heißt oder pDepend weiß ich eigentlich gar nicht (und ich glaube der Autor ist sich da auch nicht immer so sicher). Auf jeden Fall geht es heute um eine kleine Einführung in das Tools von Manuel Pichler zur statischen Code-Analyse. Ich hatte ja in früheren Artikeln schon mal über Metriken geredet und auch die McCabe Metrik etwas detaillierter beschrieben.
Metriken sind meistens mathematische Funktionen, die ihr auf euren Source Code anwendet und am Ende einen Wert rausbekommt, der etwas über die Qualität eures Quellcodes aussagen soll. So viel zur Theorie. Funktionen zu berechnen macht aber keinen Spaß, mir zumindest nicht. Bin ja kein Taschenrechner. Aber wenn ich eine wäre, dann dieser hier. Wir brauchen also jemanden, der uns die tausenden Codezeilen analysiert und die Zahlen dann später ausgibt. Interpretieren machen wir dann lieber selbst.
phpDepend ist genau so ein Tool. Die Standardmetriken, die immer mal wieder an einem vorbeiziehen, wenn man sich ein wenig mit dem Thema beschäftigt, sind alle bereits implementiert. Sowas wie lines of code, cyclomatic complexity oder n-path complexity meine ich damit, aber auch andere wie Code Rank sind integriert. Es ist also auf jeden Fall ausreichend um eine grundlegende Analyse zu starten.
Alles was ihr tun müsst, um das Programm zu installieren, ist mal wieder die magschen PEAR Installer Worte zu sprechen:
pear channel-discover pear.pdepend.org
pear install pdepend/PHP_Depend-beta
Schon ist alles installiert. Jetzt könnt ihr ein wenig mit pdepend
rumspielen. Wenn ihr pdepend im vollen Umfang über euer Projekt laufen lasst, dann werdet ihr zum Schluss drei Arten von Report generiert bekommen.
pdepend --summary-xml=/tmp/summary.xml --jdepend-chart=/tmp/jdepend.svg --overview-pyramid=/tmp/pyramid.svg /pfad/zu/meinen/sourcen/
Das summary.xml File ist wohl das am einfachsten zu lesende. Dort sind alle Metriken als Zahl angegeben. Sortiert nach Package, Klasse und Methode. Wenn ihr also die Qualität einer ganz bestimmten Methode erfahren wollt, dann sollte dies eure erste Anlaufstelle sein. Die zwei anderen Reports sind Grafiken. Um diese zu interpretieren gehört ein wenig Wissen, das ihr vielleicht noch nicht habt. Ok, so schwer ist es nicht, aber ich würde es mir gerne für einen weiteren Artikel aufheben. Soll ja nicht sein ganzes Schrot auf einmal verschießen.
Auf jeden Fall lohnt es sich mal die McCabe (Cyclomatic Complexity) Metrik in seinem Projekt anzuschauen, denn diese hatten wir ja schon besprochen.
Wer mit den viele Abkürzungen wie CYCLO, LOC, AHH oder CALLS nicht anfangen kann, der sollt mal bei uns vorbei schauen. Denn unter http://www.phpug-halle.de/articles/19/php_depend-pdepend-pyramiden-metriken gibt es ein paar Erläuterungen dazu.
Danke Henry, dann brauch ich nicht lange suchen 🙂
Achja Nils: bitte schreib dann doch mal bald einen EIntrag, wie man die Zahlenwerte interpretieren können sollte 😉
Ich finde es sehr Schade, dass in meinen beiden Anwendungsentwicklungsausbildungen solche Themen garnicht behandelt worden sind. Rückblickend kann man nur sagen, dass einem „Frickelprogrammierung“ beigebracht wird und man selbst dann für Ordnung sorgen muss und sich selbst beibringt, wie man vernünftig und sauber programmiert.