AUTOSAR 18-10 Standard mapped to Klocwork and community C and C++ checkers - Strict

You can use the AUTOSAR C++14 Strict taxonomy to ensure compliance with the AUTOSAR C++14 Standard, release 18-10. The AUTOSAR C++14 (18-10) taxonomy detects violations of our both our Klocwork C/C++ checkers, our MISRA checkers, and our Klocwork community checkers. This taxonomy includes coverage for additional rules compared to the non-strict version.

Rule Checker name and description
A0-1-2 (req.)

MISRA.FUNC.UNUSEDRET   Return value of a non-void function is not used

A0-1-4 (req.)

MISRA.FUNC.UNUSEDPAR   Formal parameter of a non-virtual function is not used

A0-1-5 (req.)

MISRA.FUNC.VIRTUAL.UNUSEDPAR   Formal parameter of a virtual function set is not used

A0-4-2 (req.)

AUTOSAR.TYPE.LONG_DOUBLE   Type long double shall not be used

A2-5-1 (req.)

MISRA.CHAR.TRIGRAPH   Trigraph usage

A2-5-2 (req.)

MISRA.CHAR.DIGRAPH   Digraph usage

A2-7-2 (req.)

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

A2-10-1 (req.)

MISRA.VAR.HIDDEN   Identifier declared in an inner scope hides identifier in outer scope

A2-10-5 (adv.)

MISRA.VAR.UNIQUE.STATIC   Identifier with static storage specifier clashes with other identifier

A2-10-6 (req.)

MISRA.TYPE.NAMECLASH.CPP.2008   Identifier in one name space has same spelling as identifier in other name space

A2-11-1 (req.)

AUTOSAR.TYPE.QUAL.VOLATILE   The volatile type qualifier shall not be used

A2-13-1 (req.)

MISRA.TOKEN.WRONGESC.CPP.2008   Incorrect escape sequence in a literal

A2-13-2 (req.)

MISRA.STRINGS.CONCAT   Narrow and wide string literals concatenated

A2-13-3 (req.)

AUTOSAR.TYPE.WCHAR_T   Type wchar_t shall not be used

A2-13-4 (req.)

AUTOSAR.ADD.STR.TO.NON.CONST   String literals shall not be assigned to non-constant pointers

A2-13-5 (adv.)

AUTOSAR.HEX.UPPER   Hexadecimal constants should be upper case

A3-1-1 (req.)

AUTOSAR.ADD.ONEDEFRULE.FUNC   Function is violating one definition rule

AUTOSAR.ADD.ONEDEFRULE.VAR   Variable is violating one definition rule

MISRA.ONEDEFRULE.FUNC   Global function definition in a header file

MISRA.ONEDEFRULE.VAR   Global variable definition in a header file

A3-1-3 (adv.)

AUTOSAR.ADD.FILE.EXT   Local implementation files not having .cpp file extension

A3-1-4 (req.)

MISRA.DECL.ARRAY_SIZE   Declaration of array with unknown size

A3-1-5 (req.)

AUTOSAR.FUNC.INLINE_DEF   A function definition shall only be placed in a class definition if (1) the function is intended to be inlined (2); it is a member function template; (3) it is a member function of a class template

A3-3-1 (req.)

MISRA.LINKAGE.EXTERN   Object or function declaration with external linkage not in header file

A3-9-1 (req.)

AUTOSAR.BUILTIN_NUMERIC   Fixed width integer types from <cstdint> shall be used in place of the basic numerical types

A4-5-1 (req.)

AUTOSAR.ADD.ENUM.OP   Enum shall not be used in arithmetic context

MISRA.ENUM.OPERAND   Expression of enum type is used in arithmetic context

A4-7-1 (req.)

NUM.OVERFLOW   Possible Overflow

NUM.OVERFLOW.DF   Possible numeric overflow or wraparound

PRECISION.LOSS   Loss of Precision

A4-10-1 (req.)

AUTOSAR.ADD.NULLPTR   Only nullptr literal shall be used as the null-pointer-constant

A5-0-1 (req.)

AUTOSAR.ADD.EXPR.EVAL.MULTI.CALL   The value of an expression shall be the same under any order of evaluation that the standard permits

AUTOSAR.ADD.EXPR.EVAL.VOLATILE   The value of an expression shall be the same under any order of evaluation that the standard permits

PORTING.VAR.EFFECTS   Variable used twice in one expression where one usage is subject to side-effects

A5-0-2 (req.)

AUTOSAR.ADD.COND.NOT.BOOL   The condition of an if-statement and iteration statement shall have type bool

AUTOSAR.ADD.LOGIC.NOT_BOOL   The condition of an if-statement and iteration statement shall have type bool

MISRA.STMT.COND.NOT_BOOLEAN   Condition of if or loop statement is not a boolean expression

A5-0-3 (req.)

