Zum Hauptinhalt springen

📊 SonarQube – Codequalität messbar machen

SonarQube ist eine Plattform zur statischen Codeanalyse mit Fokus auf:

  • Code Smells
  • Bugs
  • Security Vulnerabilities
  • Maintainability
  • Technical Debt
  • Testabdeckung

Während Linting lokale Regeln prüft, bewertet SonarQube die strukturelle Codequalität auf Projektebene.


1. Ziel und Einordnung

1.1 Was macht SonarQube?

Sonar analysiert den gesamten Codebestand und klassifiziert Findings typischerweise in:

  • Bug (wahrscheinlicher Fehler)
  • Vulnerability (Sicherheitsrisiko)
  • Code Smell (Wartbarkeitsproblem)
  • Security Hotspot (manuelle Prüfung erforderlich)

Zusätzlich berechnet Sonar:

  • Test Coverage
  • Duplications
  • Cognitive Complexity
  • Maintainability Rating
  • Reliability Rating
  • Security Rating
  • Technical Debt

Sonar liefert damit ein Qualitätsprofil – kein binäres „gut/schlecht“.


1.2 Was macht SonarQube nicht?

Sonar:

  • versteht keine Geschäftslogik
  • ersetzt kein Code Review
  • ersetzt keine Architekturarbeit
  • erkennt nicht jedes Sicherheitsproblem
  • ist kein Ersatz für Penetration Tests

Es ist ein automatisierter Indikator – kein Garant für Qualität.


2. Quality Gates

Sonar arbeitet mit sogenannten Quality Gates.

Ein Gate kann definieren:

  • Keine neuen Bugs
  • Keine neuen Vulnerabilities
  • Coverage auf neuem Code ≥ X %
  • Keine neue Duplication
  • Keine Major Issues auf neuem Code

Wichtig:

Quality Gates sollten sich primär auf New Code beziehen.

Alte technische Schulden dürfen nicht jede Weiterentwicklung blockieren.


3. Harte vs. weiche Konfiguration

Sonar kann sehr streng konfiguriert werden:

  • Fail bei jeder Minor Issue
  • Mindest-Coverage global
  • Keine Duplication toleriert

Das ist technisch möglich –
aber organisatorisch nicht immer sinnvoll.

Empfehlung

  • Streng bei Security & Bugs
  • Realistisch bei Maintainability
  • Fokus auf New Code
  • Schulden sichtbar machen, nicht verstecken

4. Umgang mit Findings

Der entscheidende Punkt ist nicht die Konfiguration –
sondern der Umgang mit Ergebnissen.

4.1 Nicht ignorieren

Findings sollten:

  • entweder behoben
  • oder bewusst akzeptiert
  • oder technisch begründet „Won’t Fix“ markiert werden

Ignorierte Findings erzeugen:

  • schleichende Qualitätsverschlechterung
  • sinkendes Vertrauen in das Tool
  • Gewöhnung an rote Dashboards

4.2 Security Findings sind besonders kritisch

Sonar erkennt z. B.:

  • SQL Injection Risiken
  • unsichere Deserialisierung
  • unvalidierte Eingaben
  • gefährliche Regex
  • unsichere Kryptonutzung

Diese sollten niemals pauschal ignoriert werden.

Security Hotspots müssen geprüft und dokumentiert werden.


4.3 „Legacy ist halt so“ ist keine Strategie

In bestehenden Systemen findet Sonar oft:

  • tausende Code Smells
  • hunderte Security Issues
  • hohe Komplexität

Hier gilt:

  • Baseline definieren
  • Fokus auf neuem Code
  • Schrittweise Reduktion planen

5. Sonar im Projektlebenszyklus

5.1 Von Anfang an integriert

Wenn Sonar früh aktiv ist:

  • keine Altlasten
  • saubere Baseline
  • klare Kultur
  • kein Big-Bang-Aufräumen

Späte Einführung ist deutlich schwieriger.


5.2 Stufenmodell-Kontext

Stufe 1:

  • optional, lokal

Stufe 2:

  • Sonar als CI-Analyse
  • Gate auf neuem Code

Stufe 3:

  • Security & Reliability strikt
  • Komplexitätsgrenzen sinnvoll gesetzt

Stufe 4:

  • dokumentierte Behandlung von Findings
  • Evidence für Audits

Stufe 5:

  • vollständige Nachweisbarkeit
  • Integration in Compliance-Dokumentation

6. Typische Anti-Patterns

  • Gate komplett deaktivieren
  • Alle Issues auf „Won’t Fix“
  • Coverage künstlich erhöhen
  • Komplexität ignorieren
  • Sonar nur als KPI benutzen

Sonar ist kein Management-Dashboard zur Bewertung von Entwicklern.

Es ist ein Risikofrühwarnsystem.


7. Technische Schulden sichtbar machen

Sonar quantifiziert Technical Debt.

Das ist kein Selbstzweck.

Es hilft bei:

  • Budgetargumentation
  • Priorisierung
  • Refactoring-Planung
  • Risikoabschätzung

Technische Schulden sind nicht per se schlecht.
Unbewusste Schulden sind gefährlich.


8. Definition of Done

Ein Change gilt nicht als fertig, wenn:

  • neue Bugs oder Vulnerabilities entstehen
  • Quality Gate rot ist
  • Findings nicht bewertet wurden
  • Security Hotspots ungeprüft bleiben

Kernaussage

SonarQube ist kein Kontrollinstrument gegen Entwickler.

Es ist ein Frühwarnsystem für:

  • Wartbarkeitsrisiken
  • Sicherheitsprobleme
  • schleichende Komplexität
  • technische Schulden

Richtig eingesetzt verhindert es nicht Entwicklung –
es verhindert Qualitätsverfall.