SonarQube Tutorial + Schnelle Installation Docker [2024]

Du kennst noch nicht SonarQube?

Dieser Guide zeigt Dir, wie Du Deine Entwicklung massiv mit SonarQube verbessern kannst und zuverlässige Software schreiben kannst.

Beginnen wir!

Was ist SonarQube?

SonarQube Intro

SonarQube ist eine Server-Software, die Deinen Code auf Basis von Qualitätsregeln untersucht und bewertet.

Die Software unterstützt Entwickler bei der Verbesserung der Lesbarkeit (Clean Code) und der Reduzierung von Fehlern wie Null Pointer Exceptions.

SonarQube untersucht statisch und dynamisch die Beschaffenheit des Codes und macht den Entwickler auf häufige (Sicherheits-) Probleme aufmerksam.

Was ist SonarLint?

SonarLint
SonarLint

SonarLint ist eine statische Code-Analyse, welche Deinen Code innerhalb Deiner Entwicklungsumgebung auf Auffälligkeiten untersucht.

Die Software sucht nach Mustern, die von unsauberen und schlecht wartbaren Code zeugen und markiert diese. Zu jeder Markierung stellt die Software SonarLint eine Beschreibung mit einem negativ und positiv Beispiel zur Verfügung, sodass der Entwickler die Verbesserung auf seinen Code manuell anwenden kann.

SonarBug
SonarBug

Warum soll ich SonarQube nutzen?

SonarLint und SonarQube helfen Dir Deine blinden Flecken zu beseitigen. Jeder Entwickler hat Marotten und schlechte Gewohnheiten, die im Code nichts verloren haben.

Externe erhalten schneller einen Eindruck über die Code-Qualität, wenn Sie die aggregierten KPIs wie das ABCD-Rating von Sonar sehen.

Installation von SonarLint

Du kannst in Visual Studio Code und Eclipse die Erweiterung SonarLint installieren.

  1. Öffne Visual Studio Code
  2. Gehe zum Tab Erweiterungen auf der linken Seite
  3. Suche nach SonarLint in der Leiste oben
  4. Installiere die Anwendung
  5. Starte Visual Studio Code neu
  6. Öffne eine Coding-Datei z. B. Test.java
  7. Öffne das Terminal mit Strg + ö (Windows-Shortcut)
  8. Gehe zum Reiter Probleme
  9. Suche nach den Einträgen von SonarLint. Die IDE markiert die Sonar-Fehler im Programmiercode mit einer gelben Unterstreichung.

Nicht jeder Sonar Fehler ist auch wirklich ein Sonar-Fehler. Je nach Projekte sind 5 % der Fehler False-Positives, die Du übergehen darfst, wenn diese ordentlich untersucht hast.

Installation von SonarQube

SonarQube ist eine ganze Server-Software, die mehr als SonarLint kann und eine langsamere Taktung nutzt:

SonarQube untersucht z. B. in einer Pipeline bei einem Merge-Request den Code und erstellt einen Bericht. SonarLint ist dynamisch und zeigt Dir die Fehler direkt an, während SonarQube nur die Zwischenstände analysiert.

Für SonarQube solltest Du Dir Docker installieren, um Dich nicht unnötig abzuquälen. Zu Docker habe ich ein komplettes Tutorial mit einer vollständigen Anleitung erstellt.

Docker Compose hilft Dir dabei Tipp-Arbeit zu sparen. SonarQube ist als Docker-Container verfügbar, welchen Du vom Docker Hub downloaden kannst. Die Docker Befehle kannst Du entweder ins Terminal tippen oder diese als eine Konfiguration in einer Docker-Compose yaml festhalten.

docker run -d --name sonarqube -e SONAR_ES_BOOTSTRAP_CHECKS_DISABLE=true -p 9000:9000 sonarqube:latest
  • login:admin
  • password: admin

Sonar Grundlagen

Damit Du Sonar verstehst, brauchst Du eine paar Grundlagen

Was ist Clean Code?

Clean Code ist Programmiercode, der besonders gut lesbar und wartbar ist. Ein Dritter sollte sich in einem Clean Code in wenigen Minuten einarbeiten können und nicht Rätsel raten, was die Variable x, a oder n bedeutet.

Kommentare im Clean Code beschreiben nicht, was der Code macht, sondern warum. Die Entwickler können den Code selbst lesen und zu verstehen, was das Programm macht. Die Gründe, warum statt Funktion X die Funktion Y genutzt wurde, sind viel aussagekräftiger.

