Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

See Compilers.

Updated Test Configurations

The following test configurations have been updated with new rules:

Additional Updates

Deprecated and Removed Support

Removed Support for Platforms

Support for the following platform is now removed:

Compilers to Be Deprecated

Support for the following compilers will be deprecated in future releases:

  • GNU GCC 5.x
  • GNU GCC 5.x (x86_64)
  • GNU GCC 6.x
  • GNU GCC 6.x (x86_64)
  • IAR Compiler for ARM v. 7.4x
  • IAR Compiler for ARM v. 7.8x
  • IAR Compiler for M16C & R8C v. 3.5x

Deprecated Compilers

Support for the following compilers is deprecated and will be removed in future releases:

This release introduces complete support for the recently published MISRA C++:2023 coding guidelines.

A new MISRA C++2023 test configuration has been added to support MISRA C++:2023 coding guidelines.

This configuration enables the complete enforcement of the "Guidelines for the use of C++17 in critical systems" coding standard. The MISRA C++:2023 test configuration replaces the previously available MISRA C++ 202X test configuration containing guidelines from the "Public Review Draft of MISRA C++ 202X".

Updated in 2023.2.1:

The identifier for MISRA C++:2023 rule 21.2.2 was corrected. Previously labeled as 18.2.2 (MISRACPP2023-18_2_2-a), it is now labeled as 21.2.2 (MISRACPP2023-21_2_2-a).

For MISRA C++:2023 compliance reporting, it is recommended to use the updated version of C/C++test 2023.2.1, DTP 2023.2.2 and Automotive Compliance Pack 2023.2.2.

Enhanced Static Analysis

  • 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.
  • General enhancements to the accuracy and performance of static analysis rules.
  • The syntax of in-code suppressions has been extended. It is now possible to suppress a finding in the next line. See Next Line Suppression.

Enhanced Coverage Analysis

Support for collecting code coverage for 'constexpr' functions has been added. See Support for C++ Constant Expressions and -constexpr -coverage.

Support for Compilers

The following compilers are now supported:

Scroll Ignore
scroll-pdftrue
scroll-officetrue
scroll-chmtrue
scroll-docbooktrue
scroll-eclipsehelptrue
scroll-epubtrue
scroll-htmltrue

This release includes the following enhancements:

Table of Contents
maxLevel1

Release date: December 413, 2023

Enhanced Automotive Compliance Pack

Enhanced Static Analysis

Support for IDEs

The following IDE is now supported:

  • Visual Studio 2022

Two installation packages are now available, depending the Visual Studio version:

  • C/C++test for Visual Studio x86_64 (64-bit) - for Visual Studio 2022 or newer
  • C/C++test for Visual Studio x86 (32-bit) - for Visual Studio 2019 or older

Support for Multiple Report Formats

  • You can now generate multiple reports in different formats simultaneously for a single run. This can be configured using the report.format setting in a .properties file. For details, see Configuring Localsettings.
  • The configuration setting report.generate_htmls is removed. The report.format setting should be used to generate HTML reports. 
  • The default report file names have changed for some of the supported formats. For details about the report file names, see Report File Names.

Support for Platforms

Support for Compilers

The following compilers are now supported:

Compiler NameCompiler Identifier
Compiler NameCompiler Identifier

Clang C/C++ Compiler v 15.0 (x86_64)

clang_15_0-x86_64

Clang C/C++ Compiler v 16.0 (aarch32)

clang_16_0-aarch32

Clang C/C++ Compiler v

6

16.0

FR Family Softune

(aarch64)

clang_16_0-aarch64

