X Tutup
Jump to content

Lint (software)

From Wikipedia, the free encyclopedia
(Redirected from Lint programming tool)
Lint
Original authorStephen C. Johnson
DeveloperAT&T Bell Laboratories
Initial releaseJuly 26, 1978; 47 years ago (1978-07-26)[1]
Written inC
Operating systemUnix
Available inEnglish
TypeStatic program analysis tools
LicenseOriginally proprietary commercial software, now free software under a BSD-like license[2][3]

Lint was a Unix utility that performed static program analysis on C language source code.[1] The software gives its name to modern computing tools responsible for checking for coding style or formatting errors, known as a "linters" or "linting tools", even though the original Lint program performed static program analysis.

History

[edit]

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.[1] The term was borrowed from the word 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, static analysis tools have also advanced their capabilities.

Today linting refers to checking code for formatting and stylistic errors and can be seen in tools like, PHP CodeSniffer (PHP), ESLint (JavaScript), Stylelint (CSS), Pylint (Python), RuboCop (Ruby) and golint (Go). Many linting tools also perform static analysis.

Overview

[edit]

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 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]

Successors of Lint

[edit]

Although today "linting" refers to style and formatting analysis of code, the successors of the original Lint continue its tradition by performing static program analysis.

The analysis performed by Lint-like tools can also be performed by an optimizing compiler, which aims to generate faster code. 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".[4]

Lint-like tools are especially useful for dynamically typed languages like JavaScript and Python. Because the interpreters of such languages typically do not enforce as many and as strict rules during 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").[5] Lint-like tools generally perform static analysis of source code.[6]

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.[7] 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

[edit]

References

[edit]
  1. ^ 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-23.
  2. ^ "UNIX is free!". lemis.com. 2002-01-24.
  3. ^ Broderick, Bill (January 23, 2002). "Dear Unix enthusiasts" (PDF). Caldera International. Archived from the original (PDF) on February 19, 2009.
  4. ^ "Arcanist User Guide: Lint". Phabricator. Retrieved 19 January 2018.
  5. ^ "ESLint - Customizable JavaScript linting tool (1)". theCodeCampus. 2015-06-09. Retrieved 2019-04-21.
  6. ^ Jones, Nigel (1 May 2002). "How to Use Lint for Static Code Analysis". Barr Group.
  7. ^ rust-lang/rustfmt, The Rust Programming Language, 2025-01-20, retrieved 2025-01-21

Further reading

[edit]
X Tutup