Museum

Home

Lab Overview

Retrotechnology Articles

Online Manuals

⇒ lint(1) — Interactive 2.2

Media Vault

Software Library

Restoration Projects

Artifacts Sought

Related Articles

cc(1)

cpp(1)

make(1)



          LINT(1)              INTERACTIVE UNIX System              LINT(1)



          NAME
               lint - a C program checker

          SYNOPSIS
               lint [ option ] ... file ...

          DESCRIPTION
               The lint command attempts to detect features of the C pro-
               gram files that are likely to be bugs, non-portable, 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 find 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 whose values are used but none returned.

               Arguments whose names end with .c are taken to be C source
               files.  Arguments whose names end 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 are
               warned about and ignored.

               The lint command will take all the .c, .ln, and llib-lx.ln
               (specified by -lx) files and process them 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.  How-
               ever, 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.

               Any number of lint options may be used, in any order, inter-
               mixed with file-name arguments.  The following options are
               used to 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 attempt to intuit
                    bugs, improve style, and reduce waste.

               -u   Suppress complaints about functions and external vari-
                    ables used and not defined, or defined and not used.


          Rev. C Software Development Set                            Page 1





          LINT(1)              INTERACTIVE UNIX System              LINT(1)



                    (This option is suitable for running lint on a subset
                    of files of a larger program.)

               -v   Suppress complaints about unused arguments in func-
                    tions.

               -x   Do not report variables referred to by external
                    declarations but never used.

               The following arguments alter lint's behavior:

               -lx  Include additional lint library llib-lx.ln.  For exam-
                    ple, 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.  This option can be used to reference local
                    lint libraries and is useful in the development of mul-
                    tifile projects.

               -n   Do not check compatibility against either the standard
                    or the portable lint 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 lint to produce 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 any use of the
                    -o option.  The lint library produced is the input that
                    is given to lint's second pass.  The -o option simply
                    causes this file to be saved in the named lint library.
                    To produce a llib-llib.ln without extraneous messages,
                    use of the -x option is suggested.  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 the use of ``lint comments'' (see
                    below).

               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) com-
               mand.  Other options are warned about and ignored.  The


          Rev. C Software Development Set                            Page 2





          LINT(1)              INTERACTIVE UNIX System              LINT(1)



               preprocessor symbol ``lint'' is defined to allow certain
               questionable code to be altered or removed for lint.  There-
               fore, the symbol ``lint'' should be thought of as a reserved
               word for all code that is planned to be checked by lint.

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

                    /*NOTREACHED*/
                         at appropriate points 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 declara-
                         tion.  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.

               The lint command produces its first output on a per-source-
               file basis.  Complaints regarding included files are col-
               lected and printed after all source files have been pro-
               cessed.  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
               complaint stems from a given source file or from one of its
               included files, the source file name will be printed fol-
               lowed by a question mark.

               The behavior of the -c and the -o options allows for incre-
               mental use of lint on a set of C source files.  Generally,
               one invokes lint once for each source file with the -c
               option.  Each of these invocations produces a .ln file for
               each .c file, and prints all messages that are about just
               that source file.  After all the source files have been
               separately run through lint, it is invoked once more
               (without the -c option), listing all the .ln files with the
               needed -lx options.  This will print all the interfile
               inconsistencies.  This scheme works well with make(1); it
               allows make to be used to lint only the source files that
               have been modified since the last time the set of source
               files were linted.



          Rev. C Software Development Set                            Page 3





          LINT(1)              INTERACTIVE UNIX System              LINT(1)



          FILES
               LLIBDIR               the directory where the lint libraries
                                     specified by the -lx option must
                                     exist, usually /usr/lib
               LLIBDIR/lint[12]      first and second passes
               LLIBDIR/llib-lc.ln    declarations for C Library functions
                                     (binary format; source is in
                                     LLIBDIR/llib-lc)
               LLIBDIR/llib-port.ln  declarations for portable functions
                                     (binary format; source is in
                                     LLIBDIR/llib-port)
               LLIBDIR/llib-lm.ln    declarations for Math Library func-
                                     tions (binary format; source is in
                                     LLIBDIR/llib-lm)
               TMPDIR/*lint*         temporaries
               TMPDIR                usually /usr/tmp but can be redefined
                                     by setting the environment variable
                                     TMPDIR [see tempnam() in tmpnam(3S)].
          SEE ALSO
               cc(1), cpp(1), make(1).
          BUGS
               exit(2), setjmp(3C), and other functions that do not return
               are not understood; this causes various lies.
































          Rev. C Software Development Set                            Page 4



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