A linter or lint refers to tools that analyze source code to flag programming errors, bugs, stylistic errors, and suspicious constructs. The term is originated from a Unix utility that examined C language source code.
Stephen C. Johnson, a computer scientist at Bell Labs, coined the term lint in 1978 while debugging the Yacc grammar he was writing for C while porting the Unix operating system to a 32-bit machine. He derived it from the name of the undesirable bits of fiber and fluff found in sheep's wool. In 1979, lint was used outside of Bell Labs for the first time in the seventh version (V7) of Unix.
Versions of lint have been developed for many C and C++ compilers, and while modern-day compilers have lint-like functions, lint-like tools continue to advance their capabilities. Gimpel's PC-Lint, used to analyze C++ source code, is still sold, even though it was introduced in 1985.
The analysis performed by lint-like tools is also performed by optimizing compilers, whose goal is to generate faster code. In his original 1978 paper, Johnson addressed this issue, concluding that "the general notion of having two programs is a good one" because they concentrated on different things, thereby allowing the programmer to "concentrate at one stage of the programming process solely on the algorithms, data structures, and correctness of the program, and then later retrofit, with the aid of lint, the desirable properties of universality and portability".
Even though modern compilers have evolved to include many of lint's historical functions, lint-like tools have also evolved to detect an even wider variety of suspicious constructs. These include "warnings about syntax errors, uses of undeclared variables, calls to deprecated functions, spacing and formatting conventions, misuse of scope, implicit fallthrough in switch statements, missing license headers, [and]...dangerous language features".
- "About SublimeLinter — SublimeLinter 3.4.24 documentation". www.sublimelinter.com.
- Johnson, Stephen C. (25 October 1978). "Lint, a C Program Checker". pp. 78–1273 – via CiteSeer.
- Morris, Richard (1 October 2009). "Stephen Curtis Johnson: Geek of the Week". Red Gate Software. Retrieved 19 January 2018.
- "Arcanist User Guide: Lint". Phabricator. Retrieved 19 January 2018.
- Jones, Nigel (1 May 2002). "How to Use Lint for Static Code Analysis". Barr Group.
- Darwin, Ian F. (1991). Checking C Programs with Lint: C Programming Utility (Revised ed.). United States: O'Reilly Media. ISBN 978-0937175309.
- "LINT(1)". FreeBSD General Commands Manual. 2015-03-23.