// 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" } ] }