Open main menu
Home
Random
Recent changes
Special pages
Community portal
Preferences
About Wikipedia
Disclaimers
Incubator escapee wiki
Search
User menu
Talk
Dark mode
Contributions
Create account
Log in
Editing
Lint (software)
Warning:
You are not logged in. Your IP address will be publicly visible if you make any edits. If you
log in
or
create an account
, your edits will be attributed to your username, along with other benefits.
Anti-spam check. Do
not
fill this in!
{{Short description|Tool to flag poor computer code}} {{Infobox software | name = Lint | logo = | screenshot = | screenshot size = | caption = | author = [[Stephen C. Johnson]] | developer = [[AT&T Bell Laboratories]] | released = {{Release date and age|1978|07|26}}<ref name="BellLabs"/> | latest release version = | latest release date = | operating system = [[Cross-platform]] | language = English | genre = [[List of tools for static code analysis|Static program analysis tools]] | license = Originally [[Proprietary software|proprietary]] [[commercial software]], now [[free software]] under a [[BSD-license|BSD-like]] license<ref>{{cite web |url=http://www.lemis.com/grog/UNIX/|publisher=lemis.com |title=UNIX is free! |date=2002-01-24}}</ref><ref>{{cite web|url=http://www.tuhs.org/Archive/Caldera-license.pdf |archive-url=https://web.archive.org/web/20090219220353/http://www.tuhs.org/Archive/Caldera-license.pdf|archive-date=February 19, 2009 |title=Dear Unix enthusiasts |last=Broderick |first=Bill |date=January 23, 2002 |publisher=[[Caldera International]]}}</ref> | website = | programming language = [[C (programming language)|C]] }} '''Lint''' is the [[computer science]] term for a [[Static program analysis|static code analysis]] tool used to flag programming errors, [[Software bug|bugs]], stylistic errors and suspicious constructs.<ref>{{cite web|url=http://www.sublimelinter.com/en/v3.10.10/about.html|title=About SublimeLinter|work=The SublimeLinter Community, revision 1cecc79c|archive-url=http://web.archive.org/web/20230606032819/http://www.sublimelinter.com/en/v3.10.10/about.html |access-date=2020-03-29|archive-date=2023-06-06 }}</ref> The term originates from a [[Unix]] [[List of utility software|utility]] that examined [[C (programming language)|C language]] source code.<ref name="BellLabs">{{cite journal |last=Johnson |first=Stephen C. |author-link=Stephen C. Johnson |date=25 October 1978 |title=Lint, a C Program Checker |url=https://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.56.1841 |url-status=dead |journal=Comp. Sci. Tech. Rep. |publisher=Bell Labs |pages=78β1273 |citeseerx=10.1.1.56.1841 |archive-url=https://web.archive.org/web/20220123141016/https://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.56.1841&rep=rep1&type=pdf |archive-date=2022-01-23}}</ref> A program which performs this function is also known as a "linter". ==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 the word [[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> ==Overview== In his original 1978 paper Johnson stated his reasoning in creating a separate program to detect errors, distinct from that which it analyzed: "...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 [[algorithm]]s, [[data structure]]s, and correctness of the program, and then later retrofit, with the aid of lint, the desirable properties of universality and portability".<ref name="BellLabs"/> == Successor linters == The analysis performed by lint-like tools can also be performed by an [[optimizing compiler]], which aims to generate faster code. Even though modern [[compiler]]s 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 [[Undefined variable|undeclared variables]], calls to deprecated functions, spacing and formatting conventions, misuse of scope, implicit fallthrough in [[Switch statement|switch statements]], missing license headers, [and]...dangerous language features".<ref name="phab">{{cite web|title=Arcanist User Guide: Lint|url=https://secure.phabricator.com/book/phabricator/article/arcanist_lint/|website=Phabricator|access-date=19 January 2018}}</ref> Lint-like tools are especially useful for [[Type system#DYNAMIC|dynamically typed languages]] like [[JavaScript]] and [[Python (programming language)|Python]]. Because the interpreters of such languages typically do not enforce as many and as strict rules during [[Execution (computing)|execution]], linter tools can also be used as simple [[debugger]]s for finding common errors (e.g. syntactic discrepancies) as well as hard-to-find errors such as [[heisenbug]]s (drawing attention to suspicious code as "possible errors").<ref>{{Cite web|url=https://www.thecodecampus.de/blog/eslint-customizable-javascript-linting-tool-1/|title=ESLint - Customizable JavaScript linting tool (1)|date=2015-06-09|website=theCodeCampus|language=en-US|access-date=2019-04-21}}</ref> Lint-like tools generally perform [[static code analysis|static analysis]] of source code.<ref>{{cite news|url=https://barrgroup.com/Embedded-Systems/How-To/Lint-Static-Analysis-Tool|title=How to Use Lint for Static Code Analysis|date=1 May 2002|work=Barr Group|first=Nigel| last = Jones}}</ref> Lint-like tools have also been developed for other aspects of software development, such as enforcing grammar and style guides for given language source code.<ref>{{Citation |title=rust-lang/rustfmt |date=2025-01-20 |url=https://github.com/rust-lang/rustfmt |access-date=2025-01-21 |publisher=The Rust Programming Language}}</ref> Some tools (such as [[ESLint]]) also allow rules to be auto-fixable: a rule definition can also come with the definition of a transform that resolves the warning. Rules about style are especially likely to come with an auto-fix. If the linter is run in "fix all" mode on a file that triggers only rules about formatting, the linter will act just like a formatter. ==See also== *[[Splint (programming tool)]] *[[List of tools for static code analysis]] ==References== {{Reflist}} ==Further reading== * {{cite book|last1=Darwin|first1=Ian F.|title=Checking C Programs with Lint: C Programming Utility|date=1991|publisher=O'Reilly Media|location=United States |isbn=978-0937175309|edition=Revised|url=https://books.google.com/books?id=vweTteq3OLQC}} * {{cite web | url=https://man.netbsd.org/lint.1 | title=LINT(1) | work=NetBSD General Commands Manual | date=2024-01-24}} [[Category:Static program analysis tools]] [[Category:Unix software]] [[Category:Formerly proprietary software]] [[Category:Software using the BSD license]]
Edit summary
(Briefly describe your changes)
By publishing changes, you agree to the
Terms of Use
, and you irrevocably agree to release your contribution under the
CC BY-SA 4.0 License
and the
GFDL
. You agree that a hyperlink or URL is sufficient attribution under the Creative Commons license.
Cancel
Editing help
(opens in new window)
Pages transcluded onto the current version of this page
(
help
)
:
Template:Citation
(
edit
)
Template:Cite book
(
edit
)
Template:Cite journal
(
edit
)
Template:Cite news
(
edit
)
Template:Cite web
(
edit
)
Template:Infobox
(
edit
)
Template:Infobox software
(
edit
)
Template:Main other
(
edit
)
Template:Reflist
(
edit
)
Template:Short description
(
edit
)
Template:Template other
(
edit
)