# Lint (Programmierwerkzeug)

Lint (englisch für „Fussel“) ist eine Software zur statischen Code-Analyse. Davon abgeleitet hat sich das Verb linten (englisch to lint) für das Durchführen der statischen Code-Analyse etabliert.

## Geschichte

Lint war das erste einer ganzen Reihe von Werkzeugen zur statischen Code-Analyse von Quelltext von Computerprogrammen. Sein hauptsächlicher Verwendungszweck war es, die Schwächen der damals existierenden Compiler auszugleichen. Diese setzten über weite Strecken richtigen Quellcode voraus und führten nur rudimentäre Prüfungen durch. Neben dem Aufspüren von gefährlichen Konstrukten, wie nicht initialisierten Variablen, legte Lint auch großes Gewicht auf die Überprüfung eines einheitlichen Layouts des Quelltextes und auf das Erkennen nicht portabler Konstrukte, wie etwa Abhängigkeiten vom Betriebssystem oder vom Compiler.
Ursprünglich von den Bell Labs für die Programmiersprache C entwickelt, wurde Lint 1979 mit der siebten Version (V7) des Betriebssystems Unix als Teil des Portable C Compiler veröffentlicht. Dies war der zweite Compiler für dieses System nach dem PDP-11-Compiler. Die Unterschiede zwischen System V und BSD sind bei Lint besonders deutlich.
Bereits 1985 wurde eine Portierung von Lint auch für den Einsatz am PC angeboten und seit damals als Softwareprodukt beworben.

## Entwicklung

Viele der Prüfungen, die Lint durchführte, sind durch die Fortschritte im Compilerbau in die heutigen Compiler eingeflossen. Diese erzeugen nun hochgradig optimierten Code, wobei sie auch wesentlich weitreichendere statische Analysen vornehmen müssen.
Manche Überprüfungen sind hinfällig geworden, weil durch bessere Standardisierungen der Programmiersprachen gewisse Portabilitätsprobleme nicht mehr existieren. Durch die Verwendung moderner Entwicklungsumgebungen und kontextsensitiver Texteditoren mit Syntaxhervorhebung und automatischer Einrückung hat sich auch das Formatierungsproblem etwas entspannt.
Mit dem Entstehen und der Verbreitung von C++ wurde versucht, Lint um Prüfungen speziell für die neuen Sprachkonstrukte zu erweitern. Das Alleinstellungsmerkmal der ersten Jahre hat Lint aber verloren. Auf dem Markt wird heute eine Reihe von teilweise weit ausgefeilteren Werkzeugen für die statische Code-Analyse angeboten. Unabhängig davon eignet sich Lint aufgrund seiner geringen Größe, hohen Stabilität, weiten Konfigurierbarkeit und plattformübergreifenden Verfügbarkeit besonders auch für verteilte Projekte. Dabei wird Quellcode von unterschiedlichen Entwicklern beigesteuert, der aber dennoch einheitlichen Qualitätskriterien genügen soll. Nur so können automatisiert Erstellungsläufe ausgeführt oder eine Dokumentation erstellt werden.

## Bezeichnung

Der Name Lint leitet sich von der englischen Bezeichnung für unerwünschte Anteile an Fasern und Flaum in Schafwolle ab.

## Abgeleitete Namensverwendungen

* In den Android Development Tools (Entwicklungswerkzeuge für Googles Betriebssystem Android) wurde im November 2011 ein Lint-Feature hinzugefügt, das den Code auf mögliche Schwachstellen prüft und diese dem Entwickler mitteilt.
* Splint, ein Quellcodeanalyse-Werkzeug.
* CFLint, ein Quellcodeanalyse-Werkzeug für ColdFusion.
* ESLint, ein Quellcodeanalyse-Werkzeug für die Programmiersprache JavaScript.
* JSLint, ein Quellcodeanalyse-Werkzeug für die Programmiersprache JavaScript.
* tslint, ein Quellcodeanalyse-Werkzeug für die Programmiersprache TypeScript.
* Pylint, ein Quellcodeanalyse-Werkzeug für die Programmiersprache Python.
* JSONLint, ein Quellcodeanalyse-Werkzeug für das Datenformat JSON.
* OCLint, ein Quellcodeanalyse-Werkzeug mit Xcode-Integration.
* SonarLint und SonarQube sind ein Open Source Plugin für IDEs bzw. eine Server-Anwendung für Kontinuierliche Integration. Unterstützt Java, C#, PHP, JavaScript, TypeScript, C/C++, Ruby, Kotlin, Go, COBOL, PL/SQL, PL/I, ABAP, VB.NET, VB6, Python, RPG, Flex, Objective-C, Swift, CSS, HTML, und XML