MISRA compliance

All MCUXpresso SDK drivers comply to MISRA 2012 rules with exceptions in the following table.

Exception Rules

Description

Directive 4.4

Sections of code should not be commented out.

Directive 4.5

Identifiers in the same namespace with overlapping visibility should be typographically unambiguous.

Directive 4.6

Typedefs that indicate size and signedness should be used in place of the basic numerical types.

Directive 4.8

If a pointer to a structure or union is never dereferenced within a translation unit, then the implementation of the object should be hidden.

Directive 4.9

A function should be used in preference to a function-like macro where they are interchangeable.

Directive 4.13

Functions which are designed to provide operations on a resource should be called in an appropriate sequence.

Rule 1.2

Language extensions should not be used.

Rule 2.3

A project should not contain unused type declarations.

Rule 2.4

A project should not contain unused tag declarations.

Rule 2.5

A project should not contain unused macro declarations.

Rule 2.6

A function should not contain unused label declarations.

Rule 2.7

There should be no unused parameters in functions.

Rule 4.2

Trigraphs should not be used.

Rule 5.1

External identifiers shall be distinct.

Rule 5.4

Macro identifiers shall be distinct.

Rule 5.9

Identifiers that define objects or functions with internal linkage should be unique.

Rule 8.7

Functions and objects should not be defined with external linkage if they are referenced in only one translation unit.

Rule 8.9

An object should be defined at block scope if its identifier only appears in a single function.

Rule 8.11

When an array with external linkage is declared, its size should be explicitly specified.

Rule 8.13

A pointer should point to a const-qualified type whenever possible.

Rule 10.5

The value of an expression should not be cast to an inappropriate essential type.

Rule 11.4

A conversion should not be performed between a pointer to object and an integer type.

Rule 11.5

A conversion should not be performed from a pointer to void into a pointer to object.

Rule 12.1

The precedence of operators within expressions should be made explicit.

Rule 12.3

The comma operator should not be used.

Rule 12.4

Evaluation of constant expressions should not lead to unsigned integer wrap-around.

Rule 13.3

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.

Rule 15.4

There should be no more than one break or goto statement used to terminate any iteration statement.

Rule 17.5

The function argument corresponding to a parameter declared to have an array type shall have an appropriate number of elements.

Rule 17.8

A function parameter should not be modified.

Rule 19.2

The union keyword should not be used.

Rule 20.1

#include directives should only be preceded by preprocessor directives or comments.

Rule 20.10

The # and ## preprocessor operators should not be used.

Rule 21.1

#define and #undef shall not be used on a reserved identifier or reserved macro name.

Rule 21.2

A reserved identifier or macro name shall not be declared.

Rule 21.12

The exception handling features of <fenv.h> should not be used.