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 NameCompiler Identifier
GHS Compiler for PPC 2019.1ghsppc_2019_1
GHS Compiler for PPC 2020.1ghsppc_2020_1
GNU GCC 8.x for aarch64/ARM64gcc_8-aarch64
GNU GCC 10.x for aarch64/ARM64gcc_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

  • 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.

  • No labels