MISRA C:2012 checker reference - certified

These checkers detect violations of the MISRA C:2012 standard.

Notes

MISRA C:2012 C90

Issue code Description Rule Issued Improved

ABV.GENERAL

Buffer Overflow - Array Index Out of Bounds 18.1 9.6 10.1, 10.3, 10.4, 11.0, 11.1, 11.2, 2017.3, 2021.2, 2022.1

EFFECT

Statement has no effect 2.2 Pre-9.2

FMM.MIGHT

Freeing Mismatched Memory - possible 22.2 Pre-9.2 10.1

FMM.MUST

Freeing Mismatched Memory 22.2 Pre-9.2 10.1

FNH.MIGHT

Freeing Non-Heap Memory - possible 22.2 Pre-9.2

FNH.MUST

Freeing Non-Heap Memory 22.2 Pre-9.2

FREE.INCONSISTENT

Inconsistent Freeing of Memory 22.1 Pre-9.2

FUM.GEN.MIGHT

Freeing Unallocated Memory - possible 22.2 Pre-9.2

FUM.GEN.MUST

Freeing Unallocated Memory 22.2 Pre-9.2

FUNCRET.GEN

Non-void function does not return value 17.4 Pre-9.2

FUNCRET.IMPLICIT

Non-void function implicitly returning int does not return value 17.4 Pre-9.2

INVARIANT_CONDITION.GEN

Invariant expression in a condition 14.3 10.1 10.2, 2020.1

INVARIANT_CONDITION.UNREACH

Invariant expression in a condition 14.3 10.1 10.2

LA_UNUSED

Label unused 2.6 Pre-9.2

LOCRET.ARG

Function returns address of local variable 18.6 Pre-9.2 9.5

LOCRET.GLOB

Function returns address of local variable 18.6 Pre-9.2 9.5

LOCRET.RET

Function returns address of local variable 18.6 Pre-9.2 9.5

LV_UNUSED.GEN

Local variable unused 2.2 Pre-9.2 2020.3

MISRA.ASM.ENCAPS

Assembly language is not isolated. Dir. 4.3 9.1

MISRA.ASSIGN.OVERLAP

Object is assigned to an overlapping object 19.1 9.5 2019.1

MISRA.ASSIGN.SUBEXPR.2012

The result of an assignment operator is used 13.4 11.3 2022.1

MISRA.BITFIELD.SIGNED

Length of a named signed bit-field is less than 2 6.2 9.1 9.2, 10.4

MISRA.BITFIELD.TYPE

Type of bit-field is not signed/unsigned integer 6.1 9.1 9.2, 11.0, 2021.2

MISRA.BREAK_OR_GOTO.MULTIPLE.2012

Iteration statement has more than one break or goto for loop termination. 15.4 10.2

MISRA.BUILTIN_NUMERIC

Builtin numeric type is used Dir. 4.6 9.1 9.2, 9.2 SR1, 9.5

MISRA.CAST.CONST

Cast operation removes const or volatile modifier from a pointer or reference 11.8 9.1 9.2, 10.4, 2022.1

MISRA.CAST.FUNC_PTR.2012

Conversion performed between a pointer to a function and another incompatible type 11.1 10.2 10.3

MISRA.CAST.INCOMPLETE_PTR_TO_ANY.2012

Conversion performed between a pointer to an incomplete type and a different type 11.2 10.2 10.3

MISRA.CAST.OBJ_PTR_TO_INT.2012

Conversion performed between a pointer to an object and an integer type 11.4 10.2 10.3

MISRA.CAST.OBJ_PTR_TO_NON_INT.2012

A cast between a pointer to object and a non-integer arithmetic type 11.7 10.2

MISRA.CAST.OBJ_PTR_TO_OBJ_PTR.2012

Cast between a pointer to object type and a pointer to a different object type 11.3 10.2 10.3, 2017

MISRA.CAST.VOID_PTR_TO_INT.2012

Cast between a pointer to void and an arithmetic type 11.6 10.2 2021.2

MISRA.CAST.VOID_PTR_TO_OBJ_PTR.2012

Conversion performed from a pointer to void to a pointer to an object 11.5 10.2 10.3

MISRA.CHAR.TRIGRAPH

Trigraph usage 4.2 9.1 9.2

MISRA.COMMA

Comma operator is used 12.3 9.1

MISRA.COMP.WRAPAROUND

Wrap-around in a condition 12.4 9.2 9.5, 2020.3

MISRA.CT.UNIQUE.ID.2012

Identifier clashes with tag name 5.7 2021.2

MISRA.DECL.ARRAY_SIZE

Declaration of array with unknown size 8.11 9.1

MISRA.DECL.NO_TYPE

Declaration without a type 8.1 9.1 9.2 SR1

MISRA.DEFINE.FUNC

Function-like macro definition Dir. 4.9 9.1

MISRA.DEFINE.NOT_DISTINCT.C90.2012

Identifier name is too long 5.4 2017.1

MISRA.DEFINE.SHARP

# or ## operator in a macro definition 20.10 9.1

MISRA.DEFINE.SHARP.ORDER.2012

Unspecified order of evaluation of multiple '#' or '##' 20.11 11.3

MISRA.DEFINE.SHARP.REPLACE.2012

A macro parameter used as an operand to the '#' or '##' operators, which is itself subject to further macro replacement, shall only be used as an operand to these operators 20.12 11.3

MISRA.DEFINE.WRONGNAME

Usage of a name from the standard library for naming a macro 21.1 9.1 9.2 SR2, 9.5

MISRA.DEFINE.WRONGNAME.C90.2012

