Lint (software)
# Lint (software)

lint, o linter, è uno strumento che analizza il codice sorgente per evidenziare errori di programmazione, bug, errori stilistici e costrutti sospetti. Il termine deriva dall'omonimo strumento Unix che esamina il codice sorgente del linguaggio C.

## Storia

Stephen C. Johnson, uno scienziato informatico di Bell Labs lo ha inventato, nel 1978, mentre eseguiva il debug della grammatica yacc che stava scrivendo per C e si stava occupando di problemi di portabilità derivanti dal porting di Unix su una macchina a 32 bit. Il termine lint ("lanugine", "pelucchi") deriva dal nome dei frammenti indesiderabili di fibre e lanugine che si accumulano sugli abiti. Nel 1979, il lint fu usato per la prima volta al di fuori del Bell Labs nella settima versione (V7) del sistema operativo Unix .

Nel corso degli anni, sono state sviluppate varie versioni di lint per molti compilatori C e C++, e, anche se i compilatori dei nostri giorni includono funzioni simili a quelle di un lint, anche gli strumenti simili al lint hanno via via migliorato le loro capacità. Ad esempio, PC-Lint di Gimpel, utilizzato per analizzare il codice sorgente C++, viene ancora venduto anche se è stato introdotto nel 1985.

## Panoramica

L'analisi eseguita da strumenti simili al lint può anche essere eseguita da un compilatore ottimizzante, che mira a generare codice più veloce o efficiente. Nel suo documento originale del 1978, Johnson affrontò questo problema, concludendo che "in generale avere due programmi è una buona cosa" perché si concentravano su cose diverse, permettendo così al programmatore di "concentrarsi in una fase del processo di programmazione esclusivamente sugli algoritmi, sulle strutture di dati e sulla correttezza del programma, e successivamente implementare a posteriori, con l'aiuto di lint, le proprietà desiderabili di universalità e portabilità".

Gli strumenti tipo lint si sono evoluti per rilevare una varietà ancora più ampia di costrutti sospetti rispetto a quanto fanno i moderni compilatori: tra questi "avvisi su errori di sintassi, uso di variabili non dichiarate, chiamate a funzioni deprecate, convenzioni di spaziatura e formattazione, uso improprio degli scope, fallthrough implicito nelle istruzioni switch, intestazioni di licenza mancanti, [e] ... caratteristiche pericolose del linguaggio".

Gli strumenti tipo lint sono particolarmente utili per linguaggi interpretati come JavaScript e Python. Poiché tali linguaggi mancano di una fase di compilazione che visualizzi un elenco di errori prima dell'esecuzione, tali strumenti possono anche essere utilizzati come semplici debugger per errori comuni (ad esempio discrepanze sintattiche) ma anche per errori difficili da trovare come heisenbug (segnalando il codice sospetto come "possibili errori").

Generalmente l'analisi del codice sorgente eseguita dagli strumenti tipo lint è una analisi statica.

