lint(1)
_________________________________________________________________
lint Command
a C program checker
_________________________________________________________________
SYNTAX
lint [ option ] ... file ...
DESCRIPTION
Lint attempts to detect features of the C program files that are
likely to be bugs, non-portable, or wasteful. It also checks
type usage more strictly than the compiler. Lint detects
unreachable statements, loops not entered at the top, automatic
variables declared and not used, and logical expressions whose
value is constant. It also checks for functions that return
values in some places and not in others, functions called with
varying numbers or types of arguments, and functions whose values
are not used or used but not returned.
Arguments ending with .c are taken to be C source files.
Arguments ending with .ln are taken to be the result of an
earlier invocation of lint, with either the -c or the -o option
used. The .ln files are analogous to .o (object) files that are
produced by the cc(1) command when given a .c file as input.
Files with other suffixes generate warnings and are ignored.
Lint processes all the .c,.ln, and llib-lx.ln (specified by -lx)
files in their command line order. By default, lint appends the
standard C lint library (llib-lc.ln) to the end of the list of
files. However, if the -p option is used, the portable C lint
library (llib-port.ln) is appended instead. When the -c option
is not used, the second pass of lint checks this list of files
for mutual compatibility. When the -c option is used, the .ln
and the llib-lx.ln files are ignored.
You can use any number of lint options, in any order, intermixed
with file-name arguments. The following options suppress certain
kinds of complaints:
-a Suppress complaints about assignments of long values to
variables that are not long.
-b Suppress complaints about break statements that cannot be
reached. (Programs produced by lex or yacc will often
result in many such complaints).
-h Do not apply heuristic tests that try to find bugs, improve
DG/UX 4.00 Page 1
Licensed material--property of copyright holder(s)
lint(1)
style, and reduce waste.
-u Suppress complaints about functions and external variables
used and not defined, or defined and not used. (This option
is suitable for running lint on a subset of files of a
larger program).
-v Suppress complaints about unused arguments in functions.
-x Do not report variables referred to by external declarations
but never used.
The following arguments alter lint's behavior:
-lx Include the additional lint library llib-lx.ln. For
example, you can include a lint version of the math library
llib-lm.ln by inserting -lm on the command line. This
argument does not suppress the default use of llib-lc.ln.
Theselint libraries must be in the assumed directory. You
can use this option to reference local lint libraries and to
develop multi-file projects.
-Ldirectory
Look in directory first for libraries, then go to /usr/lib
libraries not found in directory. You can specify several
directories by giving the -L option and a directory name
for each directory you want searched.
-n Do not check compatibility against either the standard or
the portable lint library.
-p Check portability to other dialects (IBM and GCOS) of C.
Along with stricter checking, this option truncates all
non-external names to eight characters and all external
names to six characters and one case.
-c Produces a .ln file for every .c file on the command line.
These .ln files are the product of lint's first pass only,
and are not checked for inter-function compatibility.
-o lib
Cause lint to create a lint library with the name llib-
llib.ln. The -c option nullifies the -o option. The lint
library produced is the input that is given to lint's second
pass. The -o option simply saves this file in the named
lint library. To produce a llib-llib.ln without extraneous
messages, use the -x option. The -v option is useful if the
source file(s) for the lint library are just external
interfaces (for example, the way the file llib-lc is
written). These option settings are also available through
lint comments (see below).
DG/UX 4.00 Page 2
Licensed material--property of copyright holder(s)
lint(1)
The -D, -U, and -I options of cpp(1) and the -g and -O options of
cc(1) are also recognized as separate arguments. The -g and -O
options are ignored, but, by recognizing these options, lint's
behavior is closer to that of the cc(1) command. Other options
are warned about and ignored. The pre-processor macro "lint" is
defined to allow certain questionable code to be altered or
removed for lint. Therefore, the macro "lint" serves as a
reserved word for all code that lint will check.
Certain conventional comments in the C source will change the
behavior of lint:
/*NOTREACHED*/
Stops comments about unreachable code. (This comment
is typically placed just after calls to functions like
exit(2)).
/*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.
/*ARGSUSED*/
Turns on the -v option for the next function.
/*LINTLIBRARY*/
At the beginning of a file, shuts off complaints about
unused functions and function arguments in this file.
Equivalent to using the -v and -x options.
Lint produces its output in three phases. In the first, it
prints messages for each source file. In the second phase, it
prints messages for any files included with #include. In the
final phase, it prints messages about interrelations between
files. Question marks after filenames in this phase indicate
lint could not determine exactly what file the message refers to.
The third phase is not done if the -c is given.
The behavior of the -c and the -o options allows for incremental
use of lint on a set of C source files. You can invoke lint once
for each source file with the -c option. Each of these
invocations produces a .ln file that corresponds to the .c file,
and prints all messages about that source file only. After .ln
files have been produced, for all the source files. Lint is
invoked once more (without the -c option), listing all the .ln
files with the needed -lx options. This will print all the
inter-file inconsistencies. This scheme works well with make(1);
it lets you use make to lint only the source files that have been
modified since the last time the set of source files were linted.
DG/UX 4.00 Page 3
Licensed material--property of copyright holder(s)
lint(1)
FILES
/usr/lib The directory where the lint libraries
specified by the -lx option must exist
/usr/lib/lint[12] First and second passes
/usr/lib/llib-lc.ln Declarations for C Library functions
(binary format; source is in
/usr/lib/llib-lc)
/usr/lib/llib-port.ln Declarations for portable functions
(binary format; source is in
/usr/lib/llib-port)
/usr/lib/llib-lm.ln Declarations for Math Library functions
(binary format; source is in
/usr/lib/llib-lm)
/usr/tmp/*lint* Temporaries
SEE ALSO
cc(1), cpp(1), make(1).
BUGS
exit(2), longjmp(3C), and other functions that do not return are
not understood; this causes various problems.
DG/UX 4.00 Page 4
Licensed material--property of copyright holder(s)