Linter, Formatter und Typprüfer: Code automatisch prüfen
Kurz: Drei Arten von Werkzeugen, die Code automatisch kontrollieren: Linter finden Fehler und schlechten Stil, Formatter vereinheitlichen das Aussehen, Typprüfer finden Typfehler vor dem Ausführen.
Genauer: Viele Fehler lassen sich finden, ohne das Programm auszuführen. Statische Analyse liest den Code und schlägt Alarm bei Verdächtigem. Die Werkzeuge laufen im Editor, vor dem Commit und in der Pipeline und sparen Diskussionen über Kleinigkeiten in Code-Reviews.
Im Detail
Linter
Ein Linter prüft auf wahrscheinliche Fehler und Verstöße gegen Regeln: ungenutzte Variablen, fehlendes await, unerreichbarer Code, mögliche Null-Zugriffe, unsichere Funktionen. Beispiele: ESLint (JavaScript/TypeScript), Pylint, Ruff und Flake8 (Python), Clippy (Rust), golangci-lint (Go), ShellCheck (Shell), Stylelint (CSS). Regeln lassen sich pro Projekt einstellen.
Formatter
Ein Formatter schreibt den Code nach einem festen Schema um: Einrückung, Zeilenlänge, Anführungszeichen, Klammern. Damit gibt es keine Streitereien über Stil, und Änderungen im Verlauf zeigen nur echte Unterschiede. Beispiele: Prettier (Web), Black und Ruff format (Python), gofmt (Go), rustfmt, clang-format. Das Prinzip: wenige Optionen, ein Standard.
Typprüfer
Ein Typprüfer vergleicht Typangaben mit der Verwendung, etwa „diese Funktion erwartet eine Zahl, bekommt aber Text“. In TypeScript ist er der Compiler (tsc), in Python gibt es mypy, Pyright und Pyre für Typannotationen. Er findet viele Fehler, die sonst erst zur Laufzeit auftreten, und dient als lebende Dokumentation.
Einsatz
- Im Editor (Language Server) sofortiges Feedback.
- Als Pre-commit-Hook (Husky, pre-commit): nur sauberer Code wird eingecheckt.
- In der CI-Pipeline: Verstöße lassen den Build fehlschlagen.
- Warnungen ernst nehmen, aber Regeln pragmatisch einstellen: Zu viele Regeln führen dazu, dass sie ignoriert oder per Kommentar abgeschaltet werden. Neben diesen Werkzeugen ergänzen Tests und Code-Reviews die Qualitätssicherung.
Siehe auch: Clean Code, Code-Review, Typsysteme, CI/CD-Pipeline