Lint (software)

related topics
{math, number, function}
{system, computer, user}
{language, word, form}
{law, state, case}
{@card@, make, design}
{style, bgcolor, rowspan}

In computer programming, lint was the name originally given to a particular program that flagged some suspicious and non-portable constructs (likely to be bugs) in C language source code. The term is now applied generically to tools that flag suspicious usage in software written in any computer language. The term lint-like behavior is sometimes applied to the process of flagging suspicious language usage. Lint-like tools generally perform static analysis of source code.

Contents

Background

Lint first appeared (outside of Bell Labs) in the seventh version (V7) of the UNIX operating system in 1979. It was derived from PCC, the Portable C Compiler, which was included with that system. Lint and PCC were developed by Stephen C. Johnson, who also authored the parser generator yacc.

The term was derived from the name of the undesirable bits of fiber and fluff found in sheep's wool.

Overview

Suspicious usage includes: variables being used before being set, conditions that are constant, and calculations whose result is likely to be outside the range of values representable in the type used.

Many of the forms of analysis performed by lint-like tools are also performed by optimizing compilers (whose prime motivation is to generate faster code), and modern compilers can often detect many of the constructs traditionally warned about by lint.

Writers of lint-like tools have continued to improve the range of suspicious constructs that they detect. Modern tools perform forms of analysis that many optimizing compilers typically don't do, such as cross-module consistency checking, checking that the code will be portable to other compilers, and supporting annotations that specify intended behavior or properties of code.

See also

References

External links

Full article ▸

related documents
Uniform Resource Locator
IBM Business System 12
Denormal number
Disassembler
Lazy initialization
Chart parser
Recursive language
JUnit
Context-sensitive language
Galois group
Disjoint sets
Identity function
Sedenion
Greibach normal form
Markov process
Endomorphism ring
Essential singularity
Direct sum of groups
Derivative of a constant
Sigmoid function
Ring homomorphism
Co-NP
Sieve of Eratosthenes
Harmonic analysis
BCPL
Euclidean distance
Water, gas, and electricity
Equivalence class
Z notation
RC5