Annotation of 43BSDReno/pgrm/lint/lpass1/lint.1, revision 1.1.1.1

1.1       root        1: .\" Copyright (c) 1980, 1990 Regents of the University of California.
                      2: .\" All rights reserved.  The Berkeley Software License Agreement
                      3: .\" specifies the terms and conditions for redistribution.
                      4: .\"
                      5: .\"     @(#)lint.1     6.5 (Berkeley) 7/24/90
                      6: .\"
                      7: .Dd July 24, 1990
                      8: .Dt LINT 1
                      9: .Os BSD 4
                     10: .Sh NAME
                     11: .Nm lint
                     12: .Nd a C program verifier
                     13: .Sh SYNOPSIS
                     14: .Nm lint
                     15: .Op Fl abchnpuvx
                     16: .Ar file ...
                     17: .Sh DESCRIPTION
                     18: .Nm Lint
                     19: attempts to detect features of the C program
                     20: .Ar files
                     21: which are
                     22: likely to be bugs, or non-portable, or wasteful.
                     23: It also checks the type usage of the program more strictly
                     24: than the compilers.
                     25: Among the things which are currently found are
                     26: unreachable statements,
                     27: loops not entered at the top,
                     28: automatic variables declared and not used,
                     29: and logical expressions whose value is constant.
                     30: Moreover, the usage of functions is checked to find
                     31: functions which return values in some places and not in others,
                     32: functions called with varying numbers of arguments,
                     33: and functions whose values are not used.
                     34: .Pp
                     35: By default, it is assumed that all the
                     36: .Ar files
                     37: are to be loaded together; they are checked for
                     38: mutual compatibility.
                     39: Function definitions for certain libraries are available to
                     40: .Nm lint  ;
                     41: these libraries are referred to by a
                     42: conventional name,
                     43: such as `\-lm', in the style of
                     44: .Xr ld  1  .
                     45: Arguments ending in
                     46: .Va .ln
                     47: are also treated as library files.  To create lint libraries,
                     48: use the
                     49: .Fl C
                     50: option:
                     51: .Pp
                     52: .Dl lint \-Cfoo files . . .
                     53: .Pp
                     54: where
                     55: .Ar files
                     56: are the C sources of library
                     57: .Ar foo .
                     58: The result is a file
                     59: .Em llib-lfoo .ln
                     60: in the correct library format suitable for linting programs
                     61: using
                     62: .Ar foo .
                     63: .Pp
                     64: Any number of the options in the following list
                     65: may be used.
                     66: The
                     67: .Fl D
                     68: .Fl U
                     69: and
                     70: .Fl I
                     71: options of
                     72: .Xr cc  1
                     73: are also recognized as separate arguments.
                     74: .Tp Fl p
                     75: Attempt to check portability to the
                     76: .Em IBM
                     77: and
                     78: .Em GCOS
                     79: dialects of C.
                     80: .Tp Fl h
                     81: Apply a number of heuristic tests to attempt to
                     82: intuit bugs, improve style, and reduce waste.
                     83: .Tp Fl b
                     84: Report
                     85: .Ar break
                     86: statements that cannot be reached.
                     87: (This is not the default because, unfortunately,
                     88: most
                     89: .Xr lex 1
                     90: and many
                     91: .Xr yacc 1
                     92: outputs produce dozens of such comments.)
                     93: .Tp Fl v
                     94: Suppress complaints about unused arguments in functions.
                     95: .Tp Fl x
                     96: Report variables referred to by extern declarations,
                     97: but never used.
                     98: .Tp Fl a
                     99: Report assignments of long values to int variables.
                    100: .Tp Fl c
                    101: Complain about casts which have questionable portability.
                    102: .Tp Fl u
                    103: Do not complain about functions and variables used and not
                    104: defined, or defined and not used (this is suitable for running
                    105: .Nm lint
                    106: on a subset of files out of a larger program).
                    107: .Tp Fl n
                    108: Do not check compatibility against the standard library.
                    109: .Tp Fl z
                    110: Do not complain about structures that are never defined (e.g.
                    111: using a structure pointer without knowing its contents.).
                    112: .Tp
                    113: .Pp
                    114: .Xr Exit  2
                    115: and other functions which do not return
                    116: are not understood; this causes various lies.
                    117: .Pp
                    118: Certain conventional comments in the C source
                    119: will change the behavior of
                    120: .Nm lint  :
                    121: .Tw Ds
                    122: .Tp Li /*NOTREACHED*/
                    123: at appropriate points
                    124: stops comments about unreachable code.
                    125: .Tp Li /*VARARGS n */
                    126: suppresses
                    127: the usual checking for variable numbers of arguments
                    128: in the following function declaration.
                    129: The data types of the first
                    130: .Ar n
                    131: arguments are checked;
                    132: a missing
                    133: .Ar n
                    134: is taken to be 0.
                    135: .Tp Li /*NOSTRICT*/
                    136: shuts off strict type checking in the next expression.
                    137: .Tp Li /*ARGSUSED*/
                    138: turns on the
                    139: .Fl v
                    140: option for the next function.
                    141: .Tp Li /*LINTLIBRARY*/
                    142: at the beginning of a file shuts off complaints about
                    143: unused functions in this file.
                    144: .Yp
                    145: .Sh AUTHOR
                    146: S.C. Johnson.  Lint library construction implemented by Edward Wang.
                    147: .Sh FILES
                    148: .Dw /usr/libdata/lint/llib-port.ln
                    149: .Di L
                    150: .Dp Pa /usr/libdata/lint/llib-lc.ln
                    151: declarations for standard functions
                    152: .Dp Pa /usr/libdata/lint/llib-lc
                    153: human readable version of above
                    154: .Dp Pa /usr/lib/lintdata/llib-port.ln
                    155: declarations for portable functions
                    156: .Dp Pa /usr/lib/lintdata/llib-port
                    157: human readable . . .
                    158: .Dp Pa llib-l*.ln
                    159: library created with
                    160: .Fl C
                    161: .Dp
                    162: .Sh SEE ALSO
                    163: .Xr cc 1
                    164: .br
                    165: S. C. Johnson,
                    166: .Em Lint ,
                    167: a C Program Checker
                    168: .Sh HISTORY
                    169: .Nm Lint
                    170: appeared in Version 7 AT&T Unix.
                    171: .Sh BUGS
                    172: There are some things you just
                    173: can't
                    174: get lint to shut up about.
                    175: .Pp
                    176: /*NOSTRICT*/
                    177: is not implemented in the current version (alas).

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.