SonarQube macht Dich mit einer Anmerkung aufmerksam, wenn Du einen offensichtlichen Verstoß gegen lesbaren Code gemacht hast. Zu viele if-Anweisungen, lange Funktionen, 1-buchstabige Variablen.

Was sind Sonar Bugs?

Regel anzeigen
Regel anzeigen

Sonar Bugs sind Fehler, die SonarQube über einen Art Compiler findet.

Ein klassisches Beispiel ist die Null Pointer Exception. Du liest von einer externen Ressource (API oder Datei) und verwendest die Parameter der Rückgabe direkt in Deinem Code.

Falls die Ressource nicht verfügbar ist, bekommst Du einen Null Pointer. Dein Code erwartet, dass immer ein Inhalt von der Ressource zurückkommt. Stattdessen musst Du auch den Fall betrachtet, dass eine Ressource nichts (oder einen Fehler) zurücksendest.

Sonar ist so intelligent, dass diese auch „ein paar“ Sicherheitslücken erkennen kann.

Ein Beispiel sind DoS Angriffe auf Basis eines regulären Ausdrucks. Ein regulärer Ausdruck kann eine Zeichenfolge verifizieren oder Bestandteile daraus extrahieren. Bei falscher Verwendung kann ein Hacker eine Zeichenfolge nutzen, die dazu führt, dass der Server sehr lange parst und viel CPU-Leistung beansprucht. Der Service ist nicht mehr verfügbar.

Was sind Code Smells?

Code Smells sind Stellen mit 100 % validen Code, der aber wegen der Komplexität oder Ungewöhnlichkeit schwer lesbar ist. Eine Software muss wartbar bleiben. Dazu gehört sauberer Code. Ein typisches Beispiel ist, dass ein Code mit einem Wust an If-Verzweigungen übersät ist. Dies ist zwar korrekt, aber schwer zu lesen.

Der Entwickler soll den Code einfacher strukturieren. Der Programmierer sollte für diese Aufgabe z. B. mehr Funktionen oder eine Switch-Anweisung verwenden.

Anwendung von SonarQube in der Realität

SonarQube eignet sich hervorragend für die Implementierung in eine CI / CD Pipeline. Wenn ein Entwickler einen Pull-Request stellt, überprüft SonarQube die Änderungen direkt.

Abprüfen der Test-Coverage

Je nach Einstellung in Deiner Pipeline kannst Du nicht mehr Mergen, wenn die Coverage zu gering ist.

Feststellung der Software Qualität

SonarQube bewertet die Wartbarkeit anhand der Code-Smells und berechnet, wie viel Arbeit zum Fixen der Fehler benötigt wird. Wenn Du Monate lang ohne Sonar entwickelst, dann häufst Du eine Menge an „Schulden“ an. Irgendwann möchte keiner mehr Deinen Code warten, weil der Code zu einem Buchstabensalat mutiert ist.

Code Bugs finden

Sonar erkennt Bugs und lässt die CI CD Pipeline stoppen, weil die Bugs erst beseitigt werden müssen, bevor ein menschliches Testteam diese findet.

Best Practice with SonarQube

Damit SonarQube Dir einen Vorteil bringt, musst Du in regelmäßigen Abständen (z. B. Alle 2 Wochen) SonarQube aufrufen und Dir Code-Smell für Code-Smell ansehen.

Je mehr SonarQube Bugs Du geschlossen hast, desto besser kannst Du während des Programmierens diese vermeiden. Du achtest verstärkt auf Deine Marotten und schreibst von Beginn an besseren Code.

Lese Dir die Beschreibung durch und mache den Verantwortlichen auf einen Bug-Typ aufmerksam.

Steffen Lippke

Falls ein Code-Smell nach den Code-Regeln Deines Unternehmens keine Code-Smell ist, dann wähle „Wont fix“ aus oder deaktiviere die Regel. Überstrapaziere das Vorgehen nicht, weil die Empfehlungen von Sonar berechtigt sind und Dir ein besseres Gesamtergebnis ermöglichen.

Schreibe einen Kommentar

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


Jeden Monat teile ich mit Mitgliedern
4 neue praxisnahe Tutorials (je 1000+ Wörter).


Trage Deine Mail, damit Du
Deine Coding + Hacking Skills erweitern kannst!

Die Webseite nutzt nur technisch notwendige Cookies.