MISRA C:2012 with Amendment 1 checker reference- certified
In this topic: |
These checkers detect violations of the MISRA C:2012 standard.
Notes
- This reference table includes Amendment 1. If you prefer to see the version without the amendment included, see MISRA C:2012 checker reference - certified.
- To view this information organized by rule number, see MISRA C:2012 with Amendment 1 rules mapped to Klocwork certified checkers.
- We provide full help for each MISRA C and MISRA C++ checker. Because this information is licensed, it is available as a part of your Klocwork installation, rather than online.
MISRA C:2012 C90
Issue code | Description | Rule | Issued | Improved |
---|---|---|---|---|
ABV.ANY_SIZE_ARRAY |
Buffer Overflow - Array Index Out of Bounds | 21.17 21.18 | Pre-9.2 | 9.5 |
ABV.GENERAL |
Buffer Overflow - Array Index Out of Bounds | 18.1 21.17 21.18 | 9.6 | 10.1, 10.3, 10.4, 11.0, 11.1, 11.2, 2017.3, 2021.2, 2022.1 |
ABV.MEMBER |
Buffer Overflow - Array Index Out of Bounds | 21.17 21.18 | 9.5 | 10.3 |
ABV.STACK |
Buffer Overflow - Local Array Index Out of Bounds | 21.17 21.18 | Pre-9.2 | 9.5 |
ABV.TAINTED |
Buffer Overflow from Unvalidated Input | Dir. 4.14 | Pre-9.2 | 9.5, 10.3, 11.2 |
ABV.UNKNOWN_SIZE |
Buffer Overflow - Array Index Out of Bounds | 21.17 21.18 | 9.6 | |
CXX.ERRNO.INCORRECTLY_CHECKED |
Errno condition check not required after calling library function | 22.10 | 2021.2 | |
CXX.ERRNO.NOT_CHECKED |
Errno condition check is missing after calling library function | 22.9 | 2021.2 | |
CXX.ERRNO.NOT_SET |
Errno is not reset to zero before calling library function | 22.8 | 2021.2 | |
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.EXPR.SIZEOF.ARRAY_PARAM.2012_AMD1 |
The sizeof operator has an operand which is a function parameter declared as "array of type" | 12.5 | 2017.2 | |
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.2012_AMD1 |
Use of 'abort', 'exit', or 'system' from library stdlib.h | 21.8 | 2017 | |
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.CTYPE.RANGE.2012_AMD1 |
Any value passed to a function in ctype.h shall be representable as an unsigned char or be the value EOF | 21.13 | 2019.2 | |
MISRA.STDLIB.ILLEGAL_REUSE.2012_AMD1 |
The pointer returned by the Standard Library functions asctime and similar shall not be used following a subsequent call to the same function | 21.20 | 2018.1 | |
MISRA.STDLIB.ILLEGAL_WRITE.2012_AMD1 |
The pointers returned by the Standard Library functions localeconv, getenv, setlocale or, strerror shall only be used as if they have pointer to const-qualified type | 21.19 | 2019.2 | |
MISRA.STDLIB.INCOMPAT_ARGS.2012_AMD1 |
The pointer arguments to memcpy, memmove, or memcmp are not pointers to compatible types | 21.15 | 2017.3 | |
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 | |
NNTS.MIGHT |
Buffer Overflow - Non-null Terminated String | 21.17 | Pre-9.2 | 9.2, 10.3 |
NNTS.MUST |
Buffer Overflow - Non-null Terminated String | 21.17 | Pre-9.2 | 9.2, 10.3 |
NNTS.TAINTED |
Unvalidated User Input Causing Buffer Overflow - Non-Null Terminated String | Dir. 4.14 | Pre-9.2 | 9.2, 10.3, 2021.2, 2021.3 |
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 |
SV.TAINTED.ALLOC_SIZE |
Use of Unvalidated Integer in Memory Allocation | Dir. 4.14 | Pre-9.2 | 10.1, 10.2 |
SV.TAINTED.BINOP |
Use of Unvalidated Integer in Binary Operation | Dir. 4.14 | 10.3 | 2020.2 |
SV.TAINTED.CALL.BINOP |
Use of Unvalidated Integer in Binary Operation | Dir. 4.14 | 10.3 | |
SV.TAINTED.CALL.DEREF |
Dereference Of An Unvalidated Pointer | Dir. 4.14 | 11.2 | |
SV.TAINTED.CALL.INDEX_ACCESS |
Use of Unvalidated Integer as Array Index by Function Call | Dir. 4.14 | Pre-9.2 | 10.1, 10.2 |
SV.TAINTED.CALL.LOOP_BOUND |
Use of Unvalidated Integer in Loop Condition through a Function Call | Dir. 4.14 | Pre-9.2 | 10.1, 10.2 |
SV.TAINTED.DEREF |
Dereference Of An Unvalidated Pointer | Dir. 4.14 | 11.2 | |
SV.TAINTED.FMTSTR |
Use of Unvalidated Data in a Format String | Dir. 4.14 | Pre-9.2 | 10.1 |
SV.TAINTED.INDEX_ACCESS |
Use of Unvalidated Integer as Array Index | Dir. 4.14 | Pre-9.2 | 10.1, 10.2, 11.1, 2017, 2022.1 |
SV.TAINTED.INJECTION |
Command Injection | Dir. 4.14 | Pre-9.2 | 10.1 |
SV.TAINTED.LOOP_BOUND |
Use of Unvalidated Integer in Loop Condition | Dir. 4.14 | Pre-9.2 | 10.1, 10.2, 2022.1 |
SV.TAINTED.PATH_TRAVERSAL |
Use of Unvalidated Data in a Path Traversal | Dir. 4.14 | 11.0 | |
SV.TAINTED.SECURITY_DECISION |
Security Decision | Dir. 4.14 | 10.4 | |
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.ANY_SIZE_ARRAY |
Buffer Overflow - Array Index Out of Bounds | 21.17 21.18 | Pre-9.2 | 9.5 |
ABV.GENERAL |
Buffer Overflow - Array Index Out of Bounds | 18.1 21.17 21.18 | 9.6 | 10.1, 10.3, 10.4, 11.0, 11.1, 11.2, 2017.3, 2021.2, 2022.1 |
ABV.MEMBER |
Buffer Overflow - Array Index Out of Bounds | 21.17 21.18 | 9.5 | 10.3 |
ABV.STACK |
Buffer Overflow - Local Array Index Out of Bounds | 21.17 21.18 | Pre-9.2 | 9.5 |
ABV.TAINTED |
Buffer Overflow from Unvalidated Input | Dir. 4.14 | Pre-9.2 | 9.5, 10.3, 11.2 |
ABV.UNKNOWN_SIZE |
Buffer Overflow - Array Index Out of Bounds | 21.17 21.18 | 9.6 | |
CXX.ERRNO.INCORRECTLY_CHECKED |
Errno condition check not required after calling library function | 22.10 | 2021.2 | |
CXX.ERRNO.NOT_CHECKED |
Errno condition check is missing after calling library function | 22.9 | 2021.2 | |
CXX.ERRNO.NOT_SET |
Errno is not reset to zero before calling library function | 22.8 | 2021.2 | |
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.EXPR.SIZEOF.ARRAY_PARAM.2012_AMD1 |
The sizeof operator has an operand which is a function parameter declared as "array of type" | 12.5 | 2017.2 | |
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.2012_AMD1 |
Use of 'abort', 'exit', or 'system' from library stdlib.h | 21.8 | 2017 | |
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.CTYPE.RANGE.2012_AMD1 |
Any value passed to a function in ctype.h shall be representable as an unsigned char or be the value EOF | 21.13 | 2019.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.ILLEGAL_REUSE.2012_AMD1 |
The pointer returned by the Standard Library functions asctime and similar shall not be used following a subsequent call to the same function | 21.20 | 2018.1 | |
MISRA.STDLIB.ILLEGAL_WRITE.2012_AMD1 |
The pointers returned by the Standard Library functions localeconv, getenv, setlocale or, strerror shall only be used as if they have pointer to const-qualified type | 21.19 | 2019.2 | |
MISRA.STDLIB.INCOMPAT_ARGS.2012_AMD1 |
The pointer arguments to memcpy, memmove, or memcmp are not pointers to compatible types | 21.15 | 2017.3 | |
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 | |
NNTS.MIGHT |
Buffer Overflow - Non-null Terminated String | 21.17 | Pre-9.2 | 9.2, 10.3 |
NNTS.MUST |
Buffer Overflow - Non-null Terminated String | 21.17 | Pre-9.2 | 9.2, 10.3 |
NNTS.TAINTED |
Unvalidated User Input Causing Buffer Overflow - Non-Null Terminated String | Dir. 4.14 | Pre-9.2 | 9.2, 10.3, 2021.2, 2021.3 |
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 |
SV.TAINTED.ALLOC_SIZE |
Use of Unvalidated Integer in Memory Allocation | Dir. 4.14 | Pre-9.2 | 10.1, 10.2 |
SV.TAINTED.BINOP |
Use of Unvalidated Integer in Binary Operation | Dir. 4.14 | 10.3 | 2020.2 |
SV.TAINTED.CALL.BINOP |
Use of Unvalidated Integer in Binary Operation | Dir. 4.14 | 10.3 | |
SV.TAINTED.CALL.DEREF |
Dereference Of An Unvalidated Pointer | Dir. 4.14 | 11.2 | |
SV.TAINTED.CALL.INDEX_ACCESS |
Use of Unvalidated Integer as Array Index by Function Call | Dir. 4.14 | Pre-9.2 | 10.1, 10.2 |
SV.TAINTED.CALL.LOOP_BOUND |
Use of Unvalidated Integer in Loop Condition through a Function Call | Dir. 4.14 | Pre-9.2 | 10.1, 10.2 |
SV.TAINTED.DEREF |
Dereference Of An Unvalidated Pointer | Dir. 4.14 | 11.2 | |
SV.TAINTED.FMTSTR |
Use of Unvalidated Data in a Format String | Dir. 4.14 | Pre-9.2 | 10.1 |
SV.TAINTED.INDEX_ACCESS |
Use of Unvalidated Integer as Array Index | Dir. 4.14 | Pre-9.2 | 10.1, 10.2, 11.1, 2017, 2022.1 |
SV.TAINTED.INJECTION |
Command Injection | Dir. 4.14 | Pre-9.2 | 10.1 |
SV.TAINTED.LOOP_BOUND |
Use of Unvalidated Integer in Loop Condition | Dir. 4.14 | Pre-9.2 | 10.1, 10.2, 2022.1 |
SV.TAINTED.PATH_TRAVERSAL |
Use of Unvalidated Data in a Path Traversal | Dir. 4.14 | 11.0 | |
SV.TAINTED.SECURITY_DECISION |
Security Decision | Dir. 4.14 | 10.4 | |
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 |