A macro shall not be defined with the same name as a keyword 20.4 2017.3

MISRA.DEFINE.WRONGNAME.UNDERSCORE

Usage of a reserved name for naming a macro 21.1 9.2 SR2

MISRA.ELIF.COND.NOT_BOOL.2012

#elif condition is not 0 or 1 20.8 2017.2

MISRA.ELIF.OTHERFILE

#elif in an improper file 20.14 9.1

MISRA.ELIF.UNDEF

Undefined macros in #elif directive 20.9 9.1

MISRA.ELSE.OTHERFILE

#else in an improper file 20.14 9.1

MISRA.ENDIF.OTHERFILE

#endif in an improper file 20.14 9.1

MISRA.ENUM.IMPLICIT.VAL.NON_UNIQUE.2012

Implicit enumerator value is not unique 8.12 10.2

MISRA.ETYPE.ASSIGN.2012

Assignment to an object of a narrower essential type or a different essential type category 10.3 10.2 10.3, 11.0, 2017.3, 2020.3, 2020.4

MISRA.ETYPE.CATEGORY.DIFFERENT.2012

The operands of an operator in which the usual arithmetic conversions are performed do not have the same essential type category 10.4 10.2 11.3

MISRA.ETYPE.COMP.ASSIGN.2012

The value of a composite expression is assigned to an object with a wider essential type 10.6 10.2 10.3, 2021.3

MISRA.ETYPE.COMP.CAST.EXPL.DIFFERENT.2012

The value of a composite expression is cast to a different essential type category 10.8 10.2

MISRA.ETYPE.COMP.CAST.EXPL.WIDER.2012

The value of a composite expression is cast to a wider essential type 10.8 10.2

MISRA.ETYPE.COMP.CAST.IMPL.WIDER.2012

A composite expression used as an operand of an operator in which the usual arithmetic conversions are performed has its other operand having a wider essential type 10.7 10.2

MISRA.ETYPE.INAPPR.CAST.2012

The value of an expression is cast to an inappropriate essential type 10.5 10.2

MISRA.ETYPE.INAPPR.CHAR.2012

Inappropriate usage of Essentially Character type in an addition or subtraction operation 10.2 10.2 2021.3

MISRA.ETYPE.INAPPR.OPERAND.BINOP.2012

Operand(s) to a binary operator have inappropriate essential type 10.1 10.2

MISRA.ETYPE.INAPPR.OPERAND.INDEXPR.2012

Index expression has inappropriate essential type 10.1 10.2

MISRA.ETYPE.INAPPR.OPERAND.TERNOP.2012

First operand to a ternary operator has inappropriate essential type 10.1 10.2

MISRA.ETYPE.INAPPR.OPERAND.UNOP.2012

Operand to a unary operator has inappropriate essential type 10.1 10.2

MISRA.EXPANSION.DIRECTIVE

Directive-like tokens within a macro argument 20.6 9.1

MISRA.EXPR.PARENS.2012

The precedence of operators within expressions should be made explicit. 12.1 10.3

MISRA.EXPR.PARENS.SIZEOF.2012

The operand of the sizeof operator should be parenthesized. 12.1 10.3

MISRA.FILE_PTR.DEREF.2012

A pointer to a FILE object shall not be dereferenced 22.5 11.1

MISRA.FILE_PTR.DEREF.CAST.2012

Object is casted to a FILE pointer, and it shall not be dereferenced 22.5 11.1

MISRA.FILE_PTR.DEREF.INDIRECT.2012

A pointer to a FILE object shall not be indirectly dereferenced by a system function 22.5 11.1

MISRA.FILE_PTR.DEREF.RETURN.2012

A pointer to a FILE object (returned by function) shall not be dereferenced 22.5 11.1

MISRA.FOR.COUNTER.FLT

For loop counter has a floating point type 14.1 9.2

MISRA.FUNC.MODIFIEDPAR.2012

A function parameter should not be modified 17.8 2017

MISRA.FUNC.NODECL.CALL.2012

Function was declared implicitly 17.3 2017.3 2018.3, 2021.1

MISRA.FUNC.NOPROT.DEF.2012

Function has a definition but no prototype 8.4 2017 2018.3

MISRA.FUNC.NO_PARAMS

Function without parameters is missing void parameter type 8.2 9.1

MISRA.FUNC.PROT_FORM.KR.2012

Function types shall be in prototype form 8.2 10.2

MISRA.FUNC.RECUR

Recursive function 17.2 9.1 9.2, 9.2 SR1

MISRA.FUNC.STATIC.REDECL

Function or object redeclaration does not include 'static' modifier 8.8 9.2

MISRA.FUNC.UNMATCHED.PARAMS

Number of formal and actual parameters passed to function do not match 8.2 9.1

MISRA.FUNC.UNNAMED.PARAMS

Function declaration has unnamed parameters 8.2 9.1

MISRA.FUNC.UNUSEDPAR.2012

Unused parameters in functions 2.7 11.3

MISRA.FUNC.UNUSEDRET.2012

The return value of a non-void function shall be used. 17.7 11.1 2021.4

MISRA.FUNC.VARARG

Function with variable number of arguments 17.1 9.1

MISRA.GOTO

Goto statement is used 15.1 9.1

MISRA.GOTO.AFTER_LABEL.2012

Goto jumps to label declared before in same function. 15.2 10.2

MISRA.GOTO.NESTED.2012

Label referenced by goto is not in this or enclosing block. 15.3 10.2

MISRA.IDENT.DISTINCT.C90.2012