MISRA.PTR.TO_PTR_TO_PTR   Pointer declaration has more than two levels of indirection

A5-1-1 (req.)

AUTOSAR.ADD.LITERAL   Literal values shall not be used apart from type initialization

A5-1-2 (req.)

AUTOSAR.LAMBDA.IMPLICIT_CAPTURE   Variables shall not be implicitly captured in a lambda expression

A5-1-3 (req.)

AUTOSAR.LAMBDA.NO_PARAM_LIST   Parameter list (possibly empty) shall be included in every lambda expression

A5-1-4 (req.)

AUTOSAR.LAMBDA.REF_LIFETIME   A lambda expression object shall not outlive any of its reference-captured objects

A5-1-6 (adv.)

AUTOSAR.LAMBDA.IMPLICIT_RETURN_TYPE   Return type of a non-void return type lambda expression should be explicitly specified

A5-1-7 (req.)

AUTOSAR.LAMBDA.TYPE_OPERAND   A lambda shall not be an operand to decltype or typeid

A5-1-8 (adv.)

AUTOSAR.LAMBDA.NESTED   Lambda expressions should not be defined inside another lambda expression

A5-2-1 (adv.)

AUTOSAR.CAST.DYNAMIC   dynamic_cast should not be used

A5-2-2 (req.)

AUTOSAR.CAST.CSTYLE   Traditional C-style casts shall not be used

A5-2-3 (req.)

MISRA.CAST.CONST   Cast operation removes const or volatile modifier from a pointer or reference

A5-2-4 (req.)

AUTOSAR.CAST.REINTERPRET   reinterpret_cast shall not be used

A5-2-5 (req.)

ABV.ANY_SIZE_ARRAY   Buffer Overflow - Array Index Out of Bounds

ABV.GENERAL   Buffer Overflow - Array Index Out of Bounds

ABV.GENERAL.MULTIDIMENSION   Buffer Overflow - Array Index Out of Bounds

ABV.ITERATOR   Buffer Overflow - Array Index may be out of Bounds

ABV.MEMBER   Buffer Overflow - Array Index Out of Bounds

ABV.STACK   Buffer Overflow - Local Array Index Out of Bounds

ABV.TAINTED   Buffer Overflow from Unvalidated Input

ABV.UNICODE.BOUND_MAP   Buffer overflow in mapping character function

ABV.UNICODE.FAILED_MAP   Mapping function failed

ABV.UNICODE.NNTS_MAP   Buffer overflow in mapping character function

ABV.UNICODE.SELF_MAP   Mapping function failed

ABV.UNKNOWN_SIZE   Buffer Overflow - Array Index Out of Bounds

A5-2-6 (req.)

MISRA.LOGIC.POSTFIX   Operand in a logical 'and' or 'or' expression is not a postfix expression

A5-3-2 (req.)

NPD.CHECK.CALL.MIGHT   Pointer may be passed to function that can dereference it after it was positively checked for NULL

NPD.CHECK.CALL.MUST   Pointer will be passed to function that may dereference it after it was positively checked for NULL

NPD.CHECK.MIGHT   Pointer may be dereferenced after it was positively checked for NULL

NPD.CHECK.MUST   Pointer will be dereferenced after it was positively checked for NULL

NPD.CONST.CALL   NULL is passed to function that can dereference it

NPD.CONST.DEREF   NULL is dereferenced

NPD.FUNC.CALL.MIGHT   Result of function that may return NULL may be passed to another function that may dereference it

NPD.FUNC.CALL.MUST   Result of function that may return NULL will be passed to another function that may dereference it

NPD.FUNC.MIGHT   Result of function that can return NULL may be dereferenced

NPD.FUNC.MUST   Result of function that may return NULL will be dereferenced

NPD.GEN.CALL.MIGHT   Null pointer may be passed to function that may dereference it

NPD.GEN.CALL.MUST   Null pointer will be passed to function that may dereference it

NPD.GEN.MIGHT   Null pointer may be dereferenced

NPD.GEN.MUST   Null pointer will be dereferenced

A5-6-1 (req.)

DBZ.CONST   Division by a zero constant occurs

DBZ.CONST.CALL   The value '0' is passed to function that can use this value as divisor

DBZ.GENERAL   Division by zero might occur

DBZ.ITERATOR   Division by zero might occur in a loop iterator

DBZ.ITERATOR.CALL   Division by zero might occur in a function call

A5-10-1 (req.)

AUTOSAR.VIRTUAL.PTR_COMPARE   A pointer to member virtual function shall only be tested for equality with null-pointer-constant

A5-16-1 (req.)

AUTOSAR.TERNARY.NESTED   The ternary conditional operator shall not be used as a sub-expression

A6-2-1 (req.)

AUTOSAR.ADD.ASSIGN.OP.SIDE.EFFECT   Move and copy assignment operators shall either move or respectively copy base classes and data members of a class, without any side effects

