Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Generated Content
Info
title
Note

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

Version number:
1.1

was automatically generated and should not be edited.

Note

The information on this page was provided by outside contributors and has not been verified by SEI CERT.

Tip

The table below can be re-ordered, by clicking column headers.

...

Include Page
ECLAIR_V
ECLAIR_V

Checker

Guideline

CC2.ARR02

C checkers

Guideline

araydecl ARR02-C. Explicitly specify array bounds, even if implicitly defined by an initializer
araydecl CC2.DCL00 STR36 DCL00-C. Do not specify the bound of a character array initialized with a string literalConst-qualify immutable objects
CC2.DCL01 DCL01

bitftype

INT12-C. Do not make assumptions about the type of a plain int bit-field when used in an expression

callargs

EXP37-C. Call functions with the correct number and type of arguments

callfmt

DCL11-C. Understand the type issues associated with variadic functions

castexpr

EXP05-C. Do not cast away a const qualification

reuse variable names in subscopes
CC2.DCL02 DCL02-C. Use visually distinct identifiers
CC2.DCL03 DCL03-C. Use a static assertion to test the value of a constant expression
CC2.DCL04 DCL04

castexpr

EXP36-C. Do not convert pointers into more strictly aligned pointer types

charcast

STR34-C. Cast characters to unsigned char before converting to larger integer sizes

charsgnd

STR04-C. Use plain char for characters in the basic character set

cnstpnte

DCL00-C. Const-qualify immutable objects

declare more than one variable per declaration
CC2.DCL06 DCL06-C. Use meaningful symbolic constants to represent literal values
CC2.DCL07 DCL07-C. Include the appropriate type information in function declarators
CC2.DCL11 DCL11-C. Understand the type issues associated with variadic functions
CC2.DCL13 cnstpnte DCL13-C. Declare function parameters that are pointers to values not changed by the function as const
cplxcall CC2.DCL15 FLP31 DCL15-C. Do not call functions expecting real values with complex values

declgrup_srceline

DCL04-C. Do not declare more than one variable per declaration

declhidn

DCL01-C. Do not reuse variable names in subscopes

decltype

DCL07-C. Include the appropriate type information in function declarators

Declare file-scope objects or functions that do not need external linkage as static
CC2.DCL16 DCL16-C. Use "L," not "l," to indicate a long value
CC2.DCL19 DCL19-C. Minimize the scope of variables and functions
CC2.DCL31 decltype DCL31-C. Declare identifiers before using them

dtrigraf

PRE07-C. Avoid using repeated question marks

enuminit

INT09-C. Ensure enumeration constants map to unique values

evalordr

EXP30-C. Do not depend on order of evaluation between sequence points

exprctxt

EXP18-C. Do not perform assignments in selection statements

exprprns

EXP00-C. Use parentheses for precedence of operation

CC2.DCL36 DCL36-C. Do not declare an identifier with conflicting linkage classifications
CC2.DCL37 DCL37-C. Do not declare or define a reserved identifier
CC2.ERR01 ERR01-C. Use ferror() rather than errno to check for FILE stream errors
CC2.EXP00 EXP00-C. Use parentheses for precedence of operation
CC2.EXP05 EXP05-C. Do not cast away a const qualification
CC2.EXP06 EXP44-C. Do not rely on side effects in operands to sizeof, _Alignof, or _Generic
CC2.EXP09 EXP09-C. Use sizeof to determine the size of a type or variable
CC2.EXP12 EXP12-C. Do not ignore values returned by functions
CC2.EXP13 exprprns EXP13-C. Treat relational and equality operators as if they were nonassociative

filscope

DCL15-C. Declare file-scope objects or functions that do not need external linkage as static

filscope

DCL19-C. Minimize the scope of variables and functions

floateql

FLP06-C. Understand that floating-point arithmetic in C is inexact

forcntrl

FLP30-C. Do not use floating-point variables as loop counters

funcalls

EXP09-C. Use sizeof to determine the size of a type or variable

funcalls

MEM02-C. Immediately cast the result of a memory allocation function call into a pointer to the allocated type

funcalls

MEM08-C. Use realloc() only to resize dynamically allocated arrays

hedrname

PRE04-C. Do not reuse a standard header file name

hedrname

PRE08-C. Guarantee that header file names are unique

CC2.EXP14 EXP14-C. Beware of integer promotion when performing bitwise operations on integer types smaller than int
CC2.EXP18 EXP45-C. Do not perform assignments in selection statements
CC2.EXP21 EXP45-C. Do not perform assignments in selection statements
CC2.EXP30 EXP30-C. Do not depend on the order of evaluation for side effects
CC2.EXP31 PRE31-C. Avoid side effects in arguments to unsafe macros
CC2.EXP36 EXP36-C. Do not cast pointers into more strictly aligned pointer types
CC2.EXP37 EXP37-C. Call functions with the correct number and type of arguments
CC2.FIO34 FIO34-C. Distinguish between characters read from a file and EOF or WEOF
CC2.FLP00 FLP00-C. Understand the limitations of floating-point numbers
CC2.FLP30 FLP30-C. Do not use floating-point variables as loop counters
CC2.INT02 INT02-C. Understand integer conversion rules
CC2.INT07 idb_charplan INT07-C. Use only explicitly signed or unsigned char type for numeric values

