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 is a Unix utility that performs 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 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. The lint program was released outside of Bell Labs in Unix V7, in 1979.

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

📚 Artikel Terkait di Wikipedia

Splint

laboratories Splint (medicine), a device immobilizing part of the body Splint (programming tool), for analyzing software Splint basketry Splints, a horse

Splint (programming tool)

looking at the source alone. Splint is used by gpsd as part of an effort to design for zero defects. Splint is free software released under the terms of

List of free and open-source software packages

JSHint lint PMD Pylint Semgrep Soot Sparse Splint Yasca Docker Kubernetes Podman Doxygen – tool for writing software reference documentation. The documentation

Open-source software development

Open-source software development (OSSD) is the process by which open-source software, or similar software whose source code is publicly available, is

List of tools for static code analysis

C/C++test PC-lint Plus Polyspace PVS-Studio SLAM project Sparse SonarQube Splint Understand Visual Studio Axivion Suite (Bauhaus) Code Dx CodeScene CodeQL

Geological map

high school students.[14] Archived 2009-06-25 at the Wayback Machine The SPLINT [15] project in the UK is using the BGS field mapping system as part of

Mas

system (RAAS), encoded by the proto-oncogene MAS1 Mandibular advancement splint, a device used to treat sleep apnea Marker assisted selection, a genome-tagging

3D printing

reconstruction with great success. One example of this is the bioresorbable trachial splint to treat newborns with tracheobronchomalacia developed at the University