A6-4-1 (req.)

AUTOSAR.SWITCH.CASECOUNT   A switch statement shall have at least two case-clauses, distinct from the default label

A6-5-2 (req.)

MISRA.FOR.COUNTER.FLT   For loop counter has a floating point type

MISRA.FOR.COUNTER.MANY   Many counters in a for loop

A6-5-3 (adv.)

AUTOSAR.DO   Do statements should not be used

A6-5-4 (adv.)

MISRA.FOR.COUNTER.MANY   Many counters in a for loop

A6-6-1 (req.)

AUTOSAR.GOTO   The goto statement shall not be used

A7-1-1 (req.)

MISRA.VAR.NEEDS.CONST   Variable is not modified but is declared without const qualifier

A7-1-3 (req.)

AUTOSAR.TYPEDEF.CVQ_EAST   CV-qualifiers shall be placed on the right hand side of the type that is a typedef or a using name

A7-1-4 (req.)

AUTOSAR.REGISTER   The register keyword shall not be used

A7-1-5 (req.)

AUTOSAR.ADD.AUTO.SPECIFIER   The auto specifier shall not be used here

A7-1-6 (req.)

AUTOSAR.TYPEDEF   The typedef specifier shall not be used

A7-1-7 (req.)

AUTOSAR.STYLE.SINGLE_DECL_PER_LINE   Each expression statement and identifier declaration shall be placed on a separate line

AUTOSAR.STYLE.SINGLE_STMT_PER_LINE   Each expression statement and identifier declaration shall be placed on a separate line

A7-1-8 (req.)

AUTOSAR.DECL.NONTYPE_SPECIFIER   A non-type specifier shall be placed before a type specifier in a declaration

A7-1-9 (req.)

AUTOSAR.DECL.IN_DEFN   A class, structure, or enumeration shall not be declared in the definition of its type

A7-2-2 (req.)

AUTOSAR.ENUM.EXPLICIT_BASE_TYPE   Enumeration underlying base type shall be explicitly defined

A7-2-3 (req.)

AUTOSAR.ENUM.UNSCOPED   Enumerations shall be declared as scoped enum classes

A7-2-4 (req.)

MISRA.ENUM.INIT   Non-first enumerator is explicitly initialized, but not all elements are explicitly initialized.

A7-3-1 (req.)

MISRA.NS.USING_DECL   Multiple declarations for an identifier in the same namespace should not straddle a using-declaration for that identifier

A7-4-1 (req.)

AUTOSAR.ASM   The asm declaration shall not be used

A7-5-1 (req.)

AUTOSAR.ADD.RTN.REF.CONST.PARAM   A function shall not return a reference or a pointer to a parameter that is passed by reference to const

A7-5-2 (req.)

MISRA.FUNC.RECUR   Recursive function

A8-2-1 (req.)

AUTOSAR.ADD.FUNC.TEMPLATE.TRAIL.RTN   In function templates, the trailing return type syntax shall be used if the return type depends on the type of parameters

A8-4-1 (req.)

MISRA.FUNC.VARARG   Function with variable number of arguments

A8-4-2 (req.)

FUNCRET.GEN   Non-void function does not return value

A8-5-0 (req.)

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

A8-5-1 (req.)

CWARN.MEMBER.INIT.ORDER   Members of the initialization list are not listed in the order in which they are declared in the class

A8-5-3 (req.)

AUTOSAR.ADD.AUTO.INIT.FORMAT   A variable of type auto shall not be initialized using {} or ={} braced-initialization.

A8-5-4 (adv.)

AUTOSAR.ADD.CTOR.INIT.LIST   If a class has a user-declared constructor that takes a parameter of type std::initializer_list, then it shall be the only constructor apart from special member function constructors

A9-3-1 (req.)

MISRA.RET.REF.NON_CONST   Member function returns non-const handle to member variable

A9-5-1 (req.)

AUTOSAR.UNION   Unions shall not be used

A10-2-1 (req.)

AUTOSAR.ADD.REDEF.DERIVED.FUNC   Non-virtual public or protected member functions shall not be redefined in derived classes.

A10-3-1 (req.)

AUTOSAR.MEMB.VIRTUAL.SPEC   Virtual function declaration shall contain exactly one of the three specifiers: (1) virtual, (2) override, (3) final.

A10-3-2 (req.)

AUTOSAR.ADD.OVERRIDE.VIRTUAL.SPECIFIER   Each overriding virtual function shall be declared with the override or final specifier

A10-3-3 (req.)

AUTOSAR.MEMB.VIRTUAL.FINAL   Virtual functions shall not be introduced in a final class

A10-3-5 (req.)

AUTOSAR.ADD.ASSIGN.OP.VIRTUAL   A user-defined assignment operator shall not be virtual

