This release includes the following enhancements:
Release date: November 28, 2022
Enhanced Automotive Compliance Pack
The Automotive Pack has been extended to help you achieve compliance with the automotive standards.
- MISRA C 2012 test configuration is now extended with new and updated rules from MISRA C 2012 Amendment 3.
- New MISRA C++ 202X test configuration has been added. This preview configuration covers a selection of guidelines from the "Public Review Draft of MISRA C++ 202X" document.
- See New Rules and Updated Rules for the lists of new and updated rules.
Enhanced Security Compliance Pack
The Security Pack has been extended with new 2022 CWE Top 25 and 2022 CWE Top 25 + on the Cusp test configurations to help you achieve compliance with the security standards.
Enhanced Static Analysis
- Regex-based line suppressions have been extended to allow specifying rule identifiers. See Defining Line Suppressions Based on Regex Patterns for details.
- Static analysis accuracy has been improved by including enhanced support for modern C/C++ C11 _Generic and if constexpr.
Enhanced Unit Testing
- Added support for stubbing C++ templates. See Using Stubs for C++ Templates for details including supported compilers and limitations.
- Improved code coverage analysis for C++ templates.
Support for Compilers
The following compilers are now supported:
Compiler Name | Compiler Identifier |
---|---|
GHS Compiler for PPC 2019.1 | ghsppc_2019_1 |
GHS Compiler for PPC 2020.1 | ghsppc_2020_1 |
GNU GCC 8.x for aarch64/ARM64 | gcc_8-aarch64 |
GNU GCC 10.x for aarch64/ARM64 | gcc_10-aarch64 |
GNU GCC 11.x for aarch64/ARM64 | gcc_11-aarch64 |
New and Updated Code Analysis Rules
New code analysis rules have been added to extend coverage of compliance standards. See New Rules and Updated Rules for the lists of new and updated rules.
New Test Configurations
The following test configurations have been added:
- MISRA C++ 202X
- CWE Top 25 2022
- CWE Top 25 + on the Cusp 2022
The following test configurations have been updated with new rules:
- AUTOSAR C++14 Coding Guidelines
- Flow Analysis Aggressive
- Flow Analysis Fast
- Flow Analysis Standard
- MISRA C 2004
- MISRA C 2012
- MISRA C++ 2008
- Recommended Rules for FDA (C++)
- SEI CERT C Guidelines
- SEI CERT C Rules
- SEI CERT C++ Rules
Additional Updates
- Updated GitHub CI/CD integration with support for baselining Static Analysis results. See the documentation at: https://github.com/parasoft/run-cpptest-action/blob/master/README.md.
- Updated GitLab CI/CD integration with support for baselining Static Analysis results. See the documentation at: https://gitlab.com/parasoft/cpptest-gitlab/-/blob/master/README.md.
- OIDC authentication with OKTA is now supported for both IDE and CLI-based workflows. See Configuring OpenID Connect in the GUI and Configuring OpenID Connect in the Command Line.
- General improvements to the Flow Analysis engine may cause some differences in the violations reported by Flow Analysis rules compared to the previous version.
- TFS SDK libraries are now no longer distributed as part of Parasoft. If you want TFS support to work on your machine, you need to install TFS SDK from vendor.
Deprecated Features
The following functions of the Team Server are now deprecated and will be removed in 2023:
- Storing test configurations, rules, and rule maps on Team Server
- Editing Team Server test configurations in graphical editor in IDE
- Global goals management
- Author reassignment on Team Server
Resolved Bugs and FRs
Bug/FR ID | Description |
---|---|
CPP-36168 | [coverage] Code coverage not reported for template functions defined via friend declaration inside template class |
CPP-42657 | [static] Improve mapping for AUTOSAR A6-5-3 |
CPP-46218 | [ide] Configurations>CustomCompilers should be included when import/exporting preferences in IDE |
CPP-47394 | [engine][edg] Parse error: error: "constexpr" is not valid here (clang_8_0) |
CPP-48228 | [unit] Support for stubbing C++ templates |
CPP-50150 | [static] Improve mapping for AUTOSAR A12-1-2 |
CPP-50151 | [static] Improve mapping for AUTOSAR A12-1-3| |
CPP-50152 | [ide] Configurations>CustomCompilers should be included when import/exporting preferences in IDE |
CPP-50172 | [static] Mapping for CERT_C-MSC33 should be improved |
CPP-50282 | [static] Update CERT CON35-C mapping: we should use BD-TRS-ORDER instead of BD-TRS-DLOCK. |
CPP-50402 | [static] Mapping for CERT_C-EXP37 should be improved |
CPP-50406 | [static] Improve mapping for AUTOSAR A5-2-6 |
CPP-50421 | [vscode] Report Parasoft set-up problems in Problems view (and/or via pop-up message) |
CPP-50439 | [compiler] Support for GHS Compiler for PPC 2019.1 |
CPP-50440 | [compiler] Support for GHS Compiler for PPC 2020.1 |
CPP-50447 | [engine][edg] cpptestcc error: expected ')' before '{' token |
CPP-50560 | [static] MISRA2004-15_1 (MISRAC2012-RULE_16_1-b) reports false positive when '{' is used in conditionally in a switch case |
CPP-50583 | [coverage] Add code coverage for generic lambdas defined inside non-template functions |
CPP-50628 | [static] Enable suppression based on regex pattern only for specific rules |
CPP-50664 | [os] Native support for Linux ARM64 (aarch64) for C/C++test Standard |
CPP-50670 | [compiler] Support for GNU GCC 8 for ARM64 (extended, full, linux) |
CPP-50688 | [engine][edg] parser crash on template alias search |
CPP-51171 | [engine] '#pragma MUST_ITERATE(...)' must be reconstructed immediately before for/while/do-while |
CPP-51172 | [engine][edg] Different overload/SFINE resolution cause failed assertion |
CPP-51174 | [engine][edg] problem with decltype in function signature combined with templates |
CPP-51177 | [ide] Low performance of finding IAppFile in C/C++test Pro VS |
CPP-51178 | [engine][edg] Types from 'type_traits' get collapsed into 'integral_type<true/false>' during parsing |
CPP-51280 | [static] TEMPL-12: python error has occurred while running the rule |
CPP-51282 | [unit] Cannot generate test case for a function with a parameter of type: 'void(*fptr)(int&)' |
CPP-51283 | [compiler] IAR: add response file support |
CPP-51284 | [compiler] ccac: extend list of built-in functions |
CPP-51296 | [engine] Program received signal 11 |
CPP-51299 | [engine] Segmentation fault in a MISRA 2012 rule on syntax "operator*<>" |
CPP-51300 | [static] MISRA2004-16_10 (AUTOSAR-M0_3_2-a) reports false positive on the operator used in a case label |
CPP-51302 | [compiler] tiarm_20_2: extend list of supported builtins/intrinsics |
CPP-51306 | [engine] No prototype: @6cf99e80 0 template 'operator()' 'operator()'. |
CPP-51353 | [static] MISRA C 2004 14.3: simplify rule to better match MISRA specification |
CPP-51358 | [coverage] Incorrect coverage instrumentation of const-valued variables |
CPP-51371 | [engine][edg] cpptestcc: Error: g_SceneInterfacestd has not been declared |
CPP-51372 | [engine] Instrumentation variable is not declared constexpr (error: call to non-‘constexpr’ function) |
CPP-51443 | [static] CODSTA-222 (AUTOSAR-M5_0_6-a) reports false positive when template function returns enum constant |
CPP-51448 | [static] OOP-36 (MISRA2008-9_3_2_b) does not report violation when the address of a member array element is returned from member function |
CPP-51451 | [static] Improve mapping for AUTOSAR-A12-0-1 |
CPP-51487 | [build] Reading project name from *.vcxproj does not always work correctly |
CPP-51510 | [static] CODSTA-CPP-78 (AUTOSAR-M9_3_3-a) reports false positive when lambda that capture 'this' is used in member function |
CPP-51521 | [static] TEMPL-12: IndexError: list index out of range |
CPP-51536 | [static] MISRA2004-8_7 (AUTOSAR-M3_4_1-b) reports false positive when constexpr variable is used as template argument |
CPP-51543 | [engine][edg] Static analysis crashes with signal 11 |
CPP-51544 | [static] CERT_C-DCL06-a (CODSTA-29) works inconsistently with documentation |
CPP-51547 | [static] OPT-01 (AUTOSAR-M3_4_1-a) reports false positive when variable declared in for-range is captured by lambda |
CPP-51583 | [static] AUTOSAR-A0_1_4-a - false positive |
CPP-51587 | [compiler] iccarm: error: the parameter to the command line option "--import_cmse_lib_out" was "--semihosting |
CPP-51593 | [static] MISRA2004-7_1_a (AUTOSAR-M2_13_2-a) reports false positive on octal constants in raw strings |
CPP-51619 | [static] CODSTA-CPP-93, CODSTA-CPP-94 and PORT-31 consume a lot of memory |
CPP-51651 | [docs] Describe IAR-specific limitation regarding backslash at the end of file pat |
CPP-51655 | [static] MISRA2012-RULE-20_9_b - phyton error occurs during analysis |
CPP-51673 | [static] MISRA2004-9_2_b (MISRAC2012-RULE_9_3-a) does not report when in array initializer are used enum constant |
CPP-51685 | [compiler] iccarm: improve -fpu option handling |
CPP-51686 | [static] CODSTA-CPP-88 (MISRA2008-2_10_6_d) reports false positive on typedefs to types from different scope |
CPP-51780 | [engine] stubbing causes "error: no matching function for call to 'add_package_op_ext'" |
CPP-51828 | [engine] Incorrect reconstruction of UDL use in template function |
CPP-51839 | [engine] instrumentation compilation error: expected primary-expression before ‘}’ token |
CPP-51847 | [build] Improve compile_commands.json parser to support "arguments[]" |
FA-6300 | Incorrect FA results because simulation does not expect the value of volatile variable may change in background. |
FA-7817 | BD-PB-CC (MISRAC2012-RULE_14_3-ac) - false positive on first while loop and unable to handle unions right |
FA-7970 | BD-PB-CC (MISRA2012-RULE-14_3_zc) reports violation on volatile struct |
FA-8392 | False positives from BD-API-STRSIZE because "Report violations when the zero-terminated string object is safely used" parameter does not work well in some cases. |
FA-8563 | BD-API-STRSIZE False Positive for conditional operator |
FA-8983 | Flow Analysis does not take into account initialization of static member fields |
FA-9035 | BD-PB-OVERFWR is detected despite overflow countermeasures |
FA-9040 | False positive for BD-PB-OVERFNZT |
FA-9150 | Incorrect simulation of a loop where the condition contains a array element access |
New Rules
Rule ID | Header |
---|---|
AUTOSAR-M17_0_5-b | The standard header files <setjmp.h> or <csetjmp> shall not be used |
AUTOSAR-M18_0_4-b | The time handling functions and macros of the library <time.h> shall not be used |
AUTOSAR-M18_0_4-c | The types defined in the library <time.h> shall not be used |
BD-API-REALLOC | Do not pass 0 value as a size argument to the realloc function |
BD-PB-NANINF | Do not use floating-point expressions which may result in NaN and infinity values |
BD-PB-UNGETC | Do not use the ungetc function on a stream with the file position indicator zero |
CODSTA-02_b | A member of a union shall not be declared as a bit-field |
CODSTA-108_c | All arguments to any type-generic macros declared in <tgmath.h> shall have appropriate essential type |
CODSTA-108_d | All arguments to any multi-argument type-generic macros declared in <tgmath.h> shall have the same standard type |
CODSTA-109_b | The standard header file <fenv.h> shall not be used |
CODSTA-136_c | The standard header file <stdarg.h> or <cstdarg> shall not be used |
CODSTA-18_b | 'Do' statements should not be used except in a function-like macro |
CODSTA-209_b | Do not use the macro ATOMIC_VAR_INIT |
CODSTA-225 | Floating-point expressions shall not be explicitly (syntactically) tested for equality (==) or inequality (!=) |
CODSTA-MC-01 | The 'alignof' operator should not be used with an array type as its operand |
CODSTA-MC-02 | A declaration of an object should contain at most one explicit alignment specifier |
CODSTA-MC-03 | The zero-alignment specifier should not be used in an object declaration |
CODSTA-MC-04 | Explicit alignment specifiers in all declarations of an object with internal linkage shall be the same |
CODSTA-MC-05 | Every generic selection shall contain a default association |
CODSTA-MC-06 | The default association shall be placed first or last in the association list |
CODSTA-MC-07 | A generic selection shall indicate at least one non-default association |
CODSTA-MC-08 | A generic selection should only be expanded from a macro |
CODSTA-MC-09 | A generic association shall list an appropriate type |
CODSTA-MC-10 | A generic selection used in a macro definition should have a macro parameter in the controlling expression |
CODSTA-MC-11 | A generic selection should not depend on implicit pointer type conversion |
CODSTA-MC-12 | The controlling expression of a generic selection shall have an essential type that matches its standard type |
CODSTA-MC-13 | A generic selection that is not expanded from a macro shall not contain potential side effects in the controlling expression |
CODSTA-MC-14 | Enumerated types should not be mixed with integer types in generic selections |
CODSTA-MC-15 | A generic selection that is expanded from a macro shall evaluate its argument only once |
CODSTA-MCPP-56 | If a class declares a copy or move operation, or a destructor, either via '=default', '=delete', or via a user-provided declaration, then all others of these five special member functions shall be declared as well |
CWE-312-a | Avoid passing sensitive data to functions that write to log files |
CWE-401-a | Ensure resources are freed |
CWE-427-a | Use care to ensure that LoadLibrary() will load the correct library |
CWE-59-a | Avoid race conditions while checking for the existence of a symbolic link |
CWE-668-a | Protect against file name injection |
CWE-77-a | Protect against command injection |
CWE-843-a | A cast should not be performed between a pointer to object type and a different pointer to object type |
GLOBAL-ALIGNDECL | Explicit alignment specifiers in all declarations of an object with external linkage shall be the same |
INIT-17_b | User-defined constructors that initialize data members with the same constant values across all constructors should initialize using NSDMI instead |
INIT-18 | Both NSDMI and a non-static member initializer in a constructor shall not be used in the same type |
MISRA2004-20_12_b | The time handling functions and macros of the library <time.h> shall not be used |
MISRA2004-20_12_c | The types defined in the library <time.h> shall not be used |
MISRA2008-18_0_4_b | The time handling functions and macros of library <ctime> shall not be used |
MISRA2008-18_0_4_c | The types defined in the library <ctime> shall not be used |
MISRA2012-DIR-4_15 | Do not use floating-point expressions which may result in NaN and infinity values |
MISRA2012-RULE-10_1_h | Floating-point expressions shall not be explicitly (syntactically) tested for equality (==) or inequality (!=) |
MISRA2012-RULE-17_10 | A function declared with a _Noreturn function specifier shall have void return type |
MISRA2012-RULE-17_11 | A function that never returns should be declared with a _Noreturn function specifier |
MISRA2012-RULE-17_12 | A function identifier shall only be used with either a preceding &, or with a parenthesised parameter list |
MISRA2012-RULE-17_13 | A function type shall not be type qualified |
MISRA2012-RULE-17_1_c | The standard header file <stdarg.h> shall not be used |
MISRA2012-RULE-17_9 | A function declared with a _Noreturn function specifier shall not return to its caller |
MISRA2012-RULE-18_9 | An object shall not be used outside its lifetime |
MISRA2012-RULE-1_5 | The static storage class specifier shall be used in definitions and declarations of objects and functions that have internal linkage |
MISRA2012-RULE-1_5_b | Storage type modifiers shall be associated with the type, not the variable or the function |
MISRA2012-RULE-1_5_c | Function types shall be in prototype form |
MISRA2012-RULE-1_5_d | Do not use macro ATOMIC_VAR_INIT |
MISRA2012-RULE-1_5_e | Do not use 'bool', 'false' or 'true' identifiers in the #undef directive |
MISRA2012-RULE-1_5_f | Do not use the ungetc function on a stream with the file position indicator 0 |
MISRA2012-RULE-1_5_g | Do not pass 0 value as a size argument to the realloc function |
MISRA2012-RULE-21_10_b | The time handling functions and macros of library <time.h> shall not be used |
MISRA2012-RULE-21_10_c | The types defined in the library <time.h> shall not be used |
MISRA2012-RULE-21_12_b | The standard header file <fenv.h> shall not be used |
MISRA2012-RULE-21_22 | All arguments to any type-generic macros declared in <tgmath.h> shall have appropriate essential type |
MISRA2012-RULE-21_23 | All arguments to any multi-argument type-generic macros declared in <tgmath.h> shall have the same standard type |
MISRA2012-RULE-21_24 | The random number generator functions of <stdlib.h> shall not be used |
MISRA2012-RULE-23_1 | A generic selection should only be expanded from a macro |
MISRA2012-RULE-23_1_b | A generic selection used in a macro definition should have a macro parameter in the controlling expression |
MISRA2012-RULE-23_2 | A generic selection that is not expanded from a macro shall not contain potential side effects in the controlling expression |
MISRA2012-RULE-23_3 | A generic selection should contain at least one non-default association |
MISRA2012-RULE-23_4 | A generic association shall list an appropriate type |
MISRA2012-RULE-23_5 | A generic selection should not depend on implicit pointer type conversion |
MISRA2012-RULE-23_6 | The controlling expression of a generic selection shall have an essential type that matches its standard type |
MISRA2012-RULE-23_6_b | Enumerated types should not be mixed with integer types in generic selections |
MISRA2012-RULE-23_7 | A generic selection that is expanded from a macro should evaluate its argument only once |
MISRA2012-RULE-23_8 | A default association shall appear as either the first or the last association of a generic selection |
MISRA2012-RULE-6_3 | A bit field shall not be declared as a member of a union |
MISRA2012-RULE-7_5 | The argument of an integer-constant macro shall have an appropriate form |
MISRA2012-RULE-8_15 | All declarations of an object with external linkage and an explicit alignment specification shall specify the same alignment |
MISRA2012-RULE-8_15_b | All declarations of an object with internal linkage and an explicit alignment specification shall specify the same alignment |
MISRA2012-RULE-8_16 | The alignment specification of zero should not appear in an object declaration |
MISRA2012-RULE-8_17 | At most one explicit alignment specifier should appear in an object declaration |
MISRAC2012-DIR_4_15-a | Do not use floating-point expressions which may result in NaN and infinity values |
MISRAC2012-RULE_10_1-h | Floating-point expressions shall not be explicitly (syntactically) tested for equality (==) or inequality (!=) |
MISRAC2012-RULE_17_1-c | The standard header file <stdarg.h> or <cstdarg> shall not be used |
MISRAC2012-RULE_17_10-a | Functions declared as 'noreturn' shall have the 'void' return type |
MISRAC2012-RULE_17_11-a | Declare non-returning functions with the attribute that specifies that they do not return |
MISRAC2012-RULE_17_12-a | A function identifier shall only be used with either a preceding '&', or with a parenthesised parameter list, which may be empty |
MISRAC2012-RULE_17_13-a | Do not include any type qualifiers in the specification of a function type |
MISRAC2012-RULE_17_9-a | Never return from functions that should not return |
MISRAC2012-RULE_18_9-a | Do not modify objects with temporary lifetime |
MISRAC2012-RULE_1_5-a | The static storage class specifier shall be used in definitions and declarations of objects and functions that have internal linkage |
MISRAC2012-RULE_1_5-b | Storage type modifiers shall be associated with the type, not the variable or the function |
MISRAC2012-RULE_1_5-c | Function types shall be in prototype form |
MISRAC2012-RULE_1_5-d | Do not use the macro ATOMIC_VAR_INIT |
MISRAC2012-RULE_1_5-e | Do not use the 'bool', 'false' or 'true' identifiers in the #undef directive |
MISRAC2012-RULE_1_5-f | Do not use the ungetc function on a stream with the file position indicator zero |
MISRAC2012-RULE_1_5-g | Do not pass 0 value as a size argument to the realloc function |
MISRAC2012-RULE_21_10-b | The time handling functions and macros of the library <time.h> shall not be used |
MISRAC2012-RULE_21_10-c | The types defined in the library <time.h> shall not be used |
MISRAC2012-RULE_21_12-b | The standard header file <fenv.h> shall not be used |
MISRAC2012-RULE_21_22-a | All arguments to any type-generic macros declared in <tgmath.h> shall have appropriate essential type |
MISRAC2012-RULE_21_23-a | All arguments to any multi-argument type-generic macros declared in <tgmath.h> shall have the same standard type |
MISRAC2012-RULE_21_24-a | The random number generator functions 'rand()' and 'srand()' should not be used |
MISRAC2012-RULE_23_1-a | A generic selection should only be expanded from a macro |
MISRAC2012-RULE_23_1-b | A generic selection used in a macro definition should have a macro parameter in the controlling expression |
MISRAC2012-RULE_23_2-a | A generic selection that is not expanded from a macro shall not contain potential side effects in the controlling expression |
MISRAC2012-RULE_23_3-a | A generic selection shall indicate at least one non-default association |
MISRAC2012-RULE_23_4-a | A generic association shall list an appropriate type |
MISRAC2012-RULE_23_5-a | A generic selection should not depend on implicit pointer type conversion |
MISRAC2012-RULE_23_6-a | The controlling expression of a generic selection shall have an essential type that matches its standard type |
MISRAC2012-RULE_23_6-b | Enumerated types should not be mixed with integer types in generic selections |
MISRAC2012-RULE_23_7-a | A generic selection that is expanded from a macro shall evaluate its argument only once |
MISRAC2012-RULE_23_8-a | The default association shall be placed first or last in the association list |
MISRAC2012-RULE_6_3-a | A member of a union shall not be declared as a bit-field |
MISRAC2012-RULE_7_5-a | Arguments of integer-constant macros should be decimal, octal, or hexadecimal constants with appropriate values |
MISRAC2012-RULE_8_15-a | Explicit alignment specifiers in all declarations of an object with external linkage shall be the same |
MISRAC2012-RULE_8_15-b | Explicit alignment specifiers in all declarations of an object with internal linkage shall be the same |
MISRAC2012-RULE_8_16-a | The zero-alignment specifier should not be used in an object declaration |
MISRAC2012-RULE_8_17-a | A declaration of an object should contain at most one explicit alignment specifier |
MISRACPP202X-0023-a | Trigraphs shall not be used |
MISRACPP202X-0025-a | The character sequence /* shall not be used within a C-style comment |
MISRACPP202X-0035-a | Octal constants (other than zero) shall not be used |
MISRACPP202X-0036-a | A 'U' suffix shall be applied to all constants of unsigned type |
MISRACPP202X-0039-a | #include statements in a file should only be preceded by other preprocessor directives or comments |
MISRACPP202X-0042-a | A function should be used in preference to a function-like macro |
MISRACPP202X-0043-a | Arguments to a function-like macro shall not contain tokens that look like preprocessing directives |
MISRACPP202X-0045-a | Do not use in preprocessor directives #if and #elif macros not defined in translation unit |
MISRACPP202X-0046-a | Preprocessing directives shall be syntactically meaningful even when excluded by the preprocessor |
MISRACPP202X-0049-a | When an array is declared with external linkage, its size shall be stated explicitly or defined implicitly by initialisation |
MISRACPP202X-0064-a | Prefer 'nullptr' over 'NULL' or '0'(zero) |
MISRACPP202X-0087-a | A pointer to a virtual base class shall only be cast to a pointer to a derived class by means of dynamic_cast |
MISRACPP202X-0089-a | C-style casts (other than void casts) and functional notation casts (other than explicit constructor calls) shall not be used |
MISRACPP202X-0090-a | A cast shall not remove any 'const' or 'volatile' qualification from the type of a pointer or reference |
MISRACPP202X-0096-a | Avoid overloading logical operators AND, OR (&&, ||) |
MISRACPP202X-0096-b | Avoid overloading comma operator "," |
MISRACPP202X-0097-a | Do not pass expression with array type to a function with pointer or array type parameter |
MISRACPP202X-0100-a | The unary & operator shall not be overloaded |
MISRACPP202X-0105-a | The comma operator shall not be used |
MISRACPP202X-0110-a | The statement forming the body of a 'switch', 'while', 'do...while' or 'for' statement shall be a compound statement |
MISRACPP202X-0110-b | 'if' and 'else' should be followed by a compound statement |
MISRACPP202X-0125-a | Any label referenced by a goto statement shall be declared in the same block, or in a block enclosing the goto statement |
MISRACPP202X-0133-a | The global namespace shall only contain main() and namespace declarations |
MISRACPP202X-0134-a | The identifier main shall not be used for a function other than the global function main |
MISRACPP202X-0135-a | There shall be no unnamed namespaces in header files |
MISRACPP202X-0143-a | The address of an object with automatic storage shall not be assigned to another object that may persist after the first object has ceased to exist |
MISRACPP202X-0143-b | The lambda that captures local objects by reference should not be assigned to the variable with a greater lifetime |
MISRACPP202X-0145-a | Do not use recursion |
MISRACPP202X-0146-a | Each variable should be declared in a separate declaration statement |
MISRACPP202X-0147-a | Do not redefine an inherited virtual function with a different default parameter value |
MISRACPP202X-0148-a | The identifiers va_list, va_arg, va_start, va_end, va_copy should not be used |
MISRACPP202X-0150-a | All exit paths from a function with non-void return type shall have an explicit return statement with an expression |
MISRACPP202X-0152-a | Avoid use before initialization |
MISRACPP202X-0158-a | Unions shall not be used |
MISRACPP202X-0159-a | Do not declare member variables as bit-fields |
MISRACPP202X-0162-a | Named bit-fields with signed integer type shall have a length of more than one bit |
MISRACPP202X-0163-a | Classes should not be derived from virtual bases |
MISRACPP202X-0165-a | A base class shall not be both virtual and non-virtual in the same hierarchy |
MISRACPP202X-0171-a | Do not use dynamic type of an object under construction |
MISRACPP202X-0171-b | Do not use dynamic type of an object under destruction |
MISRACPP202X-0173-a | Constructors allowing for conversion should be made explicit |
MISRACPP202X-0173-b | User-conversion cast operators should be made explicit |
MISRACPP202X-0187-a | An exception object should not have pointer type |
MISRACPP202X-0207-a | Use multiple include guards |
MISRACPP202X-0208-a | Non-standard characters should not occur in header file names in #include directives |
MISRACPP202X-0210-a | The #include directive shall be followed by either a <filename> or "filename" sequence |
MISRACPP202X-0212-a | The # and ## preprocessor operators should not be used |
MISRACPP202X-0222-a | Pointers returned by certain Standard Library functions should not be used following a subsequent call to the same or related function |
MISRACPP202X-0239-a | A pointer to member virtual function shall only be tested for equality with null-pointer-constant |
MISRACPP202X-0280-a | Do not subsequently use the argument to std::forward |
MISRACPP202X-0280-b | Do not rely on the value of a moved-from object |
MISRACPP202X-0320-a | Octal and hexadecimal escape sequences shall be terminated |
MISRACPP202X-0324-a | Do not delete objects with incomplete class at the point of deletion |
MISRACPP202X-0343-a | Each overriding virtual function shall be declared with the override or final specifier |
MISRACPP202X-0343-b | Only one of virtual, override or final should be specified in a member function declaration |
MISRACPP202X-0359-a | Never return from functions that should not return |
MISRACPP202X-0370-a | A macro parameter used as an operand to the # or ## operators, which is itself subject to further macro replacement, shall only be used as an operand to these operators |
PREPROC-27 | Do not use the 'bool', 'false' or 'true' identifiers in the #undef directive |
Updated Rules
Category ID | Rule IDs |
---|---|
DISA ASD STIG | APSC_DV-001995-c, APSC_DV-002290-d, APSC_DV-002520-e, APSC_DV-002530-e, APSC_DV-002550-e, APSC_DV-002560-e, APSC_DV-002590-b, APSC_DV-002590-d |
AUTOSAR C++14 Coding Guidelines | AUTOSAR-A0_1_1-a, AUTOSAR-A0_1_4-a, AUTOSAR-A0_4_4-a, AUTOSAR-A12_0_1-a, AUTOSAR-A12_1_2-a, AUTOSAR-A12_1_3-a, AUTOSAR-A27_0_1-b, AUTOSAR-A27_0_2-a, AUTOSAR-A27_0_2-b, AUTOSAR-A5_2_5-a, AUTOSAR-A5_2_5-d, AUTOSAR-A5_2_6-a, AUTOSAR-A5_3_2-a, AUTOSAR-A5_6_1-a, AUTOSAR-A6_5_3-a, AUTOSAR-A9_3_1-a, AUTOSAR-A9_6_2-a, AUTOSAR-M0_1_2-ac, AUTOSAR-M0_3_1-b, AUTOSAR-M0_3_1-d, AUTOSAR-M0_3_1-e, AUTOSAR-M0_3_1-f, AUTOSAR-M0_3_1-g, AUTOSAR-M0_3_2-a, AUTOSAR-M14_6_1-a, AUTOSAR-M16_0_7-a, AUTOSAR-M17_0_5-a, AUTOSAR-M18_7_1-a, AUTOSAR-M3_4_1-a, AUTOSAR-M3_4_1-b, AUTOSAR-M5_0_16-a, AUTOSAR-M5_0_6-a, AUTOSAR-M6_2_3-a, AUTOSAR-M6_4_3-c, AUTOSAR-M6_4_4-a, AUTOSAR-M8_5_2-b, AUTOSAR-M9_3_3-a |
Flow Analysis | BD-API-BADPARAM, BD-API-STRSIZE, BD-API-VALPARAM, BD-PB-ARRAY, BD-PB-CC, BD-PB-MCCSTR, BD-PB-MODSTR, BD-PB-NORETDECL, BD-PB-NP, BD-PB-OVERFNZT, BD-PB-OVERFWR, BD-PB-OVERFWR, BD-PB-UCMETH, BD-PB-VOVR, BD-PB-WRRSTR, BD-PB-ZERO, BD-SECURITY-ARRAY, BD-TRS-FRC |
SEI CERT C | CERT_C-API01-a, CERT_C-ARR30-a, CERT_C-ARR38-b, CERT_C-ARR38-d, CERT_C-ARR39-a, CERT_C-CON35-a, CERT_C-CON37-a, CERT_C-DCL06-a, CERT_C-DCL19-a, CERT_C-DCL22-a, CERT_C-ENV01-c, CERT_C-ERR33-c, CERT_C-EXP08-b, CERT_C-EXP34-a, CERT_C-EXP35-a, CERT_C-EXP37-a, CERT_C-EXP37-b, CERT_C-FIO24-a, CERT_C-FIO37-a, CERT_C-FIO45-a, CERT_C-FLP03-a, CERT_C-FLP32-a, CERT_C-INT10-a, CERT_C-INT31-a, CERT_C-INT31-h, CERT_C-INT31-i, CERT_C-INT31-j, CERT_C-INT31-k, CERT_C-INT31-l, CERT_C-INT31-m, CERT_C-INT31-n, CERT_C-INT33-a, CERT_C-MSC19-a, CERT_C-MSC19-b, CERT_C-MSC22-a, CERT_C-MSC33-a, CERT_C-POS30-a, CERT_C-POS44-a, CERT_C-POS54-c, CERT_C-SIG00-a, CERT_C-SIG01-a, CERT_C-SIG02-a, CERT_C-STR03-a, CERT_C-STR30-b, CERT_C-STR31-a, CERT_C-STR31-b, CERT_C-STR32-a |
SEI CERT C++ | CERT_CPP-ERR52-a, CERT_CPP-EXP60-a, CERT_CPP-OOP57-a, CERT_CPP-OOP57-b, CERT_CPP-STR50-b, CERT_CPP-STR50-c, CERT_CPP-STR51-a |
Coding Conventions | CODSTA-02, CODSTA-109, CODSTA-152, CODSTA-156_a, CODSTA-156_b, CODSTA-157, CODSTA-161_a, CODSTA-163_a, CODSTA-163_b, CODSTA-164_a, CODSTA-164_b, CODSTA-165_a, CODSTA-165_b, CODSTA-165_c, CODSTA-196, CODSTA-222, CODSTA-29 |
Coding Conventions for C++ | CODSTA-CPP-78, CODSTA-CPP-88, CODSTA-CPP-93, CODSTA-CPP-94 |
Common Weakness Enumeration | CWE-119-a, CWE-119-e, CWE-119-f, CWE-125-a, CWE-20-a, CWE-362-b, CWE-476-a, CWE-787-a, CWE-787-d |
High Integrity C++ | HICPP-1_2_1-h, HICPP-1_2_1-i, HICPP-3_5_1-b, HICPP-5_2_1-a, HICPP-5_2_1-c, HICPP-5_5_1-a, HICPP-6_3_1-a, HICPP-6_4_1-a, HICPP-9_1_1-a, HICPP-9_1_4-a |
Joint Strike Fighter | JSF-020, JSF-021_b, JSF-105, JSF-115, JSF-136_a, JSF-136_b, JSF-209, JSF-209_b |
MISRA C 1998 | MISRA-054 |
MISRA C 2004 | MISRA2004-14_3, MISRA2004-15_1, MISRA2004-16_10, MISRA2004-19_11_b, MISRA2004-20_7, MISRA2004-20_8_b, MISRA2004-6_3, MISRA2004-6_3_b, MISRA2004-8_7, MISRA2004-9_2_b |
MISRA C++ 2008 | MISRA2008-0_1_2_aa, MISRA2008-0_1_6, MISRA2008-0_3_1_a, MISRA2008-0_3_1_b, MISRA2008-0_3_1_c, MISRA2008-0_3_1_e, MISRA2008-0_3_1_h, MISRA2008-0_3_2, MISRA2008-14_6_1, MISRA2008-16_0_7_b, MISRA2008-17_0_5, MISRA2008-18_7_1_b, MISRA2008-3_4_1_a, MISRA2008-3_4_1_b, MISRA2008-5_0_16_a, MISRA2008-5_0_6_a, MISRA2008-6_2_3, MISRA2008-6_4_3_a, MISRA2008-6_4_4, MISRA2008-8_5_2_b, MISRA2008-9_3_2_b, MISRA2008-9_3_3 |
MISRA C 2012 (Legacy) | MISRA2012-DIR-4_11, MISRA2012-DIR-4_14_a, MISRA2012-DIR-4_1_a, MISRA2012-DIR-4_1_b, MISRA2012-DIR-4_1_c, MISRA2012-DIR-4_1_e, MISRA2012-DIR-4_1_h, MISRA2012-DIR-4_6_a, MISRA2012-DIR-4_6_b, MISRA2012-RULE-10_1_a, MISRA2012-RULE-10_3_a, MISRA2012-RULE-10_3_b, MISRA2012-RULE-10_4_a, MISRA2012-RULE-10_4_b, MISRA2012-RULE-10_5_a, MISRA2012-RULE-10_5_b, MISRA2012-RULE-10_5_c, MISRA2012-RULE-10_6, MISRA2012-RULE-10_7_a, MISRA2012-RULE-10_7_b, MISRA2012-RULE-10_8, MISRA2012-RULE-14_3_zc, MISRA2012-RULE-16_1_b, MISRA2012-RULE-16_2, MISRA2012-RULE-18_1_a, MISRA2012-RULE-1_3_a, MISRA2012-RULE-1_3_e, MISRA2012-RULE-20_9_b, MISRA2012-RULE-21_10, MISRA2012-RULE-21_12, MISRA2012-RULE-21_14, MISRA2012-RULE-21_17_a, MISRA2012-RULE-21_17_b, MISRA2012-RULE-21_18, MISRA2012-RULE-21_4_a, MISRA2012-RULE-21_5_b, MISRA2012-RULE-2_2_b, MISRA2012-RULE-8_9, MISRA2012-RULE-9_3 |
MISRA C 2012 | MISRAC2012-DIR_4_1-a, MISRAC2012-DIR_4_1-b, MISRAC2012-DIR_4_1-c, MISRAC2012-DIR_4_1-e, MISRAC2012-DIR_4_1-h, MISRAC2012-DIR_4_11-a, MISRAC2012-DIR_4_14-a, MISRAC2012-DIR_4_6-a, MISRAC2012-DIR_4_6-b, MISRAC2012-RULE_10_1-a, MISRAC2012-RULE_10_3-a, MISRAC2012-RULE_10_3-b, MISRAC2012-RULE_10_4-a, MISRAC2012-RULE_10_4-b, MISRAC2012-RULE_10_5-a, MISRAC2012-RULE_10_5-b, MISRAC2012-RULE_10_5-c, MISRAC2012-RULE_10_6-a, MISRAC2012-RULE_10_7-a, MISRAC2012-RULE_10_7-b, MISRAC2012-RULE_10_8-a, MISRAC2012-RULE_14_3-ac, MISRAC2012-RULE_16_1-b, MISRAC2012-RULE_16_2-a, MISRAC2012-RULE_18_1-a, MISRAC2012-RULE_1_3-a, MISRAC2012-RULE_1_3-e, MISRAC2012-RULE_20_9-b, MISRAC2012-RULE_21_10-a, MISRAC2012-RULE_21_12-a, MISRAC2012-RULE_21_14-a, MISRAC2012-RULE_21_17-a, MISRAC2012-RULE_21_17-b, MISRAC2012-RULE_21_18-a, MISRAC2012-RULE_21_4-a, MISRAC2012-RULE_21_5-b, MISRAC2012-RULE_2_2-b, MISRAC2012-RULE_8_9-a, MISRAC2012-RULE_9_3-a |
Object Oriented | OOP-36 |
Optimization | OOPT-01, OPT-03 |
OWASP Top 10 2019 | OWASP2019-API3-b, OWASP2019-API3-e, OWASP2019-API3-g |
Portability | PORT-31 |
Security | SECURITY-01, SECURITY-02 |
Templates | TEMPL-12 |
Removed Rules
Rule ID | Notes |
---|---|
CERT_C-EXP37-c | Removed from CERT C configuration. For other configurations, CODSTA-159 can be used as a replacement. |
MISRA2008-2_10_6_d | Removed from MISRA C++ 2008 configuration. For other configurations, CODSTA-CPP-88 can be used as a replacement. |
MISRA2012-RULE-1_4_a | Removed from MISRA C 2012 configuration. For other configurations, CODSTA-216 can be used as a replacement. |
MISRA2012-RULE-1_4_b | Removed from MISRA C 2012 configuration. For other configurations, CODSTA-206 can be used as a replacement. |
MISRA2012-RULE-1_4_c | Removed from MISRA C 2012 configuration. For other configurations, CODSTA-207 can be used as a replacement. |
MISRA2012-RULE-1_4_h | Removed from MISRA C 2012 configuration. For other configurations, CODSTA-213 can be used as a replacement. |
MISRA2012-RULE-1_4_i | Removed from MISRA C 2012 configuration. For other configurations, CODSTA-208 can be used as a replacement. |
MISRA2012-RULE-21_11_b | Removed from MISRA C 2012 configuration. For other configurations, CODSTA-108_b can be used as a replacement. |
MISRAC2012-RULE_1_4-a | Removed from MISRA C 2012 configuration. For other configurations, CODSTA-216 can be used as a replacement. |
MISRAC2012-RULE_1_4-b | Removed from MISRA C 2012 configuration. For other configurations, CODSTA-206 can be used as a replacement. |
MISRAC2012-RULE_1_4-c | Removed from MISRA C 2012 configuration. For other configurations, CODSTA-207 can be used as a replacement. |
MISRAC2012-RULE_1_4-h | Removed from MISRA C 2012 configuration. For other configurations, CODSTA-213 can be used as a replacement. |
MISRAC2012-RULE_1_4-i | Removed from MISRA C 2012 configuration. For other configurations, CODSTA-208 can be used as a replacement. |
MISRAC2012-RULE_21_11-b | Removed from MISRA C 2012 configuration. For other configurations, CODSTA-108_b can be used as a replacement. |