


LINT(1)             UNIX Programmer's Manual		  LINT(1)



NAME
     lint - a C program verifier

SYNOPSIS
     lint [ -abchnpuvx ] file ...

DESCRIPTION
     _L_i_n_t attempts to detect features of the C program _f_i_l_e_s
     which are likely to be bugs, or non-portable, or wasteful.
     It also checks the type usage of the program more strictly
     than the compilers.  Among the things which are currently
     found 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 which return values
     in some places and not in others, functions called with
     varying numbers of arguments, and functions whose values are
     not used.

     By default, it is assumed that all the _f_i_l_e_s are to be
     loaded together; they are checked for mutual compatibility.
     Function definitions for certain libraries are available to
     _l_i_n_t; these libraries are referred to by a conventional
     name, such as `-lm', in the style of _l_d(1).  Arguments end-
     ing in ._l_n are also treated as library files.  To create
     lint libraries, use the -C option:

	  lint -Cfoo files . . .

     where _f_i_l_e_s are the C sources of library _f_o_o. The result is
     a file _l_l_i_b-_l_f_o_o._l_n in the correct library format suitable
     for linting programs using _f_o_o.

     Any number of the options in the following list may be used.
     The -D, -U, and -I options of _c_c(1) are also recognized as
     separate arguments.

     p	  Attempt to check portability to the _I_B_M and _G_C_O_S
	  dialects of C.

     h	  Apply a number of heuristic tests to attempt to intuit
	  bugs, improve style, and reduce waste.

     b	  Report _b_r_e_a_k statements that cannot be reached.  (This
	  is not the default because, unfortunately, most _l_e_x and
	  many _y_a_c_c outputs produce dozens of such comments.)

     v	  Suppress complaints about unused arguments in func-
	  tions.

     x	  Report variables referred to by extern declarations,
	  but never used.



Printed 11/26/99	October 22, 1996			1






LINT(1)             UNIX Programmer's Manual		  LINT(1)



     a	  Report assignments of long values to int variables.

     c	  Complain about casts which have questionable portabil-
	  ity.

     u	  Do not complain about functions and variables used and
	  not defined, or defined and not used (this is suitable
	  for running _l_i_n_t on a subset of files out of a larger
	  program).

     n	  Do not check compatibility against the standard
	  library.

     z	  Do not complain about structures that are never defined
	  (e.g.  using a structure pointer without knowing its
	  contents.).

     _E_x_i_t(2) and other functions which do not return are not
     understood; this causes various lies.

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

     /*NOTREACHED*/
	  at appropriate points stops comments about unreachable
	  code.

     /*VARARGS_n*/
	  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.

     /*NOSTRICT*/
	  shuts off strict type checking in the next expression.

     /*ARGSUSED*/
	  turns on the -v option for the next function.

     /*LINTLIBRARY*/
	  at the beginning of a file shuts off complaints about
	  unused functions in this file.

AUTHOR
     S.C. Johnson.  Lint library construction implemented by
     Edward Wang.

FILES
     /usr/libexec/lint/lint[12]    programs
     /usr/share/lint/llib-lc.ln    declarations for standard
     functions
     /usr/share/lint/llib-lc	   human readable version of



Printed 11/26/99	October 22, 1996			2






LINT(1)             UNIX Programmer's Manual		  LINT(1)



     above
     /usr/share/lint/llib-port.ln  declarations for portable
     functions
     /usr/share/lint/llib-port	   human readable . . .
     llib-l*.ln                    library created with -C

SEE ALSO
     cc(1)
     S. C. Johnson, _L_i_n_t, _a _C _P_r_o_g_r_a_m _C_h_e_c_k_e_r

BUGS
     There are some things you just can't get lint to shut up
     about.

     /*NOSTRICT*/ is not implemented in the current version
     (alas).







































Printed 11/26/99	October 22, 1996			3



