Museum

Home

Lab Overview

Retrotechnology Articles

Online Manuals

⇒ lint(1) — A/UX 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 [-a] [-b] [-Dname[=def]] [-h] [-Idir] [-lx] [-n] [- o lib] [-p] [-u] [-Uname] [-v] [-x] file... DESCRIPTION lint attempts to detect features of the C program files that are likely to be bugs, nonportable, or wasteful. It also checks type usage more strictly than the compilers. Features currently detected include unreachable statements, loops not entered at the top, automatic variables declared and not used, and logical expressions whose value is con- stant. Moreover, function usage is checked to find func- tions that return values in some places and not in others, functions that are called with varying numbers or types of arguments, and functions whose values are not used or whose values are used but not 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 the -o flag 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 command line order. By de- fault, lint appends the standard C lint library (llib-lc.ln) to the end of the list of files. However, if the -p flag option is used, the portable C lint library (llib-port.ln) is appended instead. The second pass of lint checks this list of files for mutual compatibility. Any number of lint flag options may be used, in any order, intermixed with filename arguments. The following flag op- tions are used to suppress certain kinds of complaints. -a Suppresses complaints about assignments of long values to variables that are not long. -b Suppresses complaints about break statements that cannot be reached. (Programs produced by lex or yacc will often result in many such complaints). -h Does not apply heuristic tests that attempt to in- tuit bugs, improve style, and reduce waste. -u Suppresses complaints about functions and external variables used and not defined, or defined and not April, 1990 1



lint(1) lint(1)
used. (This flag option is suitable for running lint on a subset of files of a larger program). -v Suppresses complaints about unused arguments in functions. -x Does not report variables referred to by external declarations but never used. The following arguments alter the behavior of lint . -lx Includes an 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 com- mand line. This argument does not suppress the de- fault use of llib-lc.ln. These lint libraries must be in the assumed directo- ry. This flag option can be used to reference local lint libraries and is useful in the development of multifile projects. To generate llib-lX.ln from llib-lX, use cc -E -C -Dlint llib-lX | \ /usr/lib/lint1 -vx -H/tmp/lint$$ > llib-1X.1n rm -f /tmp/lint$$ -n Does not check compatibility against either the standard or the portable lint library. -p Attempts to check portability to other dialects (IBM and GCOS) of C. Along with stricter checking, this option causes all nonexternal names to be truncated to eight characters and all external names to be truncated to six characters and one case. -o lib Cause lint to create a new lint library that has the name llib-llib.ln. The lint library produced is the input that is given to the second pass of lint. The -o flag 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 flag option is suggested. The -v flag 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 flag option settings are also available through the use of lint comments (as shown later in this section). 2 April, 1990



lint(1) lint(1)
The -D, -U, and -I flag options of cpp(1) and the -g and -O flag options of cc(1) are also recognized as separate argu- ments. The -g and -O flag options are ignored, but, by recognizing these flag options, the behavior of lint is closer to that of the cc(1) command. Other flag 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*/ stops comments about unreachable code at appropriate points. (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 function declaration that follows it. The data types of the first n arguments are checked; a missing n is assumed to be 0. /*ARGSUSED*/ turns on the -v flag 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 flag options. lint produces its first output on a per-source-file basis. Complaints pertaining to included files are collected and printed after all source files have been processed. Final- ly, 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 filename will be printed followed by a question mark. EXAMPLES The command lint -b myfile.c checks the consistency of the file myfile.c. The -b flag option indicates that unreachable break statements are not to be checked. This flag option might well be used on files that lex(1) generates. April, 1990 3



lint(1) lint(1)
FILES /usr/bin/lint /usr/lib the directory where the lint li- braries specified by the -lx flag op- tion must exist /usr/lib/lint[12] first and second passes /usr/lib/llib-lc.ln declarations for C Library functions (binary format) /usr/lib/llib-port.ln declarations for portable functions (binary format) /usr/lib/llib-lm.l declarations for Math Library func- tions (binary format) /usr/tmp/*lint* temporaries SEE ALSO cc(1), cpp(1), make(1), ``lint Reference'' in A/UX Programming Languages and Tools, Volume 1. BUGS exit(2), longjmp(3C), and other functions that do not return are not understood; this causes various lies. 4 April, 1990

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