MISRA C++:2008 rules

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

MISRA.TOKEN.COMMENTED.CODE  Comment appears to contain commented out source code

Rule 2-7-3 Advisory

MISRA.TOKEN.COMMENTED.CODE  Comment appears to contain commented out source code

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. ​