Ein Linter ist ein Werkzeug der statischen Code-Analyse, das Quellcode ohne ihn auszuführen auf Fehler, Stilprobleme und potenzielle Schwachstellen untersucht. Der Name geht auf das historische C-Werkzeug lint zurück, das unerwünschte Stellen im Code „ausfransen" sollte wie Flusen (engl. lint) von Kleidung.

Was ein Linter prüft

Linter arbeiten mit Regelwerken und erkennen typische Probleme, bevor der Code läuft:

  • Syntaxfehler und offensichtliche Programmierfehler (z. B. undefinierte Variablen, toter Code)
  • Stilkonventionen wie Einrückung, Namensgebung und Zeilenlänge
  • Best Practices, etwa fehlende Fehlerbehandlung oder unsichere Konstrukte
  • Sicherheitsrisiken wie SQL-Injection-Anfälligkeit oder unsichere Berechtigungen

Im Gegensatz zum Compiler und Interpreter erzeugt ein Linter keinen ausführbaren Code — er liefert nur Hinweise und Warnungen.

Bekannte Linter

Fast jede Sprache hat etablierte Linter: Python nutzt oft ruff oder flake8, JavaScript und TypeScript verwenden ESLint, PHP setzt auf PHP_CodeSniffer oder PHPStan. Viele moderne Linter bieten zusätzlich Auto-Fixes an, die einfache Regelverstöße selbstständig korrigieren.

Integration in den Entwicklungsablauf

Ein Linter entfaltet seine Wirkung vor allem in drei Umgebungen:

  • Im Editor: Die meisten IDEs markieren Probleme direkt beim Tippen.
  • Vor dem Commit: Viele Teams binden den Linter als Git-Pre-Commit-Hook ein.
  • In der CI/CD-Pipeline: Ein fehlgeschlagener Lint-Lauf kann den Build stoppen und so fehlerhaften Code aus dem Deployment fernhalten.

Zusammen mit Refactoring und automatisierten Tests bildet der Linter das Fundament für wartbaren Code. Die Regeln lassen sich projektweit in Konfigurationsdateien festlegen und versionieren, sodass alle Teammitglieder dieselben Standards nutzen.