Identifiers declared in the same scope or name space are not distinct 5.2 11.2

MISRA.IDENT.NONUNIQUE.EXTERNAL.2012

Identifiers that define objects or functions with external linkage shall be unique. 5.8 2019.3

MISRA.IDENT.NONUNIQUE.INTERNAL.2012

Identifiers that define objects or functions with internal linkage should be unique. 5.9 2019.3

MISRA.IF.COND.NOT_BOOL.2012

#if condition is not 0 or 1 20.8 2017.2

MISRA.IF.NO_COMPOUND

The body of if/else statement is not a compound statement 15.6 9.1

MISRA.IF.NO_ELSE

A chain of if/else-if statements is not terminated with else or is terminated with an empty else clause 15.7 9.1 10.4, 2018.1, 2020.4

MISRA.IF.UNDEF

Undefined macros in #if directive 20.9 9.1

MISRA.INCGUARD

Include guard is not provided Dir. 4.10 9.1

MISRA.INCL.BAD

Non-standard include directive 20.3 9.1 9.2, 11.1

MISRA.INCL.INSIDE

Include directive preceded by a preprocessor output token 20.1 9.1

MISRA.INCL.SIGNAL.2012

The standard header file signal.h shall not be used 21.5 11.3

MISRA.INCL.STDIO.2012

The standard header files stdio.h shall not be used 21.6 11.3

MISRA.INCL.SYMS

Non-standard characters in header file names 20.2 9.1

MISRA.INCL.TIME.2012

The standard header file time.h shall not be used 21.10 11.3

MISRA.INCR_DECR.SIDEEFF.2012

A full expression containing an increment (++) or decrement (--) operator should have no other potential side effects other than that caused by the increment or decrement operator 13.3 2017

MISRA.INIT.BRACES.2012

The initializer for an aggregate or union is not enclosed in braces 9.2 10.3

MISRA.INIT.PARTIAL.2012

Array is partially initialized 9.3 10.3

MISRA.LITERAL.NULL.PTR.CONST.2012

The macro NULL is the only permitted form of integer null pointer constant 11.9 11.2 2017.2. 2020.2

MISRA.LITERAL.UNSIGNED.SUFFIX

Unsigned integer literal without 'U' suffix 7.2 9.1 9.5, 2021.3

MISRA.LOGIC.SIDEEFF

Right operand in a logical 'and' or 'or' expression contains side effects 13.5 9.2 10.4

MISRA.MEMB.FLEX_ARRAY.2012

Flexible array member shall not be declared 18.7 11.2

MISRA.PPARAM.NEEDS.CONST

Pointer parameter is not used to modify the addressed object but is not declared as a pointer to const 8.13 9.1 9.2 SR1, 9.5, 10.4

MISRA.PTR.ARITH.2012

Pointer is used in arithmetic expression 18.4 2017

MISRA.PTR.ARITH.NOT_SAME.2012

A pointer resulting from arithmetic on a pointer operand shall address an element of the same array as that pointer operand 18.1 2019.1 2021.2

MISRA.PTR.TO_PTR_TO_PTR

Pointer declaration has more than two levels of indirection 18.5 9.1 9.2

MISRA.RESOURCES.FILE.READ_ONLY_WRITE.2012

There shall be no attempt to write to a stream which has been opened as read-only 22.4 2017.1 2017.3

MISRA.RESOURCES.FILE.USE_AFTER_CLOSE.2012

The value of a pointer to a FILE shall not be used after the associated stream has been closed 22.6 2017

MISRA.RETURN.NOT_LAST

Return is not the last statement in a function 15.5 9.1 9.2 SR2, 9.5

MISRA.SHIFT.RANGE.2012

Right operand of shift operation is out of range - greater or equal to the essential type size of left operand, or is negative 12.2 10.2

MISRA.SIZEOF.SIDE_EFFECT

Operand of sizeof has side effects 13.6 9.1

MISRA.STDLIB.ABORT

Use of 'abort', 'exit', 'getenv' or 'system' from library stdlib.h 21.8 9.1

MISRA.STDLIB.ATOI

Use of 'atof', 'atoi' or 'atol' from library stdlib.h 21.7 9.1

MISRA.STDLIB.BSEARCH.2012

Use of 'bsearch' or 'qsort' from library stdlib.h 21.9 11.2

MISRA.STDLIB.LONGJMP

Use of setjmp macro or longjmp function 21.4 9.1

MISRA.STDLIB.MEMORY

Use of dynamic heap memory allocation 21.3 9.1

MISRA.STDLIB.SIGNAL

Use of the signal handling facilities of signal.h 21.5 9.1

MISRA.STDLIB.STDIO

Use of input/output library stdio.h in production code 21.6 9.1

MISRA.STDLIB.TIME

Use of the time handling functions of library time.h 21.10 9.1

MISRA.STDLIB.WRONGNAME

Reused name of standard library macro, object or function 21.2 9.1 9.2 SR2

MISRA.STDLIB.WRONGNAME.UNDERSCORE

Usage of a reserved name for naming a language entity 21.2 9.2 SR2

MISRA.STMT.COND.NOT_BOOLEAN.2012

The controlling expression of an if statement or loop statement is not 'Essentially Boolean' type 14.4 10.4 2017.3

MISRA.STMT.NO_COMPOUND

The body of switch, while, do/while or for statement is not a compound statement 15.6 9.1

MISRA.STRING_LITERAL.NON_CONST.2012

A string literal shall not be assigned to an object unless the object's type is pointer to const-qualified char 7.4 10.4

MISRA.SWITCH.COND.BOOL.2012