A11-3-1 (req.)

AUTOSAR.FRIEND_DECL   Friend declarations shall not be used

A12-1-1 (req.)

MISRA.CTOR.BASE   Constructor does not explicitly call constructor of its base class

A12-1-2 (req.)

AUTOSAR.CTOR.NSDMI_INIT_LIST   Both NSDMI and a non-static member initializer in a constructor shall not be used in the same type

A12-1-4 (req.)

AUTOSAR.CTOR.NO_EXPLICIT   All constructors that are callable with a single argument of fundamental type shall be declared explicit

A12-4-1 (req.)

CL.MLK.VIRTUAL   Memory Leak - possible in destructor

A12-4-2 (adv.)

AUTOSAR.DTOR.NON_VIRTUAL   If a public destructor of a class is non-virtual, then the class should be declared final

A12-6-1 (req.)

AUTOSAR.ADD.CTOR.MEMBER.INIT   All class data members that are initialized by the constructor shall be initialized using member initializers

A12-8-4 (req.)

AUTOSAR.CTOR.MOVE.COPY_SEMANTICS   Move constructor shall not initialize its class members and base classes using copy semantics

A12-8-5 (req.)

CL.SELF-ASSIGN   Use of free memory (double free) - in operator=

A12-8-7 (adv.)

AUTOSAR.ASSIGN.REF_QUAL   Assignment operators should be declared with the ref-qualifier &

A13-1-2 (req.)

AUTOSAR.OP.LITERAL.SUFFIX   User defined suffixes of the user defined literal operators shall start with underscore followed by one or more letters

A13-2-1 (req.)

AUTOSAR.ASSIGN.RETURN   An assignment operator shall return a reference to "this"

A13-2-2 (req.)

AUTOSAR.OP.BINARY.RETVAL   A binary arithmetic operator and a bitwise operator shall return a "prvalue"

A13-2-3 (req.)

AUTOSAR.OP.RELATIONAL.RETVAL   A relational operator shall return a boolean value

A13-5-1 (req.)

AUTOSAR.OP.INDEX.NON_CONST   If "operator[]" is to be overloaded with a non-const version, const version shall also be implemented

A13-5-2 (req.)

AUTOSAR.OP.CONV.NON_EXPLICIT   All user-defined conversion operators shall be defined explicit

A13-5-3 (adv.)

AUTOSAR.OP.CONV   User-defined conversion operators should not be used

A13-5-5 (req.)

AUTOSAR.OP.COMPARE.MEMBER   Comparison operators shall be non-member functions

AUTOSAR.OP.COMPARE.NON_NOEXCEPT   Comparison operators shall be noexcept

AUTOSAR.OP.COMPARE.PARAMS   Comparison operators shall have identical parameter types

A13-6-1 (req.)

AUTOSAR.DIGIT_SEPARATORS   Digit sequences separators ' shall only be used as follows (1) for decimal, every 3 digits, (2) for hexadecimal, every 2 digits, (3) for binary, every 4 digits

A14-5-1 (req.)

MISRA.COPY.CSTR.TMPL   Class has a template constructor with a single generic parameter, but has no copy constructor defined

A14-5-3 (adv.)

AUTOSAR.OP.TMPL.NON_MEMBER   A non-member generic operator shall only be declared in a namespace that does not contain class (struct) type, enum type or union type declarations

A14-7-2 (req.)

MISRA.SPEC.SAMEFILE   Template specialization and its primary template are declared in different files

A14-8-2 (req.)

AUTOSAR.FUNC.TMPL.EXPLICIT_SPEC   Explicit specializations of function templates shall not be used

A15-1-2 (req.)

MISRA.THROW.PTR   Exception object is a pointer

A15-1-4 (req.)

MLK.MIGHT   Memory Leak - possible

MLK.MUST   Memory Leak

MLK.RET.MIGHT   Memory Leak - possible

MLK.RET.MUST   Memory Leak

A15-2-2 (req.)

CL.MLK   Memory Leak - in destructor

A15-3-3 (req.)

MISRA.CATCH.ALL   No ellipsis exception handler in a try-catch block

A15-3-5 (req.)

MISRA.CATCH.BY_VALUE   Exception object of class type is caught by value

A15-4-1 (req.)

AUTOSAR.EXCPT.DYNAMIC_SPEC   Dynamic exception-specification shall not be used

A15-4-2 (req.)

AUTOSAR.EXCPT.NOEXCPT_THROW   If a function is declared to be noexcept, noexcept(true) or noexcept(<true condition>), then it shall not exit with an exception

A15-5-1 (req.)

AUTOSAR.EXCPT.SPECIAL_MEMBER_THROW   All user-provided class destructors, deallocation functions, move constructors, move assignment operators and swap functions shall not exit with an exception

A15-5-2 (req.)

