LINT(1) — User’s Manual — Commands
NAME
lint − a C program verifier
SYNOPSIS
lint [ −abchnuvx ] [ −Dname=def ] [ −Dname ] [ −Uname ] [ −Idir ] file ...
DESCRIPTION
Lint attempts to detect features of the C program files which are likely to be bugs, or non-portable, or wasteful. It also checks the type usage of the program more strictly than the compilers.
Among the things which are currently found are unreachable statements, loops not entered at the top, automatic variables declared and not used, and logical expressions whose value is constant. Moreover, the usage of functions is checked to find functions which 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, it is assumed that all the files are to be loaded together; they are checked 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). The standard C library (−lc) is lint’ed by default.
OPTIONS
h Apply a number of heuristic tests to attempt to intuit bugs, improve style, and reduce waste.
b Report break statements that cannot be reached. This is not the default because, unfortunately, most lex and many yacc outputs produce dozens of such comments.
v Suppress complaints about unused arguments in functions.
x Report variables referred to by extern declarations, but never used.
a Report assignments of long values to int variables.
c Complain about casts which have questionable portability.
u Do 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).
n Do not check compatibility against the standard library.
−Dname=def
−Dname Define name to the preprocessor, as if by ‘#define’. If no definition is given, the name is defined as "1".
−Uname Remove any initial definition of name.
−Idir ‘#include’ files whose names do not begin with ‘/’ are always sought first in the directory of the file argument, then in directories named in −I options, then in the /usr/include directory.
General Comments
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.
EXAMPLE
The following lint call:
lint −b myfile
checks the consistency of the file ‘myfile’. The −b option indicates that unreachable break statements are to be checked.
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-lm.lndeclarations for math functions
/usr/lib/lint/llib-lmhuman-readable version of above
/usr/lib/lint/llib-lmp.lndeclarations for multi-precision functions
/usr/lib/lint/llib-lmphuman-readable version of above
/usr/lib/lint/llib-port.lndeclarations for portable functions
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.
Sun System Release 0.3 — 25 April 1983