Museum

Home

Lab Overview

Retrotechnology Articles

Online Manuals

⇒ lint(1) — Duplix 4.1

Media Vault

Software Library

Restoration Projects

Artifacts Sought

Related Articles

cc(1)

LINT(1)  —  Unix Programmer’s Manual

NAME

lint − a C program verifier

SYNOPSIS

lint [ options ] file ... 

DESCRIPTION

Lint tries to detect features of the C program files which are likely to be bugs, non-portable, or wasteful.  It also checks the type usage of the program more strictly than the compilers.  Among the things lint currently finds are unreachable statements, loops not entered at the top, automatic variables declared and not used, and logical expressions whose value is constant.  Moreover, lint checks the usage of functions to find functions that return values in some places and not in others, functions called with varying numbers of arguments, and functions whose values are not used. 

By default, lint assumes that all the files are to be loaded together.  Lint checks them for mutual compatibility.  Function definitions for certain libraries are available to lint.  These libraries are referred to by a conventional name, such as ‘−lm’, in the style of ld(1).  Arguments ending in .ln are also treated as library files.  To create lint libraries, use the −C option:

lint −Cfoo files . . .

where files are the C sources of library foo.  The result is a file llib-lfoo.ln in the correct library format suitable for linting programs using foo. 

OPTIONS

You can use any number of the following options with lint(1).  The −D, −U, and −I options of cc(1) are also recognized as separate arguments. 

a Reports assignments of long values to int variables. 

b Reports break statements that cannot be reached.  (This is not the default because, unfortunately, most lex and many yacc outputs produce dozens of such comments.) 

c Complains about casts which have questionable portability. 

h Applies a number of heuristic tests to attempt to intuit bugs, improve style, and reduce waste. 

n Does not check compatibility against the standard library. 

p Attempts to check portability to the IBM and GCOS dialects of C. 

u Does not complain about functions and variables used and not defined, or defined and not used (this is suitable for running lint on a subset of files out of a larger program). 

v Suppresses complaints about unused arguments in functions. 

x Reports variables referred to by extern declarations, but never used. 

z Do not complain about structures that are never defined (e.g.  using a structure pointer without knowing its contents.). 

Exit(2) and other functions which do not return are not understood; this causes various lies. 

Certain conventional comments in the C source will change the behavior of lint:

/∗NOTREACHED∗/
at appropriate points stops comments about unreachable code.

/∗VARARGSn∗/
suppresses the usual checking for variable numbers of arguments in the following function declaration. The data types of the first n arguments are checked; a missing n is taken to be 0. 

/∗NOSTRICT∗/
shuts off strict type checking in the next expression.

/∗ARGSUSED∗/
turns on the −v option for the next function. 

/∗LINTLIBRARY∗/
at the beginning of a file shuts off complaints about unused functions in this file.

FILES

/usr/lib/lint/lint[12]programs
/usr/lib/lint/llib-lc.lndeclarations for standard functions
/usr/lib/lint/llib-lchuman readable version of above
/usr/lib/lint/llib-port.lndeclarations for portable functions
/usr/lib/lint/llib-porthuman readable . . . 
llib-l∗.lnlibrary created with −C

SEE ALSO

cc(1)
S. C. Johnson, Lint, a C Program Checker

BUGS

There are some things you just can’t get lint to shut up about. 

/∗NOSTRICT∗/ is not implemented in the current version (alas). 

4th Berkeley Distribution  —  March 17, 1986

Typewritten Software • bear@typewritten.org • Edmonds, WA 98026