MISRA.STDLIB.ABORT   Use of 'abort', 'exit', 'getenv' or 'system' from library stdlib.h

A16-0-1 (req.)

MISRA.USE.DEFINE   Non-guarding macro definition

A16-2-1 (req.)

MISRA.INCL.SYMS   Non-standard characters in header file names

A16-7-1 (req.)

MISRA.PRAGMA   Non-documented pragma directive

A17-0-1 (req.)

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

A18-0-1 (req.)

MISRA.EXPANSION.UNSAFE   Unsafe macro usage

A18-0-2 (req.)

MISRA.STDLIB.ATOI   Use of 'atof', 'atoi' or 'atol' from library stdlib.h

A18-0-3 (req.)

AUTOSAR.SETLOCALE   The library <clocale> (locale.h) and the setlocale function shall not be used

A18-1-1 (req.)

AUTOSAR.ARRAY.CSTYLE   C-style arrays shall not be used

A18-1-2 (req.)

AUTOSAR.VECTOR.BOOL   The std::vector<bool> specialization shall not be used

A18-1-3 (req.)

AUTOSAR.AUTO_PTR   The std::auto_ptr type shall not be used

A18-5-1 (req.)

AUTOSAR.STDLIB.MEMORY   Functions malloc, calloc, realloc and free shall not be used

A18-5-2 (req.)

AUTOSAR.OP.NEW_DELETE   Non-placement new or delete expressions shall not be used

A18-5-3 (req.)

FMM.MIGHT   Freeing Mismatched Memory - possible

FMM.MUST   Freeing Mismatched Memory

A18-5-4 (req.)

AUTOSAR.OP.DELETE.MISSING_VERSION   If a project has sized or unsized version of operator "delete" globally defined, then both sized and unsized versions shall be defined

A18-5-11 (req.)

AUTOSAR.OP.NEW_NO_DELETE   "operator new" and "operator delete" shall be defined together

A18-9-1 (req.)

AUTOSAR.STDLIB.BIND   The std::bind shall not be used

A18-9-2 (req.)

AUTOSAR.FORWARD   Forwarding values to other functions shall be done via: (1) std::move if the value is an rvalue reference, (2) std::forward if the value is forwarding reference

A18-9-3 (req.)

AUTOSAR.STDLIB.MOVE.CONST   The std::move shall not be used on objects declared const or const&

A21-8-1 (req.)

AUTOSAR.STDLIB.CCTYPE.UCHAR   Arguments to character-handling functions defined in <cctype> shall be representable as an unsigned char

A26-5-1 (req.)

AUTOSAR.STDLIB.RAND   Pseudorandom numbers shall not be generated using std::rand()

AUTOSAR.STDLIB.RANDOM_SHUFFLE   Pseudorandom numbers shall not be generated using std::rand()

A26-5-2 (req.)

AUTOSAR.STDLIB.RANDOM.NBR_GEN_DEFAULT_INIT   Random number engines shall not be default-initialized

A27-0-2 (adv.)

NNTS.MIGHT   Buffer Overflow - Non-null Terminated String

NNTS.MUST   Buffer Overflow - Non-null Terminated String

NNTS.TAINTED   Unvalidated User Input Causing Buffer Overflow - Non-Null Terminated String

SV.UNBOUND_STRING_INPUT.CIN   Usage of cin for unbounded string input

SV.UNBOUND_STRING_INPUT.FUNC   Usage of unbounded string input

A27-0-4 (req.)

SV.BANNED.RECOMMENDED.ALLOCA   Banned recommended API: stack allocation functions

SV.BANNED.RECOMMENDED.NUMERIC   Banned recommended API: unsafe numeric conversion functions

SV.BANNED.RECOMMENDED.OEM   Banned recommended API: OEM character page conversion functions

SV.BANNED.RECOMMENDED.PATH   Banned recommended API: unsafe path name manipulation functions

SV.BANNED.RECOMMENDED.SCANF   Banned recommended API: unsafe scanf-type functions

SV.BANNED.RECOMMENDED.SPRINTF   Banned recommended API: unsafe sprintf-type functions

SV.BANNED.RECOMMENDED.STRLEN   Banned recommended API: unsafe string length functions

SV.BANNED.RECOMMENDED.TOKEN   Banned recommended API: unsafe string tokenizing functions

SV.BANNED.RECOMMENDED.WINDOW   Banned recommended API: unsafe window functions

M0-1-1 (req.)

UNREACH.ENUM   Code is unreachable due to the possible value(s) of an enum

UNREACH.GEN   Unreachable code

UNREACH.RETURN   Unreachable Void Return

M0-1-2 (req.)

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

M0-1-3 (req.)

LV_UNUSED.GEN   Local variable unused

M0-1-9 (req.)

VA_UNUSED.GEN   Value is Never Used after Assignment

VA_UNUSED.INIT   Value is Never Used after Initialization

