lint(1) DG/UX 4.30 lint(1)
NAME
lint - a C program checker
SYNOPSIS
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 style, and reduce waste.
-u Suppress complaints about functions and external
variables used and not defined, or defined and not
Licensed material--property of copyright holder(s) Page 1
lint(1) DG/UX 4.30 lint(1)
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. These lint 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).
Licensed material--property of copyright holder(s) Page 2
lint(1) DG/UX 4.30 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
Licensed material--property of copyright holder(s) Page 3
lint(1) DG/UX 4.30 lint(1)
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.
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; if you have bought a
source license, the source is in
/usr/lib/llib-lc)
/usr/lib/llib-port.ln Declarations for portable functions
(binary format; if you have a source
license, the source is in
/usr/lib/llib-port)
/usr/lib/llib-lm.ln Declarations for Math Library
functions (binary format; if you have
a source license, the 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.
Licensed material--property of copyright holder(s) Page 4