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 |
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 |
|
MISRA.ARRAY.VAR_LENGTH.2012
|
Variable-length array types shall not be used |
18.8 |
11.2 |
|
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 |
|
MISRA.ASSIGN.SUBEXPR.2012
|
The result of an assignment operator is used |
13.4 |
11.3 |
|
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 |
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 |
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 |
|
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 |
MISRA.CT.UNIQUE.ID
|
Identifier clashes with type name |
5.7 |
9.1 |
9.2, 9.2 SR1 |
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 |
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 |
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 |
|
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 |
|
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 |
|
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.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 |
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 |
MISRA.LITERAL.UNSIGNED.SUFFIX
|
Unsigned integer literal without 'U' suffix |
7.2 |
9.1 |
9.5 |
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.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 |
|
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 |
|
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 |
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 |
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 |
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 |
UNINIT.STACK.ARRAY.PARTIAL.MUST
|
Partialy Uninitialized Array |
9.1 |
Pre-9.2 |
9.2, 9.5 |
UNINIT.STACK.MIGHT
|
Uninitialized Variable - possible |
9.1 |
Pre-9.2 |
9.2, 9.5 |
UNINIT.STACK.MUST
|
Uninitialized Variable |
9.1 |
Pre-9.2 |
9.2, 9.5, 11.2 |
UNREACH.GEN
|
Unreachable code |
2.1 |
Pre-9.2 |
9.2, 9.5, 10.1, 10.3, 10.4, 11.2 |
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 |