37 Statische Code-Analyse: Einführung und Anwendungsbeispiele

Die statische Code-Analyse ist ein Verfahren zur Untersuchung von Quellcode, ohne ihn tatsächlich auszuführen. Dabei wird der Code auf potenzielle Fehler, Sicherheitslücken, Performance-Probleme, Einhaltung von Codierungsstandards und andere Kriterien überprüft. Diese Methode ist besonders wertvoll, um frühzeitig Schwachstellen im Code zu identifizieren und die Wartbarkeit sowie die Qualität des Codes zu verbessern.

37.1 Grundlagen der statischen Code-Analyse

Die statische Code-Analyse erfolgt durch spezialisierte Tools, die den Code auf Basis vordefinierter Regeln analysieren. Diese Regeln können von allgemeinen Codierungsstandards (z. B. Google Java Style Guide) bis hin zu spezifischen Sicherheitsrichtlinien reichen. Die statische Analyse wird in der Regel während des Build-Prozesses durchgeführt und kann nahtlos in CI/CD-Pipelines integriert werden.

Typische Prüfkriterien: - Syntaxfehler: Grundlegende Fehler in der Struktur des Codes, die verhindern, dass er korrekt ausgeführt wird. - Sicherheitslücken: Schwachstellen im Code, die Angreifern Zugriff auf das System gewähren könnten (z. B. SQL-Injections, Cross-Site Scripting). - Code-Duplikate: Abschnitte von identischem oder fast identischem Code, die die Wartbarkeit und Erweiterbarkeit des Codes erschweren. - Komplexität: Übermäßig komplexe Funktionen oder Klassen, die die Lesbarkeit und Wartbarkeit des Codes beeinträchtigen. - Einhaltung von Codierungsstandards: Sicherstellung, dass der Code einheitlich und gemäß den vorgegebenen Richtlinien geschrieben ist.

37.2 Integration der statischen Code-Analyse in GitLab CI

GitLab CI ermöglicht die einfache Integration von Tools zur statischen Code-Analyse in CI/CD-Pipelines. Diese Tools analysieren den Code bei jedem Commit oder Merge Request und generieren Berichte, die Entwickler sofort auf potenzielle Probleme hinweisen.

Beispiel einer Pipeline-Integration:

stages:
  - static_analysis
  - build

static_code_analysis:
  stage: static_analysis
  script:
    - sonar-scanner
  allow_failure: true

In diesem Beispiel wird ein statisches Analyse-Tool, wie z. B. SonarQube, in die Pipeline integriert, um den Code vor dem Build-Prozess zu analysieren. allow_failure gibt an, dass der Prozess weitergeht, auch wenn die statische Analyse fehlschlägt, was für nicht-kritische Analysen nützlich sein kann.

37.3 SonarQube: Ein Beispiel für statische Code-Analyse

SonarQube ist ein weit verbreitetes Tool für die statische Code-Analyse und wird häufig in Kombination mit GitLab verwendet. Es unterstützt verschiedene Programmiersprachen und prüft den Code auf eine Vielzahl von Metriken wie Bugs, Sicherheitslücken, Code-Smells, Testabdeckung und Code-Duplikate.

SonarQube bewertet den Code anhand einer Metrik namens Quality Gate, das sicherstellt, dass der Code eine definierte Qualitätsstufe erreicht, bevor er freigegeben oder in die Produktion integriert wird.

Vorteile von SonarQube: - Unterstützung für über 25 Programmiersprachen. - Umfangreiche Reports zu Code-Qualität und Sicherheitsaspekten. - Einfache Integration in CI/CD-Systeme wie GitLab.

Integration von SonarQube in GitLab: Die Integration von SonarQube in GitLab erfolgt über den SonarQube Scanner, der in der CI/CD-Pipeline ausgeführt wird. Sobald der Scan abgeschlossen ist, stellt SonarQube detaillierte Berichte bereit, die in der GitLab-Benutzeroberfläche angezeigt werden können.

Beispiel einer SonarQube-Integration:

sonarqube_scan:
  stage: static_analysis
  script:
    - sonar-scanner
  allow_failure: true

Hier wird der SonarQube-Scanner in einer GitLab-Pipeline ausgeführt, um den Quellcode zu analysieren und einen Bericht zur Codequalität zu generieren.

37.4 Vorteile der statischen Code-Analyse


Weitere Informationen finden sich in der offiziellen GitLab-Dokumentation.