lint(1) General Commands Manual lint(1)
Name
lint - a C program checker
Syntax
lint [ option ] ... file ...
Description
The command attempts to detect features of the C program files that are likely to be errors, nonportable, or wasteful. It also checks type
usage more strictly than the compilers. Among the things that are currently detected 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 locate functions that return values in some places, but not in others, functions called with varying numbers or types of argu-
ments, and functions whose values are not used or whose values are used but none returned.
Arguments whose names end with are interpreted as C source files. Arguments whose names end with interpreted as the result of an earlier
invocation of with either the -c or the -o option used. The files are analogous to (object) files that are produced by the command when
given a file as input. Files with other suffixes are warned about and ignored.
The command takes all the and (specified by -lx) files and processes them in their command line order. By default, the command appends the
standard C library to the end of the list of files. However, if the -p option is used, the portable C library is appended instead. When
the -c option is not used, the second pass of checks this list of files for mutual compatibility. When the -c option is used, the and the
files are ignored.
Options
Any number of options may be used, in any order, intermixed with filename arguments. The following options are used to suppress certain
kinds of warning:
-a Suppress warnings about assignments of long values to variables that are not long.
-b Suppress warnings about break statements that cannot be reached. (Programs produced by or often result in such warnings).
-h Do not apply heuristic tests that attempt to intuit bugs, improve style, and reduce waste.
-u Suppress warnings about functions and external variables used and not defined, or defined and not used. (This option is suitable when
running 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 the behavior of
-lx Include additional library For example, you can include a version of the Math Library by inserting -lm on the command line. This
argument does not suppress the default use of
These lint libraries must be in the assumed directory. This option can be used to reference local libraries and is useful in the
development of multi-file projects.
-n Do not check compatibility against either the standard or the portable library.
-p Attempt to check portability to other dialects (IBM and GCOS) of C. Along with stricter checking, this option causes all non-external
names to be truncated to eight characters and all external names to be truncated to six characters and one case.
-c Cause to produce a file for every file on the command line. The files are the product of the command's first pass only, and are not
checked for inter-function compatibility.
-o lib
Cause to create a lint library with the name The -c option nullifies any use of the -o option. The library produced is the input that
is given to the second pass The -o option simply causes this file to be saved in the named library. To produce a without extraneous
messages, use of the -x option is suggested. The -v option is useful if the source files for the library are just external interfaces
(for example, the way the file is written). These option settings are also available through the use of comments which are described
later.
The -D, -U, and -I options of and the -g and -O options of are also recognized as separate arguments. The -g and -O options are ignored,
but, by recognizing these options, the behavior of is closer to that of the command's second pass. Other options are warned about and
ignored. The pre-processor symbol lint is defined to allow certain questionable code to be altered or removed for Therefore, the symbol
lint should be thought of as a reserved word for all code that is planned to be checked by
The command produces its first output on a per-source-file basis. Warnings regarding included files are collected and printed after all
source files have been processed. Finally, if the -c option is not used, information gathered from all input files is collected and
checked for consistency. At this point, if it is not clear whether a warning stems from a given source file or from one of its included
files, the source file name is printed followed by a question mark.
The behavior of the -c and the -o options allows for incremental use of on a set of C source files. Generally, one invokes once for each
source file with the -c option. Each of these invocations produces a file which corresponds to the file, and prints all messages that are
about just that source file. After all the source files have been separately run through it is invoked once more (without the -c option),
listing all the files with the needed -lx options. This prints all the inter-file inconsistencies. This scheme works well with it allows
to be used to only the source files that have been modified since the last time the set of source files were checked by
Restrictions
The system call the function and other functions that do not return a value are not interpreted correctly by the command.
Certain conventional comments in the C source change the behavior of
/*NOTREACHED*/ at appropriate points stops comments about unreachable code. (This comment is typically placed just after calls to func-
tions like
/*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. This is
equivalent to using the -v and -x options.
Files
/usr/lib/cmplrs/cc/lint
the directory where the lint libraries specified by the -lx option must exist
/usr/lib/cmplrs/cc/lint[12]
first and second passes
/usr/lib/cmplrs/cc/lint/llib-lc.ln
declarations for C Library functions (binary format; source is in
/usr/lib/cmplrs/cc/lint/llib-lcV.ln
System V declarations for standard functions
/usr/lib/cmplrs/cc/lint/llib-lcP.ln
POSIX declarations for standard functions
/usr/lib/cmplrs/cc/lint/llib-port.ln
declarations for portable functions (binary format; source is in
/usr/lib/cmplrs/cc/lint/llib-lm.ln
declarations for Math Library functions (binary format; source is in
/usr/tmp/*lint* temporaries
See Also
cc(1), cpp(1), make(1)
RISC lint(1)