A switch-expression shall not have essentially Boolean type. 16.7 10.3

MISRA.SWITCH.WELL_FORMED.2012

All switch statements shall be well-formed. 16.1 10.3

MISRA.SWITCH.WELL_FORMED.BREAK.2012

An unconditional break statement shall terminate every switch-clause. 16.3 10.3

MISRA.SWITCH.WELL_FORMED.DEFAULT.2012

Every switch statement shall have a default label. 16.4 10.3

MISRA.SWITCH.WELL_FORMED.DEFAULT.FIRST_OR_LAST.2012

A default label shall appear as either the first or the last switch label of a switch statement. 16.5 10.3 2018.1, 2018.3

MISRA.SWITCH.WELL_FORMED.NESTED_LABEL.2012

A switch label shall only be used when the most closely-enclosing compound statement is the body of the switch statement. 16.2 10.3

MISRA.SWITCH.WELL_FORMED.TWO_CLAUSES.2012

Every switch statement shall have at least two switch-clauses. 16.6 10.3

MISRA.TOKEN.BADCOM

Inappropriate character sequence in a comment 3.1 9.1

MISRA.TOKEN.L.SUFFIX.FLOAT

Usage of lowercase character "l" suffix in floating constant 7.3 10.4

MISRA.TOKEN.L.SUFFIX.INT

Usage of lowercase character "l" suffix in integer constant 7.3 10.4

MISRA.TOKEN.OCTAL.INT

Usage of octal integer constants 7.1 9.1 2020.4

MISRA.TOKEN.UNTERMINATED.ESCAPE.2012

Unterminated escape sequence in a string literal 4.1 2017.1

MISRA.TYPEDEF.NOT_UNIQUE

Typedef name is used for another entity 5.6 9.1 9.2, 9.5

MISRA.UNDEF

Undef usage 20.5 9.1

MISRA.UNDEF.WRONGNAME

Undefinition of a name from the standard library 21.1 9.1 9.5

MISRA.UNDEF.WRONGNAME.UNDERSCORE

Undefinition of a reserved name 21.1 9.2 SR2

MISRA.UNION

Union is used 19.2 9.1

MISRA.USE.UNKNOWNDIR

Unknown preprocessor directive is used 20.13 9.1 11.3

MISRA.VAR.HIDDEN

Identifier declared in an inner scope hides identifier in outer scope 5.3 9.2 9.2 SR1, 9.5, 10.1, 2020.2

MLK.MIGHT

Memory Leak - possible 22.1 Pre-9.2 9.2, 9.5

MLK.MUST

Memory Leak 22.1 Pre-9.2 9.2, 9.5, 11.1, 11.3, 2020.1

MLK.RET.MIGHT

Memory Leak - possible 22.1 9.6

MLK.RET.MUST

Memory Leak 22.1 9.6

PORTING.VAR.EFFECTS

Variable used twice in one expression where one usage is subject to side-effects 13.2 9.2 9.5

RH.LEAK

Resource leak 22.1 Pre-9.2 9.5, 11.1, 2020.1, 2020.2

SV.RVT.RETVAL_NOTTESTED

Ignored Return Value Dir. 4.7 Pre-9.2 2021.2, 2021.3, 2022.1

UNINIT.HEAP.MIGHT

Uninitialized Heap Use - possible 9.1 Pre-9.2 9.2, 9.5

UNINIT.HEAP.MUST

Uninitialized Heap Use 9.1 Pre-9.2 9.2, 9.5

UNINIT.STACK.ARRAY.MIGHT

Uninitialized Array - possible 9.1 Pre-9.2 9.2, 9.5

UNINIT.STACK.ARRAY.MUST

Uninitialized Array 9.1 Pre-9.2 9.2, 9.5, 2021.2, 2021.4, 2022.1

UNINIT.STACK.ARRAY.PARTIAL.MUST

Partially Uninitialized Array 9.1 Pre-9.2 9.2, 9.5, 2022.1

UNINIT.STACK.MIGHT

Uninitialized Variable - possible 9.1 Pre-9.2 9.2, 9.5, 2018.2, 2020.2, 2022.1

UNINIT.STACK.MUST

Uninitialized Variable 9.1 Pre-9.2 9.2, 9.5, 11.2, 2020.3, 2021.2, 2021.4

UNREACH.ENUM

Code is unreachable due to the possible value(s) of an enum 2.1 2021.3

UNREACH.GEN

Unreachable code 2.1 Pre-9.2 9.2, 9.5, 10.1, 10.3, 10.4, 11.2, 2020.3, 2021.3

UNREACH.RETURN

Unreachable Void Return 2.1 Pre-9.2 9.2, 9.5, 11.2

VA_UNUSED.GEN

Value is Never Used after Assignment 2.2 Pre-9.2 9.5

VA_UNUSED.INIT

Value is Never Used after Initialization 2.2 Pre-9.2 9.5, 11.2

MISRA C:2012 C99

Issue code Description Rule Issued Improved

ABV.GENERAL

Buffer Overflow - Array Index Out of Bounds 18.1 9.6 10.1, 10.3, 10.4, 11.0, 11.1, 11.2, 2017.3, 2021.2, 2022.1

EFFECT

Statement has no effect 2.2 Pre-9.2

FMM.MIGHT

Freeing Mismatched Memory - possible 22.2 Pre-9.2 10.1

FMM.MUST

Freeing Mismatched Memory 22.2 Pre-9.2 10.1

FNH.MIGHT

Freeing Non-Heap Memory - possible 22.2 Pre-9.2

FNH.MUST

Freeing Non-Heap Memory 22.2 Pre-9.2

