Code Metriken auswerten mit Sonar

Keine Kommentare

Code Metriken sind ein Bestandteil der Qualitätskontrolle für Software-Projekte. Jeder hat vermutlich auch bereits einmal Tools wie Cobertura, FindBugs oder auch Checkstyle eingesetzt.

Sonar vereint die Funktionen dieser (und weiterer) Tools zur statischen Code-Analyse unter einem Dach und bietet eine komfortable Web-Oberfläche zur Auswertung der gesammelten Statistiken an.


Sonar_Screenshot

Sonar lässt sich sicherlich am Einfachsten mit Maven integrieren, wenn man erstmal die initialen Probleme mit dem Maven-Plugin überwunden hat (siehe Kasten). Es werden aber auch andere Build-Systeme unterstützt. Auch wird Hudson durch ein eigenes Sonar-PlugIn unterstützt. Es ist jedoch auch problemlos möglich Sonar als „Freestyle“-Projekt in Hudson zu integrieren, was den Vorteil hat, dass man dann einen eigenen Schedule wählen kann. Somit werden natürlich auch andere CI-Systeme (Continuous Integration) unterstützt. Im folgenden Kasten wird erläutert, wie Sonar von der Kommandozeile für ein existierendes Maven-Projekt gestartet werden kann.

Bei dem Versuch Sonar erstmalig in einem Maven-Projekt in Benutzung zu nehmen erscheint nur die folgende Fehlermeldung:
The plugin ‚org.apache.maven.plugins:maven-sonar-plugin‘ does not exist or no valid version could be found
POM ‚org.codehaus.sonar:sonar-maven-plugin‘ not found in repository: Unable to download the artifact from any repository

Keine der im Netz gefundenen Lösungsvorschläge für dieses Problem hat bei mir funktioniert (z.B. das Löschen von org/codehaus/mojo im lokalen Maven Repository). Die Lösung brachte – nach einigem Suchen – die folgende Zeile in dem pom.xml-File des entsprechenden Projekts, mit dem das Sonar-Plugin explizit eingebunden wird:

<plugin>
<groupId>org.codehaus.sonar</groupId>
<artifactId>sonar-maven-plugin</artifactId>
<version>1.8</version>
</plugin>

Danach werden bei einem Aufruf des Sonar-Ziels unter Maven alle benötigten Artefakte heruntergeladen bis auf stax2-api. Dieses musste ich manuell herunterladen und mittels:

mvn install:install-file -DgroupId=org.codehaus.woodstox -DartifactId=stax2-api -Dversion=3.0.1 -Dpackaging=jar -Dfile=<file>

zum Maven-Repository hinzufügen. Danach kann Sonar unter Maven für das entsprechende Projekt wie folgt gestartet werden:

mvn -e -B -f <Pfad-zum-POM-File> sonar:sonar

Dies setzt nur voraus, dass bereits ein Maven-install für dieses Projekt gelaufen ist. Alternativ können natürlich auch alle Maven-Ziele in einem Aufruf kombiniert werden.

Sonar läuft als eigener Web-Server und sollte an eine Enterprise-Datenbank angebunden werden. Es wird empfohlen die integrierte Derby-Datenbank nur für Evaluierungszwecke zu nutzen. Die Details der Sonar System-Anforderungen finden sich hier.

Einmal installiert bietet Sonar einen echten Mehrwert. Durch die Aggregation der verschiedenen Analyse-Tools unter einer Oberfläche bekommt man sehr schnell einen Überblick über potentielle Probleme im Code. Auch lassen sich verschiedene Profile erzeugen, die mit individuellen Projekten verknüpft werden können. Eigene Profile können am Besten als Kopie eines der drei vorgefertigten Profile erstellt werden.

Für mich ist Sonar eine uneingeschränkte Empfehlung wert. Die einfache Integration in Maven und Hudson (oder andere CI-Systeme) sind ein grosser Pluspunkt. Die Weboberfläche bereitet die Informationen ansprechend auf und erleichtert das schnelle Auffinden potentieller Probleme. Die komfortable Anpassung der Regeln über die Weboberfläche rundet das positive Bild ab.

Thomas Jaspers

Langjährige Erfahrung in agilen Softwareprojekten unter Einsatz von Java-Enterprise-Technologien. Schwerpunkt im Bereich der Testautomatisierung (Konzepte und Open-Source Werkzeuge).

Share on FacebookGoogle+Share on LinkedInTweet about this on TwitterShare on RedditDigg thisShare on StumbleUpon

Kommentieren

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.