Skip to main content

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.

    Disabled rules can be identified as they are commented out or configured with '-esym(1960,...)' or '-esym(1963,...)'.

     

    //########################################################################
    // (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." },
        ]
    
    }