72 lines
3.0 KiB
Plaintext
72 lines
3.0 KiB
Plaintext
// MISRA C-2012 Rules
|
|
|
|
{
|
|
version : "2.0",
|
|
standard : "c2012",
|
|
title: "Coverity MISRA Configuration",
|
|
deviations : [
|
|
// Disable the following rules.
|
|
{
|
|
deviation: "Rule 3.1",
|
|
reason: "We post links which contain // inside comments blocks"
|
|
},
|
|
{
|
|
deviation: "Directive 4.5",
|
|
reason: "Our coding standard allows names that MISRA considers ambiguous (such as FreeRTOS_ntohl and FreeRTOS_htonl)."
|
|
},
|
|
{
|
|
deviation: "Rule 8.7",
|
|
reason: "Functions are interfaces to be called by application modules."
|
|
},
|
|
{
|
|
deviation: "Rule 19.2",
|
|
reason: "It is important that the memory footprint of FreeRTOS+TCP is small, so we opted to use Unions to achieve that."
|
|
},
|
|
{
|
|
deviation: "Rule 20.1",
|
|
reason: "#includes are used to include compiler specific attributes to make (packed structures)"
|
|
},
|
|
{
|
|
deviation: "Rule 2.5",
|
|
reason: "We use unused macros for backward compatibility in addition to macros comming from FreeRTOS"
|
|
},
|
|
{
|
|
deviation: "Rule 5.4",
|
|
reason: "There are a number of macros which are present for backward compatibility in FreeRTOS+TCP. These macros have similar names without many unique characters which MISRA warns against."
|
|
},
|
|
{
|
|
deviation: "Rule 2.3",
|
|
reason: "The way we declare structures are conformant with the FreeRTOS kernel, which leaves somes types unused."
|
|
},
|
|
{
|
|
deviation: "Rule 2.4",
|
|
reason: "Similar to the FreeRTOS Kernel, structures are always declared with both a struct tag and typedef alias. Some of these structs are always referred to by their typedef alias and thus the corresponding tags are unused."
|
|
},
|
|
{
|
|
deviation: "Directive 4.8",
|
|
reason: "We include lots of header files from other sources such as the kernel which defines structures that violate that Dir"
|
|
},
|
|
{
|
|
deviation: "Directive 4.9",
|
|
reason: "It is important the FreeRTOS+TCP is optimised to work on small micro-controllers. To achieve that, macros are being used."
|
|
},
|
|
{
|
|
deviation: "Rule 15.4",
|
|
reason: "Multiple breaks in a do { ... } while ( 0 ); block are used to make the code easier to read and more clean than using multiple nested if-else statements."
|
|
},
|
|
{
|
|
deviation: "Rule 11.5",
|
|
reason: "Conversion from pointer to void into pointer to object
|
|
all uses are checked and tested not to cause misalignment, pointers
|
|
are switched back to their original type before they are accessed"
|
|
},
|
|
{
|
|
deviation: "Rule 8.6",
|
|
reason: "We use function callbacks to be defined by the application
|
|
writer, we could not provide definitions under the risk of
|
|
multiple definitions"
|
|
}
|
|
]
|
|
}
|
|
|