MISRA C++:2008 rules mapped to Klocwork checkers
Guideline | Category | Checker name and description |
---|---|---|
Dir. 0.3.1 | Document | |
Dir. 0.4.1 | Document | |
Dir. 0.4.2 | Document | |
Dir. 0.4.3 | Document | |
Dir. 1.0.2 | Document | |
Dir. 1.0.3 | Document | |
Dir. 2.2.1 | Document | |
Dir. 7.4.1 | Document | |
Dir. 9.6.1 | Document | |
Dir. 15.0.1 | Document | |
Dir. 16.6.1 | Document | |
Dir. 17.0.4 | Document | |
Rule 0-1-1 | Required |
UNREACH.ENUM Code is unreachable due to the possible value(s) of an enum UNREACH.GEN Unreachable code UNREACH.RETURN Unreachable Void Return |
Rule 0-1-2 | Required |
CWARN.NOEFFECT.UCMP.GE Comparison of unsigned value against 0 is always true CWARN.NOEFFECT.UCMP.GE.MACRO Comparison of unsigned value against 0 within a macro is always true CWARN.NOEFFECT.UCMP.LT Comparison of unsigned value against 0 is always false CWARN.NOEFFECT.UCMP.LT.MACRO Comparison of unsigned value against 0 within a macro is always false |
Rule 0-1-3 | Required |
LV_UNUSED.GEN Local variable unused |
Rule 0-1-4 | Required | |
Rule 0-1-5 | Required | |
Rule 0-1-6 | Required | |
Rule 0-1-7 | Required |
MISRA.FUNC.UNUSEDRET Return value of a non-void function is not used |
Rule 0-1-8 | Required | |
Rule 0-1-9 | Required |
VA_UNUSED.GEN Value is Never Used after Assignment VA_UNUSED.INIT Value is Never Used after Initialization |
Rule 0-1-10 | Required |
UNUSED.FUNC.GEN Function defined but not used |
Rule 0-1-11 | Required |
MISRA.FUNC.UNUSEDPAR Formal parameter of a non-virtual function is not used MISRA.FUNC.UNUSEDPAR.UNNAMED Unnamed formal parameter of a non-virtual function is not used |
Rule 0-1-12 | Required |
MISRA.FUNC.VIRTUAL.UNUSEDPAR Formal parameter of a virtual function set is not used |
Rule 0-2-1 | Required |
MISRA.ASSIGN.OVERLAP Object is assigned to an overlapping object |
Rule 0-3-2 | Required | |
Rule 1-0-1 | Required | |
Rule 2-3-1 | Required |
MISRA.CHAR.TRIGRAPH Trigraph usage |
Rule 2-5-1 | Advisory |
MISRA.CHAR.DIGRAPH Digraph usage |
Rule 2-7-1 | Required |
MISRA.TOKEN.BADCOM Inappropriate character sequence in a comment |
Rule 2-7-2 | Required | |
Rule 2-7-3 | Advisory | |
Rule 2-10-1 | Required | |
Rule 2-10-2 | Required |
MISRA.VAR.HIDDEN Identifier declared in an inner scope hides identifier in outer scope |
Rule 2-10-3 | Required |
MISRA.TYPEDEF.NOT_UNIQUE Typedef name is used for another entity |
Rule 2-10-4 | Required |
MISRA.CT.UNIQUE.ID Identifier clashes with tag name |
Rule 2-10-5 | Advisory |
MISRA.VAR.UNIQUE.STATIC Identifier with static storage specifier clashes with other identifier |
Rule 2-10-6 | Required |
MISRA.TYPE.NAMECLASH.CPP.2008 Identifier in one name space has same spelling as identifier in other name space |
Rule 2-13-1 | Required |
MISRA.TOKEN.WRONGESC.CPP.2008 Incorrect escape sequence in a literal |
Rule 2-13-2 | Required |
MISRA.TOKEN.OCTAL.ESCAPE Usage of octal escape sequences MISRA.TOKEN.OCTAL.INT Usage of octal integer constants |
Rule 2-13-3 | Required |
MISRA.LITERAL.UNSIGNED.SUFFIX Unsigned integer literal without 'U' suffix |
Rule 2-13-4 | Required |
MISRA.LITERAL.SUFFIX.CASE Literal suffix in lower case. |
Rule 2-13-5 | Required |
MISRA.STRINGS.CONCAT Narrow and wide string literals concatenated |
Rule 3-1-1 | Required |
MISRA.ONEDEFRULE.FUNC Global function definition in a header file MISRA.ONEDEFRULE.VAR Global variable definition in a header file |
Rule 3-1-2 | Required |
MISRA.DECL.FUNC_LOCAL Function is declared locally |
Rule 3-1-3 | Required |
MISRA.DECL.ARRAY_SIZE Declaration of array with unknown size |
Rule 3-2-1 | Required |
MISRA.OBJ.TYPE.COMPAT Type not compatible with type of other declaration |
Rule 3-2-2 | Required | |
Rule 3-2-3 | Required | |
Rule 3-2-4 | Required | |
Rule 3-3-1 | Required |
MISRA.LINKAGE.EXTERN Object or function declaration with external linkage not in header file |
Rule 3-3-2 | Required |
MISRA.FUNC.STATIC.REDECL Function or object redeclaration does not include 'static' modifier |
Rule 3-4-1 | Required |
MISRA.VAR.MIN.VIS Name visibility is too wide |
Rule 3-9-1 | Required |
MISRA.OBJ.TYPE.IDENT Type not identical with type of other declaration |
Rule 3-9-2 | Advisory |
MISRA.BUILTIN_NUMERIC Builtin numeric type is used |
Rule 3-9-3 | Required |
MISRA.FLOAT.BIT.REPR Use of bit manipulations of floating-point values which rely on storage layout |
Rule 4-5-1 | Required |
MISRA.LOGIC.OPERATOR.NOT_BOOL Operand of non-logical operator is effectively boolean |
Rule 4-5-2 | Required |
MISRA.ENUM.OPERAND Expression of enum type is used in arithmetic context |
Rule 4-5-3 | Required |
MISRA.CHAR.OPERAND Expression of type 'char' or 'wchar_t' is used as non-character operand |
Rule 4-10-1 | Required |
MISRA.LITERAL.NULL.INT NULL used as an integer value. |
Rule 4-10-2 | Required |
MISRA.LITERAL.NULL.PTR Literal zero used as the null-pointer-constant. |
Rule 5-0-1 | Required |
PORTING.VAR.EFFECTS Variable used twice in one expression where one usage is subject to side-effects |
Rule 5-0-2 | Advisory |
MISRA.EXPR.PARENS.INSUFFICIENT Limited dependence required for operator precedence rules in expressions MISRA.EXPR.PARENS.REDUNDANT Limited dependence required for operator precedence rules in expressions |
Rule 5-0-3 | Required |
MISRA.CVALUE.IMPL.CAST.CPP The value of an expression implicitly converted to a different type |
Rule 5-0-4 | Required |
MISRA.CONV.INT.SIGN Implicit integral conversion changes signedness |
Rule 5-0-5 | Required |
MISRA.CONV.FLOAT Implicit floating-point conversion |
Rule 5-0-6 | Required |
MISRA.CONV.NUM.NARROWER Implicit numeric conversion to narrower type |
Rule 5-0-7 | Required |
MISRA.CAST.FLOAT_INT Cast of floating point expression to integral type MISRA.CAST.INT_FLOAT Cast of integral expression to floating point type |
Rule 5-0-8 | Required |
MISRA.CAST.FLOAT.WIDER Cast of floating point expression to a wider floating point type MISRA.CAST.INT.WIDER Cast of integral expression to a wider integral type |
Rule 5-0-9 | Required |
MISRA.CAST.INT.SIGN Non-trivial integral expression is cast to type with different signedness |
Rule 5-0-10 | Required |
MISRA.CAST.UNSIGNED_BITS The result of bitwise operation on unsigned char or short is not cast back to original type |
Rule 5-0-11 | Required |
MISRA.CHAR.NOT_CHARACTER 'char' is used for non-character value |
Rule 5-0-12 | Required |
MISRA.SIGNED_CHAR.NOT_NUMERIC 'signed char' or 'unsigned char' is used for non-numeric value |
Rule 5-0-13 | Required |
MISRA.STMT.COND.NOT_BOOLEAN Condition of if or loop statement is not a boolean expression |
Rule 5-0-14 | Required |
MISRA.EXPR.COND.NOT_BOOLEAN First operand of conditional expression is not a boolean expression |
Rule 5-0-15 | Required |
MISRA.PTR.ARITH Pointer is used in arithmetic or array index expression |
Rule 5-0-16 | Required |
MISRA.PTR.ARITH.NOT_SAME.2008 A pointer resulting from arithmetic on a pointer operand shall address an element of the same array as that pointer operand |
Rule 5-0-17 | Required |
MISRA.PTR.SUB Pointer subtraction shall only be applied if pointing to same array MISRA.PTR.SUB.OBJECT Pointer subtraction shall only be applied if pointing to same object |
Rule 5-0-18 | Required |
MISRA.PTR.CMP.2008 Pointer comparison using comparison operators shall only be applied if pointing to same array and within the range MISRA.PTR.CMP.OBJECT.2008 Pointer comparison using comparison operators shall only be applied if pointing to same object and within the range |
Rule 5-0-19 | Required |
MISRA.PTR.TO_PTR_TO_PTR Pointer declaration has more than two levels of indirection |
Rule 5-0-20 | Required |
MISRA.BITS.OPERAND Operands of bitwise operation have different underlying types |
Rule 5-0-21 | Required |
MISRA.BITS.NOT_UNSIGNED Operand of bitwise operation is not unsigned integer MISRA.BITS.NOT_UNSIGNED.PREP Operand of bitwise operation is not unsigned integer |
Rule 5-2-1 | Required |
MISRA.LOGIC.POSTFIX Operand in a logical 'and' or 'or' expression is not a postfix expression |
Rule 5-2-2 | Required |
MISRA.CAST.PTR.VRCLASS A cast form pointer to a virtual base class to pointer to a derived class does not use 'dynamic_cast' |
Rule 5-2-3 | Advisory |
MISRA.CAST.POLY.TYPE Cast from a polymorphic base class to a derived class |
Rule 5-2-4 | Required |
MISRA.C_CAST C-style cast to non-void type MISRA.FUNC_CAST Functional notation cast different from explicit constructor call |
Rule 5-2-5 | Required |
MISRA.CAST.CONST Cast operation removes const or volatile modifier from a pointer or reference |
Rule 5-2-6 | Required |
MISRA.CAST.FUNC_PTR.CPP Cast converts function pointer to other pointer type |
Rule 5-2-7 | Required |
MISRA.CAST.PTR.UNRELATED Object of pointer type cast to unrelated type |
Rule 5-2-8 | Required |
MISRA.CAST.INT_TO_PTR Object with integer type or pointer to void cast to pointer type |
Rule 5-2-9 | Advisory |
MISRA.CAST.PTR_TO_INT Cast between a pointer and an integral type |
Rule 5-2-10 | Advisory |
MISRA.INCR_DECR.OTHER Increment or decrement operator is mixed with other operators in expression |
Rule 5-2-11 | Required |
MISRA.BIN_OP.OVERLOAD Comma, || or && operator overloaded |
Rule 5-2-12 | Required |
MISRA.FUNC.ARRAY.PARAMS Function argument with array type decay to a pointer |
Rule 5-3-1 | Required |
MISRA.LOGIC.NOT_BOOL Operand of logical operation is not boolean |
Rule 5-3-2 | Required |
MISRA.UMINUS.UNSIGNED Operand of unary minus is unsigned |
Rule 5-3-3 | Required |
MISRA.UN_OP.OVERLOAD Unary & operator is overloaded |
Rule 5-3-4 | Required |
MISRA.SIZEOF.SIDE_EFFECT Operand of sizeof has side effects |
Rule 5-8-1 | Required |
MISRA.SHIFT.RANGE Right operand of shift operation is out of range - greater or equal to max bit-length of left operand, or negative |
Rule 5-14-1 | Required |
MISRA.LOGIC.SIDEEFF Right operand in a logical 'and' or 'or' expression contains side effects |
Rule 5-17-1 | Required | |
Rule 5-18-1 | Required |
MISRA.COMMA Comma operator is used |
Rule 5-19-1 | Advisory |
MISRA.COMP.WRAPAROUND Wrap-around in a condition MISRA.ELIF.WRAPAROUND Wrap-around in #elif directive MISRA.IF.WRAPAROUND Wrap-around in #if directive NUM.OVERFLOW.DF Possible numeric overflow or wraparound |
Rule 6-2-1 | Required |
MISRA.ASSIGN.COND Assignment operator is used in a condition MISRA.ASSIGN.SUBEXPR Assignment operator is used in a sub-expression outside a condition |
Rule 6-2-2 | Required |
MISRA.FLOAT_EQUAL Floating point expression is tested for equality |
Rule 6-2-3 | Required |
MISRA.NULL.STMT Null statement is not the only statement on line or comments are placed incorrectly |
Rule 6-3-1 | Required |
MISRA.STMT.NO_COMPOUND The body of switch, while, do/while or for statement is not a compound statement |
Rule 6-4-1 | Required |
MISRA.IF.NO_COMPOUND The body of if/else statement is not a compound statement |
Rule 6-4-2 | Required |
MISRA.IF.NO_ELSE A chain of if/else-if statements is not terminated with else or is terminated with an empty else clause |
Rule 6-4-3 | Required |
MISRA.SWITCH.NOT_WELL_FORMED Switch statement is not well-formed |
Rule 6-4-4 | Required |
MISRA.SWITCH.LABEL A switch label belongs to nested compound statement inside switch body |
Rule 6-4-5 | Required |
MISRA.SWITCH.NO_BREAK No break or throw statement at the end of switch-clause |
Rule 6-4-6 | Required |
MISRA.SWITCH.NODEFAULT No default clause at the end of a switch statement |
Rule 6-4-7 | Required |
MISRA.SWITCH.BOOL Condition of switch statement is boolean expression |
Rule 6-4-8 | Required |
MISRA.SWITCH.NO_CASE No case-clause in a switch statement |
Rule 6-5-1 | Required |
MISRA.FOR.COUNTER.FLT For loop counter has a floating point type MISRA.FOR.COUNTER.MANY Many counters in a for loop |
Rule 6-5-2 | Required |
MISRA.FOR.COND.EQ ++ or -- operations are not used to change loop counter, but condition tests loop counter for equality |
Rule 6-5-3 | Required |
MISRA.FOR.COND.CHANGE For loop counter is modified within the loop condition section MISRA.FOR.STMT.CHANGE For loop counter is modified within the loop statement |
Rule 6-5-4 | Required |
MISRA.FOR.INCR For loop counter is modified in an inappropriate way |
Rule 6-5-5 | Required |
MISRA.FOR.LOOP_CONTROL.CHANGE.COND Loop control variable is modified in condition section of a for loop MISRA.FOR.LOOP_CONTROL.CHANGE.EXPR Loop control variable is modified in expression section of a for loop |
Rule 6-5-6 | Required |
MISRA.FOR.LOOP_CONTROL.NOT_BOOLEAN Loop control variable is not boolean |
Rule 6-6-1 | Required |
MISRA.GOTO.NESTED Goto to a label declared in a nested compound statement |
Rule 6-6-2 | Required |
MISRA.GOTO.AFTER.LABEL Unconstrained use of goto |
Rule 6-6-3 | Required |
MISRA.CONTINUE.ILL Continue statement is used in an ill-formed for loop |
Rule 6-6-4 | Required |
MISRA.ITER.ONETERM Iteration statement has more than one break or goto for loop termination. |
Rule 6-6-5 | Required |
MISRA.RETURN.NOT_LAST Return is not the last statement in a function |
Rule 7-1-1 | Required |
MISRA.VAR.NEEDS.CONST Variable is not modified but is declared without const qualifier |
Rule 7-1-2 | Required |
MISRA.PPARAM.NEEDS.CONST Pointer parameter is not used to modify the addressed object but is not declared as a pointer to const |
Rule 7-2-1 | Required | |
Rule 7-3-1 | Required |
MISRA.NS.GLOBAL Function, variable or type declaration in global namespace MISRA.NS.GLOBAL.USING Using directive or declaration in global namespace |
Rule 7-3-2 | Required |
MISRA.NS.MAIN Non-global function with name 'main' is defined |
Rule 7-3-3 | Required |
MISRA.NAMESPACE.UNMD Unnamed namespace in header file |
Rule 7-3-4 | Required |
MISRA.NS.USING_DIR Using directive |
Rule 7-3-5 | Required |
MISRA.NS.USING_DECL Multiple declarations for an identifier in the same namespace should not straddle a using-declaration for that identifier |
Rule 7-3-6 | Required |
MISRA.NAMESPACE.DECL Using-declaration in header file MISRA.NAMESPACE.DIR Using-directive in header file MISRA.NS.USING.HEADER Using directive or declaration is used in a header file |
Rule 7-4-2 | Required |
MISRA.PRAGMA.ASM Incorrect assembler instruction |
Rule 7-4-3 | Required |
MISRA.ASM.ENCAPS Assembly language is not isolated. |
Rule 7-5-1 | Required |
LOCRET.RET Function returns address of local variable |
Rule 7-5-2 | Required |
LOCRET.ARG Function returns address of local variable LOCRET.GLOB Function returns address of local variable |
Rule 7-5-3 | Required |
MISRA.ADDR.REF.PARAM Function returns reference to parameter passed by reference MISRA.ADDR.REF.PARAM.PTR Function returns address of parameter passed by reference |
Rule 7-5-4 | Advisory |
MISRA.FUNC.RECUR Recursive function |
Rule 8-0-1 | Required |
MISRA.DECL.MANY_DCLS More than one declarator in one declaration |
Rule 8-3-1 | Required |
MISRA.SAME.DEFPARAMS Overriding virtual function and the function it overrides have different default arguments |
Rule 8-4-1 | Required |
MISRA.FUNC.VARARG Function with variable number of arguments |
Rule 8-4-2 | Required |
MISRA.FUNC.PARAMS.IDENT Identifiers used in declaration and definition of function are not identical |
Rule 8-4-3 | Required |
FUNCRET.GEN Non-void function does not return value |
Rule 8-4-4 | Required |
MISRA.FUNC.ADDR Address of a function is used without & operator |
Rule 8-5-1 | Required |
UNINIT.CTOR.MIGHT Uninitialized Variable in Constructor - possible UNINIT.CTOR.MUST Uninitialized Variable in Constructor UNINIT.HEAP.MIGHT Uninitialized Heap Use - possible UNINIT.HEAP.MUST Uninitialized Heap Use UNINIT.STACK.ARRAY.MIGHT Uninitialized Array - possible UNINIT.STACK.ARRAY.MUST Uninitialized Array UNINIT.STACK.ARRAY.PARTIAL.MUST Partially Uninitialized Array UNINIT.STACK.MIGHT Uninitialized Variable - possible UNINIT.STACK.MUST Uninitialized Variable |
Rule 8-5-2 | Required |
MISRA.INIT.BRACES Incorrect initializer braces placement. |
Rule 8-5-3 | Required |
MISRA.ENUM.INIT Non-first enumerator is explicitly initialized, but not all elements are explicitly initialized. |
Rule 9-3-1 | Required |
MISRA.CONST.RET.NON_CONST Constant member function returns non-const pointer to member variable |
Rule 9-3-2 | Required |
MISRA.RET.REF.NON_CONST Member function returns non-const handle to member variable |
Rule 9-3-3 | Required |
MISRA.MEMB.NON_CONST Non-const member function does not change any member variables MISRA.MEMB.NON_STATIC Non-static member function does not use other non-static members of the same class |
Rule 9-5-1 | Required |
MISRA.UNION Union is used |
Rule 9-6-2 | Required |
MISRA.BITFIELD.TYPE.CPP Type of bit-field is neither bool, nor signed/unsigned integer |
Rule 9-6-3 | Required |
MISRA.FIELD.BIT.ENUM Bit-field has enum type. |
Rule 9-6-4 | Required |
MISRA.BITFIELD.SIGNED Length of a named signed bit-field is less than 2 |
Rule 10-1-1 | Advisory |
MISRA.DERIVE.VIRTUAL Class is derived from virtual base |
Rule 10-1-2 | Required |
MISRA.VIRTUAL.BASE.DIAMOND Base class is used as virtual not in diamond hierarchy |
Rule 10-1-3 | Required |
MISRA.BASE.VIRTUAL.NOTVIRTUAL Base class is used as both virtual and not virtual in inheritance hierarchy |
Rule 10-2-1 | Advisory |
MISRA.BASE.IDS.UNIQUE Member name is used twice in inheritance hierarchy |
Rule 10-3-1 | Required |
MISRA.BASE.MANYDEFS Both overriding and overridden virtual functions have definitions |
Rule 10-3-2 | Required |
MISRA.VIRTUAL.NOVIRTUAL Overriding virtual function declared with no 'virtual' keyword |
Rule 10-3-3 | Required |
MISRA.PUREVIRT.OVRD Pure virtual function overrides a non pure virtual function |
Rule 11-0-1 | Required |
MISRA.MEMB.NOT_PRIVATE Member variable in non-POD class is not private |
Rule 12-1-1 | Required |
MISRA.CTOR.DYNAMIC Object's dynamic type is used from the body of its constructor MISRA.DTOR.DYNAMIC Object's dynamic type is used from the body of its destructor |
Rule 12-1-2 | Advisory |
MISRA.CTOR.BASE Constructor does not explicitly call constructor of its base class |
Rule 12-1-3 | Required |
MISRA.CTOR.NOT_EXPLICIT Constructor with one argument of built-in type is not declared 'explicit' |
Rule 12-8-1 | Required | |
Rule 12-8-2 | Required |
MISRA.COPYASSIGN.ABSTRACT Copy assignment should be declared protected or private in an abstract class |
Rule 14-5-1 | Required |
MISRA.GENFU.ASSOC Generic function is declared in an associated namespace |
Rule 14-5-2 | Required |
MISRA.COPY.CSTR.TMPL Class has a template constructor with a single generic parameter, but has no copy constructor defined |
Rule 14-5-3 | Required |
MISRA.COPYASSIGN.TMPL A copy ssignment operator should be defined when class has a template copy assignment operator with a single generic parameter |
Rule 14-6-1 | Required |
MISRA.TEMPLMEM.NOQUAL In an instantiated template a member declared in a dependant base is used without a qualificator or 'this' |
Rule 14-6-2 | Required |
MISRA.FUNC.DECL.AFTERUSE Function chosen by overload resolution when instantiating a template is declared after its usage |
Rule 14-7-1 | Required | |
Rule 14-7-2 | Required |
MISRA.SPEC.ILL Explicit instantiation of a template makes the code ill-formed |
Rule 14-7-3 | Required |
MISRA.SPEC.SAMEFILE Template specialization and its primary template are declared in different files |
Rule 14-8-1 | Required |
MISRA.FUNC.SPEC.OVRLD Viable function set for a function call contains an overloaded template and its explicit specialization |
Rule 14-8-2 | Advisory |
MISRA.FUNC.SPEC.NOTSPEC Viable function set for a function call contains both specializations and non-specializations |
Rule 15-0-2 | Advisory |
MISRA.THROW.PTR Exception object is a pointer |
Rule 15-0-3 | Required |
MISRA.TRY.JUMP Control can be transferred into a try block with goto or switch statement |
Rule 15-1-1 | Required | |
Rule 15-1-2 | Required |
MISRA.THROW.NULL NULL is thrown explicitly |
Rule 15-1-3 | Required |
MISRA.THROW.EMPTY Empty throw expression does not belong to a catch block |
Rule 15-3-1 | Required | |
Rule 15-3-2 | Advisory |
MISRA.CATCH.ALL No ellipsis exception handler in a try-catch block |
Rule 15-3-3 | Required |
MISRA.CTOR.TRY.NON_STATIC Function try/catch block of constructor or destructor references non-static members |
Rule 15-3-4 | Required | |
Rule 15-3-5 | Required |
MISRA.CATCH.BY_VALUE Exception object of class type is caught by value |
Rule 15-3-6 | Required |
MISRA.CATCH.WRONGORD Handler for a base exception class precedes to a handler for a derived exception class in a try-catch block |
Rule 15-3-7 | Required |
MISRA.CATCH.NOALL Ellipsis exception handler is not the last one in a try-catch block |
Rule 15-4-1 | Required |
MISRA.DECL.EXCPT.SPEC Function is declared with different exception specifications |
Rule 15-5-1 | Required |
MISRA.DTOR.THROW Throw in destructor |
Rule 15-5-2 | Required | |
Rule 15-5-3 | Required |
MISRA.TERMINATE terminate() function is called explicitly |
Rule 16-0-1 | Required |
MISRA.INCL.INSIDE Include directive preceded by a preprocessor output token |
Rule 16-0-2 | Required |
MISRA.DEFINE.NOTGLOBAL Define not at the global level MISRA.UNDEF.NOTGLOBAL Undef not at the global level |
Rule 16-0-3 | Required |
MISRA.UNDEF Undef usage |
Rule 16-0-4 | Required |
MISRA.DEFINE.FUNC Function-like macro definition |
Rule 16-0-5 | Required |
MISRA.EXPANSION.DIRECTIVE Directive-like tokens within a macro argument |
Rule 16-0-6 | Required |
MISRA.DEFINE.NOPARS Macro parameter with no parentheses |
Rule 16-0-7 | Required |
MISRA.ELIF.UNDEF Undefined macros in #elif directive MISRA.IF.UNDEF Undefined macros in #if directive |
Rule 16-0-8 | Required |
MISRA.USE.UNKNOWNDIR Unknown preprocessor directive is used |
Rule 16-1-1 | Required |
MISRA.ELIF.DEFINED Incorrect 'defined' usage in #elif directive MISRA.IF.DEFINED Incorrect 'defined' usage in #if directive |
Rule 16-1-2 | Required |
MISRA.ELIF.OTHERFILE #elif in an improper file MISRA.ELSE.OTHERFILE #else in an improper file MISRA.ENDIF.OTHERFILE #endif in an improper file |
Rule 16-2-1 | Required |
MISRA.USE.DEFINE Non-guarding macro definition MISRA.USE.EXPANSION Macro expansion MISRA.USE.WRONGDIR Improper preprocessor directive |
Rule 16-2-2 | Required |
MISRA.DEFINE.BADEXP.CPP Inappropriate macro expansion in a C++ source |
Rule 16-2-3 | Required |
MISRA.INCGUARD Include guard is not provided |
Rule 16-2-4 | Required |
MISRA.INCL.SYMS Non-standard characters in header file names |
Rule 16-2-5 | Advisory |
MISRA.INCL.SYMS Non-standard characters in header file names |
Rule 16-2-6 | Required |
MISRA.INCL.BAD Non-standard include directive |
Rule 16-3-1 | Required |
MISRA.DEFINE.SHARP.MANY Several # or ## operators in a macro definition |
Rule 16-3-2 | Advisory |
MISRA.DEFINE.SHARP # or ## operator in a macro definition |
Rule 16-6-1 |
MISRA.PRAGMA Non-documented pragma directive |
|
Rule 17-0-1 | Required |
MISRA.DEFINE.WRONGNAME Usage of a name from the standard library for naming a macro MISRA.DEFINE.WRONGNAME.UNDERSCORE Usage of a reserved name for naming a macro |
Rule 17-0-2 | Required |
MISRA.UNDEF.WRONGNAME Undefinition of a name from the standard library MISRA.UNDEF.WRONGNAME.UNDERSCORE Undefinition of a reserved name |
Rule 17-0-3 | Required |
MISRA.STDLIB.WRONGNAME Reused name of standard library macro, object or function MISRA.STDLIB.WRONGNAME.UNDERSCORE Usage of a reserved name for naming a language entity |
Rule 17-0-5 | Required |
MISRA.EXPANSION.UNSAFE Unsafe macro usage MISRA.STDLIB.LONGJMP Use of setjmp macro or longjmp function |
Rule 18-0-1 | Required |
MISRA.EXPANSION.UNSAFE Unsafe macro usage |
Rule 18-0-2 | Required |
MISRA.INCL.UNSAFE Unsafe header inclusion MISRA.STDLIB.ATOI Use of 'atof', 'atoi' or 'atol' from library stdlib.h |
Rule 18-0-3 | Required |
MISRA.STDLIB.ABORT Use of 'abort', 'exit', 'getenv' or 'system' from library stdlib.h |
Rule 18-0-4 | Required |
MISRA.INCL.UNSAFE Unsafe header inclusion MISRA.STDLIB.TIME Use of the time handling functions of library time.h |
Rule 18-0-5 | Required |
MISRA.STDLIB.CSTRING Function from 'cstring' library is used MISRA.STDLIB.CSTRING.MACRO Macro from 'cstring' library is used |
Rule 18-2-1 | Required |
MISRA.EXPANSION.UNSAFE Unsafe macro usage |
Rule 18-4-1 | Required |
MISRA.STDLIB.MEMORY Use of dynamic heap memory allocation |
Rule 18-7-1 | Required |
MISRA.EXPANSION.UNSAFE Unsafe macro usage MISRA.INCL.UNSAFE Unsafe header inclusion MISRA.STDLIB.SIGNAL Use of the signal handling facilities of signal.h |
Rule 19-3-1 | Required |
MISRA.EXPANSION.UNSAFE Unsafe macro usage MISRA.STDLIB.ERRNO Use of error indicator 'errno' |
Rule 27-0-1 | Required |
MISRA.INCL.UNSAFE Unsafe header inclusion MISRA.STDLIB.STDIO Use of input/output library stdio.h in production code |
Support Summary
Total supported: 196
Total of not statically verifiable rules: 12
Total of statically verifiable rules not supported: 20
MISRA C++ coverage: 91% (excludes rules that are not statically verifiable)
"MISRA", "MISRA C" and "MISRA C++" are registered trademarks of The MISRA Consortium Limited.