Artikelformat

Analyse der „Lines of Code“

Um die Größe eines Projekts zu messen ist es ganz geschickt die Eckdaten zu analysieren. Hierzu gehören natürlich die Zeilen Code, die es enthält. Möchte man die Qualität bewerten ist es sehr interessant das Verhältnis von Kommentaren zum produktiven Code zu kennen. Heute möchte ich 2 Tools vorstellen, die dies für PHP bewerkstelligen.

phploc
Das erste Tool heißt phploc und ist von Sebastian Bergmann, dem phpunit Entwickler. phploc wird auf der Kommandozeile auf ein Projekt angesetzt und durchsucht darauf hin die PHP Dateien nach allem was interessant sein könnte und gibt anschließend eine entsprechende Statistik aus. Diese umfasst anschließen die Anzahl der Klassen, der Dateien, der Interfaces, abstrakte Klassen, statische Funktionen und natürlich viele Werte mit dem Bezug zu den Lines of Code. In der neusten Version scheint auch die durchschnittliche zyklomatische Komplexität des Projekts berechnet zu werden. Alles in allem sehr solide und auch sehr praktische Anwendung. Aber ein kleines Problem besteht: Man kann keine genau Aufschlüsselung auf die einzelnen Dateien bekommen.

PHP Sourcecode Statistics
Ein Skript, dass eine genaue Auflistung über alle Dateien ausgibt ist „PHP Sourcecode Statistics„. Im Gegensatz zu phploc ist es über das Web erreichbar und gibt nur die Codezeilen, die leeren Zeilen und die Kommentarzeilen an. Dazu noch die entsprechenden Ratios. Im Skript selber sind einige Konstanten definiert; diese repräsentieren die Grenzwerte für die optische Hervorhebung. So wird unter einer bestimmten Ratio oder über einer gewissen Anzahl von Zeilen der Wert rot hervorgehoben, sodass man bei größeren Projekten das Augenmerk auf diese „Highlights“ lenken kann.

Zusammenfassend würde ich eine Kombination von beiden Skripten empfehlen. Für den schnellen Überblick „PHP Sourcecode Statistics“ und für eine projektbezogene genauere Analyse phploc. Hier wäre eine Integration in einen CI-Server wie phpUnderControl oder in eine IDE interessant.

Schreibe einen Kommentar

Pflichtfelder sind mit * markiert.