Fnug (software) - Lint (software)

Fnug
Originale forfatter (er) Stephen C. Johnson
Udvikler (er) AT&T Bell Laboratories
Første udgivelse 26. juli 1978 ; 43 år siden ( 1978-07-26 )
Skrevet i C
Operativ system På tværs af platforme
Tilgængelig i engelsk
Type Statiske programanalyseværktøjer
Licens Oprindeligt proprietær kommerciel software , nu gratis software under en BSD-lignende licens

Fnug eller lint er et statisk kodeanalyseværktøj , der bruges til at markere programmeringsfejl, fejl , stilistiske fejl og mistænkelige konstruktioner. Udtrykket stammer fra et Unix -værktøj, der undersøgte kildekoden til C -sprog .

Historie

Stephen C. Johnson , en datalog ved Bell Labs , kom med fnug i 1978, mens han debugger den yacc- grammatik, han skrev til C, og håndterede problemer med portabilitet , der stammede fra portning af Unix til en 32-bit maskine. Udtrykket "fnug" blev afledt af navnet på de små stykker fiber og fnug, der blev fældet af tøj, da kommandoen skulle fungere som en tørremaskinens fnugfælde og opdage små fejl med store effekter. I 1979 blev fnug brugt uden for Bell Labs for første gang i den syvende version ( V7 ) af Unix -operativsystemet.

I årenes løb blev der udviklet forskellige versioner af fnug til mange C- og C ++ -kompilatorer, og mens nutidens kompilatorer har fnuglignende funktioner, har fnuglignende værktøjer også avanceret deres kapacitet. For eksempel sælges Gimpels PC-Lint , der bruges til at analysere C ++-kildekode, stadig, selvom den blev introduceret i 1985.

Oversigt

Analysen udført med fnuglignende værktøjer kan også udføres af en optimerende compiler , der har til formål at generere hurtigere kode. I sit originale papir fra 1978 behandlede Johnson dette spørgsmål og konkluderede, at "den generelle opfattelse af at have to programmer er en god", fordi de koncentrerede sig om forskellige ting og derved tillod programmereren at "koncentrere sig på et trin i programmeringsprocessen udelukkende om algoritmer , datastrukturer og programmets korrekthed, og senere eftermonteres ved hjælp af fnug de ønskelige egenskaber ved universalitet og bærbarhed ".

Selvom moderne kompilatorer har udviklet sig til at omfatte mange af fnugs historiske funktioner, har fnuglignende værktøjer også udviklet sig til at opdage et endnu større udvalg af mistænkelige konstruktioner. Disse inkluderer "advarsler om syntaksfejl, brug af ikke -erklærede variabler , opkald til forældede funktioner, afstands- og formateringskonventioner, misbrug af omfang, implicit nedbrud i switch -erklæringer , manglende licensoverskrifter, [og] ... farlige sprogfunktioner".

Fnug-lignende værktøjer er især nyttige til dynamisk indtastede sprog som JavaScript og Python . Fordi kompilatorer af sådanne sprog typisk ikke håndhæver så mange og som strenge regler før udførelse , kan linterværktøjer også bruges som enkle fejlfindere til at finde almindelige fejl (f.eks. Syntaktiske uoverensstemmelser) samt svært at finde fejl såsom heisenbugs (gør opmærksom på mistænkelig kode som "mulige fejl"). Fnuglignende værktøjer udfører generelt en statisk analyse af kildekoden.

Fnug-lignende værktøjer er også blevet udviklet til andre aspekter af sprog, herunder grammatik og stilguider.

Specialisering

Fortran

Fortran- kompilatorer, der anvender rumklemmeteknikker (f.eks. IBM 1130 ), gjorde det umuligt for kompilatoren at se problemet med linjer som:

.... GØR 120 J = 1 . 256 ... 120 FORTSÆT
derfor kan programmer som Lint for Fortran være nyttige.

Se også

Referencer

Yderligere læsning