Code-Coverage-Metriken mit Bamboo und Clover

Wie lässt sich die Code-Qualität eines Software-Projektes ermitteln? Wie kann eine möglichst hohe Qualität sichergestellt werden? Natürlich durch Software-Tests – diese müssen jedoch erstellt und in das Projekt integriert werden. Vor diesem Hintergrund erweisen sich Werkzeuge als hilfreich, die Code-Coverage-Metriken ausgeben und die ein solches Software-Projekt automatisiert als Ganzes analysieren können. Weit verbreitet und ausgereift ist in diesem Zusammenhang Clover von Atlassian, das in wenigen Minuten aufgesetzt ist.

Was ist Clover?

Clover ist ein nützliches Tool zur Erfassung von Code-Metriken für Java- und Groovy-Projekte. Es integriert sich nahtlos in Entwicklungsumgebungen wie Eclipse und IntelliJ und läuft auf Continuous-Integration-Systemen wie Bamboo und Jenkins/Hudson. (Dieses Beispiel geht davon aus, dass Atlassians CI-Server Bamboo zum Einsatz kommt.) Als Build-Tools unterstützt Clover sowohl Maven als auch Ant.

Konfiguration in Bamboo

Clover wird mit Bamboo bereits ausgeliefert, es ist also kein zusätzliches Herunterladen der Erweiterung nötig. Das Clover-Plugin muss lediglich gesondert lizenziert werden. Diese Lizenz wird im Administrationsbereich von Bamboo eingerichtet, wie der folgende Screenshot zeigt:

clover-license-configuration-in-bamboo

Konfiguration der Clover-Lizenz in der Bamboo-Administration

Nach der Lizenzierung ist Clover einsatzfähig.

Clover-Konfiguration für einen Java-Build

Clover lässt sich per Klick in der Job-Konfiguration unter Configure Plan -> Name-des-Jobs -> Miscellaneous aktivieren. In den meisten Software-Projekten, in denen Clover nicht bereits z.B. per Maven-Plugin integriert ist, lässt sich die Integration bequem und ohne Änderung am Projekt per Automatically integrate Clover into this build vornehmen.

Ist eine besondere Konfiguration notwendig, kann Clover im Projekt spezifisch konfiguriert werden. Bamboo/Clover orientiert sich dann an der clover.xml-Konfigurationsdatei die in dem Projekt erstellt wurde.

Clover ist nun in der Lage, historisierende Reports zu erstellen, um Änderungen über den Projektlebenszyklus hinweg zu erfassen und zu visualisieren.

Aktivierung und automatische Integration von Clover in den Build-Plan

Aktivierung und automatische Integration von Clover in den Build-Plan

Clover-Reports in Bamboo

Ist nun ein Build durchgelaufen, stehen die Reports in der Plan Summary unter dem Menüpunkt Clover zur Verfügung. Dank der Historisierung bietet Clover hier zunächst Charts im Zeitverlauf zur Testabdeckung:

clover-historie-im-bamboo

Clover-Historie in Bamboo

Darüber hinaus stehen zahlreiche weitere hilfreiche Reports zur Verfügung.

Auf Build-Ebene:

  • Project Risks
  • Quick Wins
  • Tree maps
  • Per-test coverage
  • Project, package, & method – level coverage
  • Test coverage per line of code
  • Most complex packages & classes
  • Least tested methods

Auf Test-Ebene:

  • Pass/fail/errors per test
  • Coverage contribution per test

Trend-Reports:

  • Coverage over time:
    • Packages
    • Classes
    • Methods
    • Statements
  • Metrics over time:
    • Total Packages, Files, LoC
    • Non-covered lines
    • Cyclomatic Complexity
    • User-defined metrics
  • Versus previous builds:
    • Classes & packages that gained/ lost coverage
    • Newly added classes

Weitere Informationen zu den von Clover generierten Reports bieten die Feature-Übersicht und die ausführliche Dokumentation von Atlassian.

clover-code-analysis-report

Von Clover generierter Code-Analyse-Report

Ihr Partner für individuelle Software-Projekte

Planen Sie bereits ein konkretes Software-Projekt? Oder gibt es bestimmte Prozesse in Ihrem Unternehmen, die Ihnen schon lange Kopfzerbrechen bereiten? Bremst ein System oder eine Schnittstelle Ihre Mitarbeiter auf der einen oder Ihre Kunden auf der anderen Seite aus? Dann sprechen Sie mit uns darüber! Wir freuen uns darauf, gemeinsam eine individuelle Lösung zu entwickeln – bei höchster Qualität und voller Kostenkontrolle.  Wir legen größten Wert auf Erweiterbarkeit, Performanz, Skalierbarkeit, Plattformunabhängigkeit und Testbarkeit und schaffen individuelle High-End-Software-Lösungen, die sich auch im Nachhinein flexibel ausbauen und verändern lassen.

Weiterführende Infos

Was agile Software-Projekte dem Kunden bringen
Individuelle Software-Entwicklung: Workflows, Branching-Modelle und Continuous Delivery
Vorgehen nach Scrum: Die beste Wahl für den Kunden, die Agentur – und das Produkt
Echte Integration: Das Zusammenspiel von JIRA, Stash und Bamboo im Entwicklungsprozess
Der Beginn eines Happy Ends: Initialer Anforderungs-Workshop für erfolgreiche Projekte
Darum ist eine regelmäßige Kundenpräsenz beim Entwicklungsteam so sinnvoll

Artikel teilen:Share on FacebookTweet about this on TwitterShare on Google+Share on LinkedInEmail this to someonePrint this page