FUNCRET.GEN
|
Non-void function does not return value |
16.8 |
Pre-9.2 |
|
FUNCRET.IMPLICIT
|
Non-void function implicitly returning int does not return value |
16.8 |
Pre-9.2 |
|
INVARIANT_CONDITION.GEN
|
Invariant expression in a condition |
13.7 |
10.1 |
10.2 |
INVARIANT_CONDITION.UNREACH
|
Invariant expression in a condition |
13.7 |
10.1 |
10.2 |
LOCRET.ARG
|
Function returns address of local variable |
17.6 |
Pre-9.2 |
9.5 |
LOCRET.GLOB
|
Function returns address of local variable |
17.6 |
Pre-9.2 |
9.5 |
LOCRET.RET
|
Function returns address of local variable |
17.6 |
Pre-9.2 |
9.5 |
MISRA.ASM.ENCAPS
|
Assembly language is not isolated. |
2.1 |
9.1 |
|
MISRA.ASSIGN.COND
|
Assignment operator is used in a condition |
13.1 |
9.2 |
|
MISRA.ASSIGN.OVERLAP
|
Object is assigned to an overlapping object |
18.2 |
9.5 |
|
MISRA.BITFIELD.SIGNED
|
Length of a named signed bit-field is less than 2 |
6.5 |
9.1 |
9.2, 10.4 |
MISRA.BITFIELD.SIGNED.UNNAMED
|
Length of an unnamed signed bit-field is less than 2 |
6.5 |
9.2 |
|
MISRA.BITFIELD.TYPE
|
Type of bit-field is not signed/unsigned integer |
6.4 |
9.1 |
9.2, 11.0 |
MISRA.BITS.NOT_UNSIGNED
|
Operand of bitwise operation is not unsigned integer |
12.7 |
9.1 |
9.2, 9.2 SR1, 9.5, 11.0 |
MISRA.BITS.NOT_UNSIGNED.PREP
|
Operand of bitwise operation is not unsigned integer |
12.7 |
11.1 |
|
MISRA.BUILTIN_NUMERIC
|
Builtin numeric type is used |
6.3 |
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.5 |
9.1 |
9.2, 10.4 |
MISRA.CAST.FLOAT
|
Non-trivial float expression is cast to a wider type |
10.4 |
9.1 |
9.2 |
MISRA.CAST.FUNC_PTR
|
Cast between a function pointer and a non-integral type |
11.1 |
9.1 |
9.2 |
MISRA.CAST.INT
|
Non-trivial integer expression is cast to a wider type, or type with a different signedness |
10.3 |
9.1 |
9.2, 9.5 |
MISRA.CAST.PTR
|
Cast between a pointer to object type and a different pointer to object type |
11.4 |
9.1 |
|
MISRA.CAST.PTR.UNRELATED
|
Object of pointer type cast to unrelated type |
11.2 |
9.2 |
9.5 |
MISRA.CAST.PTR_TO_INT
|
Cast between a pointer and an integral type |
11.3 |
9.1 |
9.2 |
MISRA.CAST.UNSIGNED_BITS
|
The result of bitwise operation on unsigned char or short is not cast back to original type |
10.5 |
9.1 |
|
MISRA.CHAR.NOT_CHARACTER
|
'char' is used for non-character value |
6.1 |
9.1 |
11.2 |
MISRA.CHAR.TRIGRAPH
|
Trigraph usage |
4.2 |
9.1 |
9.2 |
MISRA.COMMA
|
Comma operator is used |
12.10 |
9.1 |
|
MISRA.COMP.WRAPAROUND
|
Wrap-around in a condition |
12.11 |
9.2 |
9.5 |
MISRA.CONTINUE
|
Continue statement is used |
14.5 |
9.1 |
|
MISRA.CT.UNIQUE.ID
|
Identifier clashes with type name |
5.4 |
9.1 |
9.2, 9.2 SR1 |
MISRA.CVALUE.IMPL.CAST
|
The value of an expression implicitly converted to a different type |
10.1 10.2 |
9.2 |
9.5, 11.0 |
MISRA.DECL.ARRAY_SIZE
|
Declaration of array with unknown size |
8.12 |
9.1 |
|
MISRA.DECL.FUNC_LOCAL
|
Function is declared locally |
8.6 |
9.1 |
9.2 SR1 |
MISRA.DECL.NO_TYPE
|
Declaration without a type |
8.2 |
9.1 |
9.2 SR1 |
MISRA.DEFINE.BADEXP
|
Inappropriate macro expansion |
19.4 |
9.1 |
9.5 |
MISRA.DEFINE.FUNC
|
Function-like macro definition |
19.7 |
9.1 |
|
MISRA.DEFINE.LONGNAME
|
Macro name is too long |
5.1 |
9.1 |
|
MISRA.DEFINE.NOPARS
|
Macro parameter with no parentheses |
19.10 |
9.1 |
|
MISRA.DEFINE.NOTGLOBAL
|
Define not at the global level |
19.5 |
9.1 |
|
MISRA.DEFINE.SHARP
|
# or ## operator in a macro definition |
19.13 |
9.1 |
|
MISRA.DEFINE.SHARP.MANY
|
Several # or ## operators in a macro definition |
19.12 |
9.1 |
|
MISRA.DEFINE.WRONGNAME
|
Usage of a name from the standard library for naming a macro |
20.1 |
9.1 |
9.2 SR2, 9.5 |
MISRA.DEFINE.WRONGNAME.UNDERSCORE
|
Usage of a reserved name for naming a macro |
20.1 |
9.2 SR2 |
|
MISRA.ELIF.DEFINED
|
Incorrect 'defined' usage in #elif directive |
19.14 |
9.1 |
|
MISRA.ELIF.OTHERFILE
|
#elif in an improper file |
19.17 |
9.1 |
|
MISRA.ELIF.UNDEF
|
Undefined macros in #elif directive |
19.11 |
9.1 |
|
MISRA.ELIF.WRAPAROUND
|
Wrap-around in #elif directive |
12.11 |
9.1 |
|
MISRA.ELSE.OTHERFILE
|
#else in an improper file |
19.17 |
9.1 |
|
MISRA.ENDIF.OTHERFILE
|
#endif in an improper file |
19.17 |
9.1 |
|
MISRA.ENUM.INIT
|
Non-first enumerator is explicitly initialized, but not all elements are explicitly initialized. |
9.3 |
9.1 |
|
MISRA.EXPANSION.DIRECTIVE
|
Directive-like tokens within a macro argument |
19.9 |
9.1 |
|
MISRA.EXPANSION.NARGS
|
Missing macro argument |
19.8 |
9.1 |
9.2 SR2 |
MISRA.EXPANSION.UNSAFE
|
Unsafe macro usage |
20.1 20.5 20.6 20.7 20.8 |
9.1 |
9.5 |
MISRA.EXPR.PARENS.INSUFFICIENT
|
Limited dependence required for operator precedence rules in expressions |
12.1 |
10.1.2 |
|
MISRA.EXPR.PARENS.REDUNDANT
|
Limited dependence required for operator precedence rules in expressions |
12.1 |
10.1.2 |
11.2 |
MISRA.FLOAT.BIT.REPR
|
Use of bit manipulations of floating-point values which rely on storage layout |
12.12 |
9.1 |
9.2 SR2, 11.0 |
MISRA.FLOAT_EQUAL
|
Floating point expression is tested for equality |
13.3 |
9.1 |
|
MISRA.FOR.COND
|
For loop condition does not depend on loop counter |
13.5 |
9.1 |
9.2, 9.2 SR1 |
MISRA.FOR.COND.FLT
|
Floating point object is used in the condition section of a 'for' loop |
13.4 |
9.2 |
9.5 |
MISRA.FOR.INCR.CHANGE
|
For loop increment expression does not change loop counter |
13.5 |
9.1 |
|
MISRA.FOR.STMT.CHANGE
|
For loop counter is modified within the loop statement |
13.6 |
9.2 |
|
MISRA.FUNC.ADDR
|
Address of a function is used without & operator |
16.9 |
9.1 |
9.2 SR1 |
MISRA.FUNC.NOPROT.CALL
|
Function is called but has no prototype |
8.1 |
9.2 |
9.2 SR1 |
MISRA.FUNC.NOPROT.DEF
|
Function has a definition but no prototype |
8.1 |
9.2 |
|
MISRA.FUNC.NO_PARAMS
|
Function without parameters is missing void parameter type |
16.5 |
9.1 |
|
MISRA.FUNC.PARAMS.IDENT
|
Identifiers used in declaration and definition of function are no identical |
16.4 |
9.2 |
|
MISRA.FUNC.RECUR
|
Recursive function |
16.2 |
9.1 |
9.2, 9.2 SR1 |
MISRA.FUNC.STATIC.REDECL
|
Function or object redeclaration does not include 'static' modifier |
8.11 |
9.2 |
|
MISRA.FUNC.UNMATCHED.PARAMS
|
Number of formal and actual parameters passed to function do not match |
16.6 |
9.1 |
|
MISRA.FUNC.UNNAMED.PARAMS
|
Function declaration has unnamed parameters |
16.3 |
9.1 |
|
MISRA.FUNC.VARARG
|
Function with variable number of arguments |
16.1 |
9.1 |
|
MISRA.GOTO
|
Goto statement is used |
14.4 |
9.1 |
|
MISRA.IDENT.LONG
|
Identifier is longer than 31 characters |
5.1 |
9.1 |
9.2 |
MISRA.IF.DEFINED
|
Incorrect 'defined' usage in #if directive |
19.14 |
9.1 |
|
MISRA.IF.NO_COMPOUND
|
The body of if/else statement is not a compound statement |
14.9 |
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 |
14.10 |
9.1 |
10.4 |
MISRA.IF.UNDEF
|
Undefined macros in #if directive |
19.11 |
9.1 |
|
MISRA.IF.WRAPAROUND
|
Wrap-around in #if directive |
12.11 |
9.1 |
|
MISRA.INCGUARD
|
Include guard is not provided |
19.15 |
9.1 |
|
MISRA.INCL.BAD
|
Non-standard include directive |
19.3 |
9.1 |
9.2, 11.1 |
MISRA.INCL.INSIDE
|
Include directive preceded by a preprocessor output token |
19.1 |
9.1 |
|
MISRA.INCL.SYMS
|
Non-standard characters in header file names |
19.2 |
9.1 |
|
MISRA.INCL.UNSAFE
|
Unsafe header inclusion |
20.1 20.12 20.8 20.9 |
9.1 |
|
MISRA.INCOMPLETE.STRUCT
|
Incomplete struct type is used |
18.1 |
9.2 |
|
MISRA.INCOMPLETE.STRUCT.UNNAMED
|
Incomplete unnamed struct type is used |
18.1 |
9.2 |
|
MISRA.INCOMPLETE.UNION
|
Incomplete union type is used |
18.1 |
9.2 |
|
MISRA.INCOMPLETE.UNION.UNNAMED
|
Incomplete unnamed union type is used |
18.1 |
9.2 |
|
MISRA.INCR_DECR.OTHER
|
Increment or decrement operator is mixed with other operators in expression |
12.13 |
9.1 |
9.2 |
MISRA.INIT.BRACES
|
Incorrect initializer braces placement. |
9.2 |
9.1 |
|
MISRA.ITER.ONETERM
|
Iteration statement has more than one break or goto for loop termination. |
14.6 |
9.1 |
|
MISRA.LITERAL.UNSIGNED.SUFFIX
|
Unsigned integer literal without 'U' suffix |
10.6 |
9.1 |
9.5 |
MISRA.LOGIC.OPERAND.NOT_BOOL
|
Operand of logical operator is not effectively boolean |
12.6 |
9.1 |
9.2 SR1, 9.5 |
MISRA.LOGIC.OPERATOR.NOT_BOOL
|
Operand of non-logical operator is effectively boolean |
12.6 |
9.1 (for C), 9.2 SR1 (for C++) |
11.2 |
MISRA.LOGIC.PRIMARY
|
Operand in a logical 'and' or 'or' expression is not a primary expression |
12.5 |
9.2 SR2 |
|
MISRA.LOGIC.SIDEEFF
|
Right operand in a logical 'and' or 'or' expression contains side effects |
12.4 |
9.2 |
10.4 |
MISRA.LOGIC.SIDEEFF.COND
|
Branch expression in a conditional expression contains side effects |
12.4 |
9.2 |
|
MISRA.NULL.STMT
|
Null statement is not the only statement on line or comments are placed incorrectly |
14.3 |
9.1 |
9.2 |
MISRA.OBJ.TYPE.COMPAT
|
Type not compatible with type of other declaration |
8.4 |
9.1 |
11.0 |
MISRA.OBJ.TYPE.IDENT
|
Type not identical with type of other declaration |
8.3 |
9.1 |
9.2 |
MISRA.ONEDEFRULE.FUNC
|
Global function definition in a header file |
8.5 |
9.1 |
|
MISRA.ONEDEFRULE.VAR
|
Global variable definition in a header file |
8.5 |
9.1 |
|
MISRA.PPARAM.NEEDS.CONST
|
Pointer parameter is not used to modify the addressed object but is not declared as a pointer to const |
16.7 |
9.1 |
9.2 SR1, 9.5, 10.4 |
MISRA.PRAGMA
|
Non-documented pragma directive |
3.4 |
9.1 |
|
MISRA.PTR.ARITH
|
Pointer is used in arithmetic or array index expression |
17.1 17.4 |
9.1 |
|
MISRA.PTR.TO_PTR_TO_PTR
|
Pointer declaration has more than two levels of indirection |
17.5 |
9.1 |
9.2 |
MISRA.RETURN.NOT_LAST
|
Return is not the last statement in a function |
14.7 |
9.1 |
9.2 SR2, 9.5 |
MISRA.SHIFT.RANGE
|
Right operand of shift operation is out of range - greater or equal to max bit-length of left operand, or negative |
12.8 |
9.1 |
9.2 |
MISRA.SIGNED_CHAR.NOT_NUMERIC
|
'signed char' or 'unsigned char' is used for non-numeric value |
6.2 |
9.1 |
9.2 |
MISRA.SIZEOF.SIDE_EFFECT
|
Operand of sizeof has side effects |
12.3 |
9.1 |
|
MISRA.STDLIB.ABORT
|
Use of 'abort', 'exit', 'getenv' or 'system' from library stdlib.h |
20.11 |
9.1 |
|
MISRA.STDLIB.ATOI
|
Use of 'atof', 'atoi' or 'atol' from library stdlib.h |
20.10 |
9.1 |
|
MISRA.STDLIB.ERRNO
|
Use of error indicator 'errno' |
20.5 |
9.1 |
|
MISRA.STDLIB.LONGJMP
|
Use of setjmp macro or longjmp function |
20.7 |
9.1 |
|
MISRA.STDLIB.MEMORY
|
Use of dynamic heap memory allocation |
20.4 |
9.1 |
|
MISRA.STDLIB.SIGNAL
|
Use of the signal handling facilities of signal.h |
20.8 |
9.1 |
|
MISRA.STDLIB.STDIO
|
Use of input/output library stdio.h in production code |
20.9 |
9.1 |
|
MISRA.STDLIB.TIME
|
Use of the time handling functions of library time.h |
20.12 |
9.1 |
|
MISRA.STDLIB.WRONGNAME
|
Reused name of standard library macro, object or function |
20.2 |
9.1 |
9.2 SR2 |
MISRA.STDLIB.WRONGNAME.UNDERSCORE
|
Usage of a reserved name for naming a language entity |
20.2 |
9.2 SR2 |
|
MISRA.STMT.NO_COMPOUND
|
The body of switch, while, do/while or for statement is not a compound statement |
14.8 |
9.1 |
|
MISRA.STMT.NO_EFFECT
|
The statement has no side effects, and does not change control flow |
14.2 |
9.1 |
9.2, 9.2 SR1 |
MISRA.SWITCH.BOOL
|
Condition of switch statement is boolean expression |
15.4 |
9.1 |
|
MISRA.SWITCH.LABEL
|
A switch label belongs to nested compound statement inside switch body |
15.1 |
9.1 |
|
MISRA.SWITCH.NODEFAULT
|
No default clause at the end of a switch statement |
15.3 |
9.2 |
9.2 SR1 |
MISRA.SWITCH.NO_BREAK
|
No break or throw statement at the end of switch-clause |
15.2 |
9.1 |
9.2 |
MISRA.SWITCH.NO_CASE
|
No case-clause in a switch statement |
15.5 |
9.1 |
9.2 |
MISRA.TOKEN.BADCOM
|
Inappropriate character sequence in a comment |
2.3 |
9.1 |
|
MISRA.TOKEN.CPCOM
|
C++ style comments |
2.2 |
9.1 |
|
MISRA.TOKEN.OCTAL.ESCAPE
|
Usage of octal escape sequences |
7.1 |
9.1 |
|
MISRA.TOKEN.OCTAL.INT
|
Usage of octal integer constants |
7.1 |
9.1 |
|
MISRA.TOKEN.WRONGESC
|
Incorrect escape sequence in a literal |
4.1 |
9.1 |
|
MISRA.TYPE.NAMECLASH
|
Identifier in one name space has same spelling as identifier in other name space |
5.6 |
9.1 |
9.2, 9.2 SR2, 9.5 |
MISRA.TYPEDEF.NOT_UNIQUE
|
Typedef name is used for another entity |
5.3 |
9.1 |
9.2, 9.5 |
MISRA.UMINUS.UNSIGNED
|
Operand of unary minus is unsigned |
12.9 |
9.1 |
|
MISRA.UNDEF
|
Undef usage |
19.6 |
9.1 |
|
MISRA.UNDEF.NOTGLOBAL
|
Undef not at the global level |
19.5 |
9.1 |
|
MISRA.UNDEF.WRONGNAME
|
Undefinition of a name from the standard library |
20.2 |
9.1 |
9.5 |
MISRA.UNDEF.WRONGNAME.UNDERSCORE
|
Undefinition of a reserved name |
20.2 |
9.2 SR2 |
|
MISRA.UNION
|
Union is used |
18.4 |
9.1 |
|
MISRA.VAR.HIDDEN
|
Identifier declared in an inner scope hides identifier in outer scope |
5.2 |
9.2 |
9.2 SR1, 9.5, 10.1 |
MISRA.VAR.MIN.VIS
|
Name visibility is too wide |
8.7 |
9.1 |
9.2 SR2, 10.1 |
MISRA.VAR.UNIQUE
|
Identifier clashes with other identifier |
5.7 |
9.2 |
9.2 SR2 |
MISRA.VAR.UNIQUE.STATIC
|
Identifier with static storage specifier clashes with other identifier |
5.5 |
9.2 |
|
MISRA.ZERO_EQ.IMPLICIT
|
Non-boolean expression is implicitly tested against zero |
13.2 |
9.1 |
9.2 SR1 |
PORTING.VAR.EFFECTS
|
Variable used twice in one expression where one usage is subject to side-effects |
12.2 |
9.2 |
9.5 |
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 |
14.1 |
Pre-9.2 |
9.2, 9.5, 10.1, 10.3, 10.4, 11.2 |
UNREACH.RETURN
|
Unreachable Void Return |
14.1 |
Pre-9.2 |
9.2, 9.5, 11.2 |