Static Code Analysis Tools
Static Code Analysis Tools analysieren Quellcode ohne Ausführung, um Fehler, Sicherheitslücken und Code-Smells automatisch zu finden.
In a Nutshell
Static Code Analysis (SCA) analysiert Code ohne Ausführung. Tools wie ESLint (JS), Pylint (Python), SonarQube (multi) finden Bugs, Security Issues und Code Smells automatisch. Integration in CI/CD als Quality Gate.
Kompakte Fachbeschreibung
Static Code Analysis ist die automatisierte Analyse von Quellcode ohne Ausführung. Tools prüfen Syntax, Semantik, Coding-Standards, Sicherheitslücken und Code-Qualitätsmetriken. Die Analyse erfolgt durch Pattern-Matching, Datenflussanalyse und Abstraktionsinterpretation. SCA-Tools werden typischerweise in CI/CD-Pipelines integriert und können als Quality Gate dienen, der schlechten Code vom Merge abhält.
Warum Static Code Analysis?
- Automatisierung: Findet Fehler schneller als manuelle Reviews
- Konsistenz: Einheitliche Coding-Standards im Team
- Sicherheit: Findet Sicherheitslücken vor der Produktion
- Lernkurve: Neue Entwickler lernen durch Tool-Feedback
- Metriken: Messbare Code-Qualität über Zeit
Tools im Überblick
| Tool | Sprache | Typ | Besonderheit |
|---|---|---|---|
| ESLint | JavaScript/TS | Linter | Extrem konfigurierbar, Plugin-System |
| Prettier | JavaScript/TS | Formatter | Opinionated, Formatierung |
| Pylint | Python | Linter | PEP-8 konform, umfangreich |
| Black | Python | Formatter | Unkomprimiert, PEP-8 |
| SonarQube | Multi | Platform | Code Quality Dashboard |
| SpotBugs | Java | Linter | Findet Java-Bugs |
| Checkstyle | Java | Linter | Coding-Standards |
| RuboCop | Ruby | Linter | Ruby Style Guide |
ESLint (JavaScript/TypeScript)
Installation
npm install --save-dev eslint
npx eslint --init
Konfiguration
// .eslintrc.js
module.exports = {
env: {
browser: true,
es2021: true,
node: true,
},
extends: [
'eslint:recommended',
'plugin:@typescript-eslint/recommended',
'plugin:prettier/recommended',
],
parser: '@typescript-eslint/parser',
plugins: ['@typescript-eslint'],
rules: {
'no-unused-vars': 'error',
'no-console': 'warn',
'@typescript-eslint/no-explicit-any': 'warn',
},
};
Beispiel-Fehler
// ESLint-Fehler: no-unused-vars
const unused = 42;
// ESLint-Fehler: no-console
console.log('Debug output');
// ESLint-Fehler: prefer-const
var x = 5;
Pylint (Python)
Installation
pip install pylint
Konfiguration
# .pylintrc
[MASTER]
disable=C0111,C0103
[FORMAT]
max-line-length=100
[BASIC]
good-names=i,j,k,ex,Run,_
Ausführung
pylint mymodule.py
SonarQube (Multi-Language)
Installation (Docker)
docker run -d --name sonarqube -p 9000:9000 sonarqube
Konfiguration
# SonarQube Scanner
sonar-scanner \
-Dsonar.projectKey=my-project \
-Dsonar.sources=src \
-Dsonar.host.url=http://localhost:9000
Quality Gate
- Coverage: > 80%
- Duplications: < 3%
- Security Rating: A
- Reliability Rating: A
Integration in CI/CD
GitHub Actions
name: Code Quality
on: [push, pull_request]
jobs:
lint:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: actions/setup-node@v3
with:
node-version: '18'
- run: npm ci
- run: npm run lint
- run: npm run test:coverage
GitLab CI
code_quality:
image: sonarsource/sonar-scanner-cli
script:
- sonar-scanner
only:
- merge_requests
- main
Best Practices
- Early Integration: SCA früh im Entwicklungsprozess einsetzen
- Custom Rules: Regeln an Projekt anpassen, nicht Standard belassen
- Fix Automatically: Auto-Fix für einfache Probleme nutzen
- Quality Gates: CI blockieren bei kritischen Fehlern
- Regular Updates: Tools und Regeln regelmäßig aktualisieren
Prüfungsrelevante Stichpunkte
- Static Code Analysis analysiert Code ohne Ausführung
- Tools: ESLint (JS), Pylint (Python), SonarQube (Multi)
- Linter vs Formatter: Linter prüft, Formatter formatiert
- CI/CD-Integration als Quality Gate
- Automatisierung von Code-Qualitätsprüfungen
FAQ
1. Was ist Static Code Analysis?
2. Was ist der Unterschied Linter vs Formatter?
3. Was ist ESLint?
4. Was ist Pylint?
5. Was ist SonarQube?
6. Wie integriert man SCA in CI/CD?
7. Was ist ein Quality Gate?
8. Was ist Prettier?
9. Was ist Black?
10. SCA vs Tests?
11. SCA vs Code Review?
12. Wann SCA einsetzen?
13. Regeln anpassen?
14. Was ist SpotBugs?
15. SCA Performance?
Weiter im Softwarequalität Lernpfad
Der nächste Artikel im Softwarequalität Lernpfad behandelt Softwarequalität und Wartbarkeit — wie wartbarer Code durch gute Architektur, Dokumentation und Tests erreicht wird.
Quellen
Buchempfehlungen zur Softwarequalität
Wenn Du Dich weiter mit Static Code Analysis, Tools und Softwarequalität beschäftigen möchtest, empfehlen wir Dir die folgenden Bücher:
Software Engineering
Bücher über Softwarequalität, Clean Code, Code Reviews und Softwareentwicklungsprozesse
Clean Code: Programmieren in Java – Refactoring, Test-Driven Development und Clean Architecture von Robert C. Martin
Bei Amazon ansehenAffiliate-Link: Bei einem Kauf erhalten wir möglicherweise eine Provision.
Software Engineering: Umfassendes Handbuch für die Praxis
Bei Amazon ansehenAffiliate-Link: Bei einem Kauf erhalten wir möglicherweise eine Provision.
Refactoring: Wie Sie bestehenden Code verbessern von Martin Fowler
Bei Amazon ansehenAffiliate-Link: Bei einem Kauf erhalten wir möglicherweise eine Provision.






