- 1 Section
- 10 Lessons
- unbegrenzt
- Entwicklungsumgebungen & Toolchain10
- 1.1IDEs im Vergleich: VS Code, IntelliJ, Eclipse, PyCharm
- 1.2Projektstruktur und Build-Tools: Maven, Gradle, npm
- 1.3Paketmanager: pip, npm, Maven Central
- 1.4Bibliotheken auswählen und bewerten
- 1.5Bestehende Anwendungen lesen, verstehen und anpassen
- 1.6Linter, Formatter und Codequalitätswerkzeuge
- 1.7Vorgehensmodelle in der Entwicklung: Scrum, Kanban, XP
- 1.8Code-Dokumentation: JavaDoc, Docstrings, OpenAPI
- 1.9Statische Codeanalyse und SonarQube
- 1.10Aufgaben Toolchain
Statische Codeanalyse und SonarQube
In L6 hast du Linter und Formatter kennengelernt – sie analysieren Code statisch, ohne ihn auszuführen. Diese Lektion vertieft das Thema mit statischer Codeanalyse auf Enterprise-Niveau: SonarQube, der De-facto-Standard für umfassende Code-Qualitätsmessung in größeren Projekten.
Du lernst, was SonarQube von einem normalen Linter unterscheidet, was ein Quality Gate ist, welche Metriken gemessen werden (Bugs, Vulnerabilities, Code Smells, Coverage, Duplikate) und wie statische Analyse in moderne CI/CD-Pipelines integriert wird.
1) Statische vs. dynamische Analyse
Zwei Welten der Code-Untersuchung:
2) Was ist SonarQube?
SonarQube (von SonarSource) ist eine Plattform zur kontinuierlichen Code-Qualitäts-Messung. Bekannt seit 2008 als „Sonar", später umbenannt. Open-Source-Community-Edition + kommerzielle Versionen. Unterstützt 30+ Sprachen.
Anders als ein einfacher Linter ist SonarQube eine zentrale Plattform: Server läuft in der Firma, jedes Projekt wird gescannt, Ergebnisse sind in einem Dashboard sichtbar, mit Historie, Trends und Vergleichen zwischen Projekten.
3) Das SonarQube-Dashboard
So sieht das Dashboard nach einer Code-Analyse aus. Die wichtigsten Metriken:
| Bedingung | Erwartet | Ist | Status |
|---|---|---|---|
| Coverage on new code | ≥ 80 % | 85 % | ✓ PASS |
| Duplicated lines | < 3 % | 2.1 % | ✓ PASS |
| Maintainability Rating | ≤ A | A | ✓ PASS |
| Security Rating | ≤ A | D | ✗ FAIL |
| Reliability Rating | ≤ A | C | ✗ FAIL |
4) Die fünf Hauptkategorien
5) Quality Gates – die Tür zur Produktion
Ein Quality Gate ist eine Sammlung von Schwellenwert-Regeln. Wenn auch nur eine Regel verletzt ist, wird der Build geblockt. Standardregeln (von SonarQube empfohlen):
- Coverage on new code: ≥ 80 % auf neu geschriebenem Code.
- Duplicated lines: < 3 %.
- Maintainability Rating: A (Smell-Aufwand < 5 % des Code-Volumens).
- Reliability Rating: A (keine offenen Bugs).
- Security Rating: A (keine offenen Vulnerabilities).
- Security Hotspots Reviewed: 100 % – jeder potenzielle Sicherheits-Punkt manuell geprüft.
Wichtige Idee: „Clean as you code". Quality Gates beziehen sich oft nur auf neuen Code, nicht auf Legacy. So vermeidet man, dass ein altes Projekt nie wieder grün werden kann – es wird nur sichergestellt, dass es nicht schlimmer wird.
6) CI/CD-Integration
Statische Analyse läuft nicht von Hand, sondern automatisch bei jedem Code-Push. Der Workflow:
7) Alternativen zu SonarQube
SonarQube ist nicht das einzige Werkzeug. Wettbewerber und Alternativen:
- CodeClimate: SaaS-Plattform, einfache Integration mit GitHub.
- Snyk Code: Fokus auf Security, mit AI-Hints für Fixes.
- SemGrep: Pattern-basierte Code-Suche, gut für Custom-Regeln.
- Codacy: ähnlich SonarQube, SaaS-fokussiert.
- DeepSource: moderne Cloud-Variante.
- SpotBugs / PMD / Checkstyle (Java): Open-Source, oft kombiniert.
- Roslyn Analyzers (C#): in Visual Studio integriert.
SonarQube ist gerade im Java/Maven-Ökosystem dominant, hat aber in JS/TS-Welten Konkurrenz. Die Wahl hängt von Sprache, Budget und Team-Vorliebe ab.
8) Technical Debt und Code-Qualität
Ein Begriff, der durch SonarQube populär wurde: Technical Debt (Technische Schulden). Metapher von Ward Cunningham: schlechter Code ist wie ein Kredit – heute schnell ausgeliefert, morgen zinsgetragen.
SonarQube quantifiziert das: jedes Code-Smell hat eine geschätzte Behebungs-Zeit. Aufsummiert ergibt das die Gesamt-Schuld in Stunden/Tagen. Ein typischer Mittelstands-Code: 200 Stunden Technical Debt. Bei Legacy-Systemen oft 1000+.
Strategien zum Umgang:
- Pauschalverbot (Quality Gate für neuen Code): keine neue Schuld einführen.
- Boy-Scout-Prinzip (vgl. L5): bei Berührung ein bisschen besser machen.
- Refactoring-Sprints: explizit Zeit zum Schuld-Abbau einplanen.
- Schwarze Listen: kritische Stellen, die als Erstes dran kommen.
9) Best Practices
- SonarQube früh integrieren. Je länger ein Projekt läuft, desto teurer wird's, später nachzurüsten.
- Realistische Gates. 100 % Coverage als Ziel ist Theorie. 80 % auf neuem Code ist Praxis.
- Auf Trends achten. Schlimmer geworden in der letzten Woche? Untersuchen.
- False Positives unterdrücken. Aber nur mit Begründung im Code (
// NOSONAR: Grund). - Sicherheits-Hotspots manuell prüfen. SonarQube findet potenzielle Lücken – ein Mensch muss entscheiden, ob echt.
- Coverage auch in Sonar bringen. Mit JaCoCo / coverage.py / lcov exportieren und SonarQube füttern.
10) Anti-Patterns
- Quality Gates ignorieren. Wenn niemand reagiert, sind sie wertlos. Bei FAIL muss der Build wirklich rot sein.
- Alle Smells auf einmal fixen. Riesiger PR mit 200 Änderungen – unmöglich zu reviewen. Lieber inkrementell.
- Massen-NOSONAR. Wer Warnungen mit Kommentaren stumm schaltet, hat SonarQube ad absurdum geführt.
- Nur Metriken jagen. 100 % Coverage durch sinnlose Tests ist wertlos. Qualität vor Zahlen.
- SonarQube als Code-Polizei. Verwende die Findings zur Diskussion im Team, nicht zur Beschämung Einzelner.
Zusammenfassung
Statische Codeanalyse liest Code, ohne ihn auszuführen (Gegensatz zu dynamischen Tests). SonarQube ist die De-facto-Plattform: zentraler Server, Dashboard mit Metriken, 30+ Sprachen. 5 Kategorien: Bugs, Vulnerabilities, Code Smells, Coverage, Duplikate. Quality Gates definieren Schwellen – bei FAIL blockt der Build. „Clean as you code": Regeln gelten nur für neuen Code, Legacy bleibt. Technical Debt in Stunden quantifizierbar. CI/CD-Integration mit Jenkins, GitHub Actions, GitLab. Alternativen: CodeClimate, Snyk, SemGrep, SpotBugs. Nächste Lektion: IHK-Aufgaben Toolchain.