FREE.INCONSISTENT

Inconsistent Freeing of Memory 22.1 Pre-9.2

FUM.GEN.MIGHT

Freeing Unallocated Memory - possible 22.2 Pre-9.2

FUM.GEN.MUST

Freeing Unallocated Memory 22.2 Pre-9.2

FUNCRET.GEN

Non-void function does not return value 17.4 Pre-9.2

FUNCRET.IMPLICIT

Non-void function implicitly returning int does not return value 17.4 Pre-9.2

INVARIANT_CONDITION.GEN

Invariant expression in a condition 14.3 10.1 10.2, 2020.1

INVARIANT_CONDITION.UNREACH

Invariant expression in a condition 14.3 10.1 10.2

LA_UNUSED

Label unused 2.6 Pre-9.2

LOCRET.ARG

Function returns address of local variable 18.6 Pre-9.2 9.5

LOCRET.GLOB

Function returns address of local variable 18.6 Pre-9.2 9.5

LOCRET.RET

Function returns address of local variable 18.6 Pre-9.2 9.5

LV_UNUSED.GEN

Local variable unused 2.2 Pre-9.2 2020.3

MISRA.ARRAY.VAR_LENGTH.2012

Variable-length array types shall not be used 18.8 11.2 2020.4

MISRA.ASM.ENCAPS

Assembly language is not isolated. Dir. 4.3 9.1

MISRA.ASSIGN.OVERLAP

Object is assigned to an overlapping object 19.1 9.5 2019.1

MISRA.ASSIGN.SUBEXPR.2012

The result of an assignment operator is used 13.4 11.3 2022.1

MISRA.BITFIELD.SIGNED

Length of a named signed bit-field is less than 2 6.2 9.1 9.2, 10.4

MISRA.BITFIELD.TYPE.2012

Type of bit-field is neither bool, nor signed/unsigned integer 6.1 2021.2

MISRA.BREAK_OR_GOTO.MULTIPLE.2012

Iteration statement has more than one break or goto for loop termination. 15.4 10.2

MISRA.BUILTIN_NUMERIC

Builtin numeric type is used Dir. 4.6 9.1 9.2, 9.2 SR1, 9.5

MISRA.CAST.CONST

Cast operation removes const or volatile modifier from a pointer or reference 11.8 9.1 9.2, 10.4, 2022.1

MISRA.CAST.FUNC_PTR.2012

Conversion performed between a pointer to a function and another incompatible type 11.1 10.2 10.3

MISRA.CAST.INCOMPLETE_PTR_TO_ANY.2012

Conversion performed between a pointer to an incomplete type and a different type 11.2 10.2 10.3

MISRA.CAST.OBJ_PTR_TO_INT.2012

Conversion performed between a pointer to an object and an integer type 11.4 10.2 10.3

MISRA.CAST.OBJ_PTR_TO_NON_INT.2012

A cast between a pointer to object and a non-integer arithmetic type 11.7 10.2

MISRA.CAST.OBJ_PTR_TO_OBJ_PTR.2012

Cast between a pointer to object type and a pointer to a different object type 11.3 10.2 10.3, 2017

MISRA.CAST.VOID_PTR_TO_INT.2012

Cast between a pointer to void and an arithmetic type 11.6 10.2 2021.2

MISRA.CAST.VOID_PTR_TO_OBJ_PTR.2012

Conversion performed from a pointer to void to a pointer to an object 11.5 10.2 10.3

MISRA.CHAR.TRIGRAPH

Trigraph usage 4.2 9.1 9.2

MISRA.COMMA

Comma operator is used 12.3 9.1

MISRA.COMP.WRAPAROUND

Wrap-around in a condition 12.4 9.2 9.5, 2020.3

MISRA.CT.UNIQUE.ID.2012

Identifier clashes with tag name 5.7 2021.2

MISRA.DECL.ARRAY_SIZE

Declaration of array with unknown size 8.11 9.1

MISRA.DECL.FUNC.INLINE.STATIC.2012

Declaration of inline function without static storage class 8.10 10.2 10.4

MISRA.DEFINE.FUNC

Function-like macro definition Dir. 4.9 9.1

MISRA.DEFINE.NOT_DISTINCT.C99.2012

Identifier name is too long 5.4 2017.1

MISRA.DEFINE.SHARP

# or ## operator in a macro definition 20.10 9.1

MISRA.DEFINE.SHARP.ORDER.2012

Unspecified order of evaluation of multiple '#' or '##' 20.11 11.3

MISRA.DEFINE.SHARP.REPLACE.2012

A macro parameter used as an operand to the '#' or '##' operators, which is itself subject to further macro replacement, shall only be used as an operand to these operators 20.12 11.3

MISRA.DEFINE.STDIO.WCHAR.2012

Inappropriate macro expansion 21.6 11.3

MISRA.DEFINE.WCSFTIME.2012

No macro with 'wcsftime' name shall be expanded 21.10 11.3

MISRA.DEFINE.WRONGNAME

Usage of a name from the standard library for naming a macro 21.1 9.1 9.2 SR2, 9.5

MISRA.DEFINE.WRONGNAME.C99.2012

A macro shall not be defined with the same name as a keyword 20.4 2017.3

MISRA.DEFINE.WRONGNAME.UNDERSCORE

Usage of a reserved name for naming a macro 21.1 9.2 SR2

MISRA.ELIF.COND.NOT_BOOL.2012

#elif condition is not 0 or 1 20.8 2017.2

MISRA.ELIF.OTHERFILE

#elif in an improper file 20.14 9.1

