Linting

Linting bezeichnet den automatisierten Prozess, Quellcode auf potenzielle Probleme, Stilabweichungen und Verstöße gegen definierte Regeln zu prüfen. Das Tool, das diese Überprüfung durchführt, wird Linter genannt. Der Name stammt ursprünglich von einem Unix-Tool aus den 70er-Jahren namens lint, das C-Code nach verdächtigen Konstrukten durchsucht hat. Heute ist der Begriff auf nahezu alle gängigen Programmiersprachen übertragbar.

Ich möchte in diesem Beitrag genauer auf Linting eingehen.

Ziele von Linting

Linting verfolgt mehrere zentrale Ziele:

  1. Fehler früh erkennen
    – Syntaxfehler, ungenutzte Variablen oder fehlerhafte Importe werden sofort sichtbar, bevor sie im Laufzeitbetrieb Probleme verursachen.

  2. Code-Konsistenz sicherstellen
    – Linter helfen, dass der Code einem einheitlichen Stil folgt (Einrückungen, Benennungskonventionen, Semikolons, Leerzeichen usw.).

  3. Lesbarkeit erhöhen
    – Ein konsistenter Code-Stil erleichtert es anderen Entwickler:innen, den Code schnell zu verstehen.

  4. Best Practices durchsetzen
    – Viele Linter enthalten Regeln, die gängige Best Practices und Sicherheitsaspekte berücksichtigen.

  5. Produktivität steigern
    – Weniger Zeit für Diskussionen über Code-Formatierung, mehr Fokus auf Funktionalität und Architektur.

Wie funktioniert Linting?

Ein Linter analysiert den Quellcode statisch, das heißt ohne ihn auszuführen.
Dabei gibt es zwei Hauptkategorien von Prüfungen:

  • Syntax-Checks
    Überprüfung, ob der Code überhaupt lauffähig ist, z. B. Klammern richtig geschlossen sind oder Variablen deklariert wurden.

  • Stil- und Qualitäts-Checks
    Prüfung auf Verstöße gegen definierte Regeln, z. B.:

    • Ist die maximale Zeilenlänge überschritten?

    • Werden Variablen in camelCase oder snake_case geschrieben?

    • Gibt es ungenutzte Funktionen oder Variablen?

    • Wurde die Sicherheitsregel „keine eval()-Funktion verwenden“ eingehalten?

Beispiele aus der Praxis

  • JavaScript/TypeScript

    • ESLint ist das Standard-Tool, mit dem sich Projekte auf definierte Regeln trimmen lassen. Es warnt z. B. vor nicht deklarierten Variablen oder ungenutzten Imports.

    • Prettier wird oft zusätzlich genutzt, um reines Code-Formatting automatisch durchzuführen.

  • Python

    • Pylint oder flake8 prüfen den Code auf Fehler und Stilkonventionen nach PEP8.

  • Java

    • Checkstyle oder PMD sind verbreitete Tools für statische Codeanalyse.

  • C/C++

    • Neben modernen Tools ist hier das ursprüngliche lint-Programm historisch relevant.

ESLint für JavaScript

Wie oben bereits angemerkt, ist ein besonders bekanntes und weit verbreitetes Linting-Tool ESLint für Javascript. Auch ich benutze dieses für die Testautomatisierung mit JS. ESLint überprüft nicht nur den Code auf Fehler, sondern lässt sich auch flexibel konfigurieren: Teams können eigene Regeln definieren oder bestehende Regelsets verwenden. In Kombination mit Editoren wie Visual Studio Code werden Verstöße sofort beim Tippen angezeigt, wodurch Entwickler:innen Fehler frühzeitig beheben und gleichzeitig konsistenten, sauberen Code schreiben können.

Integration in den Entwicklungsprozess

Linting lässt sich in verschiedenen Phasen der Entwicklung einbinden:

  1. Lokale Entwicklung
    – Viele Entwickler:innen konfigurieren ihren Editor oder ihre IDE so, dass Verstöße sofort beim Schreiben angezeigt werden.

  2. Pre-Commit Hooks
    – Mit Tools wie Husky (JavaScript/Node.js) lassen sich Linting-Checks automatisch vor jedem Git-Commit ausführen.

  3. Continuous Integration (CI)
    – Linter laufen in Build-Pipelines (z. B. GitHub Actions, GitLab CI, Jenkins) und verhindern, dass fehlerhafter oder uneinheitlicher Code in den Haupt-Branch gelangt.

Vorteile von Linting

  • Höhere Codequalität

  • Einheitliche Standards im Team

  • Frühzeitiges Erkennen von Fehlern

  • Reduzierung technischer Schulden

  • Verbesserte Zusammenarbeit im Team

Grenzen von Linting

  • Kein Ersatz für Tests: Linter können Fehlerquellen aufzeigen, garantieren aber nicht die korrekte Funktionalität.

  • Falsche Positive: Manchmal melden Linter Probleme, die im Kontext unkritisch sind.

  • Einarbeitung nötig: Neue Teammitglieder müssen sich an die Regeln gewöhnen.

Fazit

Linting ist heute ein unverzichtbarer Bestandteil der Softwareentwicklung. Es hilft, sauberen, konsistenten und wartbaren Code zu schreiben, reduziert Fehlerquellen und erleichtert die Zusammenarbeit in Teams. In Kombination mit Tests, Code Reviews und CI/CD-Pipelines trägt Linting erheblich zur Gesamtqualität von Softwareprojekten bei.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Bitte füllen Sie dieses Feld aus.
Bitte füllen Sie dieses Feld aus.
Bitte gib eine gültige E-Mail-Adresse ein.
Sie müssen den Bedingungen zustimmen, um fortzufahren.