Werkzeuge zur Erhaltung der Softwarearchitektur – SonarQube – Teil 12


SonarQube

Bei SonarQube handelt es sich um ein Serverprodukt, das eine sehr gute Übersicht für den manuellen Prozess bietet. Auch wird der zeitliche Verlauf von Regelverletzungen in einer Datenbank gespeichert, so dass die Historie gut zu verfolgen ist. Sonar benötigt mindestens einen eigenen Server, der über Plugins erweitert wird und die Daten in einem DBMS ablegt. Die folgende Abbildung zeigt die Zusammenfassung eines Projektes in SonarQube

Wir benutzen derzeit SonarQube primär für den manuellen Sicherungsprozess, da die automatischen Regeln sehr gut durch die zuvor vorgestellten Werkzeuge in den Ablauf integriert sind. Sonar verwendet eine Vielzahl von Regeln und kann unter anderem auch auf die Regeln der bisherigen Werkzeuge zugreifen. Für den manuellen Review Prozess ist besonders schön, dass bei Sonar

  • alles gut Integriert ist
  • eine grafische Aufbereitung der Werte (auch Städte) stattfindet
  • der zeitlicher Verlauf in einer Datenbank abgelegt wird
  • False/Positives, die ein Hauptbestandteil des manuellen Prozesses sind, gut verwaltet werden

Eine Darstellung von Werten als Stadt findet sich in der folgenden Grafik.

Außerdem bewertet SonarQube technischen Schulden in Arbeitszeit mit einer (aus meiner Sicht sehr einfachen) Metrik. Dies kommt häufig dem Management mehr entgegen, als Zahlen zu Bugs und Code-Smells. Aber Vorsicht, solche Werte können niemals sehr genau sein.

Quality Gates

SonarQube fasst die Ergebnisse der Projektanalysen zusammen und stellt sogenannt Quality Gates bereit. Diese können Sonar konfiguriert werden und beschreiben analog zu Jenkins eine Art „Gesundheitszustand“ des Projekts. Quality Gates fassen Schwellwerte für verschiedene Bereiche zusammen

  • Veränderte Testabdeckung
  • Regelverstöße
  • Neue blockierende Regelverstöße
  • Neue kritische Regelverstöße
  • Technical Debt Ratio on New Code
  • Doppelter Quellcode
  • usw.

Integration

  • IDE (Plugin unvollständig)
  • Maven-Build
  • Jenkins (Plugin defekt)
    • Quality Gate Plugin
    • https://issues.jenkins-ci.org/browse/JENKINS-43081
  • Sonar-Server

Die Plugins sind derzeit etwas „wackelig“ und nicht zu 100% einsatzfähig. Auch wegen dieser derzeit schlechten Plugin-Situation ist Sonar derzeit eher für den manuellen Prozess sinnvoll. Die Plugins für die IDE zeigen derzeit Fehler entsprechend der Konfiguration des Servers. Es ist möglich Projekte mit den SonarQube Projekten zu „verbinden“ und somit die projektspezifischen Status einzusehen. Eine False/Positiv Behandlung in der IDE ist aber derzeit nicht (mehr) möglich.

False/Positive

Eine der Stärken von SonarQube ist die False/Positive Behandlung. Bei False/Positives kann in Sonar festgehalten werden, warum es sich um einen False/Positive handelt und die Begründung in einer Datenbank gespeichert werden. Danach gilt der False/Positive als behandelt und erscheint nicht mehr in den Auswertungen.

Regelerweiterung

  • Eigener Regelsatz / Selektion
  • https://docs.sonarqube.org/display/SONAR/Rules
  • Import weiterer Regelsätze z.B. der bisher betrachteten Werkzeuge

Fazit

SonarQube ist ein schickes Managementtool mit Integrationsschwierigkeiten. Nachdem die zuvor beschriebenen Werkzeuge in den QS Prozess aufgenommen wurden, sollte auch SonarQube insbesondere für den manuellen Prozess verwendet werden.

Du hast Fragen oder Anmerkungen? Kontakt: arndt@schoenb.de