lint (en lettres minuscules ; de l'anglais lint : « touffe hirsute » ) est une commande UNIX de préprocesseur permettant l’analyse statique de code source en langage C.
Développement
L'utilitaire lint a été l'un des premiers outils d'analyse statique de code source. Sa création visait à remédier aux faiblesses des compilateurs des années 1970-1980, qui présupposaient que les programmes ne comportaient que des erreurs ponctuelles et n'effectuaient que des vérifications rudimentaires. Outre la traque de certaines fautes récurrentes, comme l’adressage de variables non-initialisées, lint se consacrait pour l’essentiel à la rectification des indentations chaotiques de code source et à la détection de tours stylistiques et de syntaxes non-portables, comme le recours à des particularités du système d'exploitation ou d'un compilateur.
Développé à l'origine par les Laboratoires Bell pour le langage C, lint fut incorporé en 1979 à la version 7 (V7) du système d'exploitation Unix comme composant du PCC, le « compilateur C portable. » Ce fut le second compilateur pour système UNIX, après le compilateur du PDP-11.
Dès 1985, une version de lint pour PC était disponible et est commercialisée depuis comme un logiciel. lint reste à ce jour l'un des plus vieux outils de développement logiciel encore en usage[1].
Postérité
Plusieurs des vérifications qu'effectuait lint sont aujourd'hui, compte tenu des progrès dans la génération de code natif, intégrées aux compilateurs (moyennant parfois l'activation d'une option, comme -Wall pour GCC). Ces compilateurs doivent en effet, pour optimiser l'exécutable, effectuer une analyse statique bien plus poussée que leur ancêtre UNIX.
Plusieurs vérifications de lint sont désormais inutiles, car la standardisation des différents langages de programmation a beaucoup réduit les problèmes de portabilité. L'utilisation de plates-formes de développement modernes et d’éditeurs de texte contextuels avec analyseur syntaxique et indentation automatique permet par ailleurs de produire d'emblée un code source plus sûr et agréable à relire.
Avec l'apparition et la vogue du C++, on a tenté d'adapter lint aux spécificités de ce nouveau langage ; mais sa position isolée l'a condamné : on trouve désormais sur le marché toute une série d'outils extrêmement sophistiqués pour l'analyse statique de code source. Pour autant, lint demeure apprécié pour les projets partagés grâce à sa petite taille, sa stabilité (pas de changements intempestifs de version), ses capacités de configuration et son extrême portabilité. Grâce à lint, les fichiers sources de différents développeurs peuvent être harmonisés pour respecter certaines règles d'unité formelles, indispensables pour les mises à jour automatiques du logiciel et de sa documentation.
Notes et références
- (de) Cet article est partiellement ou en totalité issu de l’article de Wikipédia en allemand intitulé « Lint (Programmierwerkzeug) » (voir la liste des auteurs).
- (en) « Gimpel Software - The Leader in Static Analysis for C and C++ with PC-lint Plus », sur gimpel.com (consulté le ).
Bibliographie
- Steve Bourne (trad. Michel Dupuy), Le Système UNIX, Paris, InterEditions, (réimpr. 1991 par les éd. Dunod), 398 p. (ISBN 2-7296-0014-0)
- Stephen Johnson: Lint, a C program checker. Computer Science Technical Report 65, Bell Laboratories, December 1977.
- Ian F. Darwin, Checking C Programs with Lint, O'Reilly, , 72 p. (ISBN 978-0-937175-30-9 et 0-937175-30-7, lire en ligne)