M0-1-10 (adv.)

UNUSED.FUNC.GEN   Function defined but not used

M0-2-1 (req.)

MISRA.ASSIGN.OVERLAP   Object is assigned to an overlapping object

M2-7-1 (req.)

MISRA.TOKEN.BADCOM   Inappropriate character sequence in a comment

M2-13-2 (req.)

MISRA.TOKEN.OCTAL.ESCAPE   Usage of octal escape sequences

MISRA.TOKEN.OCTAL.INT   Usage of octal integer constants

M2-13-3 (req.)

MISRA.LITERAL.UNSIGNED.SUFFIX   Unsigned integer literal without 'U' suffix

M2-13-4 (req.)

MISRA.LITERAL.SUFFIX.CASE   Literal suffix in lower case.

M3-1-2 (req.)

MISRA.DECL.FUNC_LOCAL   Function is declared locally

M3-2-1 (req.)

MISRA.OBJ.TYPE.COMPAT   Type not compatible with type of other declaration

M3-3-2 (req.)

MISRA.FUNC.STATIC.REDECL   Function or object redeclaration does not include 'static' modifier

M3-4-1 (req.)

MISRA.VAR.MIN.VIS   Name visibility is too wide

M3-9-1 (req.)

MISRA.OBJ.TYPE.IDENT   Type not identical with type of other declaration

M3-9-3 (req.)

MISRA.FLOAT.BIT.REPR   Use of bit manipulations of floating-point values which rely on storage layout

M4-5-1 (req.)

MISRA.LOGIC.OPERATOR.NOT_BOOL   Operand of non-logical operator is effectively boolean

M4-5-3 (req.)

MISRA.CHAR.OPERAND   Expression of type 'char' or 'wchar_t' is used as non-character operand

M4-10-1 (req.)

MISRA.LITERAL.NULL.INT   NULL used as an integer value.

M4-10-2 (req.)

MISRA.LITERAL.NULL.PTR   Literal zero used as the null-pointer-constant.

M5-0-2 (adv.)

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

M5-0-3 (req.)

MISRA.CVALUE.IMPL.CAST.CPP   The value of an expression implicitly converted to a different type

M5-0-4 (req.)

MISRA.CONV.INT.SIGN   Implicit integral conversion changes signedness

M5-0-5 (req.)

MISRA.CONV.FLOAT   Implicit floating-point conversion

M5-0-6 (req.)

MISRA.CONV.NUM.NARROWER   Implicit numeric conversion to narrower type

M5-0-7 (req.)

MISRA.CAST.FLOAT_INT   Cast of floating point expression to integral type

MISRA.CAST.INT_FLOAT   Cast of integral expression to floating point type

M5-0-8 (req.)

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

M5-0-9 (req.)

MISRA.CAST.INT.SIGN   Non-trivial integral expression is cast to type with different signedness

M5-0-10 (req.)

MISRA.CAST.UNSIGNED_BITS   The result of bitwise operation on unsigned char or short is not cast back to original type

M5-0-11 (req.)

MISRA.CHAR.NOT_CHARACTER   'char' is used for non-character value

M5-0-12 (req.)

MISRA.SIGNED_CHAR.NOT_NUMERIC   'signed char' or 'unsigned char' is used for non-numeric value

M5-0-14 (req.)

MISRA.EXPR.COND.NOT_BOOLEAN   First operand of conditional expression is not a boolean expression

M5-0-15 (req.)

MISRA.PTR.ARITH   Pointer is used in arithmetic or array index expression

M5-0-16 (req.)

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

M5-0-20 (req.)

MISRA.BITS.OPERAND   Operands of bitwise operation have different underlying types

M5-0-21 (req.)

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

M5-2-2 (req.)

MISRA.CAST.PTR.VRCLASS   A cast form pointer to a virtual base class to pointer to a derived class does not use 'dynamic_cast'

M5-2-3 (adv.)

MISRA.CAST.POLY.TYPE   Cast from a polymorphic base class to a derived class

M5-2-6 (req.)

MISRA.CAST.FUNC_PTR.CPP   Cast converts function pointer to other pointer type

M5-2-8 (req.)

MISRA.CAST.INT_TO_PTR   Object with integer type or pointer to void cast to pointer type

M5-2-9 (req.)

MISRA.CAST.PTR_TO_INT   Cast between a pointer and an integral type

M5-2-10 (req.)

MISRA.INCR_DECR.OTHER   Increment or decrement operator is mixed with other operators in expression

M5-2-11 (req.)

MISRA.BIN_OP.OVERLOAD   Comma, || or && operator overloaded

M5-2-12 (req.)

MISRA.FUNC.ARRAY.PARAMS   Function argument with array type decay to a pointer

M5-3-1 (req.)

MISRA.LOGIC.NOT_BOOL   Operand of logical operation is not boolean