MISRA.ELIF.UNDEF

Undefined macros in #elif directive 20.9 9.1

MISRA.ELSE.OTHERFILE

#else in an improper file 20.14 9.1

MISRA.ENDIF.OTHERFILE

#endif in an improper file 20.14 9.1

MISRA.ENUM.IMPLICIT.VAL.NON_UNIQUE.2012

Implicit enumerator value is not unique 8.12 10.2

MISRA.ETYPE.ASSIGN.2012

Assignment to an object of a narrower essential type or a different essential type category 10.3 10.2 10.3, 11.0, 2017.3, 2020.3, 2020.4

MISRA.ETYPE.CATEGORY.DIFFERENT.2012

The operands of an operator in which the usual arithmetic conversions are performed do not have the same essential type category 10.4 10.2 11.3

MISRA.ETYPE.COMP.ASSIGN.2012

The value of a composite expression is assigned to an object with a wider essential type 10.6 10.2 10.3, 2021.3

MISRA.ETYPE.COMP.CAST.EXPL.DIFFERENT.2012

The value of a composite expression is cast to a different essential type category 10.8 10.2

MISRA.ETYPE.COMP.CAST.EXPL.WIDER.2012

The value of a composite expression is cast to a wider essential type 10.8 10.2

MISRA.ETYPE.COMP.CAST.IMPL.WIDER.2012

A composite expression used as an operand of an operator in which the usual arithmetic conversions are performed has its other operand having a wider essential type 10.7 10.2

MISRA.ETYPE.INAPPR.CAST.2012

The value of an expression is cast to an inappropriate essential type 10.5 10.2

MISRA.ETYPE.INAPPR.CHAR.2012

Inappropriate usage of Essentially Character type in an addition or subtraction operation 10.2 10.2 2021.3

MISRA.ETYPE.INAPPR.OPERAND.BINOP.2012

Operand(s) to a binary operator have inappropriate essential type 10.1 10.2

MISRA.ETYPE.INAPPR.OPERAND.INDEXPR.2012

Index expression has inappropriate essential type 10.1 10.2

MISRA.ETYPE.INAPPR.OPERAND.TERNOP.2012

First operand to a ternary operator has inappropriate essential type 10.1 10.2

MISRA.ETYPE.INAPPR.OPERAND.UNOP.2012

Operand to a unary operator has inappropriate essential type 10.1 10.2

MISRA.EXPANSION.DIRECTIVE

Directive-like tokens within a macro argument 20.6 9.1

MISRA.EXPR.PARENS.2012

The precedence of operators within expressions should be made explicit. 12.1 10.3

MISRA.EXPR.PARENS.SIZEOF.2012

The operand of the sizeof operator should be parenthesized. 12.1 10.3

MISRA.FILE_PTR.DEREF.2012

A pointer to a FILE object shall not be dereferenced 22.5 11.1

MISRA.FILE_PTR.DEREF.CAST.2012

Object is casted to a FILE pointer, and it shall not be dereferenced 22.5 11.1

MISRA.FILE_PTR.DEREF.INDIRECT.2012

A pointer to a FILE object shall not be indirectly dereferenced by a system function 22.5 11.1

MISRA.FILE_PTR.DEREF.RETURN.2012

A pointer to a FILE object (returned by function) shall not be dereferenced 22.5 11.1

MISRA.FOR.COUNTER.FLT

For loop counter has a floating point type 14.1 9.2

MISRA.FUNC.ARRAY.PARAM.STATIC.2012

The declaration of an array parameter shall not contain the static keyword between the [] 17.6 2017.1

MISRA.FUNC.MODIFIEDPAR.2012

A function parameter should not be modified 17.8 2017

MISRA.FUNC.NOPROT.DEF.2012

Function has a definition but no prototype 8.4 2017 2018.3

MISRA.FUNC.NO_PARAMS

Function without parameters is missing void parameter type 8.2 9.1

MISRA.FUNC.PROT_FORM.KR.2012

Function types shall be in prototype form 8.2 10.2

MISRA.FUNC.RECUR

Recursive function 17.2 9.1 9.2, 9.2 SR1

MISRA.FUNC.STATIC.REDECL

Function or object redeclaration does not include 'static' modifier 8.8 9.2

MISRA.FUNC.UNMATCHED.PARAMS

Number of formal and actual parameters passed to function do not match 8.2 9.1

MISRA.FUNC.UNNAMED.PARAMS

Function declaration has unnamed parameters 8.2 9.1

MISRA.FUNC.UNUSEDPAR.2012

Unused parameters in functions 2.7 11.3

MISRA.FUNC.UNUSEDRET.2012

The return value of a non-void function shall be used. 17.7 11.1 2021.4

MISRA.FUNC.VARARG

Function with variable number of arguments 17.1 9.1

MISRA.GOTO

Goto statement is used 15.1 9.1

MISRA.GOTO.AFTER_LABEL.2012

Goto jumps to label declared before in same function. 15.2 10.2

MISRA.GOTO.NESTED.2012

Label referenced by goto is not in this or enclosing block. 15.3 10.2

MISRA.IDENT.DISTINCT.C99.2012

Identifiers declared in the same scope or name space are not distinct 5.2 11.2

MISRA.IDENT.NONUNIQUE.EXTERNAL.2012

Identifiers that define objects or functions with external linkage shall be unique. 5.8 2019.3

MISRA.IDENT.NONUNIQUE.INTERNAL.2012

Identifiers that define objects or functions with internal linkage should be unique. 5.9 2019.3

MISRA.IF.COND.NOT_BOOL.2012