idb_charplan

CC2.INT09 INT09STR37-C. Arguments to character handling functions must be representable as an unsigned char

idntsiml

DCL02-C. Use visually distinct identifiers

ignrrtrn

FIO04-C. Detect and handle input and output errors

ignrrtrn

FIO34-C. Use int to capture the return value of character IO functions

ignrtrn

EXP12-C. Do not ignore values returned by functions

inclgard

PRE06-C. Enclose header files in an inclusion guard

ltrlsynt

DCL16-C. Use "L," not "l," to indicate a long value

macrbody

PRE01-C. Use parentheses within macros around parameter names

macrbody

PRE02-C. Macro replacement lists should be parenthesized

macrbody

PRE12-C. Do not define unsafe macros

macrcall

DCL03-C. Use a static assertion to test the value of a constant expression

macrcall

EXP31-C. Avoid side effects in assertions

Ensure enumeration constants map to unique values
CC2.INT12 INT12-C. Do not make assumptions about the type of a plain int bit-field when used in an expression
CC2.INT13 INT13-C. Use bitwise operators only on unsigned operands
CC2.INT34 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
CC2.MEM02 MEM02-C. Immediately cast the result of a memory allocation function call into a pointer to the allocated type
CC2.MSC04 MSC04-C. Use comments consistently and in a readable fashion
CC2.MSC05 MSC05-C. Do not manipulate time_t typed values directly
CC2.MSC12 MSC12-C. Detect and remove code that has no effect or is never executed
CC2.MSC17 MSC17-C. Finish every set of statements associated with a case label with a break statement
CC2.MSC20 MSC20-C. Do not use a switch statement to transfer control into a complex block
CC2.MSC30 MSC30-C. Do not use the rand() function for generating pseudorandom numbers
CC2.MSC34 MSC24-C. Do not use deprecated or obsolescent functions
CC2.PRE00 macrcall PRE00-C. Prefer inline or static functions to function-like macros
macrcall CC2.PRE01 PRE31 PRE01-C. Avoid side effects in arguments to unsafe macros

macrcall

PRE32-C. Do not use preprocessor directives inside macro arguments

Use parentheses within macros around parameter names
CC2.PRE02 PRE02-C. Macro replacement lists should be parenthesized
CC2.PRE03 macrexpd PRE03-C. Prefer typedefs to defines for encoding non-pointer types
noeffect CC2.PRE04 MSC12 PRE04-C. Detect and remove code that has no effect

nomagicc

DCL06-C. Use meaningful symbolic constants to represent literal values

optrargs

EXP21-C. Place constants on the left of equality comparisons

optrargs

INT13-C. Use bitwise operators only on unsigned operands

Do not reuse a standard header file name
CC2.PRE06 PRE06-C. Enclose header files in an include guard
CC2.PRE07 PRE07-C. Avoid using repeated question marks
CC2.PRE08 PRE08-C. Guarantee that header file names are unique
CC2.PRE12 PRE12

resvidnt_resvmacr

DCL37-C. Do not declare or define a reserved identifierdefine unsafe macros
CC2.PRE31 PRE31-C. Avoid side effects in arguments to unsafe macros
CC2.PRE32 PRE32

shiftrhs

INT34-C. Do not shift a negative number of bits or more bits than exist in the operanduse preprocessor directives in invocations of function-like macros
CC2.STR04 STR04

stlibuse

ERR01-C. Use ferror() rather than errno to check for FILE stream errors

stlibuse

FIO07-C. Prefer fseek() to rewind()

stlibuse

FIO12-C. Prefer setvbuf() to setbuf()

stlibuse

MSC30-C. Do not use the rand() function for generating pseudorandom numbers

plain char for characters in the basic character set
CC2.STR05 STR05-C. Use pointers to const when referring to string literals
CC2.STR10 stltccat STR10-C. Do not concatenate different type of string literals
swchsynt CC2.STR34 MSC17 STR34-C. Finish every set of statements associated with a case label with a break statementCast characters to unsigned char before converting to larger integer sizes
CC2.STR36 STR11

swchsynt

MSC20-C. Do not use a switch statement to transfer control into a complex blockspecify the bound of a character array initialized with a string literal
CC2.STR37 STR37

unexfct

EXP06-C. Operands to the sizeof operator should not contain side effects

utypbtws

EXP14-C. Beware of integer promotion when performing bitwise operations on integer types smaller than int Arguments to character-handling functions must be representable as an unsigned char