Code-Qualität optimieren mit SonarQube und Bamboo

Automatisierte statische Code-Analysen des Quelltextes eines Software-Projekts helfen, bestimmte Arten von Fehlern frühzeitig systematisch aufzudecken. Ein etabliertes und hilfreiches Tool für diesen Anwendungsfall ist SonarQube (früher schlicht Sonar). Im folgenden kurzen Tutorial zeigen wird, wie SonarQube in wenigen Minuten eingerichtet und in einen Build eines Bamboo-Integration-Server integriert werden kann.

Was ist SonarQube?

SonarQube ist ein Werkzeug zur statischen Code-Analyse. Es untersucht Quellcode im Hinblick auf unterschiedliche Qualitätsparameter. Die Analysen betreffen bzw. umfassen unter anderem die folgenden Aspekte:

  • Architektur und Software-Design
  • Komplexität
  • Potenzielle Fehlerquellen
  • Code-Doppelungen
  • Coding-Standards und Best-Practices
  • Modultests

Dabei greift SonarQube auf bewährte Werkzeuge wie PMD, Checkstyle, Findbugs, Surefire und Cobertura zurück. Das Tool unterstützt neben Java (durch Plugins) auch weitere Sprachen wie z.B. Groovy, Flex, PHP, PL/SQL, C#, Cobol, .Net, Erlang und Visual Basic 6. Darüber hinaus ist SonarQube über eine Plugin-API erweiterbar. (Bestehende Plugins können über die Plugin Library eingesehen werden.)

Installation und Konfiguration von SonarQube

SonarQube kann direkt von der SonarQube.org heruntergeladen und muss anschließend entpackt werden.  Um SonarQube zu starten (hier unter Linux), wechseln wir anschließend in das entsprechende betriebssystemspezifische Verzeichnis und führen SonarQube dort im bin-Verzeichnis aus:

% ./sonar.sh start
Starting SonarQube...
Started SonarQube.

Der Status der SonarQube-Instanz lässt sich mit dem Befehl status ermitteln:

% ./sonar.sh status
SonarQube is running (8524).

Nun ist SonarQube im Browser unter der Adresse http://localhost:9000/ erreichbar.

Sonarqube Weboberfläche nach der Installation

SonarQube-Weboberfläche nach der Installation

Ein Login als Administrator ist in der Standardinstallation mit den Zugangsdaten admin / admin möglich:

Administrator Account in SonarQube

Administrator-Account in SonarQube

Installation und Konfiguration des Bamboo-Plugins

Das Plugin SonarQube für Bamboo der Firma Mibex Software steht auf dem Atlassian Marketplace zur Verfügung und kann direkt über den Administrationsbereich von Bamboo heruntergeladen und installiert werden (Bamboo Administration -> Find new add-ons -> Sonar -> Sonar for Bamboo).

Bamboo Sonar Plugin Installation

Installation des Sonar-Plugins für Bamboo

Die Konfiguration erfolgt in Bamboo über die Add-on-Administration (Bamboo Administrations -> Add-ons -> Sonar for Bamboo). Dort spezifizieren wir einen möglichst aussagefähigen Namen für den Server und dessen URL:

Konfiguration der Sonar Anbindung in Bamboo

Konfiguration der Sonar-Anbindung in Bamboo

Integration in einen Bamboo-Build-Plan

Damit ist alles vorbereitet, um Sonar in einen bestehenden Build-Plan in Bamboo zu integrieren. Dazu fügen wir in der Konfiguration des entsprechenden Jobs unseres Bamboo-Plans einfach einen Sonar-Task hinzu. In unserem Fall basiert das Projekt auf dem Build-Tool Maven 3, sodass wir in der entsprechenden Auswahl den Task Sonar Maven 3 verwenden.

Sonar Task zum Build Plan hinzufügen

Sonar-Task zum Build-Plan hinzufügen

In unserem Beispielszenario muss an der Konfiguration des Sonar-Tasks bequemerweise nichts geändert werden.

Konfiguration des Sonar Tasks

Konfiguration des Sonar-Tasks

Damit ist Sonar nun erfolgreich in unseren Bamboo-Build integriert.

Reporting im Bamboo

Ist der Build erfolgreich gelaufen, sehen wir in der Übersicht eine Verknüpfung zum entsprechenden Projekt auf dem Sonar-Server unter dem Label SonarQube analysis results:

Bamboo Build mit verknüpftem Sonar Report

Bamboo-Build mit verknüpftem Sonar-Report

Der verknüpfte Report in Sonar bietet dann Analysen und Einblicke, die wie im folgenden Beispiel aussehen:

Übersicht des Bamboo-gesteuerten Sonar-Reports

Übersicht des Bamboo-gesteuerten Sonar-Reports

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

Code-Coverage-Metriken mit Bamboo und Clover
Individuelle Software-Entwicklung: Workflows, Branching-Modelle und Continuous Delivery
Vorgehen nach Scrum: Die beste Wahl für den Kunden, die Agentur – und das Produkt
Was agile Software-Projekte dem Kunden bringen
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