Candera MISRA Compliance
Candera tries to be MISRA compliant as much as possible. For checking MISRA compliance, Coverity® Static Analysis together with the supported MISRA rule set is used. For some reasons we cannot fulfil all MISRA rules, a set of Candera MISRA Rules for Coverity® Static Analysis is disabled due to specified reasons.
Candera MISRA Rules for Coverity® Static Analysis
The following file is taken from the Coverity® Static Analysis distribution and is modified for the needs of Candera. Reasons are given for deviations.
//########################################################################
// (C) Candera GmbH
// All rights reserved.
// -----------------------------------------------------
// This document contains proprietary information belonging to
// Candera GmbH.
// Passing on and copying of this document, use and communication
// of its contents is not permitted without prior written authorization.
//########################################################################
//
// The following configuration is based on MISRA 2008 required rules.
// Any further deviation is added here with proper explanation and justification.
//
//########################################################################
// Configuration for MISRA C++-2008, rule categories: Required
{ "version": "2.0",
"standard": "misrac++2008",
"title": "CGI Studio - MISRA C++-2008 Project Specific",
"deviations": [
// Project-specific suppressions defined
//0-x-x
{ "deviation": "Rule 0-1-5", "reason": "Suppressed based on MISRA C++ 2008 Chapter 3.5, Library issues." },
{ "deviation": "Rule 0-1-10", "reason": "Suppressed based on MISRA C++ 2008 Chapter 3.5, Library issues." },
{ "deviation": "Rule 0-1-12", "reason": "Override of virtual functions may be in customer code, CGI Studio provides the API"},
//2-x-x
{ "deviation": "Rule 2-10-1", "reason": "Temporary disabled, justification needed." },
{ "deviation": "Rule 2-10-3", "reason": "Typedefs with same name are used in different scopes. Typedef is not a unique declarator." },
{ "deviation": "Rule 2-10-4", "reason": "Type names are used twice in different namespaces." },
{ "deviation": "Rule 2-10-6", "reason": "Too many false positives by interpreting the rule also for forward declarations and different scopes." },
//3-x-x
{ "deviation": "Rule 3-1-1", "reason": "object/function definitions in header files" },
{ "deviation": "Rule 3-2-3", "reason": "Too many false positives by interpreting the rule also for forward declarations." },
{ "deviation": "Rule 3-9-1", "reason": "Token-for-token compliance means that even a typedef of the same type breaks compliance. CGI Studio requires such typedefs in Meta Information and for SharedPointer." },
//4-x-x
{ "deviation": "Rule 4-5-3", "reason": "Char used as 8 bit integer also for operations" },
{ "deviation": "Rule 4-10-2", "reason": "Deliberately use 0. See Scott Myers Effective C++, Item 25" },
//5-x-x
{ "deviation": "Rule 5-0-15", "reason": "Pointer arithmetic is used by CGI Studio where address computation is required e.g. as part of device abstraction." },
{ "deviation": "Rule 5-0-21", "reason": "Bitwise operator applied to signed underlying type" },
{ "deviation": "Rule 5-2-5", "reason": "Attempt to cast away const/volatile from a pointer or reference" },
{ "deviation": "Rule 5-2-7", "reason": "Pointer cast deliberately not prohibited" },
{ "deviation": "Rule 5-2-12", "reason": "Array type passed to function expecting a pointer" },
{ "deviation": "Rule 5-14-1", "reason": "side effects on right hand side of logical operator" },
//6-x-x
{ "deviation": "Rule 6-2-1", "reason": "assignment operator used in sub-expression" },
{ "deviation": "Rule 6-4-3", "reason": "departure from MISRA switch syntax" },
{ "deviation": "Rule 6-6-4", "reason": "This might lead to badly structured code." },
{ "deviation": "Rule 6-6-5", "reason": "This might lead to badly structured code." },
//7-x-x
{ "deviation": "Rule 7-1-1", "reason": "Deliberately disabled: Cost - Value ratio is negative" },
{ "deviation": "Rule 7-3-1", "reason": "Use global declarations" },
{ "deviation": "Rule 7-3-2", "reason": "Non-global function, main, declared" },
{ "deviation": "Rule 7-3-3", "reason": "Unnamed namespace in header" },
{ "deviation": "Rule 7-3-4", "reason": "Using-directive used" },
{ "deviation": "Rule 7-3-6", "reason": "Using-directive/declaration in header file" },
//8-x-x
{ "deviation": "Rule 8-4-1", "reason": "Function has variable number of arguments using the ellipsis notation" },
//9-x-x
{ "deviation": "Rule 9-3-2", "reason": "Non-const members allow to expose members." },
{ "deviation": "Rule 9-5-1", "reason": "Unions are used very carefully and allow saving space in memory." },
//10-x-x
{ "deviation": "Rule 10-3-1", "reason": "Suppressed because the choice to use C++ includes also the decision to use polymorphism and overriding virtual methods." },
//14-x-x
{ "deviation": "Rule 14-7-1", "reason": "Suppressed based on MISRA C++ 2008 Chapter 3.5, Library issues." },
{ "deviation": "Rule 14-7-2", "reason": "Suppressed based on MISRA C++ 2008 Chapter 3.5, Library issues." },
//15-x-x
{ "deviation": "Rule 15-1-1", "reason": "CGI Studio does not use exception handling." },
{ "deviation": "Rule 15-3-3", "reason": "CGI Studio does not use exception handling." },
{ "deviation": "Rule 15-3-6", "reason": "CGI Studio does not use exception handling." },
{ "deviation": "Rule 15-5-1", "reason": "CGI Studio does not use exception handling." },
{ "deviation": "Rule 15-5-2", "reason": "CGI Studio does not use exception handling." },
{ "deviation": "Rule 15-5-3", "reason": "CGI Studio does not use exception handling." },
//16-x-x
{ "deviation": "Rule 16-0-4", "reason": "Temporary disabled, justification needed." },
{ "deviation": "Rule 16-0-8", "reason": "Temporary disabled, justification needed." },
{ "deviation": "Rule 16-2-1", "reason": "CGI Studio uses macros." },
{ "deviation": "Rule 16-2-2", "reason": "Temporary disabled, justification needed." },
//18-x-x
{ "deviation": "Rule 18-4-1", "reason": "CGI Studio requires dynamic memory allocation." },
// Document Rules
//document rules are not checked according to the current configuration
// Suppressing Advisory Rules
{ "deviation": "Rule 2-5-1", "reason": "Advisory rules are suppressed." },
{ "deviation": "Rule 2-7-3", "reason": "Advisory rules are suppressed." },
{ "deviation": "Rule 2-10-5", "reason": "Advisory rules are suppressed." },
{ "deviation": "Rule 3-9-2", "reason": "Advisory rules are suppressed." },
{ "deviation": "Rule 5-0-2", "reason": "Advisory rules are suppressed." },
{ "deviation": "Rule 5-2-3", "reason": "Advisory rules are suppressed." },
{ "deviation": "Rule 5-2-9", "reason": "Advisory rules are suppressed." },
{ "deviation": "Rule 5-2-10", "reason": "Advisory rules are suppressed." },
{ "deviation": "Rule 5-19-1", "reason": "Advisory rules are suppressed." },
{ "deviation": "Rule 7-5-4", "reason": "Advisory rules are suppressed." },
{ "deviation": "Rule 10-1-1", "reason": "Advisory rules are suppressed." },
{ "deviation": "Rule 10-2-1", "reason": "Advisory rules are suppressed." },
{ "deviation": "Rule 12-1-2", "reason": "Advisory rules are suppressed." },
{ "deviation": "Rule 14-8-2", "reason": "Advisory rules are suppressed." },
{ "deviation": "Rule 15-0-2", "reason": "Advisory rules are suppressed." },
{ "deviation": "Rule 15-3-2", "reason": "Advisory rules are suppressed." },
{ "deviation": "Rule 16-2-5", "reason": "Advisory rules are suppressed." },
{ "deviation": "Rule 16-3-2", "reason": "Advisory rules are suppressed." },
]
}