Lint (software): Difference between revisions
→History: Copyedit |
→History: Grammar |
||
Line 22: | Line 22: | ||
==History== |
==History== |
||
[[Stephen C. Johnson]], a computer scientist at [[Bell Labs]], came up with the term "lint" in 1978 while debugging the [[yacc]] grammar he was writing for [[C (programming language)|C]] and dealing with [[Software portability|portability]] issues stemming from porting [[Unix]] to a [[32-bit]] machine.<ref name="red"/><ref name="BellLabs"/> The term was borrowed from [[Lint (material)|lint]], the tiny bits of fiber and fluff shed by clothing, as the command he wrote would act like a lint trap in a clothes dryer, capturing waste fibers while leaving whole fabrics intact. In 1979, lint was used outside of Bell Labs for the first time, in the seventh version ([[Version 7 Unix|V7]]) of Unix. |
[[Stephen C. Johnson]], a computer scientist at [[Bell Labs]], came up with the term "lint" in 1978 while debugging the [[yacc]] grammar he was writing for [[C (programming language)|C]] and dealing with [[Software portability|portability]] issues stemming from porting [[Unix]] to a [[32-bit]] machine.<ref name="red"/><ref name="BellLabs"/> The term was borrowed from [[Lint (material)|lint]], the tiny bits of fiber and fluff shed by clothing, as the command he wrote would act like a lint trap in a clothes dryer, capturing waste fibers while leaving whole fabrics intact. In 1979, lint programming was used outside of Bell Labs for the first time, in the seventh version ([[Version 7 Unix|V7]]) of Unix. |
||
Over the years, different versions of lint have been developed for many [[C (programming language)|C]] and [[C++]] [[compiler]]s, and while modern-day compilers have lint-like functions, lint-like tools have also advanced their capabilities. For example, Gimpel's [[PC-Lint]], introduced in 1985 and used to analyze C++ source code, is still for sale.<ref name="red">{{cite news|last1=Morris|first1=Richard|title=Stephen Curtis Johnson: Geek of the Week|url=https://www.red-gate.com/simple-talk/opinion/geek-of-the-week/stephen-curtis-johnson-geek-of-the-week/|access-date=19 January 2018|work=Red Gate Software|date=1 October 2009}}</ref> |
Over the years, different versions of lint have been developed for many [[C (programming language)|C]] and [[C++]] [[compiler]]s, and while modern-day compilers have lint-like functions, lint-like tools have also advanced their capabilities. For example, Gimpel's [[PC-Lint]], introduced in 1985 and used to analyze C++ source code, is still for sale.<ref name="red">{{cite news|last1=Morris|first1=Richard|title=Stephen Curtis Johnson: Geek of the Week|url=https://www.red-gate.com/simple-talk/opinion/geek-of-the-week/stephen-curtis-johnson-geek-of-the-week/|access-date=19 January 2018|work=Red Gate Software|date=1 October 2009}}</ref> |
Revision as of 08:38, 26 May 2023
Original author(s) | Stephen C. Johnson |
---|---|
Developer(s) | AT&T Bell Laboratories |
Initial release | July 26, 1978[1] |
Written in | C |
Operating system | Cross-platform |
Available in | English |
Type | Static program analysis tools |
License | Originally proprietary commercial software, now free software under a BSD-like license[2][3] |
Lint, or a linter, is a static code analysis tool used to flag programming errors, bugs, stylistic errors and suspicious constructs.[4] The term originates from a Unix utility that examined C language source code.[1]
History
Stephen C. Johnson, a computer scientist at Bell Labs, came up with the term "lint" in 1978 while debugging the yacc grammar he was writing for C and dealing with portability issues stemming from porting Unix to a 32-bit machine.[5][1] The term was borrowed from lint, the tiny bits of fiber and fluff shed by clothing, as the command he wrote would act like a lint trap in a clothes dryer, capturing waste fibers while leaving whole fabrics intact. In 1979, lint programming was used outside of Bell Labs for the first time, in the seventh version (V7) of Unix.
Over the years, different versions of lint have been developed for many C and C++ compilers, and while modern-day compilers have lint-like functions, lint-like tools have also advanced their capabilities. For example, Gimpel's PC-Lint, introduced in 1985 and used to analyze C++ source code, is still for sale.[5]
Overview
The analysis performed by lint-like tools can also be performed by an optimizing compiler, which aims 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 concentrate 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".[1]
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".[6]
Lint-like tools are especially useful for dynamically typed languages like JavaScript and Python. Because the compilers of such languages typically do not enforce as many and as strict rules prior to execution, linter tools can also be used as simple debuggers for finding common errors (e.g. syntactic discrepancies) as well as hard-to-find errors such as heisenbugs (drawing attention to suspicious code as "possible errors").[7] Lint-like tools generally perform static analysis of source code.[8]
Lint-like tools have also been developed for other aspects of language, including grammar and style guides.[citation needed]
See also
Notes
References
- ^ a b c d Johnson, Stephen C. (25 October 1978). "Lint, a C Program Checker". Comp. Sci. Tech. Rep. Bell Labs: 78–1273. CiteSeerX 10.1.1.56.1841. Archived from the original on 2022-01-12.
{{cite journal}}
:|archive-date=
/|archive-url=
timestamp mismatch; 2022-01-23 suggested (help) - ^ "UNIX is free!". lemis.com. 2002-01-24.
- ^ Broderick, Bill (January 23, 2002). "Dear Unix enthusiasts" (PDF). Caldera International. Archived from the original (PDF) on February 19, 2009.
- ^ "About SublimeLinter". The SublimeLinter Community, revision 1cecc79c. Retrieved 2020-03-29.
- ^ a b 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.
- ^ "ESLint - Customizable JavaScript linting tool (1)". theCodeCampus. 2015-06-09. Retrieved 2019-04-21.
- ^ Jones, Nigel (1 May 2002). "How to Use Lint for Static Code Analysis". Barr Group.
Further reading
- 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 (FreeBSD 11.2). 2015-03-23.