# MISRA Compliance

The coreJSON library files conform to the [MISRA C:2012](https://www.misra.org.uk)
guidelines, with some noted exceptions. Compliance is checked with Coverity static analysis.
The specific deviations, suppressed inline, are listed below.

Additionally, [MISRA configuration file](https://github.com/FreeRTOS/coreJSON/blob/main/tools/coverity/misra.config) contains the project wide deviations.

### Suppressed with Coverity Comments
To find the violation references in the source files run grep on the source code
with ( Assuming rule 11.3 violation; with justification in point 1 ):
```
grep 'MISRA Ref 11.3.1' . -rI
```

#### Rule 11.3
_Ref 11.3.1_

- MISRA C-2012 Rule 11.3 prohibits casting a pointer to a different type.
        This instance is a false positive, as the rule permits the
        addition of a const type qualifier.

#### Rule 14.3
_Ref 14.3.1_

- MISRA C-2012 Rule 14.3 False positive as the static analysis tool believes
        i can never be larger than SIZE_MAX - HEX_ESCAPE_LENGTH. This can be proven as
        a bug by setting i to be 18446744073709551615UL at initial assignment, then require
        start != NULL before assigning the vaue of i to start. This creates a case
        where i should be large enough to hit the else statement, but the tool still flags
        this as invariant.
