Museum

Home

Lab Overview

Retrotechnology Articles

Online Manuals

⇒ lint(1) — 4D1 2.0

Media Vault

Software Library

Restoration Projects

Artifacts Sought

Related Articles

cc(1)

cpp(1)

make(1)



     LINT(1)                                                   LINT(1)



     NAME
          lint - a C program checker

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

     DESCRIPTION
          The lint command 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
          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.

          lint 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.  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.

          Any number of lint options may be used, in any order,
          intermixed with file-name arguments.  The following options
          are used to suppress certain kinds of complaints:

          -h   Do not apply heuristic tests that attempt to intuit
               bugs, improve 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).

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




     Page 1                                        (last mod. 8/20/87)





     LINT(1)                                                   LINT(1)



          The following arguments alter lint's behavior:

          -lx  Include 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.  This option can be used to
               reference local lint libraries and is useful in the
               development of multi-file 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.  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)
          command.  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 lint.
          Therefore, 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



     Page 2                                        (last mod. 8/20/87)





     LINT(1)                                                   LINT(1)



                    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.

               /*LINTLIBRARY*/
                    at the beginning of a file shuts off complaints
                    about unused external declarations in this file.
                    This is equivalent to using the -v option.

          lint produces its first output on a per-source-file basis.
          Complaints 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
          complaint stems from a given source file or from one of its
          included files, the source file name will be printed
          followed by a question mark.

          The behavior of the -c and the -o options allows for
          incremental 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 which corresponds to the .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 inter-file 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.

     FILES
          /usr/lib/lint               the directory where the lint
                                      libraries specified by the -lx
                                      option must exist
          /usr/lib/lint/llib-lcurses.ln
                                      declarations for C Library
                                      functions found in
                                      /usr/lib/libcurses.a (binary
                                      format; source is in
                                      /usr/lib/lint/llib-lcurses.
          /usr/lib/lint/llib-lgl.ln   declarations for C Library
                                      functions found in



     Page 3                                        (last mod. 8/20/87)





     LINT(1)                                                   LINT(1)



                                      /usr/lib/libgl.a (binary format;
                                      source is in
                                      /usr/lib/lint/llib-lgl.
          /usr/lib/lint/lint[12]      first and second passes
          /usr/lib/lint/llib-lc.ln    declarations for C Library
                                      functions (binary format; source
                                      is in /usr/lib/lint/llib-lc )
          /usr/lib/lint/llib-port.ln  declarations for portable
                                      functions (binary format; source
                                      is in /usr/lib/lint/llib-port )
          /usr/lib/lint/llib-lm.ln    declarations for Math Library
                                      functions (binary format; source
                                      is in /usr/lib/lint/llib-lm )
          /usr/tmp/*lint*             temporaries
     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.
     ORIGIN
          AT&T V.3


































     Page 4                                        (last mod. 8/20/87)



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