lint (software) - Wikipedia lint (software) From Wikipedia, the free encyclopedia Jump to navigation Jump to search Software tool which flags suspicious and non-portable constructs in source code lint Original author(s) Stephen C. Johnson Developer(s) AT&T Bell Laboratories Initial release July 26, 1978; 42 years ago (1978-07-26)[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] Contents 1 History 2 Overview 3 Specialization 3.1 Fortran 4 See also 5 References 6 Further reading History[edit] Stephen C. Johnson, a computer scientist at Bell Labs, came up with 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 "lint" was derived from the name of the tiny bits of fiber and fluff shed by clothing, as the command should act like a dryer machine lint trap, detecting small errors with big effects. In 1979, lint was used outside of Bell Labs for the first time in the seventh version (V7) of the Unix operating system. Over the years, different versions of lint were 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, used to analyze C++ source code, is still being sold even though it was introduced in 1985.[5] Overview[edit] 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 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".[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] Specialization[edit] Fortran[edit] Fortran compilers using space-squeezing techniques (e.g. IBM 1130)[9] made it impossible for the compiler to see the problem with: .... DO 120 J=1.256 ... 120 CONTINUE (which is why programs like Lint for Fortran[10] can be helpful.[11][12] See also[edit] List of tools for static code analysis References[edit] ^ a b c d Johnson, Stephen C. (25 October 1978). "Lint, a C Program Checker": 78–1273. CiteSeerX 10.1.1.56.1841. Cite journal requires |journal= (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. ^ Software: reads the source statements into memory, discards comment lines, removes spaces except in text literals, concatenates continuation lines ^ Lint for Fortran: Denis W. Haskin (May 2, 1988). "Shaking down your FORTRAN programs". Digital Review. pp. 41–47. similar to DEC's Source Code Analyzer, .. comes into play much earlier .. before users compile their programs ^ "COMP-FORTRAN-90 Archives". Fortran90-lint, for Fortran 90 program analysis, also other tools, from http://www.cleanscape.net/stdprod/ftp/ftpflint.html ^ "Chapter 2. Basic Debugger Usage". There is a public domain version of lint for FORTRAN 77 called ftnchek Further reading[edit] 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. Retrieved from "https://en.wikipedia.org/w/index.php?title=Lint_(software)&oldid=1005334580" Categories: Static program analysis tools Unix software Hidden categories: CS1 errors: missing periodical Articles with short description Short description matches Wikidata All articles with unsourced statements Articles with unsourced statements from July 2020 Navigation menu Personal tools Not logged in Talk Contributions Create account Log in Namespaces Article Talk Variants Views Read Edit View history More Search Navigation Main page Contents Current events Random article About Wikipedia Contact us Donate Contribute Help Learn to edit Community portal Recent changes Upload file Tools What links here Related changes Upload file Special pages Permanent link Page information Cite this page Wikidata item Print/export Download as PDF Printable version Languages العربية Čeština Deutsch Español Esperanto Français 한국어 Interlingua Italiano 日本語 Polski Русский Українська 中文 Edit links This page was last edited on 7 February 2021, at 04:10 (UTC). Text is available under the Creative Commons Attribution-ShareAlike License; additional terms may apply. By using this site, you agree to the Terms of Use and Privacy Policy. Wikipedia® is a registered trademark of the Wikimedia Foundation, Inc., a non-profit organization. Privacy policy About Wikipedia Disclaimers Contact Wikipedia Mobile view Developers Statistics Cookie statement