Lint (mjukvara)
Originalförfattare | Stephen C. Johnson |
---|---|
Utvecklare | AT&T Bell Laboratories |
Initial release | 26 juli 1978 |
Skrivet i | C |
Operativ system | Cross-plattform |
Tillgänglig i | engelsk |
Typ | Statiska verktyg för programanalys |
Licens | Ursprungligen proprietär kommersiell programvara , nu fri programvara under en BSD-liknande licens |
Lint , eller en linter , är ett statiskt kodanalysverktyg som används för att flagga programmeringsfel, buggar , stilfel och misstänkta konstruktioner. Termen kommer från ett Unix -verktyg som undersökte C-språkets källkod.
Historia
Stephen C. Johnson , en datavetare vid Bell Labs , kom på lint 1978 när han felsökte den yacc -grammatik han skrev för C och hanterade portabilitetsproblem som härrörde från portering av Unix till en 32-bitarsmaskin . Termen "lint" härleddes från lint , namnet för de små bitarna av fiber och ludd som fälls av kläder, eftersom kommandot ska fungera som luddfällan i en torktumlare och upptäcka små fel med stor effekt. 1979 användes ludd utanför Bell Labs för första gången, i den sjunde versionen ( V7 ) av Unix.
Under årens lopp har olika versioner av lint utvecklats för många C- och C++- kompilatorer , och medan moderna kompilatorer har luddliknande funktioner, har luddliknande verktyg också utvecklat sina möjligheter. Till exempel är Gimpels PC-Lint , som introducerades 1985 och användes för att analysera C++-källkod, fortfarande till salu.
Översikt
Analysen som utförs av lintliknande verktyg kan också utföras av en optimerande kompilator , som syftar till att generera snabbare kod. I sin ursprungliga uppsats från 1978 tog Johnson upp denna fråga och drog slutsatsen att "den allmänna uppfattningen om att ha två program är bra" eftersom de koncentrerar sig på olika saker, vilket gör det möjligt för programmeraren att "koncentrera sig i ett skede av programmeringsprocessen enbart på algoritmer , datastrukturer och programmets korrekthet, och sedan senare eftermontera, med hjälp av lint, de önskvärda egenskaperna för universalitet och portabilitet".
Även om moderna kompilatorer har utvecklats till att inkludera många av lints historiska funktioner, har lintliknande verktyg också utvecklats för att upptäcka en ännu större mängd misstänkta konstruktioner. Dessa inkluderar "varningar om syntaxfel, användning av odeklarerade variabler , anrop till föråldrade funktioner, mellanrum och formateringskonventioner, missbruk av räckvidd, implicit genombrott i switch-satser , saknade licenshuvuden, [och]...farliga språkfunktioner".
Lintliknande verktyg är särskilt användbara för dynamiskt skrivna språk som JavaScript och Python . Eftersom kompilatorerna av sådana språk vanligtvis inte tillämpar så många och lika strikta regler före exekvering , kan linter-verktyg också användas som enkla debuggers för att hitta vanliga fel (t.ex. syntaktiska avvikelser) såväl som svåra att hitta fel som heisenbugs (uppmärksammar misstänkt kod som "möjliga fel"). Luddliknande verktyg utför i allmänhet statisk analys av källkoden.
Luddliknande verktyg har också utvecklats för andra aspekter av språket, inklusive grammatik och stilguider. [ citat behövs ]
Specialisering
Fortran
Fortran- kompilatorer som använder utrymmesklämningsteknik (t.ex. IBM 1130 ) gjorde det omöjligt för kompilatorn att se problemet med rader som:
- .... DO 120 J=1 . 256 ... 120 FORTSÄTT
vilket är anledningen till att program som Lint for Fortran kan vara till hjälp.
Se även
Anteckningar
Vidare läsning
- Darwin, Ian F. (1991). Kontrollera C-program med ludd: C Programmeringsverktyg (reviderad utgåva). USA: O'Reilly Media. ISBN 978-0937175309 .
- "LINT(1)" . FreeBSD General Commands Manual (FreeBSD 11.2) . 2015-03-23.