#if condition is not 0 or 1 20.8 2017.2

MISRA.IF.NO_COMPOUND

The body of if/else statement is not a compound statement 15.6 9.1

MISRA.IF.NO_ELSE

A chain of if/else-if statements is not terminated with else or is terminated with an empty else clause 15.7 9.1 10.4, 2018.1, 2020.4

MISRA.IF.UNDEF

Undefined macros in #if directive 20.9 9.1

MISRA.INCGUARD

Include guard is not provided Dir. 4.10 9.1

MISRA.INCL.BAD

Non-standard include directive 20.3 9.1 9.2, 11.1

MISRA.INCL.INSIDE

Include directive preceded by a preprocessor output token 20.1 9.1

MISRA.INCL.SIGNAL.2012

The standard header file signal.h shall not be used 21.5 11.3

MISRA.INCL.STDIO.2012

The standard header files stdio.h shall not be used 21.6 11.3

MISRA.INCL.SYMS

Non-standard characters in header file names 20.2 9.1

MISRA.INCL.TGMATH.2012

The standard header file tgmath.h shall not be used 21.11 11.3

MISRA.INCL.TIME.2012

The standard header file time.h shall not be used 21.10 11.3

MISRA.INCR_DECR.SIDEEFF.2012

A full expression containing an increment (++) or decrement (--) operator should have no other potential side effects other than that caused by the increment or decrement operator 13.3 2017

MISRA.INIT.BRACES.2012

The initializer for an aggregate or union is not enclosed in braces 9.2 10.3

MISRA.INIT.MULTIPLE.2012

An element of an object is initialized more than once 9.4 10.3

MISRA.INIT.PARTIAL.2012

Array is partially initialized 9.3 10.3

MISRA.INIT.SIZE.IMPLICIT.2012

A designated initializer is used to initialize an array object when the size of the array is not specified explicitly 9.5 10.3

MISRA.LITERAL.NULL.PTR.CONST.2012

The macro NULL is the only permitted form of integer null pointer constant 11.9 11.2 2017.2. 2020.2

MISRA.LITERAL.UNSIGNED.SUFFIX

Unsigned integer literal without 'U' suffix 7.2 9.1 9.5, 2021.3

MISRA.LOGIC.SIDEEFF

Right operand in a logical 'and' or 'or' expression contains side effects 13.5 9.2 10.4

MISRA.MEMB.FLEX_ARRAY.2012

Flexible array member shall not be declared 18.7 11.2

MISRA.PPARAM.NEEDS.CONST

Pointer parameter is not used to modify the addressed object but is not declared as a pointer to const 8.13 9.1 9.2 SR1, 9.5, 10.4

MISRA.PTR.ARITH.2012

Pointer is used in arithmetic expression 18.4 2017

MISRA.PTR.ARITH.NOT_SAME.2012

A pointer resulting from arithmetic on a pointer operand shall address an element of the same array as that pointer operand 18.1 2019.1 2021.2

MISRA.PTR.TO_PTR_TO_PTR

Pointer declaration has more than two levels of indirection 18.5 9.1 9.2

MISRA.RESOURCES.FILE.READ_ONLY_WRITE.2012

There shall be no attempt to write to a stream which has been opened as read-only 22.4 2017.1 2017.3

MISRA.RESOURCES.FILE.USE_AFTER_CLOSE.2012

The value of a pointer to a FILE shall not be used after the associated stream has been closed 22.6 2017

MISRA.RETURN.NOT_LAST

Return is not the last statement in a function 15.5 9.1 9.2 SR2, 9.5

MISRA.SHIFT.RANGE.2012

Right operand of shift operation is out of range - greater or equal to the essential type size of left operand, or is negative 12.2 10.2

MISRA.SIZEOF.SIDE_EFFECT

Operand of sizeof has side effects 13.6 9.1

MISRA.STDLIB.ABORT

Use of 'abort', 'exit', 'getenv' or 'system' from library stdlib.h 21.8 9.1

MISRA.STDLIB.ATOI

Use of 'atof', 'atoi' or 'atol' from library stdlib.h 21.7 9.1

MISRA.STDLIB.BSEARCH.2012

Use of 'bsearch' or 'qsort' from library stdlib.h 21.9 11.2

MISRA.STDLIB.FENV.2012

Floating-point exception feature from fenv.h is used 21.12 2017

MISRA.STDLIB.FENV.MACRO.2012

Floating-point exception feature from fenv.h is used 21.12 2017

MISRA.STDLIB.LONGJMP

Use of setjmp macro or longjmp function 21.4 9.1

MISRA.STDLIB.MEMORY

Use of dynamic heap memory allocation 21.3 9.1

MISRA.STDLIB.SIGNAL

Use of the signal handling facilities of signal.h 21.5 9.1

MISRA.STDLIB.STDIO

Use of input/output library stdio.h in production code 21.6 9.1

MISRA.STDLIB.STDIO.WCHAR.2012

Wide-character equivalent identifiers from stdio.h shall not be used 21.6 11.3

MISRA.STDLIB.TIME

Use of the time handling functions of library time.h 21.10 9.1

MISRA.STDLIB.WCSFTIME.2012

The identifier 'wcsftime' shall not be used 21.10 11.3

MISRA.STDLIB.WRONGNAME

Reused name of standard library macro, object or function 21.2 9.1 9.2 SR2

MISRA.STDLIB.WRONGNAME.UNDERSCORE

Usage of a reserved name for naming a language entity 21.2 9.2 SR2

MISRA.STMT.COND.NOT_BOOLEAN.2012