M5-3-2 (req.)

MISRA.UMINUS.UNSIGNED   Operand of unary minus is unsigned

M5-3-3 (req.)

MISRA.UN_OP.OVERLOAD   Unary & operator is overloaded

M5-3-4 (req.)

MISRA.SIZEOF.SIDE_EFFECT   Operand of sizeof has side effects

M5-8-1 (req.)

MISRA.SHIFT.RANGE   Right operand of shift operation is out of range - greater or equal to max bit-length of left operand, or negative

M5-14-1 (req.)

MISRA.LOGIC.SIDEEFF   Right operand in a logical 'and' or 'or' expression contains side effects

M5-18-1 (req.)

MISRA.COMMA   Comma operator is used

M5-19-1 (req.)

MISRA.COMP.WRAPAROUND   Wrap-around in a condition

MISRA.ELIF.WRAPAROUND   Wrap-around in #elif directive

M6-2-1 (req.)

MISRA.ASSIGN.COND   Assignment operator is used in a condition

MISRA.ASSIGN.SUBEXPR   Assignment operator is used in a sub-expression outside a condition

M6-2-2 (req.)

MISRA.FLOAT_EQUAL   Floating point expression is tested for equality

M6-2-3 (req.)

MISRA.NULL.STMT   Null statement is not the only statement on line or comments are placed incorrectly

M6-3-1 (req.)

MISRA.STMT.NO_COMPOUND   The body of switch, while, do/while or for statement is not a compound statement

M6-4-1 (req.)

MISRA.IF.NO_COMPOUND   The body of if/else statement is not a compound statement

M6-4-2 (req.)

MISRA.IF.NO_ELSE   A chain of if/else-if statements is not terminated with else or is terminated with an empty else clause

M6-4-3 (req.)

MISRA.SWITCH.NOT_WELL_FORMED   Switch statement is not well-formed

M6-4-4 (req.)

MISRA.SWITCH.LABEL   A switch label belongs to nested compound statement inside switch body

M6-4-5 (req.)

MISRA.SWITCH.NO_BREAK   No break or throw statement at the end of switch-clause

M6-4-6 (req.)

MISRA.SWITCH.NODEFAULT   No default clause at the end of a switch statement

M6-4-7 (req.)

MISRA.SWITCH.BOOL   Condition of switch statement is boolean expression

M6-5-2 (req.)

MISRA.FOR.COND.EQ   ++ or -- operations are not used to change loop counter, but condition tests loop counter for equality

M6-5-3 (req.)

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

M6-5-4 (req.)

MISRA.FOR.INCR   For loop counter is modified in an inappropriate way

M6-5-5 (req.)

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

M6-5-6 (req.)

MISRA.FOR.LOOP_CONTROL.NOT_BOOLEAN   Loop control variable is not boolean

M6-6-1 (req.)

MISRA.GOTO.NESTED   Goto to a label declared in a nested compound statement

M6-6-2 (req.)

MISRA.GOTO.AFTER.LABEL   Unconstrained use of goto

M6-6-3 (req.)

MISRA.CONTINUE.ILL   Continue statement is used in an ill-formed for loop

M7-1-2 (req.)

MISRA.PPARAM.NEEDS.CONST   Pointer parameter is not used to modify the addressed object but is not declared as a pointer to const

M7-3-1 (req.)

MISRA.NS.GLOBAL   Function, variable or type declaration in global namespace

MISRA.NS.GLOBAL.USING   Using directive or declaration in global namespace

M7-3-2 (req.)

MISRA.NS.MAIN   Non-global function with name 'main' is defined

M7-3-3 (req.)

MISRA.NAMESPACE.UNMD   Unnamed namespace in header file

M7-3-4 (req.)

MISRA.NS.USING_DIR   Using directive

M7-3-6 (req.)

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

M7-4-2 (req.)

MISRA.PRAGMA.ASM   Incorrect assembler instruction

M7-4-3 (req.)

MISRA.ASM.ENCAPS   Assembly language is not isolated.

M8-0-1 (req.)

MISRA.DECL.MANY_DCLS   More than one declarator in one declaration

M8-3-1 (req.)

MISRA.SAME.DEFPARAMS   Overriding virtual function and the function it overrides have different default arguments

M8-4-2 (req.)

MISRA.FUNC.PARAMS.IDENT   Identifiers used in declaration and definition of function are not identical

M8-4-4 (req.)

MISRA.FUNC.ADDR   Address of a function is used without & operator

M8-5-2 (req.)

MISRA.INIT.BRACES   Incorrect initializer braces placement.

M9-3-1 (req.)

MISRA.CONST.RET.NON_CONST   Constant member function returns non-const pointer to member variable

M9-3-3 (req.)

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

M9-6-4 (req.)

MISRA.BITFIELD.SIGNED   Length of a named signed bit-field is less than 2

