Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Info
titleGenerated Content

This page is automatically generated from the "Automated Detection" sections in the individual guidelines. Do not modify this page directly.

Version number:
1.2

C checkers Checker

Guideline

CC2.API08API08-C. Avoid parameter names in a function prototype
CC2.ARR02ARR02-C. Explicitly specify array bounds, even if implicitly defined by an initializer
CC2.DCL00DCL00-C. Const-qualify immutable objects
CC2.DCL01DCL01-C. Do not reuse variable names in subscopes
CC2.DCL02DCL02-C. Use visually distinct identifiers
CC2.DCL03DCL03-C. Use a static assertion to test the value of a constant expression
CC2.DCL04DCL04-C. Do not declare more than one variable per declaration
CC2.DCL06DCL06-C. Use meaningful symbolic constants to represent literal values
CC2.DCL07DCL07-C. Include the appropriate type information in function declarators
CC2.DCL11DCL11-C. Understand the type issues associated with variadic functions
CC2.DCL13DCL13-C. Declare function parameters that are pointers to values not changed by the function as const
CC2.DCL15DCL15-C. Declare file-scope objects or functions that do not need external linkage as static
CC2.DCL16DCL16-C. Use "L," not "l," to indicate a long value
CC2.DCL19DCL19-C. Minimize the scope of variables and functions
CC2.DCL31DCL31-C. Declare identifiers before using them
CC2.DCL36DCL36-C. Do not declare an identifier with conflicting linkage classifications
CC2.DCL37DCL37-C. Do not declare or define a reserved identifier
CC2.ERR01ERR01-C. Use ferror() rather than errno to check for FILE stream errors
CC2.EXP00EXP00-C. Use parentheses for precedence of operation
CC2.EXP05EXP05-C. Do not cast away a const qualification
CC2.EXP06EXP44-C. Do not rely on side effects in operands to sizeof, _Alignof, or _Generic
CC2.EXP09EXP09-C. Use sizeof to determine the size of a type or variable
CC2.EXP12EXP12-C. Do not ignore values returned by functions
CC2.EXP13EXP13-C. Treat relational and equality operators as if they were nonassociative
CC2.EXP14EXP14-C. Beware of integer promotion when performing bitwise operations on integer types smaller than int
CC2.EXP18EXP45-C. Do not perform assignments in selection statements
CC2.EXP21VOID EXP21EXP45-C. Place constants on the left of equality comparisonsDo not perform assignments in selection statements
CC2.EXP30EXP30-C. Do not depend on the order of evaluation for side effects
CC2.EXP31PRE31-C. Avoid side effects in arguments to unsafe macros
CC2.EXP36EXP36-C. Do not cast pointers into more strictly aligned pointer types
CC2.EXP37EXP37-C. Call functions with the correct number and type of arguments
CC2.FIO34FIO34-C. Distinguish between characters read from a file and EOF or WEOF
CC2.FLP00FLP00-C. Understand the limitations of floating-point numbers
CC2.FLP30FLP30-C. Do not use floating-point variables as loop counters
CC2.INT02INT02-C. Understand integer conversion rules
CC2.INT07INT07-C. Use only explicitly signed or unsigned char type for numeric values
CC2.INT09INT09-C. Ensure enumeration constants map to unique values
CC2.INT12INT12-C. Do not make assumptions about the type of a plain int bit-field when used in an expression
CC2.INT13INT13-C. Use bitwise operators only on unsigned operands
CC2.INT34INT34-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
CC2.MEM02MEM02-C. Immediately cast the result of a memory allocation function call into a pointer to the allocated type
CC2.MSC04MSC04-C. Use comments consistently and in a readable fashion
CC2.MSC05MSC05-C. Do not manipulate time_t typed values directly
CC2.MSC12MSC12-C. Detect and remove code that has no effect
CC2.MSC17MSC17-C. Finish every set of statements associated with a case label with a break statement
CC2.MSC20MSC20-C. Do not use a switch statement to transfer control into a complex block
CC2.MSC30MSC30-C. Do not use the rand() function for generating pseudorandom numbers
CC2.MSC34MSC24-C. Do not use deprecated or obsolescent functions

CC2.MSC40

MSC06-C. Beware of compiler optimizations
CC2.PRE00PRE00-C. Prefer inline or static functions to function-like macros
CC2.PRE01PRE01-C. Use parentheses within macros around parameter names
CC2.PRE02PRE02-C. Macro replacement lists should be parenthesized
CC2.PRE03PRE03-C. Prefer typedefs to defines for encoding types
CC2.PRE04PRE04-C. Do not reuse a standard header file name
CC2.PRE06PRE06-C. Enclose header files in an inclusion guard
CC2.PRE07PRE07-C. Avoid using repeated question marks
CC2.PRE08PRE08-C. Guarantee that header file names are unique
CC2.PRE12PRE12-C. Do not define unsafe macros
CC2.PRE31PRE31-C. Avoid side effects in arguments to unsafe macros
CC2.PRE32PRE32-C. Do not use preprocessor directives in invocations of function-like macros
CC2.STR04STR04-C. Use plain char for characters in the basic character set
CC2.STR05STR05-C. Use pointers to const when referring to string literals
CC2.STR10STR10-C. Do not concatenate different type of string literals
CC2.STR34STR34-C. Cast characters to unsigned char before converting to larger integer sizes
CC2.STR36STR11-C. Do not specify the bound of a character array initialized with a string literal
CC2.STR37STR37-C. Arguments to character-handling functions must be representable as an unsigned char