Einsatz von SonarQube zur Qualitätssicherung in heterogenen Projekten

SonarQube ist ein in Java- und C#-Projekten einsetzbares Analysewerkzeug, das eine ganzheitliche Sicht auf statische und dynamische Analysen liefert. Entwickler brauchen dadurch keine Kenntnisse über die Konfiguration der integrierten Werkzeuge zur Qualitätssicherung zu haben.

In Pocket speichern vorlesen Druckansicht
Lesezeit: 21 Min.
Von
  • Thomas Haug
Inhaltsverzeichnis

SonarQube ist ein in Java- und C#-Projekten einsetzbares Analysewerkzeug, das eine ganzheitliche Sicht auf statische und dynamische Analysen liefert. Entwickler brauchen dadurch keine Kenntnisse über die Konfiguration der integrierten Werkzeuge zur Qualitätssicherung zu haben.

Um die Qualität von Software während der Entwicklung zu überprüfen und noch im Zuge der Wartung aufrechtzuerhalten müssen Entwickler ihre Vorgaben einhalten. Diese finden sich in Design- und Programmierrichtlinien, die häufig auf Best Practices und Idiomen der eingesetzten Sprachen und Plattformen fußen. Um sie nicht manuell prüfen zu müssen, gibt es viele Werkzeuge, die mit statischer Code-Analyse den zu bewertenden Code untersuchen. In diesen werden die zu prüfenden Eigenschaften per Regel konfiguriert und ihnen unterschiedliche Kritikalitäten zugewiesen. Neben der statischen Code-Analyse spielt noch die dynamische Analyse eine wichtige Rolle. Hierbei wird im Allgemeinen die Codeabdeckung mit (Unit-)Tests gemessen.

Soll also der Code statisch und dynamisch analysiert werden, sind mehrere Tool-Entscheidungen zu treffen. In der Java-, aber auch in der C#-Welt ist man versucht, Werkzeuge wie PMD, Checkstyle, Findbugs, StyleCop, FxCop und gendarme in das Build-System zu integrieren. Das bedeutet, dass man diese Tools konfigurieren können muss. Auch die Darstellung und somit die Analyse der gemessenen Metriken und Verletzungen gegen Programmierrichtlinien sind in einem solchen Ad-hoc-Einsatz mitunter schwierig.

Eine Lösung aus dem Dilemma bieten Tools, die sich als Schale um Analysewerkzeuge legen und eine ganzheitliche Sicht auf statische und dynamische Analyseergebnisse offerieren. Hierbei existieren auch einige Open-Source-Werkzeuge, die sich in heterogenem Umfeld einsetzen lassen, zum Beispiel SISSy, ConQAT und SonarQube.

Im Folgenden geht es um den Einsatz von SonarQube in Java- und C#-Projekten. Es handelt sich dabei um eine Serveranwendung, die die Verwaltung mehrerer analysierter Projekte unterstützt und über einen Webbrowser aufrufbar ist. SonarQube speichert seine Daten in einer Datenbank, auf die das Tool über den objektrelationalen Mapper Hibernate zugreift, um so die Unabhängigkeit vom eingesetzten Datenbankmanagementsystem zu gewährleisten.

Nach dem Auspacken der gezippten aktuellen Version findet sich im Installationsverzeichnis die folgende Verzeichnisstruktur.

Die Verzeichnisstruktur der SonarQube-Installation (Abb. 1)

In bin sieht der Anwender Unterverzeichnisse zum Starten des SonarQube-Servers für alle gängigen Betriebssysteme. Als Grundvoraussetzung muss lediglich Java auf dem System installiert sein. In conf liegt die sonar.properties-Datei zum Steuern der Serverkonfiguration. In ihr gibt man insbesondere an, über welchen HTTP-Port der Server erreichbar ist, auf welche Datenbank zugegriffen wird und welcher Benutzer zum Zugriff auf die Datenbank verwendet werden soll.

Will man SonarQube "out of the box" probieren, sind keine Anpassungen dieser Datei notwendig: Das Tool nutzt dann die eingebettete Derby-Datenbank und ist unter Port 9000 über HTTP erreichbar. Sobald aber SonarQube produktiv eingesetzt werden soll, ist die Verwendung einer anderen Datenbank wie SQL Server, MySQL oder Oracle anzuraten, da die Analyse-Datenmenge schnell groß werden kann. Entsprechende Datenbank-Treiber finden sich, sofern nicht in der SonarQube-Installation enthalten, im Verzeichnis extensions/jdbc-driver.

Beim Start des SonarQube-Servers für das entsprechende Betriebssystem verbindet er sich mit der konfigurierten Datenbank und prüft zuerst, ob die benötigten Tabellen vorhanden sind. Wenn nicht, werden diese angelegt, das heißt, der Datenbank-Benutzer muss über entsprechende Rechte verfügen. Sobald die Tabellen vorliegen, ist der Server über http://localhost:9000 beziehungsweise http://[hostname]:9000 erreichbar und präsentiert sich mit folgender Oberfläche.

Initiale Startseite des Servers (Abb. 2)

Da noch kein System/Projekt analysiert wurde, ist hier noch nicht viel zu erkennen. SonarQube kann Projekte über vordefinierte oder selbst konfektionierte Dashboards veranschaulichen. Hierüber lassen sich adressatengerechte Ansichten auf die Analyseergebnisse erzeugen. Jegliche Konfiguration in SonarQube und die Sichtbarkeit von Projekten lassen sich über eine Zugriffssteuerung einstellen. So ist im obigen Screenshot auch der Login-Button zu erkennen, über den sich ein Nutzer anmelden kann. Bei einer initialen Installation ist ein Administrator mit dem Benutzernamen und Passwort admin/admin eingerichtet. Über diesen Account können weitere Nutzer, Gruppen, Rollen und Administratoren mit dem Menü Settings | Security eingerichtet werden.

Anlegen eines neuen Benutzers in SonarQube (Abb. 3)

Über das Security-Menü lässt sich insbesondere steuern, welche Gruppen oder Benutzer die Projekte sehen. Sind diese eingerichtet, kann es mit der Projektanalyse losgehen.