M10-1-1 (adv.)

MISRA.DERIVE.VIRTUAL   Class is derived from virtual base

M10-1-2 (req.)

MISRA.VIRTUAL.BASE.DIAMOND   Base class is used as virtual not in diamond hierarchy

M10-1-3 (req.)

MISRA.BASE.VIRTUAL.NOTVIRTUAL   Base class is used as both virtual and not virtual in inheritance hierarchy

M10-2-1 (adv.)

MISRA.BASE.IDS.UNIQUE   Member name is used twice in inheritance hierarchy

M10-3-3 (req.)

MISRA.PUREVIRT.OVRD   Pure virtual function overrides a non pure virtual function

M11-0-1 (req.)

MISRA.MEMB.NOT_PRIVATE   Member variable in non-POD class is not private

M12-1-1 (req.)

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

M14-5-3 (req.)

MISRA.COPYASSIGN.TMPL   A copy ssignment operator should be defined when class has a template copy assignment operator with a single generic parameter

M14-6-1 (req.)

MISRA.TEMPLMEM.NOQUAL   In an instantiated template a member declared in a dependant base is used without a qualificator or 'this'

M15-0-3 (req.)

MISRA.TRY.JUMP   Control can be transferred into a try block with goto or switch statement

M15-1-2 (req.)

MISRA.THROW.NULL   NULL is thrown explicitly

M15-1-3 (req.)

MISRA.THROW.EMPTY   Empty throw expression does not belong to a catch block

M15-3-3 (req.)

MISRA.CTOR.TRY.NON_STATIC   Function try/catch block of constructor or destructor references non-static members

M15-3-6 (req.)

MISRA.CATCH.WRONGORD   Handler for a base exception class precedes to a handler for a derived exception class in a try-catch block

M15-3-7 (req.)

MISRA.CATCH.NOALL   Ellipsis exception handler is not the last one in a try-catch block

M16-0-1 (req.)

MISRA.INCL.INSIDE   Include directive preceded by a preprocessor output token

M16-0-2 (req.)

MISRA.DEFINE.NOTGLOBAL   Define not at the global level

MISRA.UNDEF.NOTGLOBAL   Undef not at the global level

M16-0-5 (req.)

MISRA.EXPANSION.DIRECTIVE   Directive-like tokens within a macro argument

M16-0-6 (req.)

MISRA.DEFINE.NOPARS   Macro parameter with no parentheses

M16-0-7 (req.)

MISRA.ELIF.UNDEF   Undefined macros in #elif directive

MISRA.IF.UNDEF   Undefined macros in #if directive

M16-0-8 (req.)

MISRA.USE.UNKNOWNDIR   Unknown preprocessor directive is used

M16-1-1 (req.)

MISRA.ELIF.DEFINED   Incorrect 'defined' usage in #elif directive

MISRA.IF.DEFINED   Incorrect 'defined' usage in #if directive

M16-1-2 (req.)

MISRA.ELIF.OTHERFILE   #elif in an improper file

MISRA.ELSE.OTHERFILE   #else in an improper file

MISRA.ENDIF.OTHERFILE   #endif in an improper file

M16-2-3 (req.)

MISRA.INCGUARD   Include guard is not provided

M16-3-1 (req.)

MISRA.DEFINE.SHARP.MANY   Several # or ## operators in a macro definition

M16-3-2 (adv.)

MISRA.DEFINE.SHARP   # or ## operator in a macro definition

M17-0-2 (req.)

MISRA.UNDEF.WRONGNAME   Undefinition of a name from the standard library

MISRA.UNDEF.WRONGNAME.UNDERSCORE   Undefinition of a reserved name

M17-0-3 (req.)

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

M17-0-5 (req.)

MISRA.STDLIB.LONGJMP   Use of setjmp macro or longjmp function

M18-0-3 (req.)

MISRA.STDLIB.ABORT   Use of 'abort', 'exit', 'getenv' or 'system' from library stdlib.h

M18-0-4 (req.)

MISRA.STDLIB.TIME   Use of the time handling functions of library time.h

M18-0-5 (req.)

MISRA.STDLIB.CSTRING   Function from 'cstring' library is used

MISRA.STDLIB.CSTRING.MACRO   Macro from 'cstring' library is used

M18-2-1 (req.)

MISRA.EXPANSION.UNSAFE   Unsafe macro usage

M18-7-1 (req.)

MISRA.STDLIB.SIGNAL   Use of the signal handling facilities of signal.h

M19-3-1 (req.)

MISRA.STDLIB.ERRNO   Use of error indicator 'errno'

M27-0-1 (req.)

MISRA.STDLIB.STDIO   Use of input/output library stdio.h in production code

Support Summary:

  • 228 enforced rules

"MISRA", "MISRA C" and "MISRA C++" are registered trademarks of The MISRA Consortium Limited. ​