The controlling expression of an if statement or loop statement is not 'Essentially Boolean' type 14.4 10.4 2017.3

MISRA.STMT.NO_COMPOUND

The body of switch, while, do/while or for statement is not a compound statement 15.6 9.1

MISRA.STRING_LITERAL.NON_CONST.2012

A string literal shall not be assigned to an object unless the object's type is pointer to const-qualified char 7.4 10.4

MISRA.SWITCH.COND.BOOL.2012

A switch-expression shall not have essentially Boolean type. 16.7 10.3

MISRA.SWITCH.WELL_FORMED.2012

All switch statements shall be well-formed. 16.1 10.3

MISRA.SWITCH.WELL_FORMED.BREAK.2012

An unconditional break statement shall terminate every switch-clause. 16.3 10.3

MISRA.SWITCH.WELL_FORMED.DEFAULT.2012

Every switch statement shall have a default label. 16.4 10.3

MISRA.SWITCH.WELL_FORMED.DEFAULT.FIRST_OR_LAST.2012

A default label shall appear as either the first or the last switch label of a switch statement. 16.5 10.3 2018.1, 2018.3

MISRA.SWITCH.WELL_FORMED.NESTED_LABEL.2012

A switch label shall only be used when the most closely-enclosing compound statement is the body of the switch statement. 16.2 10.3

MISRA.SWITCH.WELL_FORMED.TWO_CLAUSES.2012

Every switch statement shall have at least two switch-clauses. 16.6 10.3

MISRA.TOKEN.BADCOM

Inappropriate character sequence in a comment 3.1 9.1

MISRA.TOKEN.CPCOM.MULTILINE.2012

Line-splicing used in a // comment 3.2 2017.3

MISRA.TOKEN.L.SUFFIX.FLOAT

Usage of lowercase character "l" suffix in floating constant 7.3 10.4

MISRA.TOKEN.L.SUFFIX.INT

Usage of lowercase character "l" suffix in integer constant 7.3 10.4

MISRA.TOKEN.OCTAL.INT

Usage of octal integer constants 7.1 9.1 2020.4

MISRA.TOKEN.UNTERMINATED.ESCAPE.2012

Unterminated escape sequence in a string literal 4.1 2017.1

MISRA.TYPE.RESTRICT.QUAL.2012

The restrict type qualifier shall not be used 8.14 11.3

MISRA.TYPEDEF.NOT_UNIQUE

Typedef name is used for another entity 5.6 9.1 9.2, 9.5

MISRA.UNDEF

Undef usage 20.5 9.1

MISRA.UNDEF.WRONGNAME

Undefinition of a name from the standard library 21.1 9.1 9.5

MISRA.UNDEF.WRONGNAME.UNDERSCORE

Undefinition of a reserved name 21.1 9.2 SR2

MISRA.UNION

Union is used 19.2 9.1

MISRA.USE.UNKNOWNDIR

Unknown preprocessor directive is used 20.13 9.1 11.3

MISRA.VAR.HIDDEN

Identifier declared in an inner scope hides identifier in outer scope 5.3 9.2 9.2 SR1, 9.5, 10.1, 2020.2

MLK.MIGHT

Memory Leak - possible 22.1 Pre-9.2 9.2, 9.5

MLK.MUST

Memory Leak 22.1 Pre-9.2 9.2, 9.5, 11.1, 11.3, 2020.1

MLK.RET.MIGHT

Memory Leak - possible 22.1 9.6

MLK.RET.MUST

Memory Leak 22.1 9.6

PORTING.VAR.EFFECTS

Variable used twice in one expression where one usage is subject to side-effects 13.2 9.2 9.5

RH.LEAK

Resource leak 22.1 Pre-9.2 9.5, 11.1, 2020.1, 2020.2

SV.RVT.RETVAL_NOTTESTED

Ignored Return Value Dir. 4.7 Pre-9.2 2021.2, 2021.3, 2022.1

UNINIT.HEAP.MIGHT

Uninitialized Heap Use - possible 9.1 Pre-9.2 9.2, 9.5

UNINIT.HEAP.MUST

Uninitialized Heap Use 9.1 Pre-9.2 9.2, 9.5

UNINIT.STACK.ARRAY.MIGHT

Uninitialized Array - possible 9.1 Pre-9.2 9.2, 9.5

UNINIT.STACK.ARRAY.MUST

Uninitialized Array 9.1 Pre-9.2 9.2, 9.5, 2021.2, 2021.4, 2022.1

UNINIT.STACK.ARRAY.PARTIAL.MUST

Partially Uninitialized Array 9.1 Pre-9.2 9.2, 9.5, 2022.1

UNINIT.STACK.MIGHT

Uninitialized Variable - possible 9.1 Pre-9.2 9.2, 9.5, 2018.2, 2020.2, 2022.1

UNINIT.STACK.MUST

Uninitialized Variable 9.1 Pre-9.2 9.2, 9.5, 11.2, 2020.3, 2021.2, 2021.4

UNREACH.ENUM

Code is unreachable due to the possible value(s) of an enum 2.1 2021.3

UNREACH.GEN

Unreachable code 2.1 Pre-9.2 9.2, 9.5, 10.1, 10.3, 10.4, 11.2, 2020.3, 2021.3

UNREACH.RETURN

Unreachable Void Return 2.1 Pre-9.2 9.2, 9.5, 11.2

VA_UNUSED.GEN

Value is Never Used after Assignment 2.2 Pre-9.2 9.5

VA_UNUSED.INIT

Value is Never Used after Initialization 2.2 Pre-9.2 9.5, 11.2