4.5 lint Directives
4.5.1 Predefined Values
Running lint predefines the lint token. See also the cc(1) man page for
a list of predefined tokens.
4.5.2 Directives
lint directives in the form of /*...*/ are supported for existing annotations, but
will not be supported for future annotations. Directives in the form of source
code annotations, NOTE(...), are recommended for all annotations.
Specify lint directives in the form of source code annotations by including the
file note.h, for example:
#include <note.h>
Lint shares the Source Code Annotations scheme with several other tools. When you
install the Solaris Studio C compiler, you also automatically install the file /usr/lib/note/SUNW_SPRO-lint,
which contains the names of all the annotations that LockLint understands. However, the
Solaris Studio C source code checker, lint, also checks all the files in /usr/lib/note
and the Solaris Studio default location <install-directory>/prod/lib/note for all valid annotations.
You may specify a location other than /usr/lib/note by setting the environment variable
NOTEPATH, as in:
setenv NOTEPATH $NOTEPATH:other_location
The following table lists the lint directives along with their actions.
Table 4-9 The lint Directives
|
|
NOTE(ALIGNMENT(fname,n)) where
n=1, 2, 4, 8, 16, 32, 64, 128 |
Makes lint set the following function result alignment in n bytes. For example,
malloc() is defined as returning a char* or void* when in fact it really
returns pointers that are word, or even doubleword, aligned. Suppresses the following message:
|
NOTE(ARGSUSED(n))/*ARGSUSEDn*/ |
This directive
acts like the -v option for the next function. Suppresses the following message for every
argument but the first n in the function definition it precedes. Default
is 0. For the NOTE format, n must be specified.
|
NOTE(ARGUNUSED(par_name[,par_name...])) |
Makes lint not check
the mentioned arguments for usage (this option acts only for the next function). Suppresses
the following message for every argument listed in NOTE or directive.
|
NOTE(CONSTCOND)/*CONSTCOND*/ |
Suppresses complaints
about constant operands for the conditional expression. Suppresses the following messages for the
constructs it precedes. Also NOTE(CONSTANTCONDITION) or /* CONSTANTCONDITION */. constant in conditional context constant operands to op: "!" logical expression always false: op "&&" logical expression always true: op "||" |
NOTE(EMPTY) /*EMPTY*/ |
Suppresses complaints about a null statement consequent on
an if statement. This directive should be placed after the test expression, and
before the semicolon. This directive is supplied to support empty if statements when
a valid else statement follows. It suppresses messages on an empty else consequent. Suppresses
the following messages when inserted between the controlling expression of the if and
semicolon.
statement has no consequent: else when inserted between the else and semicolon;
statement has no consequent: if
|
NOTE(FALLTHRU)/*FALLTHRU*/ |
Suppresses complaints about a fall through to a case or default labelled
statement. This directive should be placed immediately preceding the label. Suppresses the following message
for the case statement it precedes. Also NOTE(FALLTHROUGH) or /* FALLTHROUGH */.
|
NOTE(LINTED (msg))/*LINTED [msg]*/ |
Suppresses any intra-file warning
except those dealing with unused variables or functions. This directive should be placed
on the line immediately preceding where the lint warning occurred. The -k option alters the
way in which lint handles this directive. Instead of suppressing messages, lint prints
an additional message, if any, contained in the comments. This directive is useful
in conjunction with the -s option for post-lint filtering. When -k is not invoked, suppresses every
warning pertaining to an intra-file problem, except:
argument unused in function
declarations unused in block
set but not used in function
static unused
variable not used in function for the line of code it precedes. msg is ignored.
|
NOTE(LINTLIBRARY)/*LINTLIBRARY*/ |
When -o is invoked, writes to a library
.ln file only definitions in the .c file it heads. This directive suppresses complaints
about unused functions and function arguments in this file. |
NOTE(NOTREACHED)/*NOTREACHED*/ |
At appropriate points, stops comments
about unreachable code. This comment is typically placed just after calls to functions
such as exit(2). Suppresses the following messages for the closing curly brace it
precedes at the end of the function.
statement not reached for the unreached statements it precedes;
fallthrough on case statement for the case it precedes that cannot be reached from the preceding case;
function falls off bottom without returning value
|
NOTE(PRINTFLIKE(n))NOTE(PRINTFLIKE(fun_name,n)) /*PRINTFLIKEn*/ |
Treats the nth argument of the function
definition it precedes as a [fs]printf() format string and issues the following messages for
mismatches between the remaining arguments and the conversion specifications. lint issues these warnings by
default for errors in the calls to [fs]printf() functions provided by the standard
C library. For the NOTE format, n must be specified.
malformed format strings for invalid conversion specifications in that argument, and function argument type inconsistent with format;
too few arguments for format
too many arguments for format
|
NOTE(PROTOLIB(n))/*PROTOLIBn*/ |
When n is 1 and
NOTE(LINTLIBRARY) or /* LINTLIBRARY */ is used, writes to a library .ln file only function
prototype declarations in the .c file it heads. The default is 0, which
cancels the process. For the NOTE format, n must be specified. |
NOTE(SCANFLIKE(n))NOTE(SCANLIKE(fun_name,n)) /*SCANFLIKEn*/ |
Same as NOTE(PRINTFLIKE(n)) or
/* PRINTFLIKEn */, except that the nth argument of the function definition is treated
as a [fs]scanf() format string. By default, lint issues warnings for errors in the
calls to [fs]scanf() functions provided by the standard C library. For the NOTE format,
n must be specified. |
NOTE(VARARGS(n))NOTE(VARARGS(fun_name,n)) /*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. The use of the ellipsis
(...) terminator in the definition is suggested in new or updated code. For the
function whose definition it precedes, suppresses the following message for calls to the
function with n or more arguments. For the NOTE format, n must be specified.
|
|