nopp --- do not pre-process input files
showsourceloc --- display the source code location where a warning is produced
+
+D<initializer>
+ passed to pre-processor
+ Category: preproc
+ Default Setting: -
+ Set globally only
+
+I<directory>
+ add to C include path
+ Categories: directories, headers
+ Default Setting: -
+ Set globally only
+
+S<directory>
+ add to spec path
+ Categories: directories, specifications
+ Default Setting: -
+ Set globally only
+
+U<initializer>
+ passed to pre-processor
+ Category: preproc
+ Default Setting: -
+ Set globally only
+
+abstract
+ data abstraction barriers
+ Category: abstract
+ Default Setting: +
+ Set locally
+ An abstraction barrier is broken. If necessary, use /*@access <type>@*/
+ to allow access to an abstract type.
+
+accessall
+ set accessmodule, accessfile and accessczech
+ Categories: abstract, names
+ Default Setting: -
+ Set locally
+ Sets accessmodule, accessfile and accessczech
+
+accessczech
+ allow access to abstract types by czech naming convention
+ Categories: abstract, names
+ Default Setting: +
+ Set locally
+ The representation of an abstract type named <t> is accessible in the
+ definition of a function or constant named <t>_<name>
+
+accessczechoslovak
+ allow access to abstract types by czechoslovak naming convention
+ Categories: abstract, names
+ Default Setting: -
+ Set locally
+ The representation of an abstract type named <t> is accessible in the
+ definition of a function or constant named <t>_<name> or <t><Name>
+
+accessfile
+ allow access to abstract types by file name convention
+ Categories: abstract, names
+ Default Setting: +
+ Set locally
+ The representation of an abstract type named <t> is accessible anywhere
+ in a file named <t>.<x>.
+
+accessmodule
+ allow access to abstract types in definition module
+ Categories: abstract, names
+ Default Setting: +
+ Set locally
+ The representation of an abstract type defined in <M>.<x> is accessible
+ anywhere in a file named <M>.<y>.
+
+accessslovak
+ allow access to abstract types by slovak naming convention
+ Categories: abstract, names
+ Default Setting: -
+ Set locally
+ The representation of an abstract type named <t> is accessible in the
+ definition of a function or constant named <t><Name>
+
+aliasunique
+ unique parameter is aliased
+ Categories: aliasing, memory
+ Mode Settings: -+++
+ Set locally
+ A unique or only parameter is aliased by some other parameter or visible
+ global.
+
+allblock
+ the body of an if, while or for statement is not a block (sets ifblock,
+ whileblock and forblock)
+ Category: controlflow
+ Default Setting: -
+ Set locally
+ Body is a single statement, not a compound block.
+
+allempty
+ an if, while or for statement has no body (sets ifempty, whileempty and
+ forempty
+ Category: controlflow
+ Default Setting: -
+ Set locally
+
+allglobs
+ report use and modification errors for globals not annotated with unchecked
+ Categories: globals, implicit
+ Mode Settings: --++
+ Set locally
+
+allimponly
+ sets globimponly, retimponly, structimponly, specglobimponly, specretimponly
+ and specstructimponly
+ Categories: memory, implicit
+ Default Setting: -
+ Set locally
+
+allmacros
+ sets fcnmacros and constmacros
+ Category: macros
+ Default Setting: -
+ Set locally
+ All macros (not preceded by /*@notfunction@*/) are checked as functions
+ or constants depending on whether or not they have parameter lists.
+
+alwaysexits
+ loop predicate always exits
+ Category: controlflow
+ Default Setting: +
+ Set locally
+
+annotationerror
+ annotation is used in inconsistent location
+ Categories: declarations,
+ Default Setting: +
+ Set locally
+ A declaration uses an invalid annotation.
+
+ansi89limits
+ check for violations of standard limits (controlnestdepth, stringliterallen,
+ includenest, numstructfields, numenummembers) based on ANSI89 standard
+ Categories: limits, ansi
+ Default Setting: -
+ Set locally
+
+assignexpose
+ abstract representation is exposed (assignments only)
+ Categories: exposure, abstract
+ Mode Settings: --++
+ Set locally
+ Storage internal to the representation of an abstract type is assigned to
+ an external pointer. This means clients may have access to a pointer into
+ the abstract representation. If the external pointer is a parameter, the
+ exposed qualifier can be used to allow the assignment, however, this is
+ considered dangerous programming practice.
+
+badflag
+ warn about bad command line flags
+ Category: help
+ Default Setting: +
+ Set locally
+ A flag is not recognized or used in an incorrect way
+
+bitwisesigned
+ a bitwise logical operator does not have unsigned operands
+ Categories: operations,
+ Mode Settings: ---+
+ Set locally
+ An operand to a bitwise operator is not an unsigned values. This may
+ have unexpected results depending on the signed representations.
+
+boolcompare
+ comparison between bools (dangerous because of multiple TRUE values)
+ Categories: booleans, operations
+ Mode Settings: -+++
+ Set locally
+ Two bool values are compared directly using a C primitive. This may
+ produce unexpected results since all non-zero values are considered TRUE,
+ so different TRUE values may not be equal. The file bool.h (included in
+ splint/lib) provides bool_equal for safe bool comparisons.
+
+boolfalse
+ set name of boolean false (default FALSE)
+ Category: booleans
+ Default Setting: -
+ Set locally
+ String argument. Default: FALSE
+
+boolint
+ bool and int are equivalent
+ Categories: typeequivalence, booleans
+ Mode Settings: +---
+ Set locally
+ To make bool and int types equivalent, use +boolint.
+
+boolops
+ primitive operation (!, && or ||) does not has a boolean argument
+ Categories: booleans, operations
+ Mode Settings: -+++
+ Set locally
+ The operand of a boolean operator is not a boolean. Use +ptrnegate to
+ allow ! to be used on pointers.
+
+booltrue
+ set name of boolean true (default TRUE)
+ Category: booleans
+ Default Setting: -
+ Set locally
+ String argument. Default: TRUE
+
+booltype
+ set name of boolean type (default bool)
+ Category: booleans
+ Default Setting: -
+ Set locally
+ String argument. Default: lltX_bool
+
+bounds
+ memory bounds checking (sets boundsread and boundswrite)
+ Categories: memorybounds, memory
+ Default Setting: -
+ Set locally
+ Memory read or write may be out of bounds of allocated storage.
+
+boundsread
+ possible out of bounds read
+ Categories: memorybounds, memory
+ Mode Settings: ----
+ Set locally
+ A memory read references memory beyond the allocated storage.
+
+boundswrite
+ possible buffer overflow from an out of bounds write
+ Categories: memorybounds, memory
+ Mode Settings: ----
+ Set locally
+ A memory write may write to an address beyond the allocated buffer.
+
+branchstate
+ storage has inconsistent states of alternate paths through a branch
+ Category: memory
+ Mode Settings: -+++
+ Set locally
+ The state of a variable is different depending on which branch is taken.
+ This means no annotation can sensibly be applied to the storage.
+
+bufferoverflow
+ possible buffer overflow vulnerability
+ Categories: warnuse, security
+ Mode Settings: -+++
+ Set locally
+ Use of function that may lead to buffer overflow.
+
+bufferoverflowhigh
+ likely buffer overflow vulnerability
+ Categories: warnuse, security
+ Mode Settings: ++++
+ Set locally
+ Use of function that may lead to buffer overflow.
+
+bugslimit
+ set maximum number of bugs detected before giving up
+ Category: debug
+ Default Setting: -
+ Set locally
+ Numeric Argument. Default: 3
+
+casebreak
+ non-empty case in a switch without preceding break
+ Category: controlflow
+ Mode Settings: -+++
+ Set locally
+ Execution falls through from the previous case.
+
+castexpose
+ abstract representation is exposed through a cast
+ Categories: exposure, abstract
+ Mode Settings: --++
+ Set locally
+ Storage internal to the representation of an abstract type is exposed
+ through a type cast. This means clients may have access to a pointer into
+ the abstract representation.
+
+castfcnptr
+ a pointer to a function is cast to a pointer to void (or vice versa)
+ Categories: typeequivalence, pointers
+ Default Setting: +
+ Set locally
+ A pointer to a function is cast to (or used as) a pointer to void (or
+ vice versa).
+
+charindex
+ char can be used to index arrays
+ Categories: typeequivalence, arrays
+ Mode Settings: +---
+ Set locally
+ To allow char types to index arrays, use +charindex.
+
+charint
+ char and int are equivalent
+ Category: typeequivalence
+ Mode Settings: +---
+ Set locally
+ To make char and int types equivalent, use +charint.
+
+charintliteral
+ character constants (e.g., 'a') can be used as ints
+ Categories: typeequivalence, numbers
+ Mode Settings: +---
+ Set locally
+ A character constant is used as an int. Use +charintliteral to allow
+ character constants to be used as ints. (This is safe since the actual
+ type of a char constant is int.)
+
+charunsignedchar
+ allow char and unsigned char types to match
+ Category: typeequivalence
+ Mode Settings: +---
+ Set locally
+ To allow char and unsigned char types to match use +charunsignedchar.
+
+checkedglobalias
+ function returns with a checked global aliasing external state
+ Categories: aliasing, globals
+ Mode Settings: -+++
+ Set locally
+ A global variable aliases externally-visible state when the function
+ returns.
+
+checkmodglobalias
+ function returns with a checkmod global aliasing external state
+ Categories: aliasing, globals
+ Mode Settings: -+++
+ Set locally
+ A global variable aliases externally-visible state when the function
+ returns.
+
+checkpost
+ unable to verify predicate in ensures clause
+ Categories: memorybounds, memory
+ Mode Settings: ----
+ Set locally
+ The function implementation may not satisfy a post condition given in an
+ ensures clause.
+
+checkstrictglobalias
+ function returns with a checkstrict global aliasing external state
+ Categories: aliasing, globals
+ Mode Settings: -+++
+ Set locally
+ A global variable aliases externally-visible state when the function
+ returns.
+
+checkstrictglobs
+ report use and modification errors for checkedstrict globals
+ Categories: globals, unconstrained
+ Mode Settings: ++++
+ Set locally
+
+codeimponly
+ sets globimponly, retimponly and structimponly
+ Categories: memory, implicit
+ Default Setting: -
+ Set locally
+
+commentchar
+ set marker character for syntactic comments (default is '@')
+ Categories: initializations, comments
+ Default Setting: -
+ Set locally
+ Character Argument. Default: @
+ Set the marker character for syntactic comments. Comments beginning with
+ /*<char> are interpreted by Splint, where <char> is the comment marker
+ character.
+
+commenterror
+ inconsistent syntactic comment
+ Categories: declarations,
+ Default Setting: +
+ Set locally
+ A syntactic comment is used inconsistently.
+
+compdef
+ parameter, return value or global completely defined
+ Categories: memory, definition
+ Mode Settings: -+++
+ Set locally
+ Storage derivable from a parameter, return value or global is not
+ defined. Use /*@out@*/ to denote passed or returned storage which need
+ not be defined.
+
+compdestroy
+ all only references derivable from void pointer out only parameter are
+ released
+ Categories: memory, leaks
+ Mode Settings: -+++
+ Set locally
+ A storage leak due to incomplete deallocation of a structure or deep
+ pointer is suspected. Unshared storage that is reachable from a reference
+ that is being deallocated has not yet been deallocated. Splint assumes
+ when an object is passed as an out only void pointer that the outer
+ object will be deallocated, but the inner objects will not.
+
+compmempass
+ actual parameter matches alias kind of formal parameter completely
+ Categories: memory, definition
+ Mode Settings: -+++
+ Set locally
+ Storage derivable from a parameter does not match the alias kind expected
+ for the formal parameter.
+
+constmacros
+ check all macros without parameter lists as constants
+ Category: macros
+ Default Setting: -
+ Set locally
+ Every non-parameterized macro (not preceded by /*@notfunction@*/) is
+ checked as a constant.
+
+constprefix
+ set namespace prefix for constants
+ Categories: names, prefixes
+ Default Setting: -
+ Set locally
+ String argument. No default.
+ A constant does not start with the constantprefix
+
+constprefixexclude
+ the constprefix may not be used for non-constant identifiers
+ Categories: names, prefixes
+ Default Setting: -
+ Set locally
+ An identifier that is not a constant starts with the constantprefix.
+
+constuse
+ constant declared but not used
+ Category: alluse
+ Mode Settings: -+++
+ Set locally
+ A constant is declared but not used. Use unused in the constant
+ declaration to suppress message.
+
+continuecomment
+ line continuation marker (\) in comment before */ on same line
+ Categories: comments,
+ Default Setting: -
+ Set locally
+ A line continuation marker (\) appears inside a comment on the same line
+ as the comment close. Preprocessors should handle this correctly, but it
+ causes problems for some preprocessors.
+
+controlnestdepth
+ set maximum nesting depth of compound statements, iteration control
+ structures, and selection control structures (ANSI89 minimum is 15;
+ ISO99 is 63)
+ Categories: limits, ansi
+ Mode Settings: ---+
+ Set locally
+ Numeric Argument. Default: 63
+ Maximum number of control levels exceeded.
+
+cppnames
+ external or internal name is a C++ keyword or reserved word
+ Categories: names, ansi
+ Mode Settings: --++
+ Set locally
+ External name is a C++ keyword or reserved word. This could lead to
+ problems if the code is compiled with a C++ compiler.
+
+czech
+ czech naming convention (sets accessczech, czechfunctions, czechvars,
+ czechconstants, czechenums, and czechmacros)
+ Categories: names, abstract
+ Default Setting: -
+ Set locally
+ Name is not consistent with Czech naming convention.
+
+czechconsts
+ czech naming convention violated in a constant declaration
+ Categories: names, abstract
+ Default Setting: -
+ Set locally
+ Constant name is not consistent with Czech naming convention.
+
+czechfcns
+ czech naming convention violated in a function or iterator declaration
+ Categories: names, abstract
+ Default Setting: -
+ Set locally
+ Function or iterator name is not consistent with Czech naming convention.
+
+czechmacros
+ czech naming convention violated in an expanded macro name
+ Categories: names, abstract
+ Default Setting: -
+ Set locally
+ Expanded macro name is not consistent with Czech naming convention.
+
+czechoslovak
+ czech or slovak naming convention violated
+ Categories: names, abstract
+ Default Setting: -
+ Set locally
+ Name is not consistent with either Czech or Slovak naming convention.
+
+czechoslovakconsts
+ czechoslovak naming convention violated in a constant declaration
+ Categories: names, abstract
+ Default Setting: -
+ Set locally
+ Constant name is not consistent with Czechoslovak naming convention.
+
+czechoslovakfcns
+ czechoslovak naming convention violated in a function or iterator
+ declaration
+ Categories: names, abstract
+ Default Setting: -
+ Set locally
+ Function name is not consistent with Czechoslovak naming convention.
+
+czechoslovakmacros
+ czechoslovak naming convention violated in an expanded macro name
+ Categories: names, abstract
+ Default Setting: -
+ Set locally
+ Expanded macro name is not consistent with Czechoslovak naming
+ convention.
+
+czechoslovaktypes
+ czechoslovak naming convention violated in a user-defined type definition
+ Categories: names, abstract
+ Default Setting: -
+ Set locally
+ Type name is not consistent with Czechoslovak naming convention.
+ Czechoslovak type names may not include uppercase letters or the
+ underscore character.
+
+czechoslovakvars
+ czechoslovak naming convention violated in a variable declaration
+ Categories: names, abstract
+ Default Setting: -
+ Set locally
+ Variable name is not consistent with Czechoslovak naming convention.
+
+czechtypes
+ czech naming convention violated in a user-defined type definition
+ Categories: names, abstract
+ Default Setting: -
+ Set locally
+ Type name is not consistent with Czech naming convention. Czech type
+ names must not use the underscore character.
+
+czechvars
+ czech naming convention violated in a variable declaration
+ Categories: names, abstract
+ Default Setting: -
+ Set locally
+ Variable name is not consistent with Czech naming convention.
+
+debugfcnconstraint
+ debug function constraints
+ Categories: debug, memorybounds
+ Mode Settings: ----
+ Set locally
+ Perform buffer overflow checking even if the errors would be surpressed.
+
+declundef
+ function or variable declared but never defined
+ Category: complete
+ Mode Settings: --++
+ Set locally
+ A function or variable is declared, but not defined in any source code
+ file.
+
+deepbreak
+ break inside nested while or for or switch
+ Category: controlflow
+ Default Setting: -
+ Set locally
+ A break statement appears inside the body of a nested while, for or
+ switch statement. Sets looploopbreak, loopswitchbreak, switchloopbreak,
+ switchswitchbreak, and looploopcontinue.
+
+deparrays
+ array elements are dependent storage
+ Categories: memory, arrays
+ Mode Settings: --++
+ Set locally
+ When an element is fetched from an array, Splint analysis is not able to
+ determine if the same element is reused. If +deparrays, Splint will mark
+ local storage assigned from array fetches as dependent.
+
+dependenttrans
+ dependent transfer errors
+ Category: memory
+ Mode Settings: -+++
+ Set locally
+ Dependent storage is transferred to a non-dependent reference.
+
+distinctexternalnames
+ external name is not distinguishable from another external name using the
+ number of significant characters
+ Categories: names, ansi
+ Default Setting: -
+ Set locally
+ An external name is not distinguishable from another external name using
+ the number of significant characters. According to ANSI Standard (3.1),
+ an implementation may only consider the first 6 characters significant,
+ and ignore alphabetical case distinctions (ISO C99 requires 31). The
+ +externalnamelen <n> flag may be used to change the number of significant
+ characters, and -externalnamecaseinsensitive to make alphabetical case
+ significant in external names.
+
+distinctinternalnames
+ internal name is not distinguishable from another internal name using the
+ number of significant characters
+ Categories: names, ansi
+ Default Setting: -
+ Set locally
+ An internal name is not distinguishable from another internal name using
+ the number of significant characters. According to ANSI89 Standard (3.1),
+ an implementation may only consider the first 31 characters significant
+ (ISO C99 specified 63). The +internalnamelen <n> flag changes the number
+ of significant characters, -internalnamecaseinsensitive to makes
+ alphabetical case significant, and +internalnamelookalike to make
+ similar-looking characters non-distinct.
+
+dump
+ save state for merging (default suffix .lcd)
+ Categories: libraries, files
+ Default Setting: -
+ Set globally only
+ Filename argument. No default.
+
+duplicatecases
+ duplicate cases in switch
+ Category: controlflow
+ Default Setting: +
+ Set locally
+ Duplicate cases in switch.
+
+duplicatequals
+ report duplicate type qualifiers (e.g., unsigned unsigned)
+ Categories: typeequivalence,
+ Default Setting: +
+ Set locally
+ Duplicate type qualifiers not supported by ISO standard.
+
+elseifcomplete
+ if ... else if chains must have final else
+ Category: controlflow
+ Mode Settings: ---+
+ Set locally
+ There is no final else following an else if construct.
+
+emptyreturn: <invalid flag>
+
+enumindex
+ enum can be used to index arrays
+ Categories: typeequivalence, arrays
+ Mode Settings: ----
+ Set locally
+ To allow enum types to index arrays, use +enumindex.
+
+enumint
+ enum and int are equivalent
+ Category: typeequivalence
+ Mode Settings: ++--
+ Set locally
+ To make enum and int types equivalent, use +enumint.
+
+enummembers
+ enum members must be int values
+ Mode Settings: ----
+ Set locally
+ Type of initial values for enum members must be int.
+
+enummemuse
+ member of an enum type not used
+ Category: alluse
+ Mode Settings: -+++
+ Set locally
+ A member of an enum type is never used.
+
+enumprefix
+ set namespace prefix for enum members
+ Categories: names, prefixes
+ Default Setting: -
+ Set locally
+ String argument. No default.
+ An enum member does not start with the enumprefix.
+
+enumprefixexclude
+ the enumprefix may not be used for non-enum member identifiers
+ Categories: names, prefixes
+ Default Setting: -
+ Set locally
+ An identifier that is not an enum member starts with the enumprefix.
+
+evalorder
+ code has unspecified or implementation-dependent behavior because of order
+ of evaluation
+ Categories: undefined, ansi
+ Mode Settings: -+++
+ Set locally
+ Code has unspecified behavior. Order of evaluation of function parameters
+ or subexpressions is not defined, so if a value is used and modified in
+ different places not separated by a sequence point constraining
+ evaluation order, then the result of the expression is unspecified.
+
+evalorderuncon
+ code involving call to unspecified function has undefined or
+ implementation-dependent behavior
+ Categories: undefined, ansi
+ Mode Settings: ---+
+ Set locally
+ Code involving a call to function with no modifies or globals clause may
+ have undefined or implementation-dependent behavior (Splint assumes the
+ unconstrained call may modify any reachable state or use any global). Add
+ a specification for the function.
+
+exitarg
+ argument to exit has implementation defined behavior
+ Categories: systemfunctions, undefined
+ Mode Settings: -+++
+ Set locally
+ The argument to exit should be 0, EXIT_SUCCESS or EXIT_FAILURE
+
+expect
+ expect <int> code errors
+ Categories: <No Category>, errors
+ Default Setting: -
+ Set globally only
+ Numeric Argument. Default: 0
+
+exportany
+ variable, function or type exported but not specified
+ Categories: export, specifications
+ Default Setting: -
+ Set locally
+ A variable, function or type is exported, but not specified.
+
+exportconst
+ constant exported but not specified
+ Categories: export, specifications
+ Mode Settings: ---+
+ Set locally
+ A constant is exported, but not specified.
+
+exportfcn
+ function exported but not specified
+ Categories: export, specifications
+ Mode Settings: ---+
+ Set locally
+ A function is exported, but not specified.
+
+exportheader
+ a declaration is exported but does not appear in a header file
+ Categories: alluse, export
+ Mode Settings: --++
+ Set locally
+ A declaration is exported, but does not appear in a header file.
+
+exportheadervar
+ a variable declaration is exported but does not appear in a header file
+ Categories: alluse, export
+ Mode Settings: --++
+ Set locally
+ A variable declaration is exported, but does not appear in a header file.
+ (Used with exportheader.)
+
+exportiter
+ constant exported but not specified
+ Categories: export, specifications
+ Mode Settings: ---+
+ Set locally
+ A constant is exported, but not specified.
+
+exportlocal
+ a declaration is exported but not used outside this module
+ Categories: alluse, export
+ Mode Settings: -+++
+ Set locally
+ A declaration is exported, but not used outside this module. Declaration
+ can use static qualifier.
+
+exportmacro
+ expanded macro exported but not specified
+ Categories: export, specifications
+ Mode Settings: ---+
+ Set locally
+ A macro is exported, but not specified.
+
+exporttype
+ type definition exported but not specified
+ Categories: export, specifications
+ Mode Settings: ---+
+ Set locally
+ A type is exported, but not specified.
+
+exportvar
+ variable exported but not specified
+ Categories: export, specifications
+ Mode Settings: ---+
+ Set locally
+ A variable is exported, but not specified.
+
+exposetrans
+ exposure transfer errors
+ Category: memory
+ Mode Settings: -+++
+ Set locally
+ Exposed storage is transferred to a non-exposed, non-observer reference.
+
+externalnamecaseinsensitive
+ alphabetic comparisons for external names are case-insensitive
+ Categories: names, ansi
+ Default Setting: +
+ Set locally
+ Make alphabetic case insignificant in external names. By ANSI89 standard,
+ case need not be significant in an external name. If +distinctexternalname
+ s is not set, sets +distinctexternalnames with unlimited external name
+ length.
+
+externalnamelen
+ set the number of significant characters in an external name
+ Categories: names, ansi
+ Default Setting: -
+ Set locally
+ Numeric Argument. Default: 31
+ Sets the number of significant characters in an external name (default is
+ 6 for old ANSI89 limit, C99 requires 31). Sets +distinctexternalnames.
+
+externalprefix
+ set namespace prefix for external identifiers
+ Categories: names, prefixes
+ Default Setting: -
+ Set locally
+ String argument. No default.
+ An external identifier does not start with the externalprefix
+
+externalprefixexclude
+ the externalprefix may not be used for non-external identifiers
+ Categories: names, prefixes
+ Default Setting: -
+ Set locally
+ An identifier that is not external starts with the externalprefix.
+
+f
+ read an options file (default ~/.splintrc not loaded)
+ Categories: initializations, files
+ Default Setting: -
+ Set globally only
+ Filename argument. No default.
+ Read an options file (instead of loading default ~/.splintc)
+
+fcnderef
+ dereferencce of a function type
+ Mode Settings: --++
+ Set locally
+ A function type is dereferenced. The ANSI standard allows this because
+ of implicit conversion of function designators, however the dereference
+ is unnecessary.
+
+fcnmacros
+ check all macros with parameter lists as functions
+ Category: macros
+ Default Setting: -
+ Set locally
+ Every parameterized macro (not preceded by /*@notfunction@*/) is checked
+ as a function.
+
+fcnpost
+ display function post conditions
+ Categories: memorybounds, display
+ Mode Settings: ----
+ Set locally
+ Display function post conditions.
+
+fcnuse
+ function declared but not used
+ Category: alluse
+ Mode Settings: ++++
+ Set locally
+ A function is declared but not used. Use /*@unused@*/ in front of
+ function header to suppress message.
+
+fielduse
+ field of structure type not used
+ Category: alluse
+ Mode Settings: -+++
+ Set locally
+ A field is present in a structure type but never used. Use /*@unused@*/
+ in front of field declaration to suppress message.
+
+fileextensions
+ warn when command line file does not have a recognized extension
+ Category: help
+ Default Setting: +
+ Set locally
+
+filestaticprefix
+ set namespace prefix for file static declarations
+ Categories: names, prefixes
+ Default Setting: -
+ Set locally
+ String argument. No default.
+ A file-static identifier does not start with the filestaticprefix.
+
+filestaticprefixexclude
+ the filestaticprefix may not be used for identifiers that are not file
+ static
+ Categories: names, prefixes
+ Default Setting: -
+ Set locally
+ An identifier that is not file static starts with the filestaticprefix.
+
+firstcase
+ first statement in switch is not a case
+ Category: controlflow
+ Mode Settings: -+++
+ Set locally
+ The first statement after a switch is not a case.
+
+fixedformalarray
+ formal parameter of type array is declared with size
+ Categories: declarations,
+ Default Setting: +
+ Set locally
+ A formal parameter is declared as an array with size. The size of the
+ array is ignored in this context, since the array formal parameter is
+ treated as a pointer.
+
+floatdouble
+ float and double are equivalent
+ Category: typeequivalence
+ Mode Settings: +---
+ Set locally
+ To make float and double types equivalent, use +floatdouble.
+
+forblock
+ the body of a for statement is not a block
+ Category: controlflow
+ Mode Settings: ---+
+ Set locally
+ Loop body is a single statement, not a compound block.
+
+forcehints
+ provide a hint for every warnings
+ Categories: hints, format
+ Default Setting: -
+ Set locally
+ Provide a hint for every warning
+
+forempty
+ a for statement has no body
+ Category: controlflow
+ Mode Settings: ---+
+ Set locally
+ For statement has no body.
+
+forloopexec
+ assume all for loops execute at least once
+ Categories: controlflow, memory
+ Default Setting: -
+ Set locally
+
+formalarray
+ formal parameter is an array
+ Categories: declarations,
+ Default Setting: -
+ Set locally
+ A formal parameter is declared as an array. This can be confusing, since
+ a formal array parameter is treated as a pointer.
+
+formatcode
+ invalid format code in format string for printf or scanf-like function
+ Default Setting: +
+ Set locally
+ Format code in a format string is not valid.
+
+formatconst
+ format parameter is not a string constant (hence variable arguments cannot
+ be typechecked)
+ Mode Settings: -+++
+ Set locally
+ Format parameter is not known at compile-time. This can lead to security
+ vulnerabilities because the arguments cannot be type checked.
+
+formattype
+ type-mismatch in parameter corresponding to format code in a printf or
+ scanf-like function
+ Default Setting: +
+ Set locally
+ Type of parameter is not consistent with corresponding code in format
+ string.
+
+forwarddecl
+ forward declarations of pointers to abstract representation match abstract
+ type
+ Categories: typeequivalence, abstract
+ Mode Settings: +---
+ Set locally
+
+freshtrans
+ fresh storage transferred to non-only reference (memory leak)
+ Category: memory
+ Mode Settings: -+++
+ Set locally
+ Fresh storage (newly allocated in this function) is transferred in a way
+ that the obligation to release storage is not propagated. Use the
+ /*@only@*/ annotation to indicate the a return value is the only
+ reference to the returned storage.
+
+fullinitblock
+ initializer sets all fields
+ Category: definition
+ Default Setting: +
+ Set locally
+ Initializer does not set every field in the structure.
+
+globalias
+ function returns with global aliasing external state (sets
+ checkstrictglobalias, checkedglobalias, checkmodglobalias and
+ uncheckedglobalias)
+ Categories: aliasing, globals
+ Default Setting: -
+ Set locally
+ A global variable aliases externally-visible state when the function
+ returns.
+
+globalprefix
+ set namespace prefix for global variables
+ Categories: names, prefixes
+ Default Setting: -
+ Set locally
+ String argument. No default.
+ A global variable does not start with the globalprefix
+
+globalprefixexclude
+ the globalprefix may not be used for non-global identifiers
+ Categories: names, prefixes
+ Default Setting: -
+ Set locally
+ An identifier that is not a global variable starts with the globalprefix.
+
+globimponly
+ assume unannotated global storage is only
+ Categories: memory, implicit
+ Default Setting: +
+ Set locally
+
+globnoglobs
+ use of checked global in a function with no globals list or specification
+ Categories: globals, unconstrained
+ Mode Settings: ---+
+ Set locally
+ A specified global variable is used in the function, but not listed in
+ its globals list. Without +globnoglobs, only globals declared with
+ /*@checkedstrict@*/ will produce use errors in functions without globals
+ lists. The /*@globals ... @*/ control comment can be used to give a
+ globals list for an unspecified function.
+
+globs
+ undocumented use of a checked global variable
+ Categories: globals, specifications
+ Default Setting: +
+ Set locally
+ A checked global variable is used in the function, but not listed in its
+ globals clause. By default, only globals specified in .lcl files are
+ checked. To check all globals, use +allglobals. To check globals
+ selectively use /*@checked@*/ in the global declaration.
+
+globsimpmodsnothing
+ functions declared with a globals list but no modifies clause are assumed to
+ modify nothing
+ Categories: modification, globals
+ Mode Settings: --++
+ Set locally
+ An implicit modifies nothing clause is assumed for a function declared
+ with a globals list but not modifies clause.
+
+globstate
+ returns with global in inconsistent state (null or undefined)
+ Category: globals
+ Mode Settings: -+++
+ Set locally
+ A global variable does not satisfy its annotations when control is
+ transferred.
+
+globuse
+ global listed for a function not used
+ Categories: globals, specifications
+ Mode Settings: ++++
+ Set locally
+ A global variable listed in the function's globals list is not used in
+ the body of the function.
+
+gnuextensions
+ support some gnu (gcc) language extensions
+ Categories: , ansi
+ Default Setting: +
+ Set locally
+ ANSI C does not allow some language features supported by gcc and other
+ compilers. Use +gnuextensions to allow some of these extensions.
+
+grammar
+ debug parsing
+ Category: debug
+ Default Setting: -
+ Set locally
+
+hasyield
+ iter declaration has no yield parameters
+ Category: iterators
+ Default Setting: -
+ Set locally
+ An iterator has been declared with no parameters annotated with yield.
+ This may be what you want, if the iterator is meant to do something a
+ fixed number of times, but returns no information to the calling context.
+ Probably, a parameter is missing the yield annotation to indicate that it
+ is assigned a value in the calling context.
+
+help
+ -help <flags> will describe flags
+ Category: help
+ Default Setting: -
+ Set globally only
+ Display help
+
+hints
+ provide a hint the first time a particular warning appears
+ Categories: hints, format
+ Default Setting: +
+ Set locally
+ Provide a hint the first time a particular warning appears
+
+i
+ set LCL initilization file
+ Categories: initializations, files
+ Default Setting: -
+ Set globally only
+ Filename argument. No default.
+
+ifblock
+ the body of an if statement is not a block
+ Category: controlflow
+ Mode Settings: ---+
+ Set locally
+ If body is a single statement, not a compound block.
+
+ifempty
+ an if statement has no body
+ Category: controlflow
+ Mode Settings: ++++
+ Set locally
+ If statement has no body.
+
+ignorequals
+ ignore type qualifiers (long, short, unsigned)
+ Categories: typeequivalence, numbers
+ Mode Settings: ----
+ Set locally
+ To ignore type qualifiers in type comparisons use +ignorequals.
+
+ignoresigns
+ ignore signs in type comparisons (unsigned matches signed)
+ Categories: typeequivalence, numbers
+ Mode Settings: ----
+ Set locally
+ To ignore signs in type comparisons use +ignoresigns
+
+immediatetrans
+ an immediate address (result of &) is transferred inconsistently
+ Category: memory
+ Mode Settings: -+++
+ Set locally
+ An immediate address (result of & operator) is transferred
+ inconsistently.
+
+impabstract
+ assume user type definitions are abstract (unless /*@concrete@*/ is used)
+ Categories: abstract, implicit
+ Default Setting: -
+ Set locally
+
+impcheckedglobs
+ assume checked qualifier for unqualified global declarations
+ Categories: globals, unconstrained
+ Mode Settings: ----
+ Set locally
+
+impcheckedspecglobs
+ assume checked qualifier for unqualified global declarations in .lcl files
+ Categories: globals, unconstrained
+ Mode Settings: -+++
+ Set locally
+
+impcheckedstatics
+ assume checked qualifier for unqualified file static declarations
+ Categories: globals, unconstrained
+ Mode Settings: ----
+ Set locally
+
+impcheckedstrictglobs
+ assume checkedstrict qualifier for unqualified global declarations
+ Categories: globals, unconstrained
+ Mode Settings: ---+
+ Set locally
+
+impcheckedstrictspecglobs
+ assume checkmod qualifier for unqualified global declarations in .lcl files
+ Categories: globals, unconstrained
+ Mode Settings: ---+
+ Set locally
+
+impcheckedstrictstatics
+ assume checkedstrict qualifier for unqualified file static declarations
+ Categories: globals, unconstrained
+ Mode Settings: ---+
+ Set locally
+
+impcheckmodglobs
+ assume checkmod qualifier for unqualified global declarations
+ Categories: globals, unconstrained
+ Mode Settings: ----
+ Set locally
+
+impcheckmodinternals
+ assume checkmod qualifier for unqualified local static declarations (for
+ internal state modifications)
+ Categories: globals, unconstrained
+ Mode Settings: --++
+ Set locally
+
+impcheckmodspecglobs
+ assume checkmod qualifier for unqualified global declarations in .lcl files
+ Categories: globals, unconstrained
+ Mode Settings: ----
+ Set locally
+
+impcheckmodstatics
+ assume checkmod qualifier for unqualified file static declarations
+ Categories: globals, unconstrained
+ Mode Settings: ----
+ Set locally
+
+impconj
+ make all alternate types implicit (useful for making system libraries
+ Category: libraries
+ Default Setting: -
+ Set locally
+
+implementationoptional
+ declarator is implementation optional (ISO99 does not require an
+ implementation to provide it)
+ Categories: warnuse, security
+ Mode Settings: --++
+ Set locally
+ Use of a declarator that is implementation optional, not required by
+ ISO99.
+
+implictconstraint
+ generate implicit constraints for functions
+ Categories: memorybounds, memory
+ Mode Settings: ----
+ Set locally
+
+impouts
+ pointer parameters to unspecified functions may be implicit out parameters
+ Categories: definition, implicit
+ Mode Settings: ----
+ Set locally
+
+imptype
+ variable declaration has unknown (implicitly int) type
+ Categories: declarations,
+ Mode Settings: -+++
+ Set locally
+ A variable declaration has no explicit type. The type is implicitly int.
+
+includenest
+ set maximum number of nested #include files (ANSI89 minimum is 8;
+ ISO99 is 63)
+ Categories: limits, ansi
+ Mode Settings: --++
+ Set locally
+ Numeric Argument. Default: 63
+ Maximum number of nested #include files exceeded.
+
+incompletetype
+ formal parameter has an incomplete type
+ Categories: declarations,
+ Default Setting: +
+ Set locally
+ A formal parameter is declared with an incomplete type.
+
+incondefs
+ function, variable or constant redefined with inconsistent type
+ Categories: declarations,
+ Mode Settings: -+++
+ Set locally
+ A function, variable or constant is redefined with a different type.
+
+incondefslib
+ function, variable or constant defined in a library is redefined with
+ inconsistent type
+ Categories: declarations, libraries
+ Mode Settings: -+++
+ Set locally
+ A function, variable or constant previously defined in a library is
+ redefined with a different type.
+
+indentspaces
+ set number of spaces to indent sub-messages
+ Categories: format, display
+ Default Setting: -
+ Set locally
+ Numeric Argument. Default: 3
+
+infloops
+ likely infinite loop is detected
+ Category: controlflow
+ Mode Settings: -+++
+ Set locally
+ This appears to be an infinite loop. Nothing in the body of the loop or
+ the loop test modifies the value of the loop test. Perhaps the
+ specification of a function called in the loop body is missing a
+ modification.
+
+infloopsuncon
+ likely infinite loop is detected (may result from unconstrained function)
+ Category: controlflow
+ Mode Settings: --++
+ Set locally
+ This appears to be an infinite loop. Nothing in the body of the loop or
+ the loop test modifies the value of the loop test. There may be a
+ modification through a call to an unconstrained function, or an
+ unconstrained function in the loop test may use a global variable
+ modified by the loop body.
+
+initallelements
+ initializer defines all array elements
+ Category: definition
+ Default Setting: +
+ Set locally
+ Initializer does not define all elements of a declared array.
+
+initsize
+ initializer defines extra array elements
+ Category: definition
+ Default Setting: +
+ Set locally
+ Initializer block contains more elements than the size of a declared
+ array.
+
+internalglobs
+ use of internalState
+ Category: globals
+ Mode Settings: ---+
+ Set locally
+ A called function uses internal state, but the globals list for the
+ function being checked does not include internalState
+
+internalglobsnoglobs
+ use of internalState (in function with no globals list)
+ Category: globals
+ Mode Settings: ---+
+ Set locally
+ A called function uses internal state, but the function being checked has
+ no globals list
+
+internalnamecaseinsensitive
+ set whether case is significant an internal names (-internalnamecaseinsensiti
+ ve means case is significant)
+ Categories: names, ansi
+ Default Setting: -
+ Set locally
+ Set whether case is significant an internal names (-internalnamecaseinsens
+ itive means case is significant). By ANSI89 default, case is not
+ significant. If +distinctinternalnames is not set, sets
+ +distinctinternalnames with unlimited internal name length.
+
+internalnamelen
+ set the number of significant characters in an internal name
+ Categories: names, ansi
+ Default Setting: -
+ Set locally
+ Numeric Argument. Default: 63
+ Sets the number of significant characters in an internal name (ANSI89
+ default is 31.) Sets +distinctinternalnames.
+
+internalnamelookalike
+ lookalike characters match in internal names
+ Categories: names, ansi
+ Default Setting: -
+ Set locally
+ Set whether similar looking characters (e.g., "1" and "l") match in
+ internal names.
+
+iso99limits
+ check for violations of standard limits (controlnestdepth, stringliterallen,
+ includenest, numstructfields, numenummembers) based on ISO99 standard
+ Categories: limits, ansi
+ Default Setting: -
+ Set locally
+
+isolib
+ use normal standard library
+ Categories: libraries, initializations
+ Default Setting: -
+ Set globally only
+ Library based on the ISO standard library specification is used.
+
+isoreserved
+ external name conflicts with name reserved for system or standard library
+ Categories: names, ansi
+ Mode Settings: --++
+ Set locally
+ External name is reserved for system use by ISO C99 standard.
+
+isoreservedinternal
+ internal name conflicts with name reserved for system or standard library
+ Categories: names, ansi
+ Mode Settings: ---+
+ Set locally
+ Internal name is reserved for system in ISO C99 standard (this should not
+ be necessary unless you are worried about C library implementations that
+ violate the standard and use macros).
+
+iterbalance
+ iter is not balanced with end_<iter>
+ Category: iterators
+ Default Setting: +
+ Set locally
+
+iterloopexec
+ assume all iterator loops execute at least once
+ Categories: controlflow, memory
+ Default Setting: -
+ Set locally
+
+iterprefix
+ set namespace prefix for iterators
+ Categories: names, prefixes
+ Default Setting: -
+ Set locally
+ String argument. No default.
+ An iter does not start with the iterator prefix
+
+iterprefixexclude
+ the iterprefix may not be used for non-iter identifiers
+ Categories: names, prefixes
+ Default Setting: -
+ Set locally
+ An identifier that is not a iter starts with the iterprefix.
+
+iteryield
+ iter yield parameter is inappropriate
+ Category: iterators
+ Default Setting: +
+ Set locally
+
+its4low
+ risky security vulnerabilities (from its4 database)
+ Categories: its4, security
+ Default Setting: -
+ Set locally
+ Security vulnerability classified as risky in its4 database.
+
+its4moderate
+ moderately risky security vulnerabilities (from its4 database)
+ Categories: its4, security
+ Default Setting: -
+ Set locally
+ Security vulnerability classified as moderate risk in its4 database.
+
+its4mostrisky
+ most risky security vulnerabilities (from its4 database)
+ Categories: its4, security
+ Default Setting: -
+ Set locally
+ Security vulnerability classified as most risky in its4 database.
+
+its4risky
+ risky security vulnerabilities (from its4 database)
+ Categories: its4, security
+ Default Setting: -
+ Set locally
+ Security vulnerability classified as risky in its4 database.
+
+its4veryrisky
+ very risky security vulnerabilities (from its4 database)
+ Categories: its4, security
+ Default Setting: -
+ Set locally
+ Security vulnerability classified as very risky in its4 database.
+
+keep
+ do not delete temporary files
+ Category: debug
+ Default Setting: -
+ Set locally
+
+keeptrans
+ keep storage transferred inconsistently
+ Category: memory
+ Mode Settings: -+++
+ Set locally
+ Keep storage is transferred inconsistently --- either in a way that may
+ add a new alias to it, or release it.
+
+kepttrans
+ kept storage transferred to non-temporary reference
+ Category: memory
+ Mode Settings: -+++
+ Set locally
+ storage is transferred to a non-temporary reference after being passed as
+ keep parameter. The storage may be released or new aliases created.
+
+larchpath
+ set path for searching for library files (overrides LARCH_PATH environment
+ variable)
+ Categories: directories, files
+ Default Setting: -
+ Set globally only
+*** Note: possible difference in the test result because of the default path here:
+ Path argument. Default: .:/usr/local/share/splint/lib:/af10/evans/LCLintDev/
+ lib:
+
+lclexpect
+ expect <int> spec errors
+ Categories: <No Category>, errors
+ Default Setting: -
+ Set globally only
+ Numeric Argument. Default: 0
+
+lclimportdir
+ set directory to search for LCL import files (overrides LCLIMPORTDIR)
+ Categories: directories, files
+ Default Setting: -
+ Set globally only
+*** Note: possible difference in the test result because of the default path here:
+ Directory argument. Default: .:/usr/local/share/splint/imports:/af10/evans/L
+ CLintDev/imports
+
+lcs
+ generate .lcs files
+ Categories: headers, specifications
+ Default Setting: +
+ Set globally only
+
+legacy
+ legacy declaration in Unix Standard
+ Category: warnuse
+ Mode Settings: ----
+ Set locally
+ Use of a declarator that is marked as a legacy entry in the Unix
+ Standard.
+
+lh
+ generate .lh files
+ Categories: headers, specifications
+ Default Setting: -
+ Set globally only
+
+libmacros
+ check all macros with declarations in library as functions
+ Category: macros
+ Default Setting: -
+ Set locally
+ Every macro declared in the load library is checked.
+
+likelybool
+ type name is probably a boolean type but does not match default boolean type
+ name, "bool", and alternate name is not set
+ Categories: booleans, help
+ Default Setting: +
+ Set locally
+ Use the -booltype, -boolfalse and -booltrue flags to change the name of
+ the default boolean type.
+
+limit
+ limit <int> consecutive repeated errors
+ Categories: suppress, errors
+ Default Setting: -
+ Set locally
+ Numeric Argument. Default: -1
+
+linelen
+ set length of messages (number of chars)
+ Categories: format, display
+ Default Setting: -
+ Set locally
+ Numeric Argument. Default: 80
+
+lintcomments
+ interpret traditional lint comments (/*FALLTHROUGH*/, /*NOTREACHED*/)
+ Categories: syncomments, suppress
+ Default Setting: +
+ Set locally
+
+load
+ load state from dump file (default suffix .lcd)
+ Categories: libraries, files
+ Default Setting: -
+ Set globally only
+ Filename argument. No default.
+
+localprefix
+ set namespace prefix for local variables
+ Categories: names, prefixes
+ Default Setting: -
+ Set locally
+ String argument. No default.
+ A local variable does not start with the localprefix
+
+localprefixexclude
+ the localprefix may not be used for non-local identifiers
+ Categories: names, prefixes
+ Default Setting: -
+ Set locally
+ An identifier that is not a local variable starts with the localprefix.
+
+longintegral
+ allow long type to match an arbitrary integral type (e.g., dev_t)
+ Categories: typeequivalence, numbers
+ Mode Settings: ----
+ Set locally
+ To allow arbitrary integral types to match long unsigned, use
+ +longintegral.
+
+longsignedintegral
+ allow long type to match an arbitrary signed integral type (e.g., ssize_t)
+ Categories: typeequivalence, numbers
+ Mode Settings: ----
+ Set locally
+ To allow arbitrary signed integral types to match long unsigned, use
+ +longsignedintegral.
+
+longunsignedintegral
+ allow long unsigned type to match an arbitrary integral type (e.g., dev_t)
+ Categories: typeequivalence, numbers
+ Mode Settings: +---
+ Set locally
+ To allow arbitrary integral types to match long unsigned, use
+ +longunsignedintegral.
+
+longunsignedunsignedintegral
+ allow long unsigned type to match an arbitrary unsigned integral type (e.g.,
+ size_t)
+ Categories: typeequivalence, numbers
+ Mode Settings: +---
+ Set locally
+ To allow arbitrary unsigned integral types to match long unsigned, use
+ +longunsignedunsignedintegral.
+
+loopexec
+ assume all loops execute at least once (sets forloopexec, whileloopexec and
+ iterloopexec)
+ Categories: controlflow, memory
+ Default Setting: -
+ Set locally
+
+looploopbreak
+ break inside nested while or for
+ Category: controlflow
+ Mode Settings: --++
+ Set locally
+ A break statement appears inside the body of a nested while or for
+ statement. This is perfectly reasonable code, but check that the break is
+ intended to break only the inner loop. The break statement may be
+ preceded by /*@innerbreak@*/ to suppress the message for this break only.
+
+looploopcontinue
+ continue inside nested loop
+ Category: controlflow
+ Mode Settings: ---+
+ Set locally
+ A continue statement appears inside a loop within a loop. This is
+ perfectly reasonable code, but check that the continue is intended to
+ continue only the inner loop. The continue statement may be preceded by
+ /*@innercontinue@*/ to suppress the message for this continue only.
+
+loopswitchbreak
+ break in switch inside loop
+ Category: controlflow
+ Mode Settings: ---+
+ Set locally
+ A break statement appears inside a switch statement within a while or for
+ loop. This is perfectly reasonable code, but check that the break is
+ intended to break only the inner loop. The break statement may be
+ preceded by /*@switchbreak@*/ to suppress the message for this break
+ only.
+
+macroassign
+ assignment to a macro parameter
+ Categories: macros, parameters
+ Mode Settings: -+++
+ Set locally
+ A macro parameter is used as the left side of an assignment expression.
+ This exhibits behavior that could not be implemented by a function.
+
+macroconstdecl
+ non-parameterized macro without prototype or specification
+ Categories: macros, prototypes
+ Mode Settings: -+++
+ Set locally
+ Macro constant has no declaration. Use /*@constant ...@*/ to declare the
+ macro.
+
+macrodecl
+ macro without prototype or specification (sets macrofcndecl and
+ macroconstdecl)
+ Categories: macros, prototypes
+ Mode Settings: ----
+ Set locally
+ Argument checking cannot be done well for macros without prototypes or
+ specifications, since the types of the arguments are unknown.
+
+macroempty
+ macro definition for is empty
+ Category: macros
+ Mode Settings: ---+
+ Set locally
+ A macro definition has no body.
+
+macrofcndecl
+ parameterized macro without prototype or specification
+ Categories: macros, prototypes
+ Mode Settings: -+++
+ Set locally
+ Function macro has no declaration.
+
+macromatchname
+ macro definition does not match iter or constant declaration
+ Category: macros
+ Mode Settings: ++++
+ Set locally
+ A iter or constant macro is defined using a different name from the one
+ used in the previous syntactic comment
+
+macroparams
+ macro parameter not used exactly once
+ Categories: macros, parameters
+ Mode Settings: -+++
+ Set locally
+ A macro parameter is not used exactly once in all possible invocations of
+ the macro. To behave like a function, each macro parameter must be used
+ exactly once on all invocations of the macro so that parameters with
+ side-effects are evaluated exactly once. Use /*@sef@*/ to denote
+ parameters that must be side-effect free.
+
+macroparens
+ macro parameter used without parentheses (in potentially dangerous context)
+ Category: macros
+ Mode Settings: -+++
+ Set locally
+ A macro parameter is used without parentheses. This could be dangerous if
+ the macro is invoked with a complex expression and precedence rules will
+ change the evaluation inside the macro.
+
+macroredef
+ macro redefined
+ Category: macros
+ Mode Settings: -+++
+ Set locally
+ A macro is defined in more than one place.
+
+macroreturn: <invalid flag>
+
+macrostmt
+ macro definition is syntactically not equivalent to function
+ Category: macros
+ Mode Settings: -+++
+ Set locally
+ A macro is defined in a way that may cause syntactic problems. If the
+ macro returns a value, use commas to separate expressions;
+ otherwise, use do { <macro body> } while (FALSE) construct.
+
+macrounrecog
+ unrecognized identifier in macro
+ Categories: macros, unrecognized
+ Mode Settings: -+++
+ Set locally
+ An unrecognized identifier appears in a macro. If the identifier is
+ defined before the macro is used, then this is okay.
+
+macrovarprefix
+ set namespace prefix for variables declared in a macro body
+ Categories: names, prefixes
+ Default Setting: +
+ Set locally
+ String argument. Default: m_
+ A variable declared in a macro body does not start with the
+ macrovarprefix.
+
+macrovarprefixexclude
+ the macrovarprefix may not be used for non-macro variables
+ Categories: names, prefixes
+ Default Setting: +
+ Set locally
+ A variable declared outside a macro body starts with the macrovarprefix.
+
+maintype
+ type of main does not match expected type
+ Categories: systemfunctions,
+ Default Setting: +
+ Set locally
+ The function main does not match the expected type.
+
+matchanyintegral
+ allow any intergral type to match an arbitrary integral type (e.g., dev_t)
+ Categories: typeequivalence, numbers
+ Mode Settings: ----
+ Set locally
+ To allow arbitrary integral types to match any integral type, use
+ +matchanyintegral.
+
+matchfields
+ struct or enum type redefined with inconsistent fields or members
+ Categories: declarations,
+ Mode Settings: -+++
+ Set locally
+ A struct, union or enum type is redefined with inconsistent fields or
+ members.
+
+mayaliasunique
+ unique parameter may be aliased
+ Categories: aliasing, memory
+ Mode Settings: -+++
+ Set locally
+ A unique or only parameter may be aliased by some other parameter or
+ visible global.
+
+memchecks
+ sets all dynamic memory checking flags (memimplicit, mustfree, mustdefine,
+ mustnotalias, null, memtrans)
+ Category: memory
+ Default Setting: -
+ Set locally
+
+memimp
+ memory errors for unqualified storage
+ Categories: memory, implicit
+ Mode Settings: -+++
+ Set locally
+
+memtrans
+ memory transfer errors (sets all *trans flags)
+ Category: memory
+ Default Setting: -
+ Set locally
+ Memory is transferred in a way that violates annotations.
+
+misplacedsharequal
+ declaration of unsharable storage uses sharing annotation
+ Categories: declarations,
+ Mode Settings: -+++
+ Set locally
+ A declaration of an unsharable object uses a sharing annotation.
+
+misscase
+ switch on enum type missing case for some value
+ Category: controlflow
+ Mode Settings: -+++
+ Set locally
+ Not all values in an enumeration are present as cases in the switch.
+
+modfilesys
+ report undocumented file system modifications (applies to unspecified
+ functions if modnomods is set)
+ Categories: modification, unconstrained
+ Mode Settings: ---+
+ Set locally
+
+modglobs
+ undocumented modification of a checked global variable
+ Categories: globals, modification
+ Mode Settings: -+++
+ Set locally
+ A checked global variable is modified by the function, but not listed in
+ its modifies clause.
+
+modglobsnomods
+ undocumented modification of a checked global variable in a function
+ declared with no modifies clause
+ Categories: globals, modification
+ Mode Settings: ---+
+ Set locally
+ A checked global variable is modified by the function, but not listed in
+ its modifies clause.
+
+modglobsunchecked
+ undocumented modification of an unchecked checked global variable
+ Categories: globals, modification
+ Mode Settings: ---+
+ Set locally
+ An unchecked global variable is modified by the function, but not listed
+ in its modifies clause.
+
+modinternalstrict
+ possible modification of internal storage through function call
+ Categories: modification, memory
+ Mode Settings: ---+
+ Set locally
+ A function that modifies internalState is called from a function that
+ does not list internalState in its modifies clause
+
+modnomods
+ modification in a function with no modifies clause
+ Categories: modification, unconstrained
+ Mode Settings: ---+
+ Set locally
+ An externally-visible object is modified by a function with no
+ /*@modifies@*/ comment. The /*@modifies ... @*/ control comment can be
+ used to give a modifies list for an unspecified function.
+
+modobserver
+ possible modification of observer storage
+ Categories: modification, memory
+ Default Setting: +
+ Set locally
+ Storage declared with observer is possibly modified. Observer storage may
+ not be modified.
+
+modobserveruncon
+ possible modification of observer storage through unconstrained call
+ Categories: modification, memory
+ Mode Settings: ---+
+ Set locally
+ Storage declared with observer may be modified through a call to an
+ unconstrained function.
+
+mods
+ unspecified modification of caller-visible state
+ Categories: modification, specifications
+ Default Setting: +
+ Set locally
+ An externally-visible object is modified by a function, but not listed in
+ its modifies clause.
+
+modsimpnoglobs
+ functions declared with a modifies clause but no globals list are assumed to
+ use no globals
+ Categories: modification, globals
+ Mode Settings: ----
+ Set locally
+ An implicit empty globals list is assumed for a function declared with a
+ modifies clause but no globals list.
+
+modstrictglobsnomods
+ undocumented modification of a strict checked global variable in a function
+ declared with no modifies clause
+ Categories: globals, modification
+ Mode Settings: ---+
+ Set locally
+ A checked global variable is modified by the function, but not listed in
+ its modifies clause.
+
+moduncon
+ possible modification through a call to an unconstrained function
+ Categories: modification, unconstrained
+ Mode Settings: ---+
+ Set locally
+ An unconstrained function is called in a function body where
+ modifications are checked. Since the unconstrained function may modify
+ anything, there may be undetected modifications in the checked function.
+
+modunconnomods
+ possible modification through a call to an unconstrained function in a
+ function with no modifies clause
+ Categories: modification, unconstrained
+ Mode Settings: ---+
+ Set locally
+ An unconstrained function is called in a function body where
+ modifications are checked. Since the unconstrained function may modify
+ anything, there may be undetected modifications in the checked function.
+
+modunspec
+ modification in unspecified functions (sets modnomods, modglobunspec and
+ modstrictglobsunspec)
+ Categories: modification, unconstrained
+ Default Setting: -
+ Set locally
+
+mts
+ load meta state declaration and corresponding xh file
+ Categories: extensible, files
+ Default Setting: -
+ Set globally only
+ Filename argument. No default.
+
+multithreaded
+ function is not reentrant
+ Categories: warnuse, security
+ Mode Settings: --++
+ Set locally
+ Non-reentrant function should not be used in multithreaded code.
+
+mustdefine
+ out storage not defined before return or scope exit
+ Categories: memory, definition
+ Mode Settings: -+++
+ Set locally
+ An out parameter or global is not defined before control is transferred.
+
+mustfree
+ fresh or only storage not released before return or scope exit (sets
+ mustfreefresh and mustfreeonly)
+ Categories: memory, leaks
+ Default Setting: -
+ Set locally
+ A memory leak has been detected.
+
+mustfreefresh
+ freshly allocated storage not released before return or scope exit
+ Categories: memory, leaks
+ Mode Settings: -+++
+ Set locally
+ A memory leak has been detected. Storage allocated locally is not
+ released before the last reference to it is lost.
+
+mustfreeonly
+ only storage not released before return or scope exit
+ Categories: memory, leaks
+ Mode Settings: -+++
+ Set locally
+ A memory leak has been detected. Only-qualified storage is not released
+ before the last reference to it is lost.
+
+mustmod
+ specified modification is not detected
+ Categories: modification, specifications
+ Mode Settings: --++
+ Set locally
+ An object listed in the modifies clause is not modified by the
+ implementation of the function. The modification may not be detected if
+ it is done through a call to an unspecified function.
+
+mustnotalias
+ temp storage aliased at return point or scope exit
+ Categories: aliasing, memory
+ Mode Settings: -+++
+ Set locally
+ An alias has been added to a temp-qualifier parameter or global that is
+ visible externally when the function returns. If the aliasing is needed,
+ use the /*@shared@*/ annotation to indicate that new aliases to the
+ parameter may be created.
+
+mutrep
+ representation of mutable type has sharing semantics
+ Category: abstract
+ Mode Settings: -+++
+ Set locally
+ LCL semantics requires that a mutable type exhibits sharing semantics. In
+ order for objects to be shared a indirection is necessary in the
+ representation. A mutable type may be represented by a pointer or an
+ abstract mutable type. Handles into static data are fine, too, but will
+ generate this error message unless it is suppressed.
+
+namechecks
+ controls name checking without changing other settings
+ Categories: names, abstract
+ Default Setting: +
+ Set locally
+
+needspec
+ information in specifications is not also included in syntactic comments
+ Categories: initializations, specifications
+ Default Setting: -
+ Set locally
+ There is information in the specification that is not duplicated in
+ syntactic comments. Normally, this is not an error, but it may be useful
+ to detect it to make sure checking incomplete systems without the
+ specifications will still use this information.
+
+nestcomment
+ comment begins inside comment
+ Categories: comments,
+ Default Setting: +
+ Set locally
+ A comment open sequence (/*) appears within a comment. This usually
+ means an earlier comment was not closed.
+
+nestedextern
+ an extern declaration is inside a function scope
+ Category: declarations
+ Mode Settings: -+++
+ Set locally
+ An extern declaration is used inside a function scope.
+
+neverinclude
+ optimize header inclusion to not include any header files
+ Categories: headers, performance
+ Default Setting: -
+ Set globally only
+ Ignore header includes. Only works if relevant information is loaded from
+ a library.
+
+newdecl
+ report new global declarations in source files
+ Categories: declarations, libraries
+ Default Setting: -
+ Set locally
+ There is a new declaration that is not declared in a loaded library or
+ earlier file. (Use this flag to check for consistency against a
+ library.)
+
+newreftrans
+ new reference transfer to reference counted reference
+ Category: memory
+ Mode Settings: -+++
+ Set locally
+ A new reference is transferred to a reference counted reference.
+
+nextlinemacros
+ the line after a constant or iter declaration must be a macro definition
+ Category: macros
+ Default Setting: +
+ Set locally
+ A constant or iter declaration is not immediately followed by a macro
+ definition.
+
+noaccess
+ ignore access comments
+ Categories: syncomments, abstract
+ Default Setting: -
+ Set locally
+
+nocomments
+ ignore all stylized comments
+ Categories: syncomments, suppress
+ Default Setting: -
+ Set locally
+
+noeffect
+ statement with no effect
+ Categories: effect, controlflow
+ Mode Settings: -+++
+ Set locally
+ Statement has no visible effect --- no values are modified.
+
+noeffectuncon
+ statement with no effect (except possibly through call to unconstrained
+ function)
+ Categories: effect, controlflow
+ Mode Settings: ---+
+ Set locally
+ Statement has no visible effect --- no values are modified. It may modify
+ something through a call to an unconstrained function.
+
+nof
+ do not read options file
+ Categories: initializations, files
+ Default Setting: -
+ Set globally only
+ Do not read the default options file (~/.splintrc)
+
+nolib
+ do not load standard library
+ Categories: libraries, initializations
+ Default Setting: -
+ Set globally only
+
+noparams
+ function declaration has no parameter list
+ Categories: prototypes, ansi
+ Mode Settings: --++
+ Set locally
+ A function declaration does not have a parameter list.
+
+nopp
+ do not pre-process input files
+ Category: debug
+ Default Setting: -
+ Set locally
+
+noret
+ path with no return detected in non-void function
+ Category: controlflow
+ Mode Settings: -+++
+ Set locally
+ There is a path through a function declared to return a value on which
+ there is no return statement. This means the execution may fall through
+ without returning a meaningful result to the caller.
+
+null
+ misuses of null pointer
+ Categories: null, memory
+ Default Setting: -
+ Set locally
+ A possibly null pointer is misused (sets nullderef, nullpass, nullref,
+ nullassign, and nullstate).
+
+nullassign
+ inconsistent assignment or initialization involving null pointer
+ Categories: null, memory
+ Mode Settings: -+++
+ Set locally
+ A reference with no null annotation is assigned or initialized to NULL.
+ Use /*@null@*/ to declare the reference as a possibly null pointer.
+
+nullderef
+ possible dereferencce of null pointer
+ Categories: null, memory
+ Mode Settings: -+++
+ Set locally
+ A possibly null pointer is dereferenced. Value is either the result of a
+ function which may return null (in which case, code should check it is
+ not null), or a global, parameter or structure field declared with the
+ null qualifier.
+
+nullpass
+ possibly null pointer passed as formal with no null annotation
+ Categories: null, memory
+ Mode Settings: -+++
+ Set locally
+ A possibly null pointer is passed as a parameter corresponding to a
+ formal parameter with no /*@null@*/ annotation. If NULL may be used for
+ this parameter, add a /*@null@*/ annotation to the function parameter
+ declaration.
+
+nullptrarith
+ arithmetic involving possibly null pointer and integer
+ Categories: operations, pointers
+ Mode Settings: --++
+ Set locally
+ Pointer arithmetic using a possibly null pointer and integer.
+
+nullret
+ possibly null pointer returned as result with no null annotation
+ Categories: null, memory
+ Mode Settings: -+++
+ Set locally
+ Function returns a possibly null pointer, but is not declared using
+ /*@null@*/ annotation of result. If function may return NULL, add
+ /*@null@*/ annotation to the return value declaration.
+
+nullstate
+ possibly null pointer reachable from a reference with no null annotation
+ Categories: null, memory
+ Mode Settings: -+++
+ Set locally
+ A possibly null pointer is reachable from a parameter or global variable
+ that is not declared using a /*@null@*/ annotation.
+
+nullterminated
+ misuse of nullterminated allocation
+ Categories: memorybounds, memory
+ Mode Settings: ----
+ Set locally
+ A possibly non-nullterminated string/memory is used/referenced as a
+ nullterminated one.
+
+nullterminated
+ misuse of nullterminated allocation
+ Categories: memorybounds, memory
+ Mode Settings: ----
+ Set locally
+ A possibly non-nullterminated string/memory is used/referenced as a
+ nullterminated one.
+
+numenummembers
+ set maximum number of members of an enum (ANSI89 minimum is 127;
+ ISO99 is 1023)
+ Categories: limits, ansi
+ Mode Settings: ---+
+ Set locally
+ Numeric Argument. Default: 1023
+ Limit on maximum number of members of an enum is exceeded.
+
+numliteral
+ int literals can be reals
+ Categories: typeequivalence, numbers
+ Mode Settings: ++--
+ Set locally
+ An int literal is used as any numeric type (including float and long
+ long). Use +numliteral to allow int literals to be used as any numeric
+ type.
+
+numstructfields
+ set maximum number of fields in a struct or union (ANSI89 minimum is 127;
+ ISO99 is 1023)
+ Categories: limits, ansi
+ Mode Settings: ---+
+ Set locally
+ Numeric Argument. Default: 1023
+ Maximum number of fields in a struct or union exceeded.
+
+observertrans
+ observer transfer errors
+ Category: memory
+ Mode Settings: -+++
+ Set locally
+ Observer storage is transferred to a non-observer reference.
+
+obviousloopexec
+ assume loop that can be determined to always execute always does
+ Categories: controlflow, memory
+ Default Setting: +
+ Set locally
+
+oldstyle
+ old style function definition
+ Categories: prototypes, ansi
+ Mode Settings: ---+
+ Set locally
+ Function definition is in old style syntax. Standard prototype syntax is
+ preferred.
+
+onlytrans
+ only storage transferred to non-only reference (memory leak)
+ Category: memory
+ Mode Settings: -+++
+ Set locally
+ The only reference to this storage is transferred to another reference
+ (e.g., by returning it) that does not have the only annotation. This may
+ lead to a memory leak, since the new reference is not necessarily
+ released.
+
+onlyunqglobaltrans
+ only storage transferred to an unqualified global or static reference
+ (memory leak)
+ Category: memory
+ Mode Settings: --++
+ Set locally
+ The only reference to this storage is transferred to another reference
+ that does not have an aliasing annotation. This may lead to a memory
+ leak, since the new reference is not necessarily released.
+
+orconstraint
+ use limited OR expressions to resolve constraints
+ Categories: memorybounds, memory
+ Mode Settings: ----
+ Set locally
+
+overload
+ library function overloaded
+ Categories: declarations, libraries
+ Mode Settings: ----
+ Set locally
+ A function, variable or constant defined in the library is redefined with
+ a different type.
+
+ownedtrans
+ owned storage transferred to non-owned reference (memory leak)
+ Category: memory
+ Mode Settings: -+++
+ Set locally
+ The owned reference to this storage is transferred to another reference
+ (e.g., by returning it) that does not have the owned annotation. This may
+ lead to a memory leak, since the new reference is not necessarily
+ released.
+
+paramimptemp
+ assume unannotated parameter is temp
+ Categories: memory, implicit
+ Default Setting: +
+ Set locally
+
+paramuse
+ function parameter not used
+ Categories: alluse, parameters
+ Mode Settings: -+++
+ Set locally
+ A function parameter is not used in the body of the function. If the
+ argument is needed for type compatibility or future plans, use
+ /*@unused@*/ in the argument declaration.
+
+parenfileformat
+ show column number where error is found
+ Categories: format, display
+ Default Setting: -
+ Set locally
+
+partial
+ check as partial system (-specundef, -declundef, -exportlocal, don't check
+ macros in headers without corresponding .c files)
+ Categories: <No Category>, alluse
+ Default Setting: -
+ Set locally
+
+passunknown
+ passing a value as an un-annotated parameter clears its annotation
+ Categories: memory, parameters
+ Mode Settings: ----
+ Set locally
+
+portability
+ function may have undefined behavior
+ Categories: warnuse, security
+ Mode Settings: --++
+ Set locally
+ Use of function that may have implementation-dependent behavior.
+
+posixlib
+ use POSIX standard library
+ Categories: libraries, initializations
+ Default Setting: -
+ Set globally only
+ POSIX version of the standard library is used.
+
+posixstrictlib
+ use strict POSIX standard library
+ Categories: libraries, initializations
+ Default Setting: -
+ Set globally only
+ POSIX version of the strict standard library is used.
+
+predassign
+ condition test (if, while or for) is an assignment
+ Categories: booleans, predicates
+ Default Setting: +
+ Set locally
+ The condition test is an assignment expression. Probably, you mean to use
+ == instead of =. If an assignment is intended, add an extra parentheses
+ nesting (e.g., if ((a = b)) ...) to suppress this message.
+
+predbool
+ type of condition test (if, while or for) not bool (sets predboolint,
+ predboolptr and predboolothers)
+ Categories: booleans, predicates
+ Default Setting: -
+ Set locally
+ Test expression type is not boolean.
+
+predboolint
+ type of condition test (if, while or for) is an integral type
+ Categories: predicates, booleans
+ Mode Settings: -+++
+ Set locally
+ Test expression type is not boolean or int.
+
+predboolothers
+ type of condition test (if, while or for) not bool, int or pointer
+ Categories: booleans, predicates
+ Mode Settings: ++++
+ Set locally
+ Test expression type is not boolean.
+
+predboolptr
+ type of condition test (if, while or for) is a pointer
+ Categories: booleans, predicates
+ Mode Settings: --++
+ Set locally
+ Test expression type is not boolean.
+
+preproc
+ preprocessing error
+ Categories: , preproc
+ Default Setting: +
+ Set locally
+
+protoparammatch
+ the name of a parameter in a function prototype and corresponding
+ declaration must match (after removing the protoparamprefix
+ Categories: names, prefixes
+ Mode Settings: --++
+ Set locally
+ A parameter in a function definition does not have the same name as the
+ corresponding in the declaration of the function after removing the
+ protoparamprefix
+
+protoparamname
+ a parameter in a function prototype has a name
+ Categories: names, prefixes
+ Mode Settings: ---+
+ Set locally
+ A parameter in a function prototype has a name. This is dangerous, since
+ a macro definition could be visible here.
+
+protoparamprefix
+ set namespace prefix for parameters in function prototype declarations
+ Categories: names, prefixes
+ Default Setting: -
+ Set locally
+ String argument. No default.
+ A parameter name in a function prototype declaration does not start with
+ the declaration parameter prefix
+
+protoparamprefixexclude
+ the protoparamprefix may not be used for non-declaraction parameter
+ identifiers
+ Categories: names, prefixes
+ Default Setting: -
+ Set locally
+ An identifier that is not a parameter name in a function prototype starts
+ with the protoparamprefix.
+
+ptrarith
+ arithmetic involving pointer and integer
+ Categories: operations, pointers
+ Mode Settings: ---+
+ Set locally
+ Pointer arithmetic using pointer and integer.
+
+ptrcompare
+ comparison between pointer and number
+ Categories: operations, pointers
+ Mode Settings: -+++
+ Set locally
+ A pointer is compared to a number.
+
+ptrnegate
+ allow ! to be used on pointer operand
+ Categories: booleans, pointers
+ Mode Settings: ++--
+ Set locally
+ The operand of ! operator is a pointer.
+
+quiet
+ suppress herald and error count
+ Categories: display, errors
+ Default Setting: -
+ Set locally
+
+readonlystrings
+ string literals are read-only (error if one is modified or released)
+ Category: memory
+ Mode Settings: -+++
+ Set locally
+ String literals are read-only. An error is reported if a string literal
+ may be modified or released.
+
+readonlytrans
+ report memory transfer errors for initializations to read-only string
+ literals
+ Category: memory
+ Mode Settings: --++
+ Set locally
+ A read-only string literal is assigned to a non-observer reference.
+
+realcompare
+ dangerous comparison between reals (dangerous because of inexact floating
+ point representations)
+ Category: operations
+ Mode Settings: -+++
+ Set locally
+ Two real (float, double, or long double) values are compared directly
+ using a C primitive. This may produce unexpected results since floating
+ point representations are inexact. Instead, compare the difference to
+ FLT_EPSILON or DBL_EPSILON.
+
+redecl
+ function or variable redeclared
+ Category: declarations
+ Mode Settings: --++
+ Set locally
+ A function or variable is declared in more than one place. This is not
+ necessarily a problem, since the declarations are consistent.
+
+redef
+ function or variable redefined
+ Category: declarations
+ Default Setting: +
+ Set locally
+ A function or variable is redefined. One of the declarations should use
+ extern.
+
+redundantconstraints
+ display seemingly redundant constraints
+ Categories: memorybounds, display
+ Mode Settings: ----
+ Set locally
+ Display seemingly redundant constraints
+
+redundantsharequal
+ declaration uses observer qualifier that is always true
+ Categories: declarations,
+ Mode Settings: --++
+ Set locally
+ A declaration of an immutable object uses a redundant observer qualifier.
+
+refcounttrans
+ reference counted storage is transferred in an inconsistent way
+ Category: memory
+ Mode Settings: -+++
+ Set locally
+ Reference counted storage is transferred in a way that may not be
+ consistent with the reference count.
+
+relaxquals
+ report qualifier mismatches only if dangerous
+ Categories: typeequivalence, numbers
+ Mode Settings: ++--
+ Set locally
+ To allow qualifier mismatches that are not dangerous, use +relaxquals.
+
+relaxtypes
+ allow all numeric types to match
+ Categories: typeequivalence, numbers
+ Mode Settings: ----
+ Set locally
+ To allow all numeric types to match, use +relaxtypes.
+
+repeatunrecog
+ do not suppress repeated unrecognized identifier messages (instead of only
+ reporting the first error)
+ Categories: unrecognized, display
+ Default Setting: -
+ Set locally
+ Identifier used in code has not been declared. (Message repeated for
+ future uses in this file.)
+
+repexpose
+ abstract representation is exposed (sets assignexpose, retexpose, and
+ castexpose)
+ Categories: exposure, abstract
+ Default Setting: -
+ Set locally
+ The internal representation of an abstract type is visible to the caller.
+ This means clients may have access to a pointer into the abstract
+ representation.
+
+retalias
+ function returns alias to parameter or global
+ Category: aliasing
+ Mode Settings: --++
+ Set locally
+ The returned value shares storage with a parameter or global. If a
+ parameter is to be returned, use the returned qualifier. If the result is
+ not modified, use the observer qualifier on the result type. Otherwise,
+ exposed can be used, but limited checking is done.
+
+retexpose
+ abstract representation is exposed (return values only)
+ Categories: exposure, abstract
+ Mode Settings: --++
+ Set locally
+ The return value shares storage with an instance of an abstract type.
+ This means clients may have access to a pointer into the abstract
+ representation. Use the observer qualifier to return exposed storage that
+ may not be modified by the client. Use the exposed qualifier to return
+ modifiable (but not deallocatable) exposed storage (dangerous).
+
+retimponly
+ assume unannotated returned storage is only
+ Categories: memory, implicit
+ Default Setting: +
+ Set locally
+
+retval
+ return value ignored (sets retvalint, retvalbool and retvalother)
+ Category: returnvals
+ Default Setting: -
+ Set locally
+ Result returned by function call is not used. If this is intended, cast
+ result to (void) to eliminate message.
+
+retvalbool
+ return value of manifest type bool ignored
+ Categories: returnvals, booleans
+ Mode Settings: -+++
+ Set locally
+ Result returned by function call is not used. If this is intended, can
+ cast result to (void) to eliminate message.
+
+retvalint
+ return value of type int ignored
+ Category: returnvals
+ Mode Settings: -+++
+ Set locally
+ Result returned by function call is not used. If this is intended, can
+ cast result to (void) to eliminate message.
+
+retvalother
+ return value of type other than bool or int ignored
+ Categories: returnvals, booleans
+ Mode Settings: ++++
+ Set locally
+ Result returned by function call is not used. If this is intended, can
+ cast result to (void) to eliminate message.
+
+sefparams
+ a parameter with side-effects is passed as a sef parameter
+ Categories: macros, parameters
+ Mode Settings: -+++
+ Set locally
+ An actual parameter corresponding to a sef parameter may have a
+ side-effect.
+
+sefuncon
+ a parameter with unconstrained side-effects is passed as a sef parameter
+ Categories: macros, parameters
+ Mode Settings: --++
+ Set locally
+ An actual parameter corresponding to a sef parameter involves a call to a
+ procedure with no modifies clause that may have a side-effect.
+
+shadow
+ declaration reuses name visible in outer scope
+ Category: declarations
+ Mode Settings: -+++
+ Set locally
+ An outer declaration is shadowed by the local declaration.
+
+sharedtrans
+ shared storage transferred to non-shared reference
+ Category: memory
+ Mode Settings: -+++
+ Set locally
+ Shared storage is transferred to a non-shared reference. The other
+ reference may release storage needed by this reference.
+
+shiftimplementation
+ a shift left operand may be negative
+ Categories: operations,
+ Mode Settings: -+++
+ Set locally
+ The left operand to a shift operator may be negative (behavior is
+ implementation-defined).
+
+shiftnegative
+ a shift right operand may be negative
+ Categories: operations,
+ Mode Settings: -+++
+ Set locally
+ The right operand to a shift operator may be negative (behavior
+ undefined).
+
+showallconjs
+ show all possible types
+ Category: format
+ Default Setting: -
+ Set locally
+ When a library function is declared with multiple possible type, the
+ alternate types are shown only if +showallconjs.
+
+showalluses
+ show sorted list of uses of all globals
+ Categories: display, alluse
+ Default Setting: -
+ Set globally only
+
+showcolumn
+ show column number where error is found
+ Categories: format, display
+ Default Setting: +
+ Set locally
+
+showconstraintlocation
+ display location for every constraint generated
+ Categories: memorybounds, display
+ Mode Settings: ----
+ Set locally
+
+showconstraintparens
+ display parentheses around constraint terms
+ Categories: memorybounds, display
+ Mode Settings: ----
+ Set locally
+
+showfunc
+ show name of function containing error
+ Category: format
+ Default Setting: +
+ Set locally
+
+showscan
+ show file names are they are processed
+ Categories: display, files
+ Default Setting: -
+ Set locally
+
+showsourceloc
+ display the source code location where a warning is produced
+ Category: debug
+ Default Setting: -
+ Set locally
+
+showsummary
+ show summary of all errors reported and suppressed
+ Categories: display, errors
+ Default Setting: -
+ Set locally
+
+singleinclude
+ optimize header inclusion to eliminate redundant includes
+ Categories: headers, performance
+ Default Setting: -
+ Set globally only
+ When checking multiple files, each header file is processed only once.
+ This may change the meaning of the code, if the same header file is
+ included in different contexts (e.g., the header file includes #if
+ directives and the values are different when it is included in different
+ places.)
+
+sizeofformalarray
+ sizeof operator has an array formal parameter argument
+ Categories: operations,
+ Default Setting: +
+ Set locally
+ Operand of a sizeof operator is a function parameter declared as an
+ array. The value of sizeof will be the size of a pointer to the element
+ type, not the number of elements in the array.
+
+sizeoftype
+ sizeof operator has a type argument
+ Categories: operations,
+ Mode Settings: ---+
+ Set locally
+ Operand of sizeof operator is a type. (Safer to use expression, int *x =
+ sizeof (*x); instead of sizeof (int).)
+
+skipansiheaders
+ prevent inclusion of header files in a system directory with names that
+ match standard ANSI headers. The symbolic information in the standard
+ library is used instead. Flag in effect only if a library including the
+ ANSI library is loaded. The ANSI headers are:
+ assert, ctype, errno, float, limits, locale, math, setjmp, signal, stdarg,
+ stddef, stdio, stdlib, strings, string, time, and wchar.
+ Categories: directories, files
+ Default Setting: +
+ Set locally
+
+skipposixheaders
+ prevent inclusion of header files in a system directory with names that
+ match standard POSIX headers. The symbolic information in the posix library
+ is used instead. The POSIX headers are:
+ dirent, fcntl, grp, pwd, termios, sys/stat, sys/times, sys/types,
+ sys/utsname, sys/wait, unistd, and utime.
+ Categories: directories, files
+ Default Setting: +
+ Set locally
+
+skipsysheaders
+ do not include header files in system directories (set by -sysdirs)
+ Categories: headers, performance
+ Default Setting: -
+ Set globally only
+ Do not include header files in system directories (set by -sysdirs)
+
+slashslashcomment
+ use of // comment
+ Categories: comments,
+ Default Setting: -
+ Set locally
+ A // comment is used. ISO C99 allows // comments, but earlier standards
+ did not.
+
+slovak
+ slovak naming convention violated
+ Categories: names, abstract
+ Default Setting: -
+ Set locally
+ Name is not consistent with Slovak naming convention.
+
+slovakconsts
+ slovak naming convention violated in a constant declaration
+ Categories: names, abstract
+ Default Setting: -
+ Set locally
+ Constant name is not consistent with Slovak naming convention.
+
+slovakfcns
+ slovak naming convention violated in a function or iterator declaration
+ Categories: names, abstract
+ Default Setting: -
+ Set locally
+ Function or iterator name is not consistent with Slovak naming
+ convention.
+
+slovakmacros
+ slovak naming convention violated in an expanded macro name
+ Categories: names, abstract
+ Default Setting: -
+ Set locally
+ Expanded macro name is not consistent with Slovak naming convention.
+
+slovaktypes
+ slovak naming convention violated in a use-defined type definition
+ Categories: names, abstract
+ Default Setting: -
+ Set locally
+ Type name is not consistent with Slovak naming convention. Slovak type
+ names may not include uppercase letters.
+
+slovakvars
+ slovak naming convention violated in a variable declaration
+ Categories: names, abstract
+ Default Setting: -
+ Set locally
+ Variable name is not consistent with Slovak naming convention.
+
+specglobimponly
+ assume unannotated global storage is only
+ Categories: memory, implicit
+ Default Setting: -
+ Set locally
+
+specimponly
+ sets specglobimponly, specretimponly and specstructimponly
+ Categories: memory, implicit
+ Default Setting: -
+ Set locally
+
+specmacros
+ check all macros corresponding to specified functions or constants
+ Category: macros
+ Default Setting: +
+ Set locally
+ Every macro declared a specification file is checked.
+
+specretimponly
+ assume unannotated returned storage is only
+ Categories: memory, implicit
+ Default Setting: -
+ Set locally
+
+specstructimponly
+ assume unannotated structure field is only
+ Categories: memory, implicit
+ Default Setting: -
+ Set locally
+
+specundecl
+ function or variable specified but never declared in a source file
+ Categories: complete, specifications
+ Default Setting: -
+ Set locally
+ A function or variable is declared in an .lcl file, but not declared in
+ any source code file.
+
+specundef
+ function or variable specified but never defined
+ Categories: complete, specifications
+ Mode Settings: -+++
+ Set locally
+ A function or variable is declared in an .lcl file, but not defined in
+ any source code file.
+
+stackref
+ external reference to stack-allocated storage is created
+ Categories: memory, released
+ Mode Settings: ++++
+ Set locally
+ A stack reference is pointed to by an external reference when the
+ function returns. The stack-allocated storage is destroyed after the
+ call, leaving a dangling reference.
+
+statemerge
+ control paths merge with storage in incompatible states
+ Categories: extensible, memory
+ Mode Settings: ++++
+ Set locally
+ Control path merge violates user-defined state merge rules.
+
+statetransfer
+ storage has been transfered with invalid state
+ Categories: extensible, memory
+ Mode Settings: ++++
+ Set locally
+ Transfer violates user-defined state rules.
+
+staticinittrans
+ static storage is used as an initial value in an inconsistent way
+ Category: memory
+ Mode Settings: --++
+ Set locally
+ Static storage is used as an initial value in an inconsistent way.
+
+statictrans
+ static storage is transferred in an inconsistent way
+ Category: memory
+ Mode Settings: -+++
+ Set locally
+ Static storage is transferred in an inconsistent way.
+
+stats
+ display lines processed and time
+ Category: display
+ Default Setting: -
+ Set globally only
+
+strictbranchstate
+ storage through array fetch has inconsistent states of alternate paths
+ through a branch
+ Category: memory
+ Mode Settings: ---+
+ Set locally
+ The state of a variable through an array fetch is different depending on
+ which branch is taken. This means no annotation can sensibly be applied
+ to the storage.
+
+strictdestroy
+ report complete destruction errors for array elements that may have been
+ released
+ Categories: memory, leaks
+ Mode Settings: ---+
+ Set locally
+
+strictlib
+ interpret standard library strictly
+ Categories: libraries, initializations
+ Default Setting: -
+ Set globally only
+ Stricter version of the standard library is used. (The default library is
+ standard.lcd; strict library is strict.lcd.)
+
+strictops
+ primitive operation does not type check strictly
+ Categories: operations,
+ Mode Settings: ---+
+ Set locally
+ A primitive operation does not type check strictly.
+
+strictusereleased
+ element used after it may have been released
+ Categories: memory, released
+ Mode Settings: ---+
+ Set locally
+ Memory (through fetch) is used after it may have been released (either by
+ passing as an only param or assigning to an only global).
+
+stringliterallen
+ set maximum length of string literals (ANSI89 minimum is 509; ISO99 is 4095)
+ Categories: limits, ansi
+ Mode Settings: ---+
+ Set locally
+ Numeric Argument. Default: 4095
+ Maximum length of string literal exceeded.
+
+stringliteralnoroom
+ string literal leaves no room for null terminator
+ Mode Settings: -+++
+ Set locally
+ A string literal is assigned to a char array that is not big enough to
+ hold the null terminator.
+
+stringliteralsmaller
+ string literal is smaller than the char array it is assigned to
+ Mode Settings: --++
+ Set locally
+ A string literal is assigned to a char array that smaller than the string
+ literal needs.
+
+stringliteraltoolong
+ string literal too long for character array
+ Default Setting: +
+ Set locally
+ A string literal is assigned to a char array too small to hold it.
+
+structimponly
+ assume unannotated structure field is only
+ Categories: memory, implicit
+ Default Setting: +
+ Set locally
+
+supcounts
+ The number of errors detected does not match number in /*@i<n>@*/.
+ Categories: suppress, comments
+ Default Setting: +
+ Set globally only
+
+superuser
+ function is restricted to superusers
+ Categories: warnuse, security
+ Mode Settings: --++
+ Set locally
+ Call to function restricted to superusers.
+
+switchloopbreak
+ break in loop inside switch
+ Category: controlflow
+ Mode Settings: --++
+ Set locally
+ A break statement appears inside the body of a while or for statement
+ within a switch. This is perfectly reasonable code, but check that the
+ break is intended to break only the inner loop. The break statement may
+ be preceded by /*@loopbreak@*/ to suppress the message for this break
+ only.
+
+switchswitchbreak
+ break in switch inside switch
+ Category: controlflow
+ Mode Settings: ---+
+ Set locally
+ A break statement appears inside a switch statement within another switch
+ statement. This is perfectly reasonable code, but check that the break is
+ intended to break only the inner switch. The break statement may be
+ preceded by /*@innerbreak@*/ to suppress the message for this break only.
+
+syntax
+ syntax error in parsing
+ Default Setting: +
+ Set locally
+ Code cannot be parsed. For help on parse errors, see splint -help
+ parseerrors.
+
+sysdirerrors
+ report errors in files in system directories (set by -sysdirs)
+ Categories: directories, suppress
+ Mode Settings: ---+
+ Set locally
+
+sysdirexpandmacros
+ expand macros in system directories regardless of other settings, except for
+ macros corresponding to names defined in a load library
+ Categories: directories, macros
+ Default Setting: +
+ Set locally
+
+sysdirs
+ set directories for system files (default /usr/include). Separate
+ directories with path separator (colons in Unix, semi-colons in Windows).
+ Flag settings propagate to files in a system directory. If -sysdirerrors is
+ set, no errors are reported for files in system directories.
+ Categories: directories, files
+ Default Setting: -
+ Set globally only
+ Path argument. Default: /usr/
+
+sysunrecog
+ report unrecognized identifiers with system (__) prefix
+ Categories: unrecognized, display
+ Default Setting: +
+ Set locally
+ Identifier used in code has not been declared. (Message repeated for
+ future uses in this file.) Use +gnuextensions to make Splint recognize
+ some keywords that are gnu extensions.
+
+tagprefix
+ set namespace prefix for struct, union and enum tags
+ Categories: names, prefixes
+ Default Setting: -
+ Set locally
+ String argument. No default.
+ A tag identifier does not start with the tagprefix.
+
+tagprefixexclude
+ the tagprefix may not be used for non-tag identifiers
+ Categories: names, prefixes
+ Default Setting: -
+ Set locally
+ An identifier that is not a tag starts with the tagprefix.
+
+temptrans
+ temp storage transferred to non-temporary reference
+ Category: memory
+ Mode Settings: -+++
+ Set locally
+ Temp storage (associated with a formal parameter) is transferred to a
+ non-temporary reference. The storage may be released or new aliases
+ created.
+
+timedist
+ display time distribution
+ Category: display
+ Default Setting: -
+ Set globally only
+
+tmpcomments
+ interpret t comments (ignore errors in lines marked with /*@t<n>@*/
+ Categories: syncomments, suppress
+ Mode Settings: ----
+ Set locally
+
+tmpdir
+ set directory for writing temp files
+ Categories: directories, files
+ Default Setting: -
+ Set globally only
+ Directory argument. Default: /tmp/
+
+toctou
+ possible time of check, time of use vulnerability
+ Categories: warnuse, security
+ Mode Settings: ---+
+ Set locally
+ Possible time of check, time of use vulnerability.
+
+topuse
+ declaration at top level not used
+ Categories: alluse, complete
+ Mode Settings: ---+
+ Set locally
+ An external declaration not used in any source file.
+
+trytorecover
+ try to recover from parse error
+ Default Setting: -
+ Set locally
+ Try to recover from parse error. It really means try - this doesn't
+ usually work.
+
+type
+ type mismatch
+ Default Setting: +
+ Set locally
+ Types are incompatible.
+
+typeprefix
+ set namespace prefix for user-defined types
+ Categories: names, prefixes
+ Default Setting: -
+ Set locally
+ String argument. No default.
+ A user-defined type does not start with the typeprefix
+
+typeprefixexclude
+ the typeprefix may not be used for identifiers that are not type names
+ Categories: names, prefixes
+ Default Setting: -
+ Set locally
+ An identifier that is not a type name starts with the typeprefix.
+
+typeuse
+ type declared but not used
+ Categories: alluse,
+ Mode Settings: ++++
+ Set locally
+ A type is declared but not used. Use /*@unused@*/ in front of typedef to
+ suppress messages.
+
+uncheckedglobalias
+ function returns with an unchecked global aliasing external state
+ Categories: aliasing, globals
+ Mode Settings: --++
+ Set locally
+ A global variable aliases externally-visible state when the function
+ returns.
+
+uncheckedmacroprefix
+ set namespace prefix for unchecked macros
+ Categories: names, prefixes
+ Default Setting: -
+ Set locally
+ String argument. No default.
+ An unchecked macro name does not start with the uncheckedmacroprefix
+
+uncheckedmacroprefixexclude
+ the uncheckmacroprefix may not be used for identifiers that are not
+ unchecked macros
+ Categories: names, prefixes
+ Default Setting: -
+ Set locally
+ An identifier that is not the name of an unchecked macro starts with the
+ uncheckedmacroprefix.
+
+uniondef
+ at least one field of a union must be defined
+ Categories: memory, definition
+ Mode Settings: -+++
+ Set locally
+ No field of a union is defined. Generally, one field of a union is
+ expected to be defined.
+
+unixlib
+ use UNIX (sort-of) standard library
+ Categories: libraries, initializations
+ Default Setting: -
+ Set globally only
+ UNIX version of the standard library is used.
+
+unixstandard
+ function is not required in Standard UNIX Specification
+ Categories: warnuse, security
+ Mode Settings: ----
+ Set locally
+ Use of function that need not be provided by UNIX implementations
+
+unixstrictlib
+ use strict version of UNIX (sort-of) library
+ Categories: libraries, initializations
+ Default Setting: -
+ Set globally only
+ strict version of the UNIX library is used.
+
+unqualifiedinittrans
+ unqualified storage is used as an initial value in an inconsistent way
+ Category: memory
+ Mode Settings: --++
+ Set locally
+ Unqualified storage is used as an initial value in an inconsistent way.
+
+unqualifiedtrans
+ unqualified storage is transferred in an inconsistent way
+ Category: memory
+ Mode Settings: -+++
+ Set locally
+ Unqualified storage is transferred in an inconsistent way.
+
+unreachable
+ unreachable code detected
+ Category: controlflow
+ Mode Settings: -+++
+ Set locally
+ This code will never be reached on any possible execution.
+
+unrecog
+ unrecognized identifier
+ Category: unrecognized
+ Default Setting: +
+ Set locally
+ Identifier used in code has not been declared.
+
+unrecogcomments
+ stylized comment is unrecognized
+ Categories: syncomments,
+ Default Setting: +
+ Set locally
+ Word after a stylized comment marker does not correspond to a stylized
+ comment.
+
+unrecogdirective
+ unrecognized pre-processor directive
+ Categories: preproc,
+ Default Setting: +
+ Set locally
+ Pre-processor directive is not recognized.
+
+unrecogflagcomments
+ stylized flag comment uses an unrecognized flag
+ Categories: syncomments,
+ Default Setting: +
+ Set locally
+ Semantic comment attempts to set a flag that is not recognized.
+
+unsignedcompare
+ comparison using <, <=, >= between an unsigned integral and zero constant
+ Category: operations
+ Mode Settings: -+++
+ Set locally
+ An unsigned value is used in a comparison with zero in a way that is
+ either a bug or confusing.
+
+unusedspecial
+ unused declaration in special file (corresponding to .l or .y file)
+ Categories: alluse, complete
+ Mode Settings: ---+
+ Set locally
+
+usedef
+ use before definition
+ Category: definition
+ Mode Settings: -+++
+ Set locally
+ An rvalue is used that may not be initialized to a value on some
+ execution path.
+
+usereleased
+ storage used after release
+ Categories: memory, released
+ Mode Settings: -+++
+ Set locally
+ Memory is used after it has been released (either by passing as an only
+ param or assigning to an only global).
+
+usestderr
+ send error messages to standard error (instead of standard out)
+ Categories: display, errors
+ Default Setting: -
+ Set locally
+
+usevarargs
+ non-standard <varargs.h> included
+ Categories: libraries, ansi
+ Default Setting: +
+ Set locally
+ Header <varargs.h> is not part of ANSI Standard. Should use <stdarg.h>
+ instead.
+
+varuse
+ variable declared but not used
+ Category: alluse
+ Mode Settings: ++++
+ Set locally
+ A variable is declared but never used. Use /*@unused@*/ in front of
+ declaration to suppress message.
+
+voidabstract
+ void * matches pointers to abstract types, casting ok (dangerous)
+ Categories: typeequivalence, abstract
+ Mode Settings: +---
+ Set locally
+ A pointer to void is cast to a pointer to an abstract type (or vice
+ versa).
+
+warnflags
+ warn when command line sets flag in abnormal way
+ Category: help
+ Default Setting: +
+ Set locally
+ Command line sets flag in abnormal way
+
+warnlintcomments
+ warn when a traditional lint comment is used
+ Categories: syncomments, suppress
+ Mode Settings: -+++
+ Set locally
+ A traditional lint comment is used. Some traditional lint comments are
+ interpreted by Splint to enable easier checking of legacy code. It is
+ preferable to replace these comments with the suggested Splint
+ alternative.
+
+warnmissingglobs
+ global variable used in modifies clause is not listed in globals list
+ Categories: globals, modification
+ Mode Settings: ---+
+ Set locally
+ A global variable is used in the modifies clause, but it not listed in
+ the globals list. The variable will be added to the globals list.
+
+warnmissingglobsnoglobs
+ global variable used in modifies clause in a function with no globals list
+ Categories: globals, modification
+ Mode Settings: ---+
+ Set locally
+ A global variable is used in the modifies clause, but the function has no
+ globals list. The variable will be added to the globals list.
+
+warnposixheaders
+ a POSIX header is included, but the POSIX library is not used
+ Categories: libraries, ansi
+ Default Setting: +
+ Set locally
+ Header name matches a POSIX header, but the POSIX library is not
+ selected.
+
+warnrc
+ warn when there are problems with reading the initialization files
+ Category: help
+ Default Setting: +
+ Set locally
+ There was a problem reading an initialization file
+
+warnunixlib
+ warn when the unix library is used
+ Categories: libraries, ansi
+ Default Setting: +
+ Set locally
+ Unix library may not be compatible with all platforms
+
+warnuse
+ warn when declaration marked with warn is used
+ Category: warnuse
+ Default Setting: +
+ Set locally
+ Declaration marked with warn clause is used (can be suppresed by more
+ specific flags).
+
+whichlib
+ show standard library filename
+ Categories: libraries, initializations
+ Default Setting: -
+ Set globally only
+
+whileblock
+ the body of a while statement is not a block
+ Category: controlflow
+ Mode Settings: ---+
+ Set locally
+ While body is a single statement, not a compound block.
+
+whileempty
+ a while statement has no body
+ Category: controlflow
+ Mode Settings: --++
+ Set locally
+ While statement has no body.
+
+whileloopexec
+ assume all while loops execute at least once
+ Categories: controlflow, memory
+ Default Setting: -
+ Set locally
+
+zerobool
+ treat 0 as a boolean
+ Categories: typeequivalence, booleans
+ Mode Settings: ++--
+ Set locally
+
+zeroptr
+ tread 0 as a pointer
+ Categories: typeequivalence, pointers
+ Default Setting: +
+ Set locally
+
+
+
+
+null
+===================================
+null: <S><P:->
+ A possibly null pointer is misused (sets nullderef, nullpass, nullref,
+ nullassign, and nullstate).
+nullderef: <M:-+++>
+ A possibly null pointer is dereferenced. Value is either the result of a
+ function which may return null (in which case, code should check it is not
+ null), or a global, parameter or structure field declared with the null
+ qualifier.
+nullpass: <M:-+++>
+ A possibly null pointer is passed as a parameter corresponding to a formal
+ parameter with no /*@null@*/ annotation. If NULL may be used for this
+ parameter, add a /*@null@*/ annotation to the function parameter
+ declaration.
+nullret: <M:-+++>
+ Function returns a possibly null pointer, but is not declared using
+ /*@null@*/ annotation of result. If function may return NULL, add
+ /*@null@*/ annotation to the return value declaration.
+nullstate: <M:-+++>
+ A possibly null pointer is reachable from a parameter or global variable
+ that is not declared using a /*@null@*/ annotation.
+nullassign: <M:-+++>
+ A reference with no null annotation is assigned or initialized to NULL. Use
+ /*@null@*/ to declare the reference as a possibly null pointer.
+
+definition
+===================================
+usedef: <M:-+++>
+ An rvalue is used that may not be initialized to a value on some execution
+ path.
+
+memory
+===================================
+mustdefine: <M:-+++>
+ An out parameter or global is not defined before control is transferred.
+uniondef: <M:-+++>
+ No field of a union is defined. Generally, one field of a union is expected
+ to be defined.
+compdef: <M:-+++>
+ Storage derivable from a parameter, return value or global is not defined.
+ Use /*@out@*/ to denote passed or returned storage which need not be
+ defined.
+
+definition
+===================================
+fullinitblock: <P:+>
+ Initializer does not set every field in the structure.
+initallelements: <P:+>
+ Initializer does not define all elements of a declared array.
+initsize: <P:+>
+ Initializer block contains more elements than the size of a declared array.
+impouts: <M:---->
+ Pointer parameters to unspecified functions may be implicit out parameters.
+
+declarations
+===================================
+incondefs: <M:-+++>
+ A function, variable or constant is redefined with a different type.
+matchfields: <M:-+++>
+ A struct, union or enum type is redefined with inconsistent fields or
+ members.
+
+
+===================================
+fcnderef: <M:--++>
+ A function type is dereferenced. The ANSI standard allows this because of
+ implicit conversion of function designators, however the dereference is
+ unnecessary.
+
+operations
+===================================
+realcompare: <M:-+++>
+ Two real (float, double, or long double) values are compared directly using
+ a C primitive. This may produce unexpected results since floating point
+ representations are inexact. Instead, compare the difference to FLT_EPSILON
+ or DBL_EPSILON.
+unsignedcompare: <M:-+++>
+ An unsigned value is used in a comparison with zero in a way that is either
+ a bug or confusing.
+ptrarith: <M:---+>
+ Pointer arithmetic using pointer and integer.
+nullptrarith: <M:--++>
+ Pointer arithmetic using a possibly null pointer and integer.
+ptrcompare: <M:-+++>
+ A pointer is compared to a number.
+strictops: <M:---+>
+ A primitive operation does not type check strictly.
+bitwisesigned: <M:---+>
+ An operand to a bitwise operator is not an unsigned values. This may have
+ unexpected results depending on the signed representations.
+shiftnegative: <M:-+++>
+ The right operand to a shift operator may be negative (behavior undefined).
+shiftimplementation: <M:-+++>
+ The left operand to a shift operator may be negative (behavior is
+ implementation-defined).
+sizeoftype: <M:---+>
+ Operand of sizeof operator is a type. (Safer to use expression, int *x =
+ sizeof (*x); instead of sizeof (int).)
+sizeofformalarray: <P:+>
+ Operand of a sizeof operator is a function parameter declared as an array.
+ The value of sizeof will be the size of a pointer to the element type, not
+ the number of elements in the array.
+
+declarations
+===================================
+fixedformalarray: <P:+>
+ A formal parameter is declared as an array with size. The size of the array
+ is ignored in this context, since the array formal parameter is treated as a
+ pointer.
+incompletetype: <P:+>
+ A formal parameter is declared with an incomplete type.
+formalarray: <P:->
+ A formal parameter is declared as an array. This can be confusing, since a
+ formal array parameter is treated as a pointer.
+
+booleans
+===================================
+booltype <string> [lltX_bool]: <P:->
+ Set name of boolean type (default bool).
+boolfalse <string> [FALSE]: <P:->
+ Set name of boolean false (default FALSE).
+booltrue <string> [TRUE]: <P:->
+ Set name of boolean true (default TRUE).
+likelybool: <P:+>
+ Use the -booltype, -boolfalse and -booltrue flags to change the name of the
+ default boolean type.
+boolcompare: <M:-+++>
+ Two bool values are compared directly using a C primitive. This may produce
+ unexpected results since all non-zero values are considered TRUE, so
+ different TRUE values may not be equal. The file bool.h (included in
+ splint/lib) provides bool_equal for safe bool comparisons.
+boolops: <M:-+++>
+ The operand of a boolean operator is not a boolean. Use +ptrnegate to allow
+ ! to be used on pointers.
+ptrnegate: <M:++-->
+ The operand of ! operator is a pointer.
+predassign: <P:+>
+ The condition test is an assignment expression. Probably, you mean to use ==
+ instead of =. If an assignment is intended, add an extra parentheses nesting
+ (e.g., if ((a = b)) ...) to suppress this message.
+predbool: <S><P:->
+ Test expression type is not boolean.
+
+predicates
+===================================
+predboolint: <M:-+++>
+ Test expression type is not boolean or int.
+
+booleans
+===================================
+predboolptr: <M:--++>
+ Test expression type is not boolean.
+predboolothers: <M:++++>
+ Test expression type is not boolean.
+
+abstract
+===================================
+abstract: <P:+>
+ An abstraction barrier is broken. If necessary, use /*@access <type>@*/ to
+ allow access to an abstract type.
+impabstract: <P:->
+ Assume user type definitions are abstract (unless /*@concrete@*/ is used).
+accessmodule: <P:+>
+ The representation of an abstract type defined in <M>.<x> is accessible
+ anywhere in a file named <M>.<y>.
+accessfile: <P:+>
+ The representation of an abstract type named <t> is accessible anywhere in a
+ file named <t>.<x>.
+accessczech: <P:+>
+ The representation of an abstract type named <t> is accessible in the
+ definition of a function or constant named <t>_<name>
+accessslovak: <P:->
+ The representation of an abstract type named <t> is accessible in the
+ definition of a function or constant named <t><Name>
+accessczechoslovak: <P:->
+ The representation of an abstract type named <t> is accessible in the
+ definition of a function or constant named <t>_<name> or <t><Name>
+accessall: <S><P:->
+ Sets accessmodule, accessfile and accessczech
+mutrep: <M:-+++>
+ LCL semantics requires that a mutable type exhibits sharing semantics. In
+ order for objects to be shared a indirection is necessary in the
+ representation. A mutable type may be represented by a pointer or an
+ abstract mutable type. Handles into static data are fine, too, but will
+ generate this error message unless it is suppressed.
+
+memory
+===================================
+mustfreefresh: <M:-+++>
+ A memory leak has been detected. Storage allocated locally is not released
+ before the last reference to it is lost.
+mustfreeonly: <M:-+++>
+ A memory leak has been detected. Only-qualified storage is not released
+ before the last reference to it is lost.
+mustfree: <S><P:->
+ A memory leak has been detected.
+usereleased: <M:-+++>
+ Memory is used after it has been released (either by passing as an only
+ param or assigning to an only global).
+strictusereleased: <M:---+>
+ Memory (through fetch) is used after it may have been released (either by
+ passing as an only param or assigning to an only global).
+compdestroy: <M:-+++>
+ A storage leak due to incomplete deallocation of a structure or deep pointer
+ is suspected. Unshared storage that is reachable from a reference that is
+ being deallocated has not yet been deallocated. Splint assumes when an
+ object is passed as an out only void pointer that the outer object will be
+ deallocated, but the inner objects will not.
+strictdestroy: <M:---+>
+ Report complete destruction errors for array elements that may have been
+ released.
+deparrays: <M:--++>
+ When an element is fetched from an array, Splint analysis is not able to
+ determine if the same element is reused. If +deparrays, Splint will mark
+ local storage assigned from array fetches as dependent.
+branchstate: <M:-+++>
+ The state of a variable is different depending on which branch is taken.
+ This means no annotation can sensibly be applied to the storage.
+strictbranchstate: <M:---+>
+ The state of a variable through an array fetch is different depending on
+ which branch is taken. This means no annotation can sensibly be applied to
+ the storage.
+memchecks: <S><P:->
+ Sets all dynamic memory checking flags (memimplicit, mustfree, mustdefine,
+ mustnotalias, null, memtrans).
+compmempass: <M:-+++>
+ Storage derivable from a parameter does not match the alias kind expected
+ for the formal parameter.
+stackref: <M:++++>
+ A stack reference is pointed to by an external reference when the function
+ returns. The stack-allocated storage is destroyed after the call, leaving a
+ dangling reference.
+memtrans: <S><P:->
+ Memory is transferred in a way that violates annotations.
+dependenttrans: <M:-+++>
+ Dependent storage is transferred to a non-dependent reference.
+newreftrans: <M:-+++>
+ A new reference is transferred to a reference counted reference.
+onlytrans: <M:-+++>
+ The only reference to this storage is transferred to another reference
+ (e.g., by returning it) that does not have the only annotation. This may
+ lead to a memory leak, since the new reference is not necessarily released.
+onlyunqglobaltrans: <M:--++>
+ The only reference to this storage is transferred to another reference that
+ does not have an aliasing annotation. This may lead to a memory leak, since
+ the new reference is not necessarily released.
+ownedtrans: <M:-+++>
+ The owned reference to this storage is transferred to another reference
+ (e.g., by returning it) that does not have the owned annotation. This may
+ lead to a memory leak, since the new reference is not necessarily released.
+freshtrans: <M:-+++>
+ Fresh storage (newly allocated in this function) is transferred in a way
+ that the obligation to release storage is not propagated. Use the
+ /*@only@*/ annotation to indicate the a return value is the only reference
+ to the returned storage.
+sharedtrans: <M:-+++>
+ Shared storage is transferred to a non-shared reference. The other reference
+ may release storage needed by this reference.
+temptrans: <M:-+++>
+ Temp storage (associated with a formal parameter) is transferred to a
+ non-temporary reference. The storage may be released or new aliases created.
+kepttrans: <M:-+++>
+ storage is transferred to a non-temporary reference after being passed as
+ keep parameter. The storage may be released or new aliases created.
+keeptrans: <M:-+++>
+ Keep storage is transferred inconsistently --- either in a way that may add
+ a new alias to it, or release it.
+immediatetrans: <M:-+++>
+ An immediate address (result of & operator) is transferred inconsistently.
+refcounttrans: <M:-+++>
+ Reference counted storage is transferred in a way that may not be consistent
+ with the reference count.
+statictrans: <M:-+++>
+ Static storage is transferred in an inconsistent way.
+unqualifiedtrans: <M:-+++>
+ Unqualified storage is transferred in an inconsistent way.
+staticinittrans: <M:--++>
+ Static storage is used as an initial value in an inconsistent way.
+unqualifiedinittrans: <M:--++>
+ Unqualified storage is used as an initial value in an inconsistent way.
+readonlytrans: <M:--++>
+ A read-only string literal is assigned to a non-observer reference.
+passunknown: <M:---->
+ Passing a value as an un-annotated parameter clears its annotation.
+readonlystrings: <M:-+++>
+ String literals are read-only. An error is reported if a string literal may
+ be modified or released.
+memimp: <M:-+++>
+ Memory errors for unqualified storage.
+paramimptemp: <P:+>
+ Assume unannotated parameter is temp.
+allimponly: <S><P:->
+ Sets globimponly, retimponly, structimponly, specglobimponly, specretimponly
+ and specstructimponly.
+codeimponly: <S><P:->
+ Sets globimponly, retimponly and structimponly.
+specimponly: <S><P:->
+ Sets specglobimponly, specretimponly and specstructimponly.
+globimponly: <P:+>
+ Assume unannotated global storage is only.
+retimponly: <P:+>
+ Assume unannotated returned storage is only.
+structimponly: <P:+>
+ Assume unannotated structure field is only.
+specglobimponly: <P:->
+ Assume unannotated global storage is only.
+specretimponly: <P:->
+ Assume unannotated returned storage is only.
+specstructimponly: <P:->
+ Assume unannotated structure field is only.
+
+aliasing
+===================================
+aliasunique: <M:-+++>
+ A unique or only parameter is aliased by some other parameter or visible
+ global.
+mayaliasunique: <M:-+++>
+ A unique or only parameter may be aliased by some other parameter or visible
+ global.
+mustnotalias: <M:-+++>
+ An alias has been added to a temp-qualifier parameter or global that is
+ visible externally when the function returns. If the aliasing is needed, use
+ the /*@shared@*/ annotation to indicate that new aliases to the parameter
+ may be created.
+retalias: <M:--++>
+ The returned value shares storage with a parameter or global. If a parameter
+ is to be returned, use the returned qualifier. If the result is not
+ modified, use the observer qualifier on the result type. Otherwise, exposed
+ can be used, but limited checking is done.
+globalias: <S><P:->
+ A global variable aliases externally-visible state when the function
+ returns.
+checkstrictglobalias: <M:-+++>
+ A global variable aliases externally-visible state when the function
+ returns.
+checkedglobalias: <M:-+++>
+ A global variable aliases externally-visible state when the function
+ returns.
+checkmodglobalias: <M:-+++>
+ A global variable aliases externally-visible state when the function
+ returns.
+uncheckedglobalias: <M:--++>
+ A global variable aliases externally-visible state when the function
+ returns.
+
+memory
+===================================
+exposetrans: <M:-+++>
+ Exposed storage is transferred to a non-exposed, non-observer reference.
+observertrans: <M:-+++>
+ Observer storage is transferred to a non-observer reference.
+
+exposure
+===================================
+repexpose: <S><P:->
+ The internal representation of an abstract type is visible to the caller.
+ This means clients may have access to a pointer into the abstract
+ representation.
+retexpose: <M:--++>
+ The return value shares storage with an instance of an abstract type. This
+ means clients may have access to a pointer into the abstract representation.
+ Use the observer qualifier to return exposed storage that may not be
+ modified by the client. Use the exposed qualifier to return modifiable (but
+ not deallocatable) exposed storage (dangerous).
+assignexpose: <M:--++>
+ Storage internal to the representation of an abstract type is assigned to an
+ external pointer. This means clients may have access to a pointer into the
+ abstract representation. If the external pointer is a parameter, the exposed
+ qualifier can be used to allow the assignment, however, this is considered
+ dangerous programming practice.
+castexpose: <M:--++>
+ Storage internal to the representation of an abstract type is exposed
+ through a type cast. This means clients may have access to a pointer into
+ the abstract representation.
+
+declarations
+===================================
+redundantsharequal: <M:--++>
+ A declaration of an immutable object uses a redundant observer qualifier.
+misplacedsharequal: <M:-+++>
+ A declaration of an unsharable object uses a sharing annotation.
+
+modification
+===================================
+mods: <P:+>
+ An externally-visible object is modified by a function, but not listed in
+ its modifies clause.
+mustmod: <M:--++>
+ An object listed in the modifies clause is not modified by the
+ implementation of the function. The modification may not be detected if it
+ is done through a call to an unspecified function.
+modobserver: <P:+>
+ Storage declared with observer is possibly modified. Observer storage may
+ not be modified.
+modobserveruncon: <M:---+>
+ Storage declared with observer may be modified through a call to an
+ unconstrained function.
+modinternalstrict: <M:---+>
+ A function that modifies internalState is called from a function that does
+ not list internalState in its modifies clause
+modfilesys: <M:---+>
+ Report undocumented file system modifications (applies to unspecified
+ functions if modnomods is set).
+modunspec: <S><P:->
+ Modification in unspecified functions (sets modnomods, modglobunspec and
+ modstrictglobsunspec).
+modnomods: <M:---+>
+ An externally-visible object is modified by a function with no
+ /*@modifies@*/ comment. The /*@modifies ... @*/ control comment can be used
+ to give a modifies list for an unspecified function.
+moduncon: <M:---+>
+ An unconstrained function is called in a function body where modifications
+ are checked. Since the unconstrained function may modify anything, there may
+ be undetected modifications in the checked function.
+modunconnomods: <M:---+>
+ An unconstrained function is called in a function body where modifications
+ are checked. Since the unconstrained function may modify anything, there may
+ be undetected modifications in the checked function.
+globsimpmodsnothing: <M:--++>
+ An implicit modifies nothing clause is assumed for a function declared with
+ a globals list but not modifies clause.
+modsimpnoglobs: <M:---->
+ An implicit empty globals list is assumed for a function declared with a
+ modifies clause but no globals list.
+
+globals
+===================================
+globstate: <M:-+++>
+ A global variable does not satisfy its annotations when control is
+ transferred.
+globs: <P:+>
+ A checked global variable is used in the function, but not listed in its
+ globals clause. By default, only globals specified in .lcl files are
+ checked. To check all globals, use +allglobals. To check globals selectively
+ use /*@checked@*/ in the global declaration.
+globuse: <M:++++>
+ A global variable listed in the function's globals list is not used in the
+ body of the function.
+internalglobs: <M:---+>
+ A called function uses internal state, but the globals list for the function
+ being checked does not include internalState
+internalglobsnoglobs: <M:---+>
+ A called function uses internal state, but the function being checked has no
+ globals list
+warnmissingglobs: <M:---+>
+ A global variable is used in the modifies clause, but it not listed in the
+ globals list. The variable will be added to the globals list.
+warnmissingglobsnoglobs: <M:---+>
+ A global variable is used in the modifies clause, but the function has no
+ globals list. The variable will be added to the globals list.
+globnoglobs: <M:---+>
+ A specified global variable is used in the function, but not listed in its
+ globals list. Without +globnoglobs, only globals declared with
+ /*@checkedstrict@*/ will produce use errors in functions without globals
+ lists. The /*@globals ... @*/ control comment can be used to give a globals
+ list for an unspecified function.
+allglobs: <M:--++>
+ Report use and modification errors for globals not annotated with unchecked.
+checkstrictglobs: <M:++++>
+ Report use and modification errors for checkedstrict globals.
+impcheckedspecglobs: <M:-+++>
+ Assume checked qualifier for unqualified global declarations in .lcl files.
+impcheckmodspecglobs: <M:---->
+ Assume checkmod qualifier for unqualified global declarations in .lcl files.
+impcheckedstrictspecglobs: <M:---+>
+ Assume checkmod qualifier for unqualified global declarations in .lcl files.
+impcheckedglobs: <M:---->
+ Assume checked qualifier for unqualified global declarations.
+impcheckmodglobs: <M:---->
+ Assume checkmod qualifier for unqualified global declarations.
+impcheckedstrictglobs: <M:---+>
+ Assume checkedstrict qualifier for unqualified global declarations.
+impcheckedstatics: <M:---->
+ Assume checked qualifier for unqualified file static declarations.
+impcheckmodstatics: <M:---->
+ Assume checkmod qualifier for unqualified file static declarations.
+impcheckmodinternals: <M:--++>
+ Assume checkmod qualifier for unqualified local static declarations (for
+ internal state modifications).
+impcheckedstrictstatics: <M:---+>
+ Assume checkedstrict qualifier for unqualified file static declarations.
+modglobs: <M:-+++>
+ A checked global variable is modified by the function, but not listed in its
+ modifies clause.
+modglobsnomods: <M:---+>
+ A checked global variable is modified by the function, but not listed in its
+ modifies clause.
+modstrictglobsnomods: <M:---+>
+ A checked global variable is modified by the function, but not listed in its
+ modifies clause.
+modglobsunchecked: <M:---+>
+ An unchecked global variable is modified by the function, but not listed in
+ its modifies clause.
+
+controlflow
+===================================
+noret: <M:-+++>
+ There is a path through a function declared to return a value on which there
+ is no return statement. This means the execution may fall through without
+ returning a meaningful result to the caller.
+emptyreturn: <P:+>
+ Empty return in function declared to return value.
+alwaysexits: <P:+>
+ Loop predicate always exits.
+loopexec: <S><P:->
+ Assume all loops execute at least once (sets forloopexec, whileloopexec and
+ iterloopexec).
+forloopexec: <P:->
+ Assume all for loops execute at least once.
+whileloopexec: <P:->
+ Assume all while loops execute at least once.
+iterloopexec: <P:->
+ Assume all iterator loops execute at least once.
+obviousloopexec: <P:+>
+ Assume loop that can be determined to always execute always does.
+
+undefined
+===================================
+evalorder: <M:-+++>
+ Code has unspecified behavior. Order of evaluation of function parameters or
+ subexpressions is not defined, so if a value is used and modified in
+ different places not separated by a sequence point constraining evaluation
+ order, then the result of the expression is unspecified.
+evalorderuncon: <M:---+>
+ Code involving a call to function with no modifies or globals clause may
+ have undefined or implementation-dependent behavior (Splint assumes the
+ unconstrained call may modify any reachable state or use any global). Add a
+ specification for the function.
+
+controlflow
+===================================
+infloops: <M:-+++>
+ This appears to be an infinite loop. Nothing in the body of the loop or the
+ loop test modifies the value of the loop test. Perhaps the specification of
+ a function called in the loop body is missing a modification.
+infloopsuncon: <M:--++>
+ This appears to be an infinite loop. Nothing in the body of the loop or the
+ loop test modifies the value of the loop test. There may be a modification
+ through a call to an unconstrained function, or an unconstrained function in
+ the loop test may use a global variable modified by the loop body.
+casebreak: <M:-+++>
+ Execution falls through from the previous case.
+misscase: <M:-+++>
+ Not all values in an enumeration are present as cases in the switch.
+firstcase: <M:-+++>
+ The first statement after a switch is not a case.
+duplicatecases: <P:+>
+ Duplicate cases in switch.
+deepbreak: <S><P:->
+ A break statement appears inside the body of a nested while, for or switch
+ statement. Sets looploopbreak, loopswitchbreak, switchloopbreak,
+ switchswitchbreak, and looploopcontinue.
+looploopbreak: <M:--++>
+ A break statement appears inside the body of a nested while or for
+ statement. This is perfectly reasonable code, but check that the break is
+ intended to break only the inner loop. The break statement may be preceded
+ by /*@innerbreak@*/ to suppress the message for this break only.
+switchloopbreak: <M:--++>
+ A break statement appears inside the body of a while or for statement within
+ a switch. This is perfectly reasonable code, but check that the break is
+ intended to break only the inner loop. The break statement may be preceded
+ by /*@loopbreak@*/ to suppress the message for this break only.
+loopswitchbreak: <M:---+>
+ A break statement appears inside a switch statement within a while or for
+ loop. This is perfectly reasonable code, but check that the break is
+ intended to break only the inner loop. The break statement may be preceded
+ by /*@switchbreak@*/ to suppress the message for this break only.
+switchswitchbreak: <M:---+>
+ A break statement appears inside a switch statement within another switch
+ statement. This is perfectly reasonable code, but check that the break is
+ intended to break only the inner switch. The break statement may be preceded
+ by /*@innerbreak@*/ to suppress the message for this break only.
+looploopcontinue: <M:---+>
+ A continue statement appears inside a loop within a loop. This is perfectly
+ reasonable code, but check that the continue is intended to continue only
+ the inner loop. The continue statement may be preceded by
+ /*@innercontinue@*/ to suppress the message for this continue only.
+whileempty: <M:--++>
+ While statement has no body.
+whileblock: <M:---+>
+ While body is a single statement, not a compound block.
+forempty: <M:---+>
+ For statement has no body.
+forblock: <M:---+>
+ Loop body is a single statement, not a compound block.
+ifempty: <M:++++>
+ If statement has no body.
+ifblock: <M:---+>
+ If body is a single statement, not a compound block.
+allempty: <S><P:->
+ An if, while or for statement has no body (sets ifempty, whileempty and
+ forempty.
+allblock: <S><P:->
+ Body is a single statement, not a compound block.
+elseifcomplete: <M:---+>
+ There is no final else following an else if construct.
+unreachable: <M:-+++>
+ This code will never be reached on any possible execution.
+
+effect
+===================================
+noeffect: <M:-+++>
+ Statement has no visible effect --- no values are modified.
+noeffectuncon: <M:---+>
+ Statement has no visible effect --- no values are modified. It may modify
+ something through a call to an unconstrained function.
+
+returnvals
+===================================
+retval: <S><P:->
+ Result returned by function call is not used. If this is intended, cast
+ result to (void) to eliminate message.
+retvalother: <M:++++>
+ Result returned by function call is not used. If this is intended, can cast
+ result to (void) to eliminate message.
+retvalbool: <M:-+++>
+ Result returned by function call is not used. If this is intended, can cast
+ result to (void) to eliminate message.
+retvalint: <M:-+++>
+ Result returned by function call is not used. If this is intended, can cast
+ result to (void) to eliminate message.
+
+memorybounds
+===================================
+nullterminated: <M:---->
+ A possibly non-nullterminated string/memory is used/referenced as a
+ nullterminated one.
+bounds: <S><P:->
+ Memory read or write may be out of bounds of allocated storage.
+boundsread: <M:---->
+ A memory read references memory beyond the allocated storage.
+boundswrite: <M:---->
+ A memory write may write to an address beyond the allocated buffer.
+fcnpost: <M:---->
+ Display function post conditions.
+redundantconstraints: <M:---->
+ Display seemingly redundant constraints
+checkpost: <M:---->
+ The function implementation may not satisfy a post condition given in an
+ ensures clause.
+implictconstraint: <M:---->
+ Generate implicit constraints for functions.
+orconstraint: <M:---->
+ Use limited OR expressions to resolve constraints.
+nullterminated: <M:---->
+ A user annotated non-nullterminated buffer is used/referenced as a
+ nullterminated one.
+showconstraintparens: <M:---->
+ Display parentheses around constraint terms.
+showconstraintlocation: <M:---->
+ Display location for every constraint generated.
+
+extensible
+===================================
+mts <filename>: <G><P:->
+ Load meta state declaration and corresponding xh file.
+statetransfer: <M:++++>
+ Transfer violates user-defined state rules.
+statemerge: <M:++++>
+ Control path merge violates user-defined state merge rules.
+
+macros
+===================================
+macroredef: <M:-+++>
+ A macro is defined in more than one place.
+macrounrecog: <M:-+++>
+ An unrecognized identifier appears in a macro. If the identifier is defined
+ before the macro is used, then this is okay.
+macroconstdecl: <M:-+++>
+ Macro constant has no declaration. Use /*@constant ...@*/ to declare the
+ macro.
+macrostmt: <M:-+++>
+ A macro is defined in a way that may cause syntactic problems. If the macro
+ returns a value, use commas to separate expressions;
+ otherwise, use do { <macro body> } while (FALSE) construct.
+macroempty: <M:---+>
+ A macro definition has no body.
+macroparams: <M:-+++>
+ A macro parameter is not used exactly once in all possible invocations of
+ the macro. To behave like a function, each macro parameter must be used
+ exactly once on all invocations of the macro so that parameters with
+ side-effects are evaluated exactly once. Use /*@sef@*/ to denote parameters
+ that must be side-effect free.
+macroreturn: <M:---->
+ The body of a macro declared as a function uses a return statement. This
+ exhibits behavior that could not be implemented by a function.
+macroassign: <M:-+++>
+ A macro parameter is used as the left side of an assignment expression. This
+ exhibits behavior that could not be implemented by a function.
+macroparens: <M:-+++>
+ A macro parameter is used without parentheses. This could be dangerous if
+ the macro is invoked with a complex expression and precedence rules will
+ change the evaluation inside the macro.
+macrodecl: <M:---->
+ Argument checking cannot be done well for macros without prototypes or
+ specifications, since the types of the arguments are unknown.
+macrofcndecl: <M:-+++>
+ Function macro has no declaration.
+sefparams: <M:-+++>
+ An actual parameter corresponding to a sef parameter may have a side-effect.
+sefuncon: <M:--++>
+ An actual parameter corresponding to a sef parameter involves a call to a
+ procedure with no modifies clause that may have a side-effect.
+constmacros: <P:->
+ Every non-parameterized macro (not preceded by /*@notfunction@*/) is checked
+ as a constant.
+fcnmacros: <P:->
+ Every parameterized macro (not preceded by /*@notfunction@*/) is checked as
+ a function.
+allmacros: <S><P:->
+ All macros (not preceded by /*@notfunction@*/) are checked as functions or
+ constants depending on whether or not they have parameter lists.
+libmacros: <P:->
+ Every macro declared in the load library is checked.
+specmacros: <P:+>
+ Every macro declared a specification file is checked.
+macromatchname: <M:++++>
+ A iter or constant macro is defined using a different name from the one used
+ in the previous syntactic comment
+nextlinemacros: <P:+>
+ A constant or iter declaration is not immediately followed by a macro
+ definition.
+
+iterators
+===================================
+iterbalance: <P:+>
+ Iter is not balanced with end_<iter>.
+iteryield: <P:+>
+ Iter yield parameter is inappropriate.
+hasyield: <P:->
+ An iterator has been declared with no parameters annotated with yield. This
+ may be what you want, if the iterator is meant to do something a fixed
+ number of times, but returns no information to the calling context.
+ Probably, a parameter is missing the yield annotation to indicate that it is
+ assigned a value in the calling context.
+
+names
+===================================
+namechecks: <P:+>
+ Controls name checking without changing other settings.
+czech: <S><P:->
+ Name is not consistent with Czech naming convention.
+czechfcns: <P:->
+ Function or iterator name is not consistent with Czech naming convention.
+czechvars: <P:->
+ Variable name is not consistent with Czech naming convention.
+czechmacros: <P:->
+ Expanded macro name is not consistent with Czech naming convention.
+czechconsts: <P:->
+ Constant name is not consistent with Czech naming convention.
+czechtypes: <P:->
+ Type name is not consistent with Czech naming convention. Czech type names
+ must not use the underscore character.
+slovak: <S><P:->
+ Name is not consistent with Slovak naming convention.
+slovakfcns: <P:->
+ Function or iterator name is not consistent with Slovak naming convention.
+slovakmacros: <P:->
+ Expanded macro name is not consistent with Slovak naming convention.
+slovakvars: <P:->
+ Variable name is not consistent with Slovak naming convention.
+slovakconsts: <P:->
+ Constant name is not consistent with Slovak naming convention.
+slovaktypes: <P:->
+ Type name is not consistent with Slovak naming convention. Slovak type names
+ may not include uppercase letters.
+czechoslovak: <S><P:->
+ Name is not consistent with either Czech or Slovak naming convention.
+czechoslovakfcns: <P:->
+ Function name is not consistent with Czechoslovak naming convention.
+czechoslovakmacros: <P:->
+ Expanded macro name is not consistent with Czechoslovak naming convention.
+czechoslovakvars: <P:->
+ Variable name is not consistent with Czechoslovak naming convention.
+czechoslovakconsts: <P:->
+ Constant name is not consistent with Czechoslovak naming convention.
+czechoslovaktypes: <P:->
+ Type name is not consistent with Czechoslovak naming convention.
+ Czechoslovak type names may not include uppercase letters or the underscore
+ character.
+macrovarprefix <string> [m_]: <-><P:+>
+ A variable declared in a macro body does not start with the macrovarprefix.
+macrovarprefixexclude: <P:+>
+ A variable declared outside a macro body starts with the macrovarprefix.
+tagprefix <string>: <-><P:->
+ A tag identifier does not start with the tagprefix.
+tagprefixexclude: <P:->
+ An identifier that is not a tag starts with the tagprefix.
+enumprefix <string>: <-><P:->
+ An enum member does not start with the enumprefix.
+enumprefixexclude: <P:->
+ An identifier that is not an enum member starts with the enumprefix.
+filestaticprefix <string>: <-><P:->
+ A file-static identifier does not start with the filestaticprefix.
+filestaticprefixexclude: <P:->
+ An identifier that is not file static starts with the filestaticprefix.
+globalprefix <string>: <-><P:->
+ A global variable does not start with the globalprefix
+globalprefixexclude: <P:->
+ An identifier that is not a global variable starts with the globalprefix.
+typeprefix <string>: <-><P:->
+ A user-defined type does not start with the typeprefix
+typeprefixexclude: <P:->
+ An identifier that is not a type name starts with the typeprefix.
+externalprefix <string>: <-><P:->
+ An external identifier does not start with the externalprefix
+externalprefixexclude: <P:->
+ An identifier that is not external starts with the externalprefix.
+localprefix <string>: <-><P:->
+ A local variable does not start with the localprefix
+localprefixexclude: <P:->
+ An identifier that is not a local variable starts with the localprefix.
+uncheckedmacroprefix <string>: <-><P:->
+ An unchecked macro name does not start with the uncheckedmacroprefix
+uncheckedmacroprefixexclude: <P:->
+ An identifier that is not the name of an unchecked macro starts with the
+ uncheckedmacroprefix.
+constprefix <string>: <-><P:->
+ A constant does not start with the constantprefix
+constprefixexclude: <P:->
+ An identifier that is not a constant starts with the constantprefix.
+iterprefix <string>: <-><P:->
+ An iter does not start with the iterator prefix
+iterprefixexclude: <P:->
+ An identifier that is not a iter starts with the iterprefix.
+protoparamprefix <string>: <-><P:->
+ A parameter name in a function prototype declaration does not start with the
+ declaration parameter prefix
+isoreserved: <M:--++>
+ External name is reserved for system use by ISO C99 standard.
+cppnames: <M:--++>
+ External name is a C++ keyword or reserved word. This could lead to problems
+ if the code is compiled with a C++ compiler.
+isoreservedinternal: <M:---+>
+ Internal name is reserved for system in ISO C99 standard (this should not be
+ necessary unless you are worried about C library implementations that
+ violate the standard and use macros).
+distinctexternalnames: <P:->
+ An external name is not distinguishable from another external name using the
+ number of significant characters. According to ANSI Standard (3.1), an
+ implementation may only consider the first 6 characters significant, and
+ ignore alphabetical case distinctions (ISO C99 requires 31). The
+ +externalnamelen <n> flag may be used to change the number of significant
+ characters, and -externalnamecaseinsensitive to make alphabetical case
+ significant in external names.
+externalnamelen <number> [31]: <S><P:->
+ Sets the number of significant characters in an external name (default is 6
+ for old ANSI89 limit, C99 requires 31). Sets +distinctexternalnames.
+externalnamecaseinsensitive: <S><P:+>
+ Make alphabetic case insignificant in external names. By ANSI89 standard,
+ case need not be significant in an external name. If +distinctexternalnames
+ is not set, sets +distinctexternalnames with unlimited external name length.
+distinctinternalnames: <P:->
+ An internal name is not distinguishable from another internal name using the
+ number of significant characters. According to ANSI89 Standard (3.1), an
+ implementation may only consider the first 31 characters significant (ISO
+ C99 specified 63). The +internalnamelen <n> flag changes the number of
+ significant characters, -internalnamecaseinsensitive to makes alphabetical
+ case significant, and +internalnamelookalike to make similar-looking
+ characters non-distinct.
+internalnamelen <number> [63]: <S><P:->
+ Sets the number of significant characters in an internal name (ANSI89
+ default is 31.) Sets +distinctinternalnames.
+internalnamecaseinsensitive: <S><P:->
+ Set whether case is significant an internal names (-internalnamecaseinsensiti
+ ve means case is significant). By ANSI89 default, case is not significant.
+ If +distinctinternalnames is not set, sets +distinctinternalnames with
+ unlimited internal name length.
+internalnamelookalike: <S><P:->
+ Set whether similar looking characters (e.g., "1" and "l") match in internal
+ names.
+protoparamname: <M:---+>
+ A parameter in a function prototype has a name. This is dangerous, since a
+ macro definition could be visible here.
+protoparammatch: <M:--++>
+ A parameter in a function definition does not have the same name as the
+ corresponding in the declaration of the function after removing the
+ protoparamprefix
+protoparamprefixexclude: <P:->
+ An identifier that is not a parameter name in a function prototype starts
+ with the protoparamprefix.
+
+alluse
+===================================
+topuse: <M:---+>
+ An external declaration not used in any source file.
+exportlocal: <M:-+++>
+ A declaration is exported, but not used outside this module. Declaration can
+ use static qualifier.
+exportheader: <M:--++>
+ A declaration is exported, but does not appear in a header file.
+exportheadervar: <M:--++>
+ A variable declaration is exported, but does not appear in a header file.
+ (Used with exportheader.)
+fielduse: <M:-+++>
+ A field is present in a structure type but never used. Use /*@unused@*/ in
+ front of field declaration to suppress message.
+enummemuse: <M:-+++>
+ A member of an enum type is never used.
+constuse: <M:-+++>
+ A constant is declared but not used. Use unused in the constant declaration
+ to suppress message.
+fcnuse: <M:++++>
+ A function is declared but not used. Use /*@unused@*/ in front of function
+ header to suppress message.
+paramuse: <M:-+++>
+ A function parameter is not used in the body of the function. If the
+ argument is needed for type compatibility or future plans, use /*@unused@*/
+ in the argument declaration.
+typeuse: <M:++++>
+ A type is declared but not used. Use /*@unused@*/ in front of typedef to
+ suppress messages.
+varuse: <M:++++>
+ A variable is declared but never used. Use /*@unused@*/ in front of
+ declaration to suppress message.
+unusedspecial: <M:---+>
+ Unused declaration in special file (corresponding to .l or .y file).
+
+complete
+===================================
+declundef: <M:--++>
+ A function or variable is declared, but not defined in any source code file.
+specundef: <M:-+++>
+ A function or variable is declared in an .lcl file, but not defined in any
+ source code file.
+specundecl: <P:->
+ A function or variable is declared in an .lcl file, but not declared in any
+ source code file.
+
+declarations
+===================================
+newdecl: <P:->
+ There is a new declaration that is not declared in a loaded library or
+ earlier file. (Use this flag to check for consistency against a library.)
+
+initializations
+===================================
+needspec: <P:->
+ There is information in the specification that is not duplicated in
+ syntactic comments. Normally, this is not an error, but it may be useful to
+ detect it to make sure checking incomplete systems without the
+ specifications will still use this information.
+
+libraries
+===================================
+nolib: <-><G><P:->
+ Do not load standard library.
+isolib: <G><P:->
+ Library based on the ISO standard library specification is used.
+strictlib: <G><P:->
+ Stricter version of the standard library is used. (The default library is
+ standard.lcd; strict library is strict.lcd.)
+unixlib: <G><P:->
+ UNIX version of the standard library is used.
+unixstrictlib: <G><P:->
+ strict version of the UNIX library is used.
+posixlib: <G><P:->
+ POSIX version of the standard library is used.
+posixstrictlib: <G><P:->
+ POSIX version of the strict standard library is used.
+whichlib: <G><P:->
+ Show standard library filename.
+warnposixheaders: <P:+>
+ Header name matches a POSIX header, but the POSIX library is not selected.
+warnunixlib: <P:+>
+ Unix library may not be compatible with all platforms
+usevarargs: <P:+>
+ Header <varargs.h> is not part of ANSI Standard. Should use <stdarg.h>
+ instead.
+dump <filename>: <G><P:->
+ Save state for merging (default suffix .lcd).
+load <filename>: <G><P:->
+ Load state from dump file (default suffix .lcd).
+
+headers
+===================================
+singleinclude: <G><P:->
+ When checking multiple files, each header file is processed only once. This
+ may change the meaning of the code, if the same header file is included in
+ different contexts (e.g., the header file includes #if directives and the
+ values are different when it is included in different places.)
+neverinclude: <G><P:->
+ Ignore header includes. Only works if relevant information is loaded from a
+ library.
+skipsysheaders: <G><P:->
+ Do not include header files in system directories (set by -sysdirs)
+
+
+===================================
+gnuextensions: <P:+>
+ ANSI C does not allow some language features supported by gcc and other
+ compilers. Use +gnuextensions to allow some of these extensions.
+
+prototypes
+===================================
+noparams: <M:--++>
+ A function declaration does not have a parameter list.
+oldstyle: <M:---+>
+ Function definition is in old style syntax. Standard prototype syntax is
+ preferred.
+
+systemfunctions
+===================================
+maintype: <P:+>
+ The function main does not match the expected type.
+exitarg: <M:-+++>
+ The argument to exit should be 0, EXIT_SUCCESS or EXIT_FAILURE
+
+declarations
+===================================
+shadow: <M:-+++>
+ An outer declaration is shadowed by the local declaration.
+incondefslib: <M:-+++>
+ A function, variable or constant previously defined in a library is
+ redefined with a different type.
+overload: <M:---->
+ A function, variable or constant defined in the library is redefined with a
+ different type.
+nestedextern: <M:-+++>
+ An extern declaration is used inside a function scope.
+redecl: <M:--++>
+ A function or variable is declared in more than one place. This is not
+ necessarily a problem, since the declarations are consistent.
+redef: <P:+>
+ A function or variable is redefined. One of the declarations should use
+ extern.
+imptype: <M:-+++>
+ A variable declaration has no explicit type. The type is implicitly int.
+
+directories
+===================================
+tmpdir <directory> [/tmp/]: <G><P:->
+ Set directory for writing temp files.
+*** Note: possible difference in the test result because of the default path here:
+larchpath <path> [.:/usr/local/share/splint/lib:/af10/evans/LCLintDev/lib:]:
+<G><P:->
+ Set path for searching for library files (overrides LARCH_PATH environment
+ variable).
+*** Note: possible difference in the test result because of the default path here:
+lclimportdir <directory> [.:/usr/local/share/splint/imports:/af10/evans/LCLintDe
+v/imports]: <G><P:->
+ Set directory to search for LCL import files (overrides LCLIMPORTDIR).
+sysdirs <path> [/usr/]: <G><P:->
+ Set directories for system files (default /usr/include). Separate
+ directories with path separator (colons in Unix, semi-colons in Windows).
+ Flag settings propagate to files in a system directory. If -sysdirerrors is
+ set, no errors are reported for files in system directories..
+skipansiheaders: <P:+>
+ Prevent inclusion of header files in a system directory with names that
+ match standard ANSI headers. The symbolic information in the standard
+ library is used instead. Flag in effect only if a library including the
+ ANSI library is loaded. The ANSI headers are:
+ assert, ctype, errno, float, limits, locale, math, setjmp, signal, stdarg,
+ stddef, stdio, stdlib, strings, string, time, and wchar..
+skipposixheaders: <P:+>
+ Prevent inclusion of header files in a system directory with names that
+ match standard POSIX headers. The symbolic information in the posix library
+ is used instead. The POSIX headers are:
+ dirent, fcntl, grp, pwd, termios, sys/stat, sys/times, sys/types,
+ sys/utsname, sys/wait, unistd, and utime..
+sysdirerrors: <M:---+>
+ Report errors in files in system directories (set by -sysdirs).
+sysdirexpandmacros: <P:+>
+ Expand macros in system directories regardless of other settings, except for
+ macros corresponding to names defined in a load library.
+I<directory>: <G><P:->
+ Add to C include path.
+S<directory>: <G><P:->
+ Add to spec path.
+
+export
+===================================
+exportany: <S><P:->
+ A variable, function or type is exported, but not specified.
+exportfcn: <M:---+>
+ A function is exported, but not specified.
+exportmacro: <M:---+>
+ A macro is exported, but not specified.
+exporttype: <M:---+>
+ A type is exported, but not specified.
+exportvar: <M:---+>
+ A variable is exported, but not specified.
+exportconst: <M:---+>
+ A constant is exported, but not specified.
+exportiter: <M:---+>
+ A constant is exported, but not specified.
+
+format
+===================================
+linelen <number> [80]: <P:->
+ Set length of messages (number of chars).
+indentspaces <number> [3]: <P:->
+ Set number of spaces to indent sub-messages.
+showcolumn: <P:+>
+ Show column number where error is found.
+parenfileformat: <P:->
+ Show column number where error is found.
+showfunc: <P:+>
+ Show name of function containing error.
+showallconjs: <P:->
+ When a library function is declared with multiple possible type, the
+ alternate types are shown only if +showallconjs.
+
+libraries
+===================================
+impconj: <P:->
+ Make all alternate types implicit (useful for making system libraries.
+
+<No Category>
+===================================
+expect <number> [0]: <G><P:->
+ Expect <int> code errors.
+lclexpect <number> [0]: <G><P:->
+ Expect <int> spec errors.
+partial: <-><S><P:->
+ Check as partial system (-specundef, -declundef, -exportlocal, don't check
+ macros in headers without corresponding .c files).
+
+headers
+===================================
+lh: <G><P:->
+ Generate .lh files.
+lcs: <G><P:+>
+ Generate .lcs files.
+
+help
+===================================
+warnflags: <P:+>
+ Command line sets flag in abnormal way
+warnrc: <P:+>
+ There was a problem reading an initialization file
+badflag: <P:+>
+ A flag is not recognized or used in an incorrect way
+fileextensions: <P:+>
+ Warn when command line file does not have a recognized extension.
+help: <G><P:->
+ Display help
+
+initializations
+===================================
+f <filename>: <G><P:->
+ Read an options file (instead of loading default ~/.splintc)
+i <filename>: <G><P:->
+ Set LCL initilization file.
+nof: <G><P:->
+ Do not read the default options file (~/.splintrc)
+commentchar <character> [@]: <P:->
+ Set the marker character for syntactic comments. Comments beginning with
+ /*<char> are interpreted by Splint, where <char> is the comment marker
+ character.
+
+limits
+===================================
+controlnestdepth <number> [63]: <M:---+>
+ Maximum number of control levels exceeded.
+stringliterallen <number> [4095]: <M:---+>
+ Maximum length of string literal exceeded.
+numstructfields <number> [1023]: <M:---+>
+ Maximum number of fields in a struct or union exceeded.
+numenummembers <number> [1023]: <M:---+>
+ Limit on maximum number of members of an enum is exceeded.
+includenest <number> [63]: <M:--++>
+ Maximum number of nested #include files exceeded.
+ansi89limits: <S><P:->
+ Check for violations of standard limits (controlnestdepth, stringliterallen,
+ includenest, numstructfields, numenummembers) based on ANSI89 standard.
+iso99limits: <S><P:->
+ Check for violations of standard limits (controlnestdepth, stringliterallen,
+ includenest, numstructfields, numenummembers) based on ISO99 standard.
+
+preproc
+===================================
+D<initializer>: <G><P:->
+ Passed to pre-processor.
+U<initializer>: <G><P:->
+ Passed to pre-processor.
+unrecogdirective: <P:+>
+ Pre-processor directive is not recognized.
+
+suppress
+===================================
+supcounts: <G><P:+>
+ The number of errors detected does not match number in /*@i<n>@*/..
+limit <number> [-1]: <P:->
+ Limit <int> consecutive repeated errors.
+
+
+===================================
+syntax: <P:+>
+ Code cannot be parsed. For help on parse errors, see splint -help
+ parseerrors.
+trytorecover: <P:->
+ Try to recover from parse error. It really means try - this doesn't usually
+ work.
+preproc: <P:+>
+ Preprocessing error.
+
+
+===================================
+type: <P:+>
+ Types are incompatible.
+stringliteraltoolong: <P:+>
+ A string literal is assigned to a char array too small to hold it.
+stringliteralnoroom: <M:-+++>
+ A string literal is assigned to a char array that is not big enough to hold
+ the null terminator.
+stringliteralsmaller: <M:--++>
+ A string literal is assigned to a char array that smaller than the string
+ literal needs.
+enummembers: <M:---->
+ Type of initial values for enum members must be int.
+formattype: <P:+>
+ Type of parameter is not consistent with corresponding code in format
+ string.
+formatconst: <M:-+++>
+ Format parameter is not known at compile-time. This can lead to security
+ vulnerabilities because the arguments cannot be type checked.
+formatcode: <P:+>
+ Format code in a format string is not valid.
+
+typeequivalence
+===================================
+forwarddecl: <M:+--->
+ Forward declarations of pointers to abstract representation match abstract
+ type.
+voidabstract: <M:+--->
+ A pointer to void is cast to a pointer to an abstract type (or vice versa).
+castfcnptr: <P:+>
+ A pointer to a function is cast to (or used as) a pointer to void (or vice
+ versa).
+charindex: <M:+--->
+ To allow char types to index arrays, use +charindex.
+enumindex: <M:---->
+ To allow enum types to index arrays, use +enumindex.
+boolint: <M:+--->
+ To make bool and int types equivalent, use +boolint.
+charint: <M:+--->
+ To make char and int types equivalent, use +charint.
+enumint: <M:++-->
+ To make enum and int types equivalent, use +enumint.
+floatdouble: <M:+--->
+ To make float and double types equivalent, use +floatdouble.
+ignorequals: <M:---->
+ To ignore type qualifiers in type comparisons use +ignorequals.
+duplicatequals: <P:+>
+ Duplicate type qualifiers not supported by ISO standard.
+ignoresigns: <M:---->
+ To ignore signs in type comparisons use +ignoresigns
+numliteral: <M:++-->
+ An int literal is used as any numeric type (including float and long long).
+ Use +numliteral to allow int literals to be used as any numeric type.
+charintliteral: <M:+--->
+ A character constant is used as an int. Use +charintliteral to allow
+ character constants to be used as ints. (This is safe since the actual type
+ of a char constant is int.)
+relaxquals: <M:++-->
+ To allow qualifier mismatches that are not dangerous, use +relaxquals.
+relaxtypes: <M:---->
+ To allow all numeric types to match, use +relaxtypes.
+charunsignedchar: <M:+--->
+ To allow char and unsigned char types to match use +charunsignedchar.
+matchanyintegral: <M:---->
+ To allow arbitrary integral types to match any integral type, use
+ +matchanyintegral.
+longunsignedintegral: <M:+--->
+ To allow arbitrary integral types to match long unsigned, use
+ +longunsignedintegral.
+longintegral: <M:---->
+ To allow arbitrary integral types to match long unsigned, use +longintegral.
+longunsignedunsignedintegral: <M:+--->
+ To allow arbitrary unsigned integral types to match long unsigned, use
+ +longunsignedunsignedintegral.
+longsignedintegral: <M:---->
+ To allow arbitrary signed integral types to match long unsigned, use
+ +longsignedintegral.
+zeroptr: <P:+>
+ Tread 0 as a pointer.
+zerobool: <M:++-->
+ Treat 0 as a boolean.
+
+unrecognized
+===================================
+repeatunrecog: <P:->
+ Identifier used in code has not been declared. (Message repeated for future
+ uses in this file.)
+sysunrecog: <P:+>
+ Identifier used in code has not been declared. (Message repeated for future
+ uses in this file.) Use +gnuextensions to make Splint recognize some
+ keywords that are gnu extensions.
+unrecog: <P:+>
+ Identifier used in code has not been declared.
+
+declarations
+===================================
+annotationerror: <P:+>
+ A declaration uses an invalid annotation.
+commenterror: <P:+>
+ A syntactic comment is used inconsistently.
+
+warnuse
+===================================
+warnuse: <P:+>
+ Declaration marked with warn clause is used (can be suppresed by more
+ specific flags).
+bufferoverflow: <M:-+++>
+ Use of function that may lead to buffer overflow.
+bufferoverflowhigh: <M:++++>
+ Use of function that may lead to buffer overflow.
+implementationoptional: <M:--++>
+ Use of a declarator that is implementation optional, not required by ISO99.
+legacy: <M:---->
+ Use of a declarator that is marked as a legacy entry in the Unix Standard.
+multithreaded: <M:--++>
+ Non-reentrant function should not be used in multithreaded code.
+portability: <M:--++>
+ Use of function that may have implementation-dependent behavior.
+superuser: <M:--++>
+ Call to function restricted to superusers.
+toctou: <M:---+>
+ Possible time of check, time of use vulnerability.
+unixstandard: <M:---->
+ Use of function that need not be provided by UNIX implementations
+
+its4
+===================================
+its4mostrisky: <S><P:->
+ Security vulnerability classified as most risky in its4 database.
+its4veryrisky: <S><P:->
+ Security vulnerability classified as very risky in its4 database.
+its4risky: <S><P:->
+ Security vulnerability classified as risky in its4 database.
+its4moderate: <S><P:->
+ Security vulnerability classified as moderate risk in its4 database.
+its4low: <S><P:->
+ Security vulnerability classified as risky in its4 database.
+
+syncomments
+===================================
+nocomments: <P:->
+ Ignore all stylized comments.
+noaccess: <P:->
+ Ignore access comments.
+unrecogcomments: <P:+>
+ Word after a stylized comment marker does not correspond to a stylized
+ comment.
+unrecogflagcomments: <P:+>
+ Semantic comment attempts to set a flag that is not recognized.
+tmpcomments: <M:---->
+ Interpret t comments (ignore errors in lines marked with /*@t<n>@*/.
+lintcomments: <P:+>
+ Interpret traditional lint comments (/*FALLTHROUGH*/, /*NOTREACHED*/).
+warnlintcomments: <M:-+++>
+ A traditional lint comment is used. Some traditional lint comments are
+ interpreted by Splint to enable easier checking of legacy code. It is
+ preferable to replace these comments with the suggested Splint alternative.
+
+comments
+===================================
+continuecomment: <P:->
+ A line continuation marker (\) appears inside a comment on the same line as
+ the comment close. Preprocessors should handle this correctly, but it causes
+ problems for some preprocessors.
+slashslashcomment: <P:->
+ A // comment is used. ISO C99 allows // comments, but earlier standards did
+ not.
+nestcomment: <P:+>
+ A comment open sequence (/*) appears within a comment. This usually means
+ an earlier comment was not closed.
+
+display
+===================================
+quiet: <P:->
+ Suppress herald and error count.
+usestderr: <P:->
+ Send error messages to standard error (instead of standard out).
+showsummary: <P:->
+ Show summary of all errors reported and suppressed.
+showscan: <P:->
+ Show file names are they are processed.
+stats: <G><P:->
+ Display lines processed and time.
+timedist: <G><P:->
+ Display time distribution.
+showalluses: <G><P:->
+ Show sorted list of uses of all globals.
+
+hints
+===================================
+hints: <P:+>
+ Provide a hint the first time a particular warning appears
+forcehints: <P:->
+ Provide a hint for every warning
+
+debug
+===================================
+bugslimit <number> [3]: <P:->
+ Set maximum number of bugs detected before giving up.
+debugfcnconstraint: <M:---->
+ Perform buffer overflow checking even if the errors would be surpressed.
+grammar: <-><S><P:->
+ Debug parsing.
+keep: <-><P:->
+ Do not delete temporary files.
+nopp: <-><P:->
+ Do not pre-process input files.
+showsourceloc: <-><P:->
+ Display the source code location where a warning is produced.
+