Clang C/C++
Compiler V6Green Hills Software
Compiler
for ARM64
v
. 2014.1.x
  • Green Hills Software Compiler for PPC v. 4.2.x

  • Green Hills Software Compiler for PPC v. 5.0.x
  • Green Hills Software Compiler for V850 v. 2014.1.x
  • Microsoft Visual C++ 14.0
  • Microsoft Visual C++ 14.0 (x64)
  • 16.0 (x86_64)clang_16_0-x86_64
    GNU GCC 13.x (aarch64)gcc_13-aarch64

    GNU GCC 13.x (x86_64)

    gcc_13-64

    Hexagon Clang Compiler v. 8.7.x

    hexagon-clang_8_7

    IAR BXARM v. 9.20x

    iccarm_9_20

    Smartcode for TriCore

    SH Series

    C/C++ Compiler

    V.9.04.xx
  • TI MSP430 C/C++ Compiler GNU GCC 6.x
  • TI TMS320C2000 C/C++ Compiler v16.9
  • Vx-toolset for TriCore C/C++ Compiler 6.2
  • Wind River GCC 4.8.x
  • 10.1

    smartcode_10_1-tricore

    See Compilers.

    Support for IDEs

    The following IDE is now supported:

    • Visual Studio 2022

    Two installation packages are now available, depending on the Visual Studio version:

    • C/C++test for Visual Studio x86_64 (64-bit) - for Visual Studio 2022 or newer
    • C/C++test for Visual Studio x86 (32-bit) - for Visual Studio 2019 or older

    New and Updated Test Configurations

    The following test configuration has been added:

    • MISRA C++ 2023

    The following test configurations have been updated with new rules:

    • AUTOSAR C++14 Coding Guidelines
    • CWE Top 25 + On the Cusp 2019
    • CWE Top 25 + On the Cusp 2022
    • CWE Top 25 2019
    • CWE Top 25 2022
    • Flow Analysis Aggressive
    • Flow Analysis Standard
    • Global Analysis
    • High Integrity C++
    • MISRA C 1998
    • MISRA C 2023 (MISRA C 2012)
    • Modern C++ (11, 14 and 17)
    • Recommended Rules for FDA (C)
    • Recommended Rules for FDA (C++)
    • Security Rules
    • SEI CERT C Guidelines
    • SEI CERT C Rules
    • SEI CERT C++ Rules

    Additional Updates

    You can now generate multiple reports in different formats simultaneously for a single analysis run.

    • Report formats can be configured with the report.format setting in a .properties file. For details, see Configuring Localsettings
    • The configuration setting report.generate_htmls is removed. The report.format setting should be used to generate HTML reports.
    • The default report file names have changed for the following supported formats:
    Report FormatBeforeNow

    HTML (C/C++test's Unit Testing details)

    report.html

    report_ut_details.html

    SARIF for Azure DevOps

    report.sarifreport_azure.sarif

    SAST v14 for GitLab

    report.sastreport_v14.sast

    XML SATE (Static Analysis Tool Exposition)

    report_report.xmlreport_sate.xml

    XSL Custom

    report.htmlreport_custom.html

    cppUnit

    report_report.xmlreport_cppunit.xml
    xUnitreport_report.xmlreport_xunit.xml

    Please ensure that you update your workflows accordingly, if needed.

    Known Issues and Limitations

    • For Visual Studio 2022, when specifying file paths in C/C++test's configuration files (.properties), it is strongly recommended to use absolute paths rather than relative paths. To make the configuration files shareable, you can use variables (as a part of such a file path), for example: cpptest.custom.rules.dir=${env_var:HOME}/custom/rules.

    Deprecated and Removed Support

    Removed Test Configurations

    The following test configuration has been removed:

    • MISRA C++ 202X

    Compilers to Be Deprecated

    Support for the following compilers will be deprecated in future releases:

    • GNU GCC 5.x
    • GNU GCC 5.x (x86_64)
    • GNU GCC 6.x
    • GNU GCC 6.x (x86_64)
    • IAR Compiler for ARM v. 7.4x
    • IAR Compiler for ARM v. 7.8x
    • IAR Compiler for M16C & R8C v. 3.5x

    Deprecated Compilers

    Support for the following compilers is deprecated and will be removed in future releases:

    • Clang C/C++ Compiler v 6.0
    • FR Family Softune C/C++ Compiler V6
    • Green Hills Software Compiler for ARM64 v. 2014.1.x
    • Green Hills Software Compiler for PPC v. 4.2.x

    • Green Hills Software Compiler for PPC v. 5.0.x
    • Green Hills Software Compiler for V850 v. 2014.1.x
    • Microsoft Visual C++ 14.0
    • Microsoft Visual C++ 14.0 (x64)
    • SH Series C/C++ Compiler V.9.04.xx
    • TI MSP430 C/C++ Compiler GNU GCC 6.x
    • TI TMS320C2000 C/C++ Compiler v16.9
    • Vx-toolset for TriCore C/C++ Compiler 6.2
    • Wind River GCC 4.8.x

    Removed Support for Compilers

    The following compilers are no longer supported:

    • C compiler for 80C196 v. 6.0 r1
    • Clang C/C++ Compiler v 5.0
    • Freescale C/C++ Compiler v. 5.1 for Embedded ARM
    • Freescale CodeWarrior ANSI-C/cC++ Compiler 5.0.x for HC12
    • FreeScale CodeWarrior ColdFire v 6.0
    • GCC for Tricore 4.9.x
    • Green Hills Software Compiler for ARM v. 2014.1.x
    • Green Hills Software Compiler for PPC v. 4.0.x
    • Green Hills Software Compiler for V850 v. 2013.5.x
    • IAR Compiler for RX v. 2.5x
    • IAR Compiler for RX v. 2.6x
    • IAR Compiler for STM8 v. 1.4x
    • TI MSP430 C/C++ Compiler v4.0
    • TI TMS320C6x C/C++ Compiler v7.4
    • Wind River Diab 5.7.x
    • Wind River Diab 5.8.x
    • Wind River GCC 3.3.x
    • Wind River GCC 3.4.x
    • Wind River GCC 4.1.x
    • Wind River GCC 4.3.x

    Resolved Bugs and FRs

    2023.2.1

    Bug/FR ID

    Description

    CPP-54999

    [static] MISRA2004-13_7_n (MISRA2008-0_1_2_t) reports false positive on comparisons inside static_assert

    CPP-55017

    [static] CODSTA-CPP-58 (MISRA2008-0_1_7) reports false positive for functions called inside static_assert

    CPP-55126

    [static] CODSTA-CPP-58 (AUTOSAR-A0_1_2-a) and MISRA2004-16_10 (AUTOSAR-M0_3_2-a) report false positives on calls of functions in decltype and static_assert

    CPP-55135

    [rulewizard] Add support for static_assert to Rule Wizard

    CPP-55281

    [engine] instrumentation error - usage of CTAD does not work with constexpr functions

    CPP-55361

    [static] GLOBAL-TEMPLNOINST (MISRA2008-14_7_1) - do not report violations on functions from explicitly instantiated classes

    CPP-55756

    [engine] compile error with VS.2019: "xlocnum" header: error C2668: std::num_put<...>::do_put': ambiguous call to overloaded function

    CPP-56001

    [static] GLOBAL-ONEDEFRULE (MISRA2008-3_2_2) and GLOBAL-ONEEXTERNDEF (MISRA2008-3_2_4) report false positives on definitions of inline variables

    CPP-56006

    [static] MISRA2004-14_10 (MISRA2008-6_4_2) reports a false positive on 'if constexpr' with true condition

    CPP-56008

    [static] MISRA2004-9_2_c (MISRA2008-8_5_2_c) reports false positives on structures with static and NSDMI initialized variables

    CPP-56013

    [static] OPT-05 (MISRA2008-0_1_3_c) reports false positive when private member is used in generic lambda

    CPP-56176

    [static] AUTOSAR-M0_1_2-d false positive

    CPP-56181

    [rulewizard] Decltype and its arguments are not detected in variables initializer

    CPP-56195

    [rulewizard] New property to find an expression in 'decltype'

    CPP-56229

    [static] TEMPL-12 (MISRA2008-14_6_1) reports false positive when the template disambiguator for dependent names is used

    CPP-56230

    [static] CODSTA-MCPP-23 (AUTOSAR-A12_4_2-a) reports false positive on template forwarded class declarations

    CPP-56246

    [ide] Visual Studio test case debugging results in linker error (missing external symbol __imp_CppTest_addBreakpoint_vc)

    CPP-56256

    [static] MISRACPP2023-11_6_1-a (INIT-101): false positive on ranged-based 'for' iterator variable

    CPP-56268

    [engine] Inline function is unresolved after coverage instrumentation

    CPP-56304

    [static] TEMPL-09 (AUTOSAR-A14_8_2-a) reports false positive for template specialization

    CPP-56460

    [static] MISRA2008-0_1_7 false positives for constexpr functions called in static_assert

    CPP-56517

    [static] MISRACPP2023-11_6_1-a false positive for range-based loops

    CPP-56522

    [static] MISRACPP2023-8_20_1-a (PB-73) consumes a lot of memory

    CPP-56535

    [static] MISRACPP2023-7_0_2-a (CODSTA-CPP-212) false positive

    CPP-56573

    [static] MISRACPP2023-7_0_2-a (CODSTA-CPP-212) false positives with bool expressions from templates

    CPP-56574

    [static] MISRA C++ 2023 Rule 21.2.2 is incorrectly labeled as Rule 18.2.2

    CPP-56600

    [static] CODSTA-CPP-58 (MISRACPP2023-0_1_2-a) reports false positive on calls to functions used in template arguments

    CPP-56622

    [engine] SCA crashes with signal 11 in librulefileengine.so, LogicClient::allAccept(NodeProvider*)

    2023.2.0

    Bug/FR ID

    Description

    CPP-45027

    [cli] Need a way to generate multiple reports per run (C/C++test Professional)

    CPP-46135

    [static] Improve mapping for CERT-C INT13

    CPP-47079

    [static] Improve mapping for AUTOSAR-A9_3_1

    CPP-47353

    [static] Split COMMENT-14 and COMMENT-14_b rules to report separately on function declarations and definitions

    CPP-47435

    [cli] Generate multiple report formats from a single test run in C/C++test Professional

    CPP-47603

    [static] Add a way to in-code suppress violation in the next line

    CPP-47674

    [engine] Add support for collecting code coverage for constexpr functions (when used in non-consteval context)

    CPP-47796

    [static] CODSTA-CPP-53 and CODSTA-CPP-43 should be extended for checking template instances

    CPP-48590

    [static] Improve mapping for CERT C ERR07-C

    CPP-49654

    [ide] Improve handling of \" sequence in the command line

    CPP-50307

    [static] Extend mapping for AUTOSAR A0-1-4

    CPP-50659

    [ide] C/C++test Professional - support for Visual Studio 2022 IDE

    CPP-51362

    [static] Improve mapping for AUTOSAR A9-6-1

    CPP-51442

    [engine] error: too few arguments for template template parameter "Tuple"

    CPP-51639

    [static] Add exception in AUTOSAR A7-2-5

    CPP-52200

    [engine] error: no instance of constructor "tuple" matches the argument list

    CPP-52204

    [static] Extend mapping for AUTOSAR A27-0-4

    CPP-52327

    [static] MISRAC2012-RULE_5_4-c/MISRAC2012-RULE_5_4-d: performance improvements

    CPP-52363

    [compiler] Support for IAR BXARM 9.20.3

    CPP-52532

    [compiler] Support for clang 16 (aarch32)

    CPP-52566

    [static] Improve mapping for CERT-CPP-DCL60 [global]

    CPP-52600

    [static] Improve mapping for MISRA C 2012 Rule 12.1

    CPP-52661

    [static] Implement new rule detecting when names of members are reused in derived classes

    CPP-52704

    [static] PFO-01 (MISRA2008-3_1_1) should allow inline variables in a header file

    CPP-52826

    [static] CODSTA-CPP-53 (MISRA2008-7_1_1) improved for Lambda expressions

    CPP-52973

    [static] Add exception in MISRA2008-3_4_1 for constant variables

    CPP-52983

    [static] OPT-05 reports false positive when constexpr variable of complex type is used as template argument

    CPP-53009

    [docs] Document cpptestcli -quiet option (C/C++test Standard)

    CPP-53672

    [static] GLOBAL-UNUSEDFUNC (MISRA2008-0_1_10) reports false positive on the operator() in generic lambdas

    CPP-53673

    [static] OPT-01 (MISRA2008-3_4_1_a) reports false positive when local variable is declared inside condition of if statement

    CPP-53711

    [static] EXCEPT-12 (MISRA2008-15_1_2) reports false negative when NULL from std library is used as argument of throw

    CPP-53713

    [rulewizard] Extend 'IsInline' property to check that a variable has been declared as inline

    CPP-53717

    [static] MISRA-071_b (MISRAC2012-RULE_17_3-a) reports false positive when function call and prototype are in the same macro definition

    CPP-53757

    [compiler] Support for Tasking SmartCode 10.1 for TriCore

    CPP-53760

    [engine] error: name followed by "::" must be a class or namespace name

    CPP-53765

    [static] MISRA2004-13_7_s (AUTOSAR-M0_1_2-e) reports false positive when enumerations with negative values are used in condition

    CPP-53766

    [static] OPT-30 (AUTOSAR-A0_1_3-a): false positive on friend definition in template class

    CPP-53767

    [static] CODSTA-CPP-43 (AUTOSAR-A8_4_9-a): false positive on parameters of friend functions in template classes

    CPP-53777

    [compiler] Support for Hexagon 8.7 (Linux, Extended, Full)

    CPP-53818

    [engine] errno not set properly when tracing some exec functions

    CPP-54754

    [engine] Stubs for calls to (non-specialized) template function from other template function

    CPP-54756

    [ide] C/C++test Standard: Ability to import analysis results into CMake project in Visual Studio IDE

    CPP-54761

    [engine] Improve compiler config for clang 8 and older - invalid redeclaration of type name "std::align_val_t" (overaligned_allocation_enabled=false)

    CPP-54765

    [static] GLOBAL-UNUSEDTYPE / INTERNAL-GLOBAL-UNUSEDTYPE_2: TypeError: argument of type 'NoneType' is not iterable

    CPP-54766

    [engine] error: static assertion failed - incorrect behaviour of std::is_trivially_copyable_v

    CPP-54774

    [engine] Program received signal 11 at : Stack trace: 0# 0x00007F07709136B0 in /lib64/libc.so.6

    CPP-54776

    [engine] No code coverage for friends of template class

    CPP-54779

    [engine] CWC: EDG failure error 83

    CPP-54784

    [static] MISRA-084: false positive violation when a macro is used in the same line as 'return'

    CPP-54806

    [static] PREPROC-19: an error has occurred while running the rule - SyntaxError: invalid token

    CPP-54838

    [engine] Internal error: assertion failed at: "il_to_str.c", line 3749

    CPP-54839

    [static] GLOBAL-ONEUSEVAR (MISRA2008-0_1_4) reports false positive for variables captured in lambdas

    CPP-54884

    [vscode] Map Parasoft static analysis violation severity to VSCode message severity

    CPP-54933

    [engine] C/C++test instrumentation fails to compile for array braced initializers with designators

    CPP-54946

    [engine] Parse error: parameter of abstract class type is not allowed

    CPP-54947

    [static] Change mapping for the AUTOSAR-M0_1_3 (remove AUTOSAR-M0_1_3-b)

    CPP-54949

    [cli] "cpptest.fail.setup.problems" should allow for selective fail of cpptestcli runs based on setup problem level

    CPP-54957

    [ci] Integrate code coverage reporting for GitLab

    CPP-54961

    [engine] Fatal error C++test: lambda capture of structure binding (32716)

    CPP-55008

    [engine] Incorrect instrumentation generates "error: invalid use of this at top level"

    CPP-55011

    [static] PB-20 (CERT_CPP-OOP51-a) does not check correctly the slicing problem

    CPP-55016

    [static] CERT_C-ERR33-b should be removed from the mapping to CERT ERR33

    CPP-55022

    [static] CODSTA-CPP-85 produces violation for two unrelated template clasess.

    CPP-55055

    [ide] Flag /std:c++20 is filtered out in VS plugin

    CPP-55083

    [static] FORMAT-47_b (AUTOSAR-A7_1_3-a) reports false positive when 'const' qualifier is placed on the right-hand side of the 'time_t' type

    CPP-55124

    [static] CODSTA-CPP-58 (AUTOSAR-A0_1_2-a) reports false positive on calls of functions inside 'new' operand

    CPP-55125

    [static] CODSTA-224 (AUTOSAR-A5_16_1-a) reports false positives on conditional operators used by itself in template functions

    CPP-55128

    [static] CODSTA-MCPP-14 (AUTOSAR-A13_3_1-a) reports false positive on forwarding constructors defined with enable_if

    CPP-55129

    [static] CODSTA-CPP-78 (AUTOSAR-M9_3_3-a) reports false positive when member function uses members of anonymous union

    CPP-55132

    [engine] CTOR Stubs behave like Auto-Stubs

    CPP-55134

    [engine] Coverage build "TYPED_TEST" failed in combination with "ASSERT_NO_THROW"/"EXPECT_NO_THROW"

    CPP-55217

    [engine] error: EventTypeT was not declared in this scope

    CPP-55233

    [compiler] Hexagon Clang 8.6 does not expand response files

    CPP-55272

    [engine] parse error: no suitable user-defined conversion

    CPP-55274

    [engine] Lambda nested in template function should be reported once (with generic template as its parent) in the coverage reports

    CPP-55276

    [static] AUTOSAR-A13_2_3-a and std::enable_if

    CPP-55508

    [engine] error: expected { before : token instrumentation failure

    CPP-55576

    [engine] fix(tcov): fix position of added 'else' clause in template-coverage

    CPP-55610

    [ide] Data sources created in incorrect folder when virtual folders are using in Eclipse project

    CPP-55640

    [static] Improve mapping for HICPP-6_1_3 requirement

    CPP-55641

    [static] CODSTA-CPP-84 (HICPP-3_1_1-d) reports false positive when scoped enumerators are used

    CPP-55740

    [static] HICPP-8_3_4-a reports false positive on lvalue references

    CPP-55745

    [static] Improve mapping for HIC++ 8.1.1 requirement

    CPP-55751

    [ide] Improve importer for Renesas HEW-4 to better handle compiler options

    CPP-55753

    [static] TEMPL-10 (HICPP-14_2_1-a) reports false positive on definitions of template specializations

    CPP-55762

    [ide] Test cases for functions with "std::vector<>" as an argument cannot be created from the test case editor

    FA-9413

    Simulation does not take into account paths from new operation to catch (std::bad_alloc)

    FA-9457

    BD-PB-VOVR false positive when variable is left uninitialized

    FA-9471

    BD-RES-STACKLIM incorrectly calculates the size of the function parameter declared as an array type

    FA-9479

    BD-PB-OVERFNZT false positive on array initialized from string literal

    FA-9522

    BD-PB-CC false positive on array element value overwritten by memcpy function

    FA-9555

    BD-PB-VOVR false positive reporting variables used in the context of constexpr / static_assert

    FA-9599

    Improve BD-PB-CC rule so it cannot throw exceptions described when post-processing violations

    FA-9605

    BD-CO-ITMOD false positives for erase function

    FA-9607

    False positive with BD-PB-ARRAY with multidimensional array passed by reference

    FA-9614

    BD-PB-ARRAY bogus violation on parameter passed by reference

    FA-9618

    BD-PB-ZERO false positive for (a - b) denominator with appropriate check for a and b being unequal

    FA-9624

    BD-PB-SUBSEQMOVE false positive when address of the moved-from object is used as an argument to placement-new

    FA-9625

    BD-PB-NOTINIT false positive for unknown size array initialized with brace-enclosed list

    FA-9642

    Inaccurate fact deduction based on the complex arithmetic made on variables (e.g. 2 * x - x - x)

    FA-9665

    BD-PB-CC false positive

    Updates to Rules

    Anchor
    New Rules
    New Rules
    New Rules

    2023.2.1

    Rule ID

    Header

    MISRACPP2023-21_2_2-a

    The string handling functions from <cstring>, <cstdlib>, <cwchar> and <cinttypes> shall not be used

    2023.2.0

    Rule ID

    Header

    AUTOSAR-A18_9_2-b

    The 'std::move' function should be used to forward rvalue references

    AUTOSAR-A27_0_4-e

    Do not use the 'c_str()' and 'data()' functions for string objects

    AUTOSAR-M3_2_4-b

    An identifier with external linkage shall have external definition

    BD-PB-LIFETIME

    Do not use an object after its lifetime has ended

    BD-PB-NAUNF

    Do not read the value of a non-active union field

    CERT_C-MSC14-b

    Evaluation of constant unsigned integer expressions in preprocessor directives should not lead to wraparound

    CERT_C-MSC15-b

    Evaluation of constant unsigned integer expressions in preprocessor directives should not lead to wraparound

    CODSTA-124_c

    Casts shall not be performed between a pointer to a function and any other type

    CODSTA-185_c

    The address of the 'localeconv', 'getenv', 'setlocale' or, 'strerror' function should not be taken

    CODSTA-223_c

    The names of the standard signed integer types and standard unsigned integer types should not be used

    CODSTA-233

    Types of bit-fields should have defined sizes

    CODSTA-234

    The 'asm' declaration should not be used

    CODSTA-235

    The library functions 'rewind', 'setbuf' and 'ctime' should not be used

    CODSTA-236

    The built-in unary + operator should not be used

    CODSTA-237

    The character handling functions from <cctype> and <cwctype> shall not be used

    CODSTA-238

    The C++ Standard Library functions 'memcpy', 'memmove' and 'memcmp' from <cstring> should not be used

    CODSTA-239

    The literal value zero shall be the only value assigned to errno

    CODSTA-240

    A cast should not convert a pointer type to 'intptr_t' and 'uintptr_t' types

    CODSTA-241

    All 'if...else-if' constructs shall be terminated with an 'else' clause

    CODSTA-242

    The string handling functions from <cstring>, <cstdlib>, <cwchar> and <cinttypes> shall not be used

    CODSTA-243

    The 'switch' statement should not contain labels other than 'case' and 'default'

    CODSTA-304

    A bit-field shall have an appropriate type

    CODSTA-305

    All enumeration values should be representable within the width of the bit-field

    CODSTA-306

    The volatile qualifier shall be used appropriately

    CODSTA-307

    Operands of bitwise and complement operators shall have an unsigned type

    CODSTA-308

    Operands of shift operators shall have an unsigned type

    CODSTA-309

    A conversion from function type to pointer-to-function type shall only occur in appropriate contexts

    CODSTA-310

    Integral promotion and the usual arithmetic conversions shall not change the signedness or the type category of an operand

    CODSTA-311

    The address of an object with automatic storage duration shall not be assigned to an object with a greater lifetime

    CODSTA-312

    Assignment between numeric types shall be appropriate

    CODSTA-313

    The numeric value of an unscoped enumeration with no fixed underlying type shall not be used

    CODSTA-314

    The 'assert' macro shall not be used with a constant expression

    CODSTA-315

    Legacy 'for' statements should be simple

    CODSTA-61_b

    The first or the last label of a switch statement should be the 'default' label unless all enumeration values are tested

    CODSTA-63_b

    Use bitwise operators only on unsigned operands

    CODSTA-64_b

    Every switch branch should be unconditionally terminated

    CODSTA-65_b

    An object with enumeration type shall not be converted to an object with pointer type

    CODSTA-67_b

    The same type aliases shall be used in all declarations of the same entity

    CODSTA-CPP-110

    Member variable names in derived classes should not be the same as member variable names in base classes

    CODSTA-CPP-111

    The 'NULL' identifier should not be used

    CODSTA-CPP-112

    The result of std::remove, std::remove_if, std::unique and empty shall be used

    CODSTA-CPP-113

    The 'std::locale::global' function should not be used

    CODSTA-CPP-201

    Non-static data members should be either all private or all public

    CODSTA-CPP-202

    An enumeration shall be defined with an explicit underlying type

    CODSTA-CPP-203

    An explicit or implicit enumerator value shall not be the result of a narrowing conversion

    CODSTA-CPP-204

    The operand to typeid shall not be an expression of polymorphic class type

    CODSTA-CPP-205

    User-provided copy and move member functions of a class should have appropriate signatures

    CODSTA-CPP-206

    Member functions returning references to their object should be ref-qualified appropriately

    CODSTA-CPP-207

    An argument passed via ellipsis shall have an appropriate type

    CODSTA-CPP-208

    Exception-unfriendly functions shall be noexcept

    CODSTA-CPP-209

    Functions used as initializers of non-constexpr non-local variables shall be noexcept

    CODSTA-CPP-210

    Parameters in an overriding virtual function shall not specify different default arguments

    CODSTA-CPP-211

    There shall be no conversion from type bool

    CODSTA-CPP-212

    There shall be no conversion to type bool

    CODSTA-CPP-95_b 

    Do not declare entities in the standard library namespaces: posix, std and stdN

    CODSTA-MCPP-101

    A for-range-initializer shall contain at most one function call

    CODSTA-MCPP-103

    Variables should be captured explicitly in a non-transient lambda

    CODSTA-MCPP-104

    A non-transient lambda shall not implicitly capture this

    CODSTA-MCPP-105

    Special member functions shall be provided appropriately

    CODSTA-MCPP-13_c

    The 'std::forward' function should only be used to forward forwarding references

    CODSTA-MCPP-13_d

    The 'std::move' function should be used to forward rvalue references

    CODSTA-MCPP-47_b

    A class shall only define an initializer-list constructor when it is the only constructor

    CODSTA-MCPP-57

    The raw pointer constructors of 'std::shared_ptr' and 'std::unique_ptr' should not be used

    CODSTA-MCPP-58

    Do not include headers deprecated in the C++17 standard

    CODSTA-MCPP-59

    The 'uncaught_exception' function deprecated in the C++17 standard should not be used

    CODSTA-MCPP-60

    The condition of a 'switch' statement should only be preceded by an optional simple-declaration

    CODSTA-MCPP-61

    Define =delete functions with parameters of type rvalue reference to const

    COMMENT-14_c

    Every function declaration should have a proper documentation

    CWE-190-i

    Evaluation of constant unsigned integer expressions in preprocessor directives should not lead to wraparound

    EXCEPT-27

    A 'try' statement of a 'try-block' should contain a potentially-throwing statement

    FORMAT-50

    Use parentheses to indicate the precedence of operators in expressions

    GLOBAL-NOEXTERNDEF

    An identifier with external linkage shall have external definition

    GLOBAL-PREDICATENOSE

    Predicates shall not have persistent side effects

    HICPP-17_3_2-b

    The 'std::forward' function should only be used to forward forwarding references

    HICPP-17_3_2-c

    The 'std::move' function should be used to forward rvalue references

    INIT-101

    All non-class variables with automatic storage duration should be explicitly initialized

    INIT-19

    All direct, non-static data members of a non-aggregate class should be initialized at the top of a constructor body

    INIT-20

    All direct, non-static data members of an aggregate class should be initialized as soon as the object is created

    JSF-203_b

    Evaluation of expressions shall not lead to overflow/underflow

    MISRA-051_b

    Evaluation of constant unsigned integer expressions in preprocessor directives should not lead to wraparound

    MISRA-102

    No more than 2 levels of pointer indirection should be used

    MISRA2008-3_2_4_b

    An identifier with external linkage shall have exactly one external definition

    MISRA2012-RULE-8_6_b

    An identifier with external linkage shall have exactly one external definition

    MISRAC2012-RULE_8_6-b

    An identifier with external linkage shall have external definition

    MISRACPP2023-0_0_1-a

    There shall be no unreachable code in "else" block

    MISRACPP2023-0_0_1-b

    There shall be no unreachable code after 'return', 'break', 'continue', 'goto', 'throw' statements, and after calls to functions with the 'noreturn' attribute

    MISRACPP2023-0_0_1-c

    There shall be no unreachable code in "if/else/while/for" block

    MISRACPP2023-0_0_1-d

    There shall be no unreachable code in switch statement

    MISRACPP2023-0_0_1-e

    There shall be no unreachable code in 'for' loop

    MISRACPP2023-0_0_1-f

    There shall be no unreachable code after 'if' or 'switch' statement

    MISRACPP2023-0_0_1-g

    There shall be no unreachable code after "if" or "switch" statement inside while/for/do...while loop

    MISRACPP2023-0_0_1-h

    Where multiple handlers are provided in a single try-catch statement or function-try-block for a derived class and some or all of its bases, the handlers shall be ordered most-derived to base class

    MISRACPP2023-0_0_1-i

    Where multiple handlers are provided in a single 'try-catch' statement or 'function-try-block', any ellipsis (catch-all) handler shall occur last

    MISRACPP2023-0_0_1-j

    A 'try' statement of a 'try-block' should contain a potentially-throwing statement

    MISRACPP2023-0_0_2-a

    Avoid conditions that always evaluate to the same value

    MISRACPP2023-0_1_1-a

    Avoid unused values

    MISRACPP2023-0_1_2-a

    The value returned by a function having a non-void return type that is not an overloaded operator shall always be used

    MISRACPP2023-0_2_1-a

    Avoid unused local variables

    MISRACPP2023-0_2_1-b

    A project should not contain unused variables with internal linkage

    MISRACPP2023-0_2_2-a

    Eliminate unused parameters

    MISRACPP2023-0_2_2-b

    There shall be no unused named parameters in virtual functions

    MISRACPP2023-0_2_3-a

    Types declared in an unnamed namespace scope should be used at least once

    MISRACPP2023-0_2_3-b

    Types declared in a block scope should be used at least once

    MISRACPP2023-0_2_4-a

    Avoid unreachable methods

    MISRACPP2023-0_3_1-a

    Do not use object representations to compare floating-point values

    MISRACPP2023-0_3_1-b

    Floating-point expressions shall not be explicitly (syntactically) tested for equality (==) or inequality (!=)

    MISRACPP2023-0_3_1-c

    Do not use floating point variables as loop counters

    MISRACPP2023-0_3_1-d

    Do not use floating-point expressions which may result in NaN and infinity values

    MISRACPP2023-0_3_2-a

    Do not pass incorrect values to library functions

    MISRACPP2023-10_0_1-a

    Each variable should be declared in a separate declaration statement

    MISRACPP2023-10_1_1-a

    A pointer parameter in a function prototype should be declared as pointer to const if the pointer is not used to modify the addressed object

    MISRACPP2023-10_1_1-b

    Declare a type of parameter as typedef to pointer to const if the pointer is not used to modify the addressed object

    MISRACPP2023-10_1_1-c

    Declare reference parameters as const references whenever possible

    MISRACPP2023-10_1_2-a

    The volatile qualifier shall be used appropriately

    MISRACPP2023-10_2_1-a

    An enumeration shall be defined with an explicit underlying type

    MISRACPP2023-10_2_1-b

    An explicit or implicit enumerator value shall not be the result of a narrowing conversion

    MISRACPP2023-10_2_2-a

    Prefer Scoped Enums to Unscoped Enums

    MISRACPP2023-10_2_3-a

    The numeric value of an unscoped enumeration with no fixed underlying type shall not be used

    MISRACPP2023-10_3_1-a

    There shall be no unnamed namespaces in header files

    MISRACPP2023-10_4_1-a

    The 'asm' declaration should not be used

    MISRACPP2023-11_3_1-a

    C-style arrays shall not be used

    MISRACPP2023-11_3_2-a

    The declaration of objects should contain no more than 2 levels of pointer indirection

    MISRACPP2023-11_6_1-a

    All non-class variables with automatic storage duration should be explicitly initialized

    MISRACPP2023-11_6_2-a

    Avoid use before initialization

    MISRACPP2023-11_6_3-a

    Within an enumerator list, the value of an implicitly-specified enumeration constant shall be unique

    MISRACPP2023-12_2_1-a

    Do not declare member variables as bit-fields

    MISRACPP2023-12_2_2-a

    A bit-field shall have an appropriate type

    MISRACPP2023-12_2_2-b

    All enumeration values should be representable within the width of the bit-field

    MISRACPP2023-12_2_3-a

    Named bit-fields with signed integer type shall have a length of more than one bit

    MISRACPP2023-12_3_1-a

    The union keyword should not be used

    MISRACPP2023-13_1_1-a

    Classes should not be derived from virtual bases

    MISRACPP2023-13_1_2-a

    A base class shall not be both virtual and non-virtual in the same hierarchy

    MISRACPP2023-13_3_1-a

    Each overriding virtual function shall be declared with the override or final specifier

    MISRACPP2023-13_3_1-b

    Only one of virtual, override or final should be specified in a member function declaration

    MISRACPP2023-13_3_2-a

    Parameters in an overriding virtual function shall not specify different default arguments

    MISRACPP2023-13_3_3-a

    The identifiers used in the declaration and definition of a function shall be identical

    MISRACPP2023-13_3_3-b

    The parameters in all overrides of a function should either be unnamed or have identical names

    MISRACPP2023-13_3_4-a

    A pointer to member virtual function shall only be tested for equality with null-pointer-constant

    MISRACPP2023-14_1_1-a

    Non-static data members should be either all private or all public

    MISRACPP2023-15_0_1-a

    Special member functions shall be provided appropriately

    MISRACPP2023-15_0_1-b

    Destructor shall have a non-empty body

    MISRACPP2023-15_0_2-a

    User-provided copy and move member functions of a class should have appropriate signatures

    MISRACPP2023-15_1_1-a

    Do not use dynamic type of an object under construction

    MISRACPP2023-15_1_1-b

    Do not use dynamic type of an object under destruction

    MISRACPP2023-15_1_2-a

    All constructors of a class should explicitly call a constructor for all of its immediate base classes and all virtual base classes

    MISRACPP2023-15_1_3-a

    Constructors allowing for conversion should be made explicit

    MISRACPP2023-15_1_3-b

    User-conversion cast operators should be made explicit

    MISRACPP2023-15_1_4-a

    All direct, non-static data members of a non-aggregate class should be initialized at the top of a constructor body

    MISRACPP2023-15_1_4-b

    All direct, non-static data members of an aggregate class should be initialized as soon as the object is created

    MISRACPP2023-15_1_5-a

    A class shall only define an initializer-list constructor when it is the only constructor

    MISRACPP2023-15_8_1-a

    Check for assignment to self in operator=

    MISRACPP2023-16_5_1-a

    Avoid overloading logical operators AND, OR (, ||)

    MISRACPP2023-16_5_2-a

    The unary & operator shall not be overloaded

    MISRACPP2023-16_6_1-a

    If you'd like to support mixed-mode operations make operators a non-member functions

    MISRACPP2023-17_8_1-a

    Function templates shall not be explicitly specialized

    MISRACPP2023-18_1_1-a

    An exception object should not have pointer type

    MISRACPP2023-18_1_2-a

    An empty throw (throw;) shall only be used in the compound-statement of a catch handler

    MISRACPP2023-18_2_2-a

    The string handling functions from<cstring>, <cstdlib>, <cwchar> and <cinttypes> shall not be used

    MISRACPP2023-18_3_1-a

    There should be at least one exception handler to catch all otherwise unhandled exceptions

    MISRACPP2023-18_3_2-a

    A class type exception shall always be caught by reference

    MISRACPP2023-18_3_3-a

    Handlers of a function-try-block implementation of a class constructor or destructor shall not reference nonstatic members from this class or its bases

    MISRACPP2023-18_4_1-a

    Exception-unfriendly functions shall be noexcept

    MISRACPP2023-18_4_1-b

    Functions used as initializers of non-constexpr non-local variables shall be noexcept

    MISRACPP2023-18_5_1-a

    Avoid throwing exceptions from functions that are declared not to throw

    MISRACPP2023-18_5_2-a

    The 'abort()' function from the 'stdlib.h' or 'cstdlib' library shall not be used

    MISRACPP2023-18_5_2-b

    The 'exit()' function from the 'stdlib.h' or 'cstdlib' library shall not be used

    MISRACPP2023-18_5_2-c

    The 'quick_exit()' and '_Exit()' functions from the 'stdlib.h' or 'cstdlib' library shall not be used

    MISRACPP2023-19_0_1-a

    Preprocessing directives shall be syntactically meaningful even when excluded by the preprocessor

    MISRACPP2023-19_0_2-a

    Function-like macros shall not be defined

    MISRACPP2023-19_0_3-a

    #include statements in a file should only be preceded by other preprocessor directives or comments

    MISRACPP2023-19_0_4-a

    #undef should only be used for macros defined previously in the same file

    MISRACPP2023-19_1_1-a

    The defined preprocessor operator shall only be used in one of the two standard forms

    MISRACPP2023-19_1_2-a

    All #else, #elif and #endif preprocessor directives shall reside in the same file as the #if or #ifdef directive to which they are related

    MISRACPP2023-19_1_3-a

    Do not use in preprocessor directives #if and #elif macros not defined in translation unit

    MISRACPP2023-19_2_1-a

    Use multiple include guards

    MISRACPP2023-19_2_2-a

    The #include directive shall be followed by either a <filename> or "filename" sequence

    MISRACPP2023-19_2_3-a

    Non-standard characters should not occur in header file names in #include directives

    MISRACPP2023-19_3_1-a

    The # and ## preprocessor operators should not be used

    MISRACPP2023-19_3_2-a

    A macro parameter immediately following a # operator shall not immediately be followed by a ## operator

    MISRACPP2023-19_3_3-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

    MISRACPP2023-19_3_4-a

    In the definition of a function-like macro each instance of a parameter shall be enclosed in parentheses unless it is used as the operand of # or ##

    MISRACPP2023-19_3_5-a

    Arguments to a function-like macro shall not contain tokens that look like preprocessing directives

    MISRACPP2023-19_6_1-a

    The #pragma directive shall not be used

    MISRACPP2023-19_6_1-b

    The '_Pragma' operator should not be used

    MISRACPP2023-21_10_1-a

    The identifiers va_list, va_arg, va_start, va_end, va_copy should not be used

    MISRACPP2023-21_10_2-a

    The facilities provided by <setjmp.h> should not be used

    MISRACPP2023-21_10_2-b

    The standard header files <setjmp.h> or <csetjmp> shall not be used

    MISRACPP2023-21_10_3-a

    The signal handling facilities of <signal.h> shall not be used

    MISRACPP2023-21_2_1-a

    The library functions atof, atoi and atol from library stdlib.h shall not be used

    MISRACPP2023-21_2_3-a

    The 'system()' function from the 'stdlib.h' or 'cstdlib' library shall not be used

    MISRACPP2023-21_2_4-a

    The macro offsetof, in library stddef.h, shall not be used

    MISRACPP2023-21_6_1-a

    Dynamic heap memory allocation shall not be used

    MISRACPP2023-21_6_2-a

    Dynamic heap memory allocation shall not be used

    MISRACPP2023-21_6_2-b

    Any member function named 'allocate' or 'deallocate' enclosed by namespace 'std' should not be used

    MISRACPP2023-21_6_2-c

    The 'std::unique_ptr::release' function should not be used

    MISRACPP2023-21_6_3-a

    Destructor should not be called manually

    MISRACPP2023-21_6_3-b

    Do not declare the 'new' and 'delete' operators

    MISRACPP2023-21_6_3-c

    The memory management functions from the <new> and <memory> headers should not be used

    MISRACPP2023-21_6_3-d

    Advanced memory management operators 'new' and 'delete' should not be used

    MISRACPP2023-21_6_4-a

    Define both sized and unsized versions of operator delete

    MISRACPP2023-21_6_5-a

    Do not delete objects with incomplete class at the point of deletion

    MISRACPP2023-22_3_1-a

    The 'assert' macro shall not be used with a constant expression

    MISRACPP2023-22_4_1-a

    The literal value zero shall be the only value assigned to errno

    MISRACPP2023-23_11_1-a

    The raw pointer constructors of 'std::shared_ptr' and 'std::unique_ptr' should not be used

    MISRACPP2023-24_5_1-a

    The character handling functions from <cctype> and <cwctype> shall not be used

    MISRACPP2023-24_5_2-a

    The C++ Standard Library functions 'memcpy', 'memmove' and 'memcmp' from <cstring> should not be used

    MISRACPP2023-25_5_1-a

    The 'setlocale' function should not be used

    MISRACPP2023-25_5_1-b

    The 'std::locale::global' function should not be used

    MISRACPP2023-25_5_2-a

    The pointers returned by the Standard Library functions 'localeconv', 'getenv', 'setlocale' or, 'strerror' shall only be used as if they have pointer to const-qualified type

    MISRACPP2023-25_5_2-b

    Strings pointed by members of the structure 'lconv' should not be modified

    MISRACPP2023-25_5_2-c

    The address of the 'localeconv', 'getenv', 'setlocale' or, 'strerror' function should not be taken

    MISRACPP2023-25_5_3-a

    Pointers returned by certain Standard Library functions should not be used following a subsequent call to the same or related function

    MISRACPP2023-26_3_1-a

    Avoid using vectorboo

    MISRACPP2023-28_3_1-a

    Predicates shall not have persistent side effects

    MISRACPP2023-28_6_1-a

    Do not use std::move on objects declared with the const or consttype

    MISRACPP2023-28_6_2-a

    The 'std::forward' function should be used to forward forwarding references

    MISRACPP2023-28_6_2-b

    The 'std::forward' function should only be used to forward forwarding references

    MISRACPP2023-28_6_3-a

    Do not subsequently use the argument to std::forward

    MISRACPP2023-28_6_3-b

    Do not rely on the value of a moved-from object

    MISRACPP2023-28_6_4-a

    The result of std::remove, std::remove_if, std::unique and empty shall be used

    MISRACPP2023-30_0_1-a

    The input/output library stdio.h shall not be used

    MISRACPP2023-30_0_1-b

    Prefer iostream.h to stdio.h

    MISRACPP2023-30_0_2-a

    Do not alternately input and output from a stream without an intervening flush or positioning call

    MISRACPP2023-4_1_2-a

    Do not include headers deprecated in the C++17 standard

    MISRACPP2023-4_1_2-b

    The 'uncaught_exception' function deprecated in the C++17 standard should not be used

    MISRACPP2023-4_1_2-c

    Do not use throw exception specifications

    MISRACPP2023-4_1_2-d

    A constexpr static data member should not be declared outside the class definition

    MISRACPP2023-4_1_3-a

    Avoid incorrect shift operations

    MISRACPP2023-4_1_3-b

    Avoid signed integer overflows

    MISRACPP2023-4_1_3-c

    Avoid null pointer dereferencing

    MISRACPP2023-4_1_3-d

    Avoid division by zero

    MISRACPP2023-4_6_1-a

    The value of an expression shall be the same under any order of evaluation that the standard permits

    MISRACPP2023-4_6_1-b

    Don't write code that depends on the order of evaluation of function arguments

    MISRACPP2023-4_6_1-c

    Don't write code that depends on the order of evaluation of function designator and function arguments

    MISRACPP2023-4_6_1-d

    Don't write code that depends on the order of evaluation of expression that involves a function call

    MISRACPP2023-4_6_1-e

    Between sequence points an object shall have its stored value modified at most once by the evaluation of an expression

    MISRACPP2023-4_6_1-f

    Do not use more than one volatile between two adjacent sequence points

    MISRACPP2023-4_6_1-g

    Don't write code that depends on the order of evaluation of function calls

    MISRACPP2023-5_0_1-a

    Trigraphs shall not be used

    MISRACPP2023-5_10_1-a

    Do not declare entities in the standard library namespaces: posix, std and stdN

    MISRACPP2023-5_10_1-b

    Do not use identifiers which begin with one or two underscores ('_' or '__')

    MISRACPP2023-5_10_1-c

    An identifier shall not contain a double underscore '__'

    MISRACPP2023-5_10_1-d

    User defined suffixes of the user defined literal operators shall start with underscore followed by one or more letters

    MISRACPP2023-5_10_1-e

    A user-defined literal suffix should be directly preceded by a literal operator

    MISRACPP2023-5_10_1-f

    A macro identifier should have an appropriate form

    MISRACPP2023-5_10_1-g

    Do not declare identifiers with names reserved in the standard library

    MISRACPP2023-5_13_1-a

    Only those escape sequences that are defined in ISO/IEC 14882:2014 shall be used

    MISRACPP2023-5_13_2-a

    Octal and hexadecimal escape sequences shall be terminated

    MISRACPP2023-5_13_3-a

    Octal constants (other than zero) shall not be used

    MISRACPP2023-5_13_4-a

    A 'U' suffix shall be applied to all constants of unsigned type

    MISRACPP2023-5_13_5-a

    Use capital 'L' instead of lowercase 'l' to indicate long

    MISRACPP2023-5_13_6-a

    An integer-literal of type long long shall not use a single 'L' or 'l' in any suffix

    MISRACPP2023-5_13_7-a

    String literals with different encoding prefixes shall not be concatenated

    MISRACPP2023-5_13_7-b

    String literals with and without encoding prefixes should not be concatenated

    MISRACPP2023-5_7_1-a

    The character sequence /* shall not be used within a C-style comment

    MISRACPP2023-5_7_2-a

    Sections of code should not be "commented out"

    MISRACPP2023-5_7_3-a

    Line-splicing shall not be used in // comments

    MISRACPP2023-6_0_1-a

    Always declare functions at file scope

    MISRACPP2023-6_0_1-b

    Parameter names in function declarations should not be enclosed in parentheses

    MISRACPP2023-6_0_1-c

    Local variable names in variable declarations should not be enclosed in parentheses

    MISRACPP2023-6_0_2-a

    When an array is declared with external linkage, its size shall be stated explicitly or defined implicitly by initialisation

    MISRACPP2023-6_0_3-a

    The global namespace shall only contain main() and namespace declarations

    MISRACPP2023-6_0_4-a

    The identifier main shall not be used for a function other than the global function main

    MISRACPP2023-6_2_1-a

    The One Definition Rule shall not be violated

    MISRACPP2023-6_2_2-a

    All declarations of an object or function shall have compatible types

    MISRACPP2023-6_2_2-b

    If a function is declared with an exception-specification, then all declarations of the same function (in other translation units) shall be declared with the same set of type-ids

    MISRACPP2023-6_2_3-a

    An identifier with external linkage shall have no more then one external definition

    MISRACPP2023-6_2_3-b

    A type that is used in multiple translation units shall be defined in one and only one file

    MISRACPP2023-6_2_3-c

    An inline function that is used in multiple translation units shall be defined in one and only one file

    MISRACPP2023-6_2_3-d

    Template specialization shall be declared in the same file as the primary template or a user-defined type, for which the specialization is declared

    MISRACPP2023-6_2_4-a

    Don't define entities with linkage in a header file

    MISRACPP2023-6_4_1-a

    Identifier declared in a local or function prototype scope shall not hide an identifier declared in a global or namespace scope

    MISRACPP2023-6_4_1-b

    Identifiers declared in an inner local scope should not hide identifiers declared in an outer local scope

    MISRACPP2023-6_4_1-c

    Identifiers declared in a local scope should not hide identifiers declared in a class scope

    MISRACPP2023-6_4_1-d

    Identifiers declared in a class scope should not hide identifiers declared in a global or namespace scope

    MISRACPP2023-6_4_1-e

    Identifiers declared in an inner class scope should not hide identifiers declared in outer class scope

    MISRACPP2023-6_4_1-f

    Member variable names in derived classes should not be the same as member variable names in base classes

    MISRACPP2023-6_4_2-a

    Never redefine an inherited nonvirtual function

    MISRACPP2023-6_4_2-b

    Member functions declared in derived class should not hide functions declared in base classes

    MISRACPP2023-6_4_3-a

    In a class template with a dependent base, any name that may be found in that dependent base shall be referred to using a qualified-id or this

    MISRACPP2023-6_5_1-a

    Objects or functions with external linkage shall be declared in a header file

    MISRACPP2023-6_5_2-a

    Do not use static keyword except inside functions and classes

    MISRACPP2023-6_5_2-b

    Identifiers shall not simultaneously have both internal and external linkage in the same translation unit

    MISRACPP2023-6_7_1-a

    Local variables shall not have static storage duration

    MISRACPP2023-6_7_2-a

    Avoid unencapsulated global variables (including variables declared in namespaces and public static members)

    MISRACPP2023-6_8_1-a

    Do not point to a wrapped object that has been freed

    MISRACPP2023-6_8_1-b

    Do not read the value of a non-active union field

    MISRACPP2023-6_8_1-c

    Do not use an object after its lifetime has ended

    MISRACPP2023-6_8_2-a

    The address of an object with automatic storage shall not be returned from a function

    MISRACPP2023-6_8_2-b

    Never return lambdas that capture local objects by reference

    MISRACPP2023-6_8_3-a

    The address of an object with automatic storage duration shall not be assigned to an object with a greater lifetime

    MISRACPP2023-6_8_4-a

    Member functions returning references to their object should be ref-qualified appropriately

    MISRACPP2023-6_9_1-a

    The same type aliases shall be used in all declarations of the same entity

    MISRACPP2023-6_9_2-a

    The names of the standard signed integer types and standard unsigned integer types should not be used

    MISRACPP2023-7_0_1-a

    There shall be no conversion from type bool

    MISRACPP2023-7_0_2-a

    There shall be no conversion to type bool

    MISRACPP2023-7_0_3-a

    The plain char type shall be used only for the storage and use of character values

    MISRACPP2023-7_0_3-b

    signed and unsigned char type shall be used only for the storage and use of numeric values

    MISRACPP2023-7_0_4-a

    Operands of bitwise and complement operators shall have an unsigned type

    MISRACPP2023-7_0_4-b

    Operands of shift operators shall have an unsigned type

    MISRACPP2023-7_0_5-a

    Integral promotion and the usual arithmetic conversions shall not change the signedness or the type category of an operand

    MISRACPP2023-7_0_6-a

    Assignment between numeric types shall be appropriate

    MISRACPP2023-7_11_1-a

    Prefer 'nullptr' over 'NULL' or '0'(zero)

    MISRACPP2023-7_11_1-b

    The 'NULL' identifier should not be used

    MISRACPP2023-7_11_2-a

    Do not pass an expression with array type to a function with a pointer or array type parameter

    MISRACPP2023-7_11_3-a

    A conversion from function type to pointer-to-function type shall only occur in appropriate contexts

    MISRACPP2023-8_0_1-a

    The operand of the 'sizeof' operator should be enclosed in parentheses

    MISRACPP2023-8_0_1-b

    Use parentheses to indicate the precedence of operators in expressions

    MISRACPP2023-8_14_1-a

    The right-hand operand of a unary && or || operator shall not contain side effects

    MISRACPP2023-8_18_1-a

    An object shall not be assigned or copied to an overlapping object

    MISRACPP2023-8_18_1-b

    An object shall not be assigned to an overlapping object

    MISRACPP2023-8_18_1-c

    An object shall not be assigned to an overlapping object

    MISRACPP2023-8_18_2-a

    The result of a built-in assignment operator should not be used

    MISRACPP2023-8_19_1-a

    The comma operator shall not be used

    MISRACPP2023-8_1_1-a

    A non-transient lambda shall not implicitly capture this

    MISRACPP2023-8_1_2-a

    Variables should be captured explicitly in a non-transient lambda

    MISRACPP2023-8_20_1-a

    Evaluation of constant unsigned integer expressions should not lead to wrap-around

    MISRACPP2023-8_20_1-b

    Evaluation of constant unsigned integer expressions in preprocessor directives should not lead to wraparound

    MISRACPP2023-8_2_1-a

    A pointer to a virtual base class shall only be cast to a pointer to a derived class by means of dynamic_cast

    MISRACPP2023-8_2_10-a

    Do not use recursion

    MISRACPP2023-8_2_11-a

    An argument passed via ellipsis shall have an appropriate type

    MISRACPP2023-8_2_2-a

    C-style casts (other than void casts) and functional notation casts (other than explicit constructor calls) shall not be used

    MISRACPP2023-8_2_3-a

    A cast shall not remove any 'const' or 'volatile' qualification from the type of a pointer or reference

    MISRACPP2023-8_2_4-a

    Casts shall not be performed between a pointer to a function and any other type

    MISRACPP2023-8_2_5-a

    Avoid using reinterpret_cast

    MISRACPP2023-8_2_6-a

    An object with integer type or pointer to void type shall not be converted to an object with pointer type

    MISRACPP2023-8_2_6-b

    An object with enumeration type shall not be converted to an object with pointer type

    MISRACPP2023-8_2_7-a

    A cast should not convert a pointer type to an integral type

    MISRACPP2023-8_2_7-b

    A cast should not convert a pointer type to 'intptr_t' and 'uintptr_t' types

    MISRACPP2023-8_2_8-a

    A cast should not convert a pointer type to an integral type

    MISRACPP2023-8_2_9-a

    The operand to typeid shall not be an expression of polymorphic class type

    MISRACPP2023-8_3_1-a

    The unary minus operator shall not be applied to an expression whose underlying type is unsigned

    MISRACPP2023-8_3_2-a

    The built-in unary + operator should not be used

    MISRACPP2023-8_7_1-a

    Avoid accessing arrays out of bounds

    MISRACPP2023-8_7_1-b

    A pointer operand and any pointer resulting from pointer arithmetic using that operand shall both address elements of the same array

    MISRACPP2023-8_7_1-c

    Avoid overflow when reading from a buffer

    MISRACPP2023-8_7_1-d

    Avoid overflow when writing to a buffer

    MISRACPP2023-8_7_1-e

    Avoid overflow due to reading a not zero terminated string

    MISRACPP2023-8_7_2-a

    Do not subtract two pointers that do not address elements of the same array

    MISRACPP2023-8_9_1-a

    Do not compare two unrelated pointers

    MISRACPP2023-9_2_1-a

    Expression statements shall not be explicit calls to constructors of temporary objects only

    MISRACPP2023-9_3_1-a

    The statement forming the body of a 'switch', 'while', 'do...while' or 'for' statement shall be a compound statement

    MISRACPP2023-9_3_1-b

    'if' and 'else' should be followed by a compound statement

    MISRACPP2023-9_4_1-a

    All 'if...else-if' constructs shall be terminated with an 'else' clause

    MISRACPP2023-9_4_2-a

    The first or the last label of a switch statement should be the 'default' label unless all enumeration values are tested

    MISRACPP2023-9_4_2-b

    Every switch branch should be unconditionally terminated

    MISRACPP2023-9_4_2-c

    A switch label shall only be used when the most closely-enclosing compound statement is the body of a switch statement

    MISRACPP2023-9_4_2-d

    A switch statement shall only contain switch labels and switch clauses, and no other code

    MISRACPP2023-9_4_2-e

    Every switch statement shall have at least two switch-clauses

    MISRACPP2023-9_4_2-f

    The 'switch' statement should not contain labels other than 'case' and 'default'

    MISRACPP2023-9_4_2-g

    The condition of a 'switch' statement should only be preceded by an optional simple-declaration

    MISRACPP2023-9_5_1-a

    Legacy 'for' statements should be simple

    MISRACPP2023-9_5_2-a

    A for-range-initializer shall contain at most one function call

    MISRACPP2023-9_6_1-a

    The goto statement shall not be used

    MISRACPP2023-9_6_2-a

    Any label referenced by a goto statement shall be declared in the same block, or in a block enclosing the goto statement

    MISRACPP2023-9_6_3-a

    The goto statement shall jump to a label declared later in the same function body

    MISRACPP2023-9_6_4-a

    Never return from functions that should not return

    MISRACPP2023-9_6_5-a

    All exit paths from a function, except main(), with non-void return type shall have an explicit return statement with an expression

    MRM-59

    Do not declare the 'new' and 'delete' operators

    MRM-60

    The memory management functions from the <new> and <memory> headers should not be used

    MRM-61

    Advanced memory management operators 'new' and 'delete' should not be used

    MRM-62_a

    Any member function named 'allocate' or 'deallocate' enclosed by namespace 'std' should not be used

    MRM-62_b

    The 'std::unique_ptr::release' function should not be used

    NAMING-33_b

    An identifier shall not contain a double underscore '__'

    NAMING-51_b

    A user-defined literal suffix should be directly preceded by a literal operator

    NAMING-55

    A macro identifier should have an appropriate form

    NAMING-56

    Do not declare identifiers with names reserved in the standard library

    NAMING-57

    The parameters in all overrides of a function should either be unnamed or have identical names

    OPT-44

    A constexpr static data member should not be declared outside the class definition

    OPT-45

    Non-const objects with internal linkage should be defined at function scope if they are only accessed from within a single function

    OPT-46

    Types declared in an unnamed namespace scope should be used at least once

    OPT-47

    Types declared in a block scope should be used at least once

    OPT-48

    Destructor shall have a non-empty body

    PB-38_c

    String literals with and without encoding prefixes should not be concatenated

    PB-73_b

    Evaluation of constant unsigned integer expressions in preprocessor directives should not lead to wraparound

    PORT-38

    An integer-literal of type long long shall not use a single 'L' or 'l' in any suffix

    PREPROC-23_b

    The '_Pragma' operator should not be used

    PREPROC-25_b

    #undef should only be used for macros defined previously in the same file

    PREPROC-28

    Function-like macros shall not be defined

    SECURITY-54

    Do not use the 'c_str()' and 'data()' functions for string objects

    TEMPL-09_b

    Function templates shall not be explicitly specialized

    Anchor
    Updated Rules
    Updated Rules
    Updated Rules

    2023.2.1

    Category ID

    Rule IDs

    AUTOSAR C++14 Coding Guidelines

    AUTOSAR-A0_1_2-a, AUTOSAR-A12_4_2-a, AUTOSAR-A14_8_2-a, AUTOSAR-M0_1_2-d, AUTOSAR-M0_1_3-c, AUTOSAR-M0_3_2-a, AUTOSAR-M14_6_1-a, AUTOSAR-M3_2_2-a, AUTOSAR-M3_2_4-a, AUTOSAR-M3_2_4-b, AUTOSAR-M6_4_2-a, AUTOSAR-M8_5_2-c

    Coding Conventions for C++

    CODSTA-CPP-212, CODSTA-CPP-58

    Coding Conventions for Modern C++

    CODSTA-MCPP-23

    Coding Conventions

    CODSTA-122_a, CODSTA-242

    Common Weakness Enumeration

    CWE-190-g

    Global Static Analysis

    GLOBAL-NOEXTERNDEF, GLOBAL-ONEDEFRULE, GLOBAL-ONEEXTERNDEF, GLOBAL-TEMPLNOINST

    High Integrity C++

    HICPP-14_2_2-a, HICPP-6_1_2-a

    Initialization

    INIT-101

    Joint Strike Fighter

    JSF-105, JSF-115, JSF-115_a, JSF-203

    MISRA C 1998

    MISRA-051

    MISRA C 2004

    MISRA2004-13_7_n, MISRA2004-14_10, MISRA2004-16_10, MISRA2004-9_2_c

    MISRA C 2012 (Legacy)

    MISRA2012-RULE-15_7, MISRA2012-RULE-17_7_a, MISRA2012-RULE-8_6, MISRA2012-RULE-8_6_b

    MISRA C 2023 (MISRA C 2012)

    MISRAC2012-RULE_15_7-a, MISRAC2012-RULE_17_7-a, MISRAC2012-RULE_8_6-a, MISRAC2012-RULE_8_6-b

    MISRA C++ 2008

    MISRA2008-0_1_2_t, MISRA2008-0_1_3_c, MISRA2008-0_1_7, MISRA2008-0_3_2, MISRA2008-14_6_1, MISRA2008-14_7_1, MISRA2008-14_8_1, MISRA2008-3_2_2, MISRA2008-3_2_4, MISRA2008-3_2_4_b, MISRA2008-6_4_2, MISRA2008-8_5_2_c

    MISRA C++ 2023

    MISRACPP2023-0_1_2-a, MISRACPP2023-11_6_1-a, MISRACPP2023-6_2_1-a, MISRACPP2023-6_2_3-a, MISRACPP2023-6_4_3-a, MISRACPP2023-7_0_2-a, MISRACPP2023-8_20_1-a

    Optimization

    OPT-05

    Possible Bugs

    PB-73

    SEI CERT C++

    CERT_CPP-DCL60-a

    SEI CERT C

    CERT_C-EXP12-a, CERT_C-MSC01-a, CERT_C-MSC14-a, CERT_C-MSC15-a

    Template

    TEMPL-09, TEMPL-12

    2023.2.0

    Category ID

    Rule IDs

    AUTOSAR C++14 Coding Guidelines

    AUTOSAR-A0_1_1-a, AUTOSAR-A0_1_2-a, AUTOSAR-A0_1_3-a, AUTOSAR-A0_1_4-a, AUTOSAR-A0_1_6-a, AUTOSAR-A12_8_3-a, AUTOSAR-A13_2_3-a, AUTOSAR-A13_3_1-a, AUTOSAR-A15_4_2-a, AUTOSAR-A18_0_3-b, AUTOSAR-A18_9_2-a, AUTOSAR-A23_0_2-a, AUTOSAR-A27_0_2-a, AUTOSAR-A27_0_2-b, AUTOSAR-A27_0_3-a, AUTOSAR-A2_10_1-d, AUTOSAR-A3_1_1-a, AUTOSAR-A3_3_1-b, AUTOSAR-A4_10_1-b, AUTOSAR-A5_0_3-a, AUTOSAR-A5_16_1-a, AUTOSAR-A5_1_4-a, AUTOSAR-A5_2_5-a, AUTOSAR-A5_2_5-c, AUTOSAR-A5_6_1-a, AUTOSAR-A7_1_1-a, AUTOSAR-A7_1_1-b, AUTOSAR-A7_1_3-a, AUTOSAR-A7_2_5-a, AUTOSAR-A7_4_1-a, AUTOSAR-A8_4_2-a, AUTOSAR-A8_4_3-b, AUTOSAR-A8_4_9-a, AUTOSAR-A8_5_0-a, AUTOSAR-A8_5_4-a, AUTOSAR-A9_3_1-a, AUTOSAR-A9_3_1-b, AUTOSAR-A9_6_1-a, AUTOSAR-M0_1_1-b, AUTOSAR-M0_1_10-a, AUTOSAR-M0_1_10-b, AUTOSAR-M0_1_2-ac, AUTOSAR-M0_1_2-b, AUTOSAR-M0_1_2-e, AUTOSAR-M0_1_2-f, AUTOSAR-M0_1_2-g, AUTOSAR-M0_1_3-c, AUTOSAR-M0_1_4-a, AUTOSAR-M0_3_1-a, AUTOSAR-M0_3_1-b, AUTOSAR-M0_3_1-c, AUTOSAR-M0_3_1-d, AUTOSAR-M0_3_1-e, AUTOSAR-M0_3_1-g, AUTOSAR-M15_1_2-a, AUTOSAR-M16_1_1-a, AUTOSAR-M3_4_1-a, AUTOSAR-M3_4_1-b, AUTOSAR-M5_0_16-a, AUTOSAR-M5_0_16-b, AUTOSAR-M5_0_17-a, AUTOSAR-M5_0_18-a, AUTOSAR-M5_2_8-a, AUTOSAR-M7_1_2-c, AUTOSAR-M9_3_3-a

    Coding Conventions for C++

    CODSTA-CPP-101, CODSTA-CPP-43, CODSTA-CPP-50, CODSTA-CPP-53, CODSTA-CPP-53_b, CODSTA-CPP-58, CODSTA-CPP-78, CODSTA-CPP-84

    Coding Conventions for Modern C++

    CODSTA-MCPP-04, CODSTA-MCPP-13_b, CODSTA-MCPP-14, CODSTA-MCPP-17, CODSTA-MCPP-47

    Coding Conventions for Modern C

    CODSTA-MC-101

    Coding Conventions

    CODSTA-04, CODSTA-122_a, CODSTA-185_a, CODSTA-185_b, CODSTA-224, CODSTA-227, CODSTA-301, CODSTA-302, CODSTA-55, CODSTA-65, CODSTA-89

    Common Weakness Enumeration

    CWE-119-a, CWE-119-e, CWE-125-a, CWE-190-g, CWE-787-a, CWE-787-d

    DISA ASD STIG

    APSC_DV-002590-b, APSC_DV-002590-d

    Exceptions

    EXCEPT-12

    Flow Analysis

    BD-CO-ITMOD, BD-PB-ARRAY, BD-PB-BYTEORD, BD-PB-CC, BD-PB-NOEXCEPT, BD-PB-NOTINIT, BD-PB-OVERFNZT, BD-PB-OVERFWR, BD-PB-OVERLAP, BD-PB-POVR, BD-PB-PTRARR, BD-PB-PTRCMP, BD-PB-PTRSUB, BD-PB-STREAMINOUT, BD-PB-SUBSEQFWRD, BD-PB-SUBSEQMOVE, BD-PB-VOVR, BD-PB-ZERO

    Formatting

    FORMAT-47_b

    Global Static Analysis

    GLOBAL-ONEUSEVAR , GLOBAL-UNUSEDFUNC, GLOBAL-UNUSEDTYPE

    High Integrity C++

    HICPP-13_1_2-a, HICPP-13_2_2-a, HICPP-14_2_1-a, HICPP-15_3_2-c, HICPP-17_3_2-a, HICPP-1_2_1-b, HICPP-1_2_1-i, HICPP-2_5_3-a, HICPP-3_1_1-d, HICPP-3_5_1-c, HICPP-3_5_1-d, HICPP-5_2_1-a, HICPP-5_5_1-a, HICPP-5_8_1-a, HICPP-6_1_3-a, HICPP-6_3_2-a, HICPP-6_4_1-a, HICPP-7_1_2-a, HICPP-7_1_2-b, HICPP-7_4_1-a, HICPP-8_1_1-a, HICPP-8_4_1-a, HICPP-9_1_1-a, HICPP-9_1_4-a

    Joint Strike Fighter

    JSF-019, JSF-039_a, JSF-070.1_b, JSF-104, JSF-114, JSF-115_a, JSF-117.1, JSF-135_d, JSF-136_b, JSF-148, JSF-170, JSF-171, JSF-186_b, JSF-186_h, JSF-203

    Memory and Resource Management

    MRM-31_b

    MISRA C 1998

    MISRA-051, MISRA-071_a, MISRA-071_b, MISRA-084, MISRA-121_a

    MISRA C 2004

    MISRA2004-13_7_s, MISRA2004-13_7_t, MISRA2004-13_7_u, MISRA2004-13_7_v, MISRA2004-14_1_b, MISRA2004-16_8, MISRA2004-16_8_b, MISRA2004-17_5, MISRA2004-19_14, MISRA2004-8_1_a, MISRA2004-8_1_b

    MISRA C 2012 (Legacy)

    MISRA2012-DIR-4_1_a, MISRA2012-DIR-4_1_c, MISRA2012-DIR-4_1_e, MISRA2012-DIR-4_1_h, MISRA2012-DIR-4_1_i, MISRA2012-DIR-4_1_j, MISRA2012-RULE-11_8, MISRA2012-RULE-12_1_a, MISRA2012-RULE-12_2_b, MISRA2012-RULE-14_3_zc, MISRA2012-RULE-17_3, MISRA2012-RULE-17_4, MISRA2012-RULE-17_4_b, MISRA2012-RULE-17_7_a, MISRA2012-RULE-18_1_a, MISRA2012-RULE-18_1_c, MISRA2012-RULE-18_2, MISRA2012-RULE-18_3, MISRA2012-RULE-18_5, MISRA2012-RULE-19_1_c, MISRA2012-RULE-1_3_a, MISRA2012-RULE-1_3_b, MISRA2012-RULE-1_3_e, MISRA2012-RULE-20_11, MISRA2012-RULE-20_8, MISRA2012-RULE-21_17_a, MISRA2012-RULE-21_17_b, MISRA2012-RULE-21_19_a, MISRA2012-RULE-21_19_b, MISRA2012-RULE-22_13, MISRA2012-RULE-2_1_b, MISRA2012-RULE-2_2_b, MISRA2012-RULE-9_1

    MISRA C 2023 (MISRA C 2012)

    MISRAC2012-DIR_4_1-a, MISRAC2012-DIR_4_1-c, MISRAC2012-DIR_4_1-e, MISRAC2012-DIR_4_1-h, MISRAC2012-DIR_4_1-i, MISRAC2012-DIR_4_1-j, MISRAC2012-RULE_11_8-a, MISRAC2012-RULE_12_1-a, MISRAC2012-RULE_12_2-b, MISRAC2012-RULE_14_3-ac, MISRAC2012-RULE_17_3-a, MISRAC2012-RULE_17_4-a, MISRAC2012-RULE_17_4-b, MISRAC2012-RULE_17_7-a, MISRAC2012-RULE_18_1-a, MISRAC2012-RULE_18_1-c, MISRAC2012-RULE_18_2-a, MISRAC2012-RULE_18_3-a, MISRAC2012-RULE_18_5-a, MISRAC2012-RULE_19_1-c, MISRAC2012-RULE_1_3-a, MISRAC2012-RULE_1_3-b, MISRAC2012-RULE_1_3-e, MISRAC2012-RULE_20_11-a, MISRAC2012-RULE_20_8-a, MISRAC2012-RULE_21_17-a, MISRAC2012-RULE_21_17-b, MISRAC2012-RULE_21_19-a, MISRAC2012-RULE_21_19-b, MISRAC2012-RULE_22_13-a, MISRAC2012-RULE_2_1-b, MISRAC2012-RULE_2_2-b, MISRAC2012-RULE_9_1-a

    MISRA C++ 2008

    MISRA2008-0_1_10, MISRA2008-0_1_10_b, MISRA2008-0_1_1_b, MISRA2008-0_1_2_aa, MISRA2008-0_1_2_sz, MISRA2008-0_1_2_u, MISRA2008-0_1_2_v, MISRA2008-0_1_2_w, MISRA2008-0_1_3_c, MISRA2008-0_1_4, MISRA2008-0_1_5, MISRA2008-0_1_6, MISRA2008-0_1_7, MISRA2008-0_3_1_a, MISRA2008-0_3_1_c, MISRA2008-0_3_1_e, MISRA2008-0_3_1_h, MISRA2008-0_3_1_i, MISRA2008-0_3_1_j, MISRA2008-14_7_3, MISRA2008-15_1_2, MISRA2008-15_5_2_b, MISRA2008-15_5_3_l, MISRA2008-16_1_1, MISRA2008-3_1_1, MISRA2008-3_4_1_a, MISRA2008-3_4_1_b, MISRA2008-5_0_16_a, MISRA2008-5_0_16_b, MISRA2008-5_0_17, MISRA2008-5_0_18, MISRA2008-5_0_19, MISRA2008-5_2_8, MISRA2008-7_1_1, MISRA2008-7_1_1_b, MISRA2008-7_1_2_b, MISRA2008-8_4_3, MISRA2008-9_3_2_a, MISRA2008-9_3_2_b, MISRA2008-9_3_3

    Object Oriented

    OOP-12, OOP-36

    Optimization

    OPT-01, OPT-03, OPT-05, OPT-30

    OWASP API Security Top 10 (2019)

    OWASP2019-API3-b, OWASP2019-API3-e, OWASP2019-API3-g

    Physical File Organization

    PFO-01

    Possible Bugs

    PB-20, PB-73

    Preprocessor

    PREPROC-16, PREPROC-19

    Security

    SECURITY-09

    SEI CERT C++

    CERT_CPP-CTR51-a, CERT_CPP-CTR54-b, CERT_CPP-CTR54-c, CERT_CPP-DCL60-a, CERT_CPP-ERR50-m, CERT_CPP-EXP53-a, CERT_CPP-EXP61-a, CERT_CPP-EXP63-a, CERT_CPP-FIO50-a, CERT_CPP-MSC52-a, CERT_CPP-OOP51-a, CERT_CPP-STR50-b, CERT_CPP-STR50-c

    SEI CERT C

    CERT_C-API01-a, CERT_C-ARR30-a, CERT_C-ARR36-a, CERT_C-ARR36-b, CERT_C-ARR38-b, CERT_C-ARR38-d, CERT_C-ARR39-a, CERT_C-DCL00-a, CERT_C-DCL00-b, CERT_C-DCL19-a, CERT_C-DCL22-a, CERT_C-ENV01-c, CERT_C-ENV30-a, CERT_C-ERR07-b, CERT_C-EXP08-b, CERT_C-EXP12-a, CERT_C-EXP33-a, CERT_C-EXP37-d, CERT_C-FIO37-a, CERT_C-FIO39-a, CERT_C-FLP03-a, CERT_C-INT13-a, CERT_C-INT33-a, CERT_C-MSC07-b, CERT_C-MSC12-b, CERT_C-MSC12-j, CERT_C-MSC14-a, CERT_C-MSC15-a, CERT_C-MSC19-a, CERT_C-MSC37-a, CERT_C-POS30-a, CERT_C-POS39-a, CERT_C-POS54-a, CERT_C-STR03-a, CERT_C-STR31-a, CERT_C-STR31-b, CERT_C-STR32-a

    Template

    TEMPL-10

    Removed Rules

    2023.2.1

    Rule ID

    Notes

    MISRACPP2023-18_2_2-a

    MISRACPP2023-21_2_2-a should be used instead

    2023.2.0

    Rule ID

    Notes

    AUTOSAR-M0_1_3-b

    Removed from AUTOSAR C++ 14 configuration. For other configurations, OPT-06 can be used as a replacement.

    CERT_C-ERR33-b

    Removed from CERT C configuration. For other configurations, CODSTA-122_b can be used as a replacement.

    JSF-117_a

    Removed from JSF configuration. For other configurations, PB-20 can be used as a replacement.

    MISRA2008-0_1_3_b

    Removed from MISRA C++ 2008 configuration. For other configurations, OPT-06 can be used as a replacement.

    MISRA2012-RULE-12_1_b

    Removed from MISRA C 2012 (Legacy) configuration. For other configurations, MISRA2004-12_5 can be used as a replacement.

    MISRAC2012-RULE_12_1-b

    Removed from MISRA C 2023 (MISRA C 2012) configuration. For other configurations, MISRA2004-12_5 can be used as a replacement.

    MISRACPP202X (all rules)

    MISRA C++ 2023 rules should be used instead.

    Removed Support for Compilers

    The following compilers are no longer supported:

    • C compiler for 80C196 v. 6.0 r1
    • Clang C/C++ Compiler v 5.0
    • Freescale C/C++ Compiler v. 5.1 for Embedded ARM
    • Freescale CodeWarrior ANSI-C/cC++ Compiler 5.0.x for HC12
    • FreeScale CodeWarrior ColdFire v 6.0
    • GCC for Tricore 4.9.x
    • Green Hills Software Compiler for ARM v. 2014.1.x
    • Green Hills Software Compiler for PPC v. 4.0.x
    • Green Hills Software Compiler for V850 v. 2013.5.x
    • IAR Compiler for RX v. 2.5x
    • IAR Compiler for RX v. 2.6x
    • IAR Compiler for STM8 v. 1.4x
    • TI MSP430 C/C++ Compiler v4.0
    • TI TMS320C6x C/C++ Compiler v7.4
    • Wind River Diab 5.7.x
    • Wind River Diab 5.8.x
    • Wind River GCC 3.3.x
    • Wind River GCC 3.4.x
    • Wind River GCC 4.1.x
    • Wind River GCC 4.3.x

    Removed Test Configurations

    The following test configurations have been removed:

    Resolved Bugs and FRs

    Bug/FR ID

    Description

    Updates to Rules

    AnchorNew RulesNew RulesNew Rules

    Rule ID

    Header

    AnchorUpdated RulesUpdated RulesUpdated Rules

    Category ID

    Rule IDs

    Removed Rules

    Notes

    Rule ID

    Scroll Only

    For information about this release, see https://docs.parasoft.com/display/CPPTESTPROVS20232/Updates+in+2023.2.