Skip to content
IRC-CodingIRC-Coding
Static Code AnalysisESLintSonarQubePylintSpotBugsCI/CDSoftwarequalität

Static Code Analysis Tools: ESLint, SonarQube, Pylint und Co.

Static Code Analysis Tools: ESLint, SonarQube, Pylint, SpotBugs — automatisierte Code-Qualitätsprüfung, Integration in CI/CD und Best Practices.

S

schutzgeist

3 min read
Static Code Analysis Tools: ESLint, SonarQube, Pylint und Co.

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

ToolSpracheTypBesonderheit
ESLintJavaScript/TSLinterExtrem konfigurierbar, Plugin-System
PrettierJavaScript/TSFormatterOpinionated, Formatierung
PylintPythonLinterPEP-8 konform, umfangreich
BlackPythonFormatterUnkomprimiert, PEP-8
SonarQubeMultiPlatformCode Quality Dashboard
SpotBugsJavaLinterFindet Java-Bugs
CheckstyleJavaLinterCoding-Standards
RuboCopRubyLinterRuby 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?

Automatisierte Analyse von Quellcode ohne Ausführung, um Fehler und Code-Smells zu finden.

2. Was ist der Unterschied Linter vs Formatter?

Linter prüft auf Fehler und Code-Smells, Formatter formatiert Code automatisch.

3. Was ist ESLint?

Linter für JavaScript/TypeScript mit Plugin-System und extensiver Konfiguration.

4. Was ist Pylint?

Linter für Python, prüft PEP-8 Konformität und Code-Qualität.

5. Was ist SonarQube?

Multi-Language Platform für Code Quality mit Dashboard und Quality Gates.

6. Wie integriert man SCA in CI/CD?

Linter/Scanner in Pipeline einbinden, bei Fehlern Build blockieren.

7. Was ist ein Quality Gate?

Schwellwerte, die erfüllt sein müssen, damit Code gemerged werden darf.

8. Was ist Prettier?

Opinionated Formatter für JavaScript/TypeScript, formatiert automatisch.

9. Was ist Black?

Unkomprimierter Formatter für Python, PEP-8 konform.

10. SCA vs Tests?

SCA prüft Code-Struktur, Tests prüfen Verhalten. Beide ergänzen sich.

11. SCA vs Code Review?

SCA automatisiert, Code Review ist manuell und prüft Architektur.

12. Wann SCA einsetzen?

Früh im Projekt, vor Commit und in CI/CD Pipeline.

13. Regeln anpassen?

Ja, an Projekt und Team anpassen, nicht Standard belassen.

14. Was ist SpotBugs?

Linter für Java, findet typische Java-Bugs und Sicherheitslücken.

15. SCA Performance?

Schnell, Sekunden bis Minuten. Kann parallelisiert werden.

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

  1. https://eslint.org/
  2. https://pylint.pycqa.org/
  3. https://www.sonarqube.org/

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

Software Engineering: Umfassendes Handbuch für die Praxis

Software Engineering: Umfassendes Handbuch für die Praxis

Bei Amazon ansehen

Affiliate-Link: Bei einem Kauf erhalten wir möglicherweise eine Provision.

Refactoring: Wie Sie bestehenden Code verbessern von Martin Fowler

Refactoring: Wie Sie bestehenden Code verbessern von Martin Fowler

Bei Amazon ansehen

Affiliate-Link: Bei einem Kauf erhalten wir möglicherweise eine Provision.

Zurück zum DEV Blog
Share:

Ähnliche Beiträge