Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Checker

Guideline

array-index-range ARR30-C. Do not form or use out-of-bounds pointers or array subscripts
array-size-global ARR02-C. Explicitly specify array bounds, even if implicitly defined by an initializer
bitfield-type INT12-C. Do not make assumptions about the type of a plain int bit-field when used in an expression
bitop-type INT13-C. Use bitwise operators only on unsigned operands
compound-ifelse EXP19-C. Use braces for the body of an if, for, or while statement
compound-loop EXP19-C. Use braces for the body of an if, for, or while statement
empty-parameter-list DCL20-C. Explicitly specify void when a function accepts no arguments
enum-implicit-value INT09-C. Ensure enumeration constants map to unique values
error-information-unused-computed EXP12-C. Do not ignore values returned by functions
evaluation-order EXP30-C. Do not depend on the order of evaluation for side effects
evaluation-order EXP10-C. Do not depend on the order of evaluation of subexpressions or the order in which side effects take place
file-dereference FIO38-C. Do not copy a FILE object
float-comparison FLP02-C. Avoid using floating-point numbers when precise computation is needed
float-division-by-zero FLP03-C. Detect and handle floating-point errors
for-loop-float FLP30-C. Do not use floating-point variables as loop counters
function-pointer-integer-cast INT36-C. Converting a pointer to integer or integer to pointer
function-pointer-integer-cast-implicit INT36-C. Converting a pointer to integer or integer to pointer
function-prototype DCL07-C. Include the appropriate type information in function declarators
function-return-type DCL31-C. Declare identifiers before using them
future-library-use DCL37-C. Do not declare or define a reserved identifier
future-library-use DCL41-C. Do not declare variables inside a switch statement before the first case label
global-object-scope DCL15-C. Declare file-scope objects or functions that do not need external linkage as static
global-object-scope DCL19-C. Minimize the scope of variables and functions
implicit-function-declaration DCL31-C. Declare identifiers before using them
implicit-function-declaration DCL07-C. Include the appropriate type information in function declarators
int-division-by-zero INT33-C. Ensure that division and remainder operations do not result in divide-by-zero errors
int-modulo-by-zero INT33-C. Ensure that division and remainder operations do not result in divide-by-zero errors
integer-overflow INT30-C. Ensure that unsigned integer operations do not wrap
integer-overflow INT32-C. Ensure that operations on signed integers do not result in overflow
integer-overflow INT08-C. Verify that all integer values are in range
invalid-free MEM34-C. Only free memory allocated dynamically
language-override DCL37-C. Do not declare or define a reserved identifier
language-override DCL41-C. Do not declare variables inside a switch statement before the first case label
language-override-c99 DCL37-C. Do not declare or define a reserved identifier
language-override-c99 DCL41-C. Do not declare variables inside a switch statement before the first case label
local-object-scope DCL19-C. Minimize the scope of variables and functions
logop-side-effect EXP02-C. Be aware of the short-circuit behavior of the logical AND and OR operators
long-suffix DCL16-C. Use "L," not "l," to indicate a long value
macro-argument-hash PRE32-C. Do not use preprocessor directives in invocations of function-like macros
macro-function-like PRE00-C. Prefer inline or static functions to function-like macros
macro-parameter-parentheses PRE01-C. Use parentheses within macros around parameter names
missing-else MSC01-C. Strive for logical completeness
mline-comment MSC04-C. Use comments consistently and in a readable fashion
multiple-include PRE06-C. Enclose header files in an inclusion guard
null-dereferencing EXP34-C. Do not dereference null pointers
null-dereferencing ARR30-C. Do not form or use out-of-bounds pointers or array subscripts
octal-constant DCL18-C. Do not begin integer constants with 0 when specifying a decimal value
parameter-missing-const DCL00-C. Const-qualify immutable objects
parameter-missing-const DCL13-C. Declare function parameters that are pointers to values not changed by the function as const
pointer-integral-cast INT36-C. Converting a pointer to integer or integer to pointer
pointer-integral-cast-implicit INT36-C. Converting a pointer to integer or integer to pointer
pointer-subtraction ARR36-C. Do not subtract or compare two pointers that do not refer to the same array
pointered-deallocation DCL30-C. Declare objects with appropriate storage durations
pointered-deallocation ARR30-C. Do not form or use out-of-bounds pointers or array subscripts
reserved-declaration DCL37-C. Do not declare or define a reserved identifier
reserved-declaration DCL41-C. Do not declare variables inside a switch statement before the first case label
reserved-declaration-c99 DCL37-C. Do not declare or define a reserved identifier
reserved-declaration-c99 DCL41-C. Do not declare variables inside a switch statement before the first case label
reserved-identifier DCL37-C. Do not declare or define a reserved identifier
reserved-identifier DCL41-C. Do not declare variables inside a switch statement before the first case label
return-implicit MSC37-C. Ensure that control never reaches the end of a non-void function
sizeof EXP44-C. Do not rely on side effects in operands to sizeof, _Alignof, or _Generic
sline-comment MSC04-C. Use comments consistently and in a readable fashion
sline-splicing MSC04-C. Use comments consistently and in a readable fashion
statement-sideeffect MSC12-C. Detect and remove code that has no effect or is never executed
static-declaration DCL36-C. Do not declare an identifier with conflicting linkage classifications
stdlib-macro-ato MSC24-C. Do not use deprecated or obsolescent functions
stdlib-macro-atoll MSC24-C. Do not use deprecated or obsolescent functions
stdlib-use-ato MSC24-C. Do not use deprecated or obsolescent functions
stdlib-use-atoll MSC24-C. Do not use deprecated or obsolescent functions
Supported, but no explicit checker DCL38-C. Use the correct syntax when declaring a flexible array member
Supported, but no explicit checker EXP32-C. Do not access a volatile object through a nonvolatile reference
Supported, but no explicit checker EXP36-C. Do not cast pointers into more strictly aligned pointer types
Supported, but no explicit checker EXP37-C. Call functions with the correct number and type of arguments
Supported, but no explicit checker EXP43-C. Avoid undefined behavior when using restrict-qualified pointers
Supported, but no explicit checker EXP45-C. Do not perform assignments in selection statements
Supported, but no explicit checker EXP46-C. Do not use a bitwise operator with a Boolean-like operand
Supported, but no explicit checker INT31-C. Ensure that integer conversions do not result in lost or misinterpreted data
Supported, but no explicit checker INT34-C. Do not shift an expression by a negative number of bits or by greater than or equal to the number of bits that exist in the operand
Supported, but no explicit checker FLP34-C. Ensure that floating-point conversions are within range of the new type
Supported, but no explicit checker FLP36-C. Preserve precision when converting integral values to floating-point type
Supported, but no explicit checker ARR37-C. Do not add or subtract an integer to a pointer to a non-array object
Supported, but no explicit checker ARR38-C. Guarantee that library functions do not form invalid pointers
Supported, but no explicit checker STR30-C. Do not attempt to modify string literals
Supported, but no explicit checker STR31-C. Guarantee that storage for strings has sufficient space for character data and the null terminator
Supported, but no explicit checker STR32-C. Do not pass a non-null-terminated character sequence to a library function that expects a string
Supported, but no explicit checker STR37-C. Arguments to character-handling functions must be representable as an unsigned char
Supported, but no explicit checker MEM30-C. Do not access freed memory
Supported, but no explicit checker MEM31-C. Free dynamically allocated memory when no longer needed
Supported, but no explicit checker MEM33-C. Allocate and copy structures containing a flexible array member dynamically
Supported, but no explicit checker MEM35-C. Allocate sufficient memory for an object
Supported, but no explicit checker MEM36-C. Do not modify the alignment of objects by calling realloc()
Supported, but no explicit checker FIO37-C. Do not assume that fgets() or fgetws() returns a nonempty string when successful
Supported, but no explicit checker FIO39-C. Do not alternately input and output from a stream without an intervening flush or positioning call
Supported, but no explicit checker FIO42-C. Close files when they are no longer needed
Supported, but no explicit checker ENV33-C. Do not call system()
Supported, but no explicit checker SIG30-C. Call only asynchronous-safe functions within signal handlers
Supported, but no explicit checker SIG31-C. Do not access shared objects in signal handlers
Supported, but no explicit checker SIG34-C. Do not call signal() from within interruptible signal handlers
Supported, but no explicit checker ERR30-C. Set errno to zero before calling a library function known to set errno, and check errno only after the function returns a value indicating failure
Supported, but no explicit checker ERR33-C. Detect and handle standard library errors
Supported, but no explicit checker CON30-C. Clean up thread-specific storage
Supported, but no explicit checker CON31-C. Do not destroy a mutex while it is locked
Supported, but no explicit checker CON32-C. Prevent data races when accessing bit-fields from multiple threads
Supported, but no explicit checker CON33-C. Avoid race conditions when using library functions
Supported, but no explicit checker CON35-C. Avoid deadlock by locking in a predefined order
Supported, but no explicit checker CON37-C. Do not call signal() in a multithreaded program
Supported, but no explicit checker CON39-C. Do not join or detach a thread that was previously joined or detached
Supported, but no explicit checker MSC30-C. Do not use the rand() function for generating pseudorandom numbers
Supported, but no explicit checker MSC32-C. Properly seed pseudorandom number generators
Supported, but no explicit checker MSC33-C. Do not pass invalid data to the asctime() function
Supported, but no explicit checker MSC38-C. Do not treat a predefined identifier as an object if it might only be implemented as a macro
Supported, but no explicit checker MSC40-C. Do not violate constraints
Supported, but no explicit checker CON01-C. Acquire and release synchronization primitives in the same module, at the same level of abstraction
Supported, but no explicit checker CON06-C. Ensure that every mutex outlives the data it protects
Supported, but no explicit checker DCL01-C. Do not reuse variable names in subscopes
Supported, but no explicit checker DCL10-C. Maintain the contract between the writer and caller of variadic functions
Supported, but no explicit checker DCL23-C. Guarantee that mutually visible identifiers are unique
Supported, but no explicit checker EXP03-C. Do not assume the size of a structure is the sum of the sizes of its members
Supported, but no explicit checker EXP08-C. Ensure pointer arithmetic is used correctly
Supported, but no explicit checker EXP11-C. Do not make assumptions regarding the layout of structures with bit-fields
Supported, but no explicit checker EXP20-C. Perform explicit tests to determine success, true and false, and equality
Supported, but no explicit checker FLP04-C. Check floating-point inputs for exceptional values
Supported, but no explicit checker FLP06-C. Convert integers to floating point for floating-point operations
Supported, but no explicit checker INT07-C. Use only explicitly signed or unsigned char type for numeric values
Supported, but no explicit checker INT18-C. Evaluate integer expressions in a larger size before comparing or assigning to that size
Supported, but no explicit checker MEM01-C. Store a new value in pointers immediately after free()
Supported, but no explicit checker MEM04-C. Beware of zero-length allocations
Supported, but no explicit checker MEM07-C. Ensure that the arguments to calloc(), when multiplied, do not wrap
Supported, but no explicit checker MSC13-C. Detect and remove unused values
Supported, but no explicit checker MSC15-C. Do not depend on undefined behavior
Supported, but no explicit checker MSC21-C. Use robust loop termination conditions
Supported, but no explicit checker MSC23-C. Beware of vendor-specific library and language differences
Supported, but no explicit checker PRE09-C. Do not replace secure functions with deprecated or obsolescent functions
Supported, but no explicit checker STR00-C. Represent characters using an appropriate type
Supported, but no explicit checker STR04-C. Use plain char for characters in the basic character set
Supported, but no explicit checker STR09-C. Don't assume numeric values for expressions with type plain character
Supported, but no explicit checker STR11-C. Do not specify the bound of a character array initialized with a string literal
switch-clause-break MSC17-C. Finish every set of statements associated with a case label with a break statement
switch-default MSC01-C. Strive for logical completeness
switch-label MSC20-C. Do not use a switch statement to transfer control into a complex block
switch-skipped-code DCL41-C. Do not declare variables inside a switch statement before the first case label
trigraph PRE07-C. Avoid using repeated question marks
type-compatibility DCL40-C. Do not create incompatible declarations of the same function or object
type-specifier DCL31-C. Declare identifiers before using them
uninitialized-local-read EXP33-C. Do not read uninitialized memory
uninitialized-variable-use EXP33-C. Do not read uninitialized memory
unreachable-code MSC12-C. Detect and remove code that has no effect or is never executed