Start here

Home
About Klocwork
What's new
Fixed issues
Release notes
Installation

Reference

C/C++ checkers
Java checkers
C# checkers
MISRA C 2004 checkers
MISRA C++ 2008 checkers
MISRA C 2012 checkers
MISRA C 2012 checkers with Amendment 1
Commands
Metrics
Troubleshooting
Reference

Product components

C/C++ Integration build analysis
Java Integration build analysis
Desktop analysis
Refactoring
Klocwork Static Code Analysis
Klocwork Code Review
Structure101
Tuning
Custom checkers

Coding environments

Visual Studio
Eclipse for C/C++
Eclipse for Java
IntelliJ IDEA
Other

Administration

Project configuration
Build configuration
Administration
Analysis performance
Server performance
Security/permissions
Licensing
Klocwork Static Code Analysis Web API
Klocwork Code Review Web API

Community

View help online
Visit RogueWave.com
Klocwork Support
Rogue Wave Videos

Legal

Legal information

MISRA-C 2012 with Amendment 1 checker reference

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.
  • For instructions on how to enable the MISRA checkers, see Installing the MISRA 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.
  • To view this information organized by rule number, see MISRA-C 2012 with Amendment 1 rules mapped to Klocwork checkers.
  • The information about MISRA checkers in the online Documentation reflects the latest service releases and patches.
  • For MISRA.SHIFT.RANGE.2012, the implemented checker addresses the rule only partially, namely only in the cases where the right-hand side of the shift operator is constant.

MISRA-C 2012 C90

Issue code Description MISRA-C 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 21.17 21.18 9.6 10.1, 10.3, 10.4, 11.0, 11.1, 11.2, 2017.3
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  
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.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.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
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.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  
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.C90.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.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
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.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.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.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  
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  
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
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  
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
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
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  
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
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
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
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

MISRA-C 2012 C99

Issue code Description MISRA-C 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 21.17 21.18 9.6 10.1, 10.3, 10.4, 11.0, 11.1, 11.2, 2017.3
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  
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.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  
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.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.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.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  
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  
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
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
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  
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
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
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
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