This release includes the following enhancements:

Release date: May 28, 2025

Enhanced Automotive Compliance Pack

  • This release introduces complete support for the recently published MISRA C:2025 coding guidelines.
  • A new MISRA C 2025 test configuration has been added to support MISRA C:2025 coding guidelines. This configuration enables full enforcement of the Guidelines for the use of the C language in critical systems (MISRA C:2025) coding standard.

Enhanced Security Compliance Pack

The Common Weakness Enumeration (CWE) rule set has been extended with additional rule mappings for over 60 new CWEs.

AI Assistant

A new AI Assistant is available in C/C++test. Users can ask questions about the product in natural language and the AI Assistant will answer based on documentation and integration with a pre-configured LLM provider. New and existing users can learn the product and get help more efficiently using the AI Assistant. Access the AI Assistant by navigating in the desktop to Parasoft > Show View > AI Assistant. See The AI Assistant for more information.

Enhanced Static Analysis

  • A new test configuration option, Automatically suppress violations of equivalent rules, has been added. The option enables the automatic application of existing suppressions to violations of equivalent rules, making it easier to work with multiple coding standards or transition from one standard to another. For details, see Static Tab Settings - Defining How Static Analysis is Performed.
  • New code analysis rules have been added to extend coverage of compliance standards. See New Rules for the list of new rules.
  • Static analysis rules have been updated to increase the accuracy of reported violations. See Updated Rules for the list of updated rules.
  • Flow Analysis performance has been improved.
  • Code parsing and analysis engine has been enhanced to better support modern C/C++ syntax.

Enhanced Code Coverage

Support for Compilers

The following compilers are now supported:

Compiler NameCompiler Identifier
ARM Compiler 6.22armclang_6_22
Clang C/C++ Compiler v 19.0 (aarch64)clang_19-aarch64
Clang C/C++ Compiler v 19.0 (x86_64)clang_19-x86_64
GNU GCC 12.x (arm/aarch32)gcc_12-aarch32
GNU GCC 13.x (arm/aarch32)gcc_13-aarch32
GNU GCC 14.x (arm/aarch32)gcc_14-aarch32
GNU GCC 14.x (aarch64/arm64)gcc_14-aarch64
GNU GCC 14.x (x86_64)gcc_14-64
Hexagon Clang Compiler v. 19hexagon-clang_19
Intel Classic C/C++ Compiler 2021.6 (x86_64)intelicc_2021_6
Intel oneAPI C/C++ Compiler 2022.1 (x86_64)intelicx_2022_1


See Compilers.

Support for IDEs

The following IDEs are now supported:

  • Eclipse 4.34 (2024-12)
  • Eclipse 4.35 (2025-03)


New and Updated Test Configurations

The following test configuration has been added:

  • MISRA C 2025

The following test configurations have been updated with new rules:

  • AUTOSAR C++14 Coding Guidelines
  • CWE Top 25 + On the Cusp 2022
  • CWE Top 25 + On the Cusp 2023
  • CWE Top 25 2022
  • Joint Strike Fighter
  • MISRA C 2004
  • MISRA C 2023 (MISRA C 2012)
  • MISRA C++ 2008
  • MISRA C++ 2023

Support for Platforms

The following platform is now supported:

  • Windows Server 2025

Additional Updates

  • Settings can now be imported from a remote location. See Using an Existing Locally-Stored Settings File or URL.
  • Bazel integration package has been improved.
  • The severity specified in a <rule-id>-<severity> pattern (e.g., BD-PB-NP-3) used in a suppression comment or suppression record is now taken into account when suppressing violations. A violation is suppressed if its severity matches or is lower than the one specified in the suppression pattern. If the rule's severity has increased, existing suppressions will no longer apply

Deprecated and Removed Support

Deprecated Test Configurations

The following rule categories and corresponding built-in test configurations are deprecated and will be removed in a future release:

  • MISRA C 1998
  • MISRA C 2004
  • MISRA C 2012 (Legacy)

Deprecated Support for Operating Systems

Support for the following OS is now deprecated:

  • Windows 10

Compilers to Be Deprecated

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

  • GNU GCC 7.x
  • GNU GCC 7.x (x86_64)
  • IAR Compiler for ARM v. 8.20x
  • IAR Compiler for ARM v. 8.22x
  • Renesas RX C/C++ Compiler 2.5x
  • TI ARM C/C++ Compiler v18.1
  • Wind River Clang 8.0.x

Deprecated Compilers

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

  • ARM Compiler 6.9
  • Clang C/C++ Compiler v 8.0 (x86_64)
  • Clang C/C++ Compiler v 10.0 (x86_64)
  • Green Hills Software Compiler for ARM v. 2017.5.x
  • Green Hills Software Compiler for ARM64 v. 2017.5.x
  • Green Hills Software Compiler for PPC v. 2017.1.x
  • Hexagon Clang Compiler v. 8.4.x
  • IAR Compiler for ARM v. 8.11.x
  • Microchip MPLAB C32 Compiler for PIC32 v2.0x
  • QNX GCC 5.x
  • QNX GCC 5.x (ARM)
  • QNX GCC 5.x (ARM64)
  • QNX GCC 5.x (x86-64)
  • TI ARM C/C++ Compiler GNU GCC 7.x

Removed Support for Compilers

The following compilers are no longer supported:

  • Green Hills Software Compiler for PPC v. 2013.1.x
  • IAR Compiler for MSP430 v. 6.1x
  • Microchip MPLAB C30 Compiler for dsPIC v3.2x
  • National Instruments LabWindows/CVI 2015 Clang C/C++ Compiler v3.3 for Win32

Removed Support for Importing IAR Project/Workspace Files

Importing Embedded Workbench .ewp project/workspace files using a UI importer and using options from IAR Embedded Workbench Project is now removed.

Resolved Bugs and FRs

Bug/FR ID

Description

CPP-44863

[engine] Incorrect emulation of Microsoft two phase lookup

CPP-53006

[static] GLOBAL-UNUSEDTYPE (MISRA2008-0_1_5) reports false positive when a typedef is used in initializer list

CPP-53020

[static] Improve mapping for AUTOSAR-M0_1_3 (MISRA2008-0_1_3_b)

CPP-57853

[engine] va_list not reconstructed property for AARCH64

CPP-57896

[engine] Coverage setup problems - conflicting functions (IL tree different for the same function compiled as C and C++)

CPP-58059

[static] Improve mapping for MISRA C 2012 Rule 11.9

CPP-58200

[static] Improve mapping for MISRAC2012 Dir 4.3

CPP-58298

[static] MISRACPP2023-7_0_1-a should not report on construction of std::atomic<bool> objects, despite implicit constructor in std::atomic

CPP-58306

[static] CODSTA-CPP-43 (MISRACPP2023-10_1_1-c) reports false positive on parameter that initializes non-const object

CPP-58606

[static] MISRA2004-19_16 (MISRAC2012-RULE_20_13) reports false positive on the '##' after backslash

CPP-58613

[engine] cpptesttrace fails with ERROR: ld.so: object '.../libcpptesttrace64.so' from LD_PRELOAD cannot be preloaded (wrong ELF class: ELFCLASS64): ignored.

CPP-58633

[static] Improve support for CERT_C-DCL31

CPP-58645

[static] Improve implementation and documentation MISRA-004_a rule

CPP-58677

[engine] error: call to consteval function did not produce a valid constant expression

CPP-58701

[engine] error: static assertion failed static_assert(!std::is_move_constructible_v<non_movable_tagged_tuple>);

CPP-58755

[engine] conflicting functions were detected when collecting static coverage data

CPP-58772

[engine] Instrumented code fail to compile (wrong initializer)

CPP-58780

[static] OPT-38 reports python errors when unnamed parameters are declared in functions containing asm code

CPP-58793

[engine] Permission denied: ./.cpptest/cpptestcc/.../.lock

CPP-58810

[bazel] Error with space in include directive

CPP-58820

[coverage] Improve collecting code coverage from fork'ed processes

CPP-58823

[static] MISRA2004-9_2_b (MISRAC2012-RULE_9_3-a) does not report violation when an array dimension is cast to any type

CPP-58828

[static] OPT-01 (MISRA2008-3_4_1_a) reports false positives when a local variable is used inside 'if constexpr' blocks

CPP-58829

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

CPP-58853

[engine] Undefined Reference using AMX Intrinsics

CPP-58856

[engine] Instrumentation compilation error: 'constexpr const char FOO::foo_name 4' is private within this context

CPP-58857

[static] CODSTA-CPP-78 (MISRA2008-9_3_3) reports false positive on function that modifies class data

CPP-58861

[static] CODSTA-CPP-58 (MISRACPP2023-0_1_2-a) reports false positive when return value is used to call destructor and as operand of 'new' operator

CPP-58864

[static] Improve mapping for MISRACPP2023 Rule 11.3.1

CPP-58909

[static] CODSTA-CPP-96 (CERT_CPP-EXP56-a) does not report violation when a reference to a function pointer is used instead of a function pointer

CPP-58920

[static] MISRA-043_c (CERT_C-FLP36-a) reports false positive for aggregate initializers

CPP-58946

[static] PORT-08 does not report a violation if an integer constant is implicitly cast to 'long' type in an expression other than a simple or compound assignment operator

CPP-58952

[engine] SCA parse error on high-order function/functors

CPP-58953

[engine] Creating stub for template method causes multiple definitions, if instantiated only in test case (not in user's code)

CPP-58955

[engine] Improve compiler configuration for __builtin_neon extensions for clang

CPP-58957

[static] MISRA2004-2_4 (MISRAC2012-DIR_4_4-a) hangs analysis on multiple consecutive comments

CPP-58964

[static] CODSTA-MCPP-04 (MISRACPP2023-7_11_1-a) reports false positive on assignment to a member variable in lambda

CPP-59002

[engine] cpptestcc: error when -O2 is used: undefined reference to `_open_missing_mode' and `_open_too_many_args'

CPP-59007

[static] MISRACPP2023-0_2_2 - false positive on unused parameter

CPP-59080

[static] Extend INIT-06 Rule

CPP-59090

[engine] Instrumentation failure in template - has no member

CPP-59117

[engine] error: 'auto' parameter not permitted in this context

CPP-59118

[engine] error: 'struct hardware::hamr_sync_interface::LocalDatabase::SampleContainerMetadata' is protected within this context

CPP-59185

[compiler] Allow C language mode compiler options to be captured in C++ mode for clang-based compilers

CPP-59191

[bazel] cpptest run commands do not support --symlink_prefix Bazel argument

CPP-59198

[engine] Add option to disable instrumentation for functions with #pragma GCC unroll

CPP-59578

[compiler] Floating-point flags of GHS toolchains do not propagate to linking

CPP-59580

[static] False positive with rule MISRACPP2023-7_0_3-a

CPP-59594

[engine] internal error: assertion failed at: "decl_inits.c" 7038 in def_initializer

CPP-59602

[engine] Instrumentation error: Program received signal 11

CPP-59603

[engine] Instrumentation Failure: Template-Based Span Constructor Fails with cpptestcc

FA-10031

BD-PB-LIFETIME false negative

FA-10061

Incorrect handling of std::shared_ptr::get() method results e.g. in BD-PB-NP false positive (for MSVC)

FA-10078

MISRACPP2023-0_2_4-a (BD-PB-UCMETH) false positive when constexpr function is used only in constexpr context

FA-10104

Inconsistent results for BD-PB-CC

FA-10214

CERT_C-ERR33-d on user-defined time() functions that do not set errno at all

FA-10235

Potential false positive for BD-TRS-REVLOCK

FA-10244

BD-PB-VOVR false positive on variable updated in a loop, which is traversed only once

FA-10252

BD-PB-OVERFNZT false positive when zero was assigned as element of array which was previously fully replaced by non-zero terminated values

FA-10255

BD-SECURITY-TDINTOVERF false positive - unknown possible range of the result of modulo operation

Updates to Rules

New Rules

Rule ID

Header

AUTOSAR-M5_2_9-b

A conversion should not be performed from a pointer type to an arithmetic type

CODSTA-128_b

A conversion should not be performed from pointer to void into pointer to object

CODSTA-223_d

The names of standard floating-point types should not be used

CODSTA-245

Tentative definitions should not be placed in a header file

CODSTA-246

Objects with external linkage should be declared at file scope

CODSTA-247

Functions with external linkage should not be declared in implementation files

CODSTA-318

Passing an argument to a function's ellipsis parameter should not implicitly change the argument's type

CODSTA-319

The use of the 'assert' macro should not result in a call to the 'abort' function

CODSTA-320

Pointers shall not be implicitly compared to NULL

CODSTA-321

A conversion should not be performed from an arithmetic type to a pointer type

CODSTA-322

A conversion should not be performed from a pointer type to an arithmetic type

CODSTA-CPP-214

The argument and the parameter of a function call should have the same type if the parameter is not overload-independent

CWE-121-a

Avoid accessing arrays out of bounds

CWE-121-b

Avoid accessing arrays and pointers out of bounds

CWE-121-c

Avoid buffer overflow due to defining incorrect format limits

CWE-121-d

Avoid overflow when reading from a buffer

CWE-121-e

Avoid overflow when writing to a buffer

CWE-121-f

Avoid tainted data in array indexes

CWE-121-g

Prevent buffer overflows from tainted data

CWE-121-h

Avoid buffer read overflow from tainted data

CWE-121-i

Avoid buffer write overflow from tainted data

CWE-121-j

Suspicious use of 'strcpy' without checking size of source buffer

CWE-121-k

Ensure the output buffer is large enough when using path manipulation functions

CWE-121-l

Avoid accessing collections out of bounds

CWE-122-a

Avoid accessing arrays out of bounds

CWE-122-b

Avoid accessing arrays and pointers out of bounds

CWE-122-c

Avoid buffer overflow due to defining incorrect format limits

CWE-122-d

Avoid overflow when reading from a buffer

CWE-122-e

Avoid overflow when writing to a buffer

CWE-122-f

Avoid tainted data in array indexes

CWE-122-g

Prevent buffer overflows from tainted data

CWE-122-h

Avoid buffer read overflow from tainted data

CWE-122-i

Avoid buffer write overflow from tainted data

CWE-122-j

Suspicious use of 'strcpy' without checking size of source buffer

CWE-122-k

Ensure the output buffer is large enough when using path manipulation functions

CWE-122-l

Avoid accessing collections out of bounds

CWE-124-a

Avoid accessing arrays out of bounds

CWE-124-b

Avoid accessing arrays and pointers out of bounds

CWE-124-c

Avoid buffer overflow due to defining incorrect format limits

CWE-124-d

Avoid overflow when writing to a buffer

CWE-124-e

Avoid tainted data in array indexes

CWE-124-f

Prevent buffer overflows from tainted data

CWE-124-g

Avoid buffer write overflow from tainted data

CWE-124-h

Suspicious use of 'strcpy' without checking size of source buffer

CWE-124-i

Ensure the output buffer is large enough when using path manipulation functions

CWE-124-j

Avoid accessing collections out of bounds

CWE-126-a

Avoid accessing arrays out of bounds

CWE-126-b

Avoid accessing arrays and pointers out of bounds

CWE-126-c

Avoid buffer overflow due to defining incorrect format limits

CWE-126-d

Avoid overflow when reading from a buffer

CWE-126-e

Avoid tainted data in array indexes

CWE-126-f

Avoid buffer read overflow from tainted data

CWE-126-g

Suspicious use of 'strcpy' without checking size of source buffer

CWE-126-h

Ensure the output buffer is large enough when using path manipulation functions

CWE-126-i

Avoid accessing collections out of bounds

CWE-127-a

Avoid accessing arrays out of bounds

CWE-127-b

Avoid accessing arrays and pointers out of bounds

CWE-127-c

Avoid buffer overflow due to defining incorrect format limits

CWE-127-d

Avoid overflow when reading from a buffer

CWE-127-e

Avoid tainted data in array indexes

CWE-127-f

Avoid buffer read overflow from tainted data

CWE-127-g

Suspicious use of 'strcpy' without checking size of source buffer

CWE-127-h

Ensure the output buffer is large enough when using path manipulation functions

CWE-127-i

Avoid accessing collections out of bounds

CWE-134-a

Exclude unsanitized user input from format strings

CWE-188-a

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

CWE-188-b

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

CWE-191-a

Avoid wraparounds when performing arithmetic integer operations

CWE-191-b

Avoid possible integer overflow in expressions in which the result is cast to a wider integer type

CWE-191-c

Avoid possible integer overflow in expressions in which the result is assigned to a variable of a wider integer type

CWE-191-d

Avoid possible integer overflow in expressions in which the result is compared to an expression of a wider integer type

CWE-191-e

Integer overflow or underflow in constant expression in '+', '-', '*' operator

CWE-191-f

Integer overflow or underflow in constant expression in '<<' operator

CWE-191-g

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

CWE-191-h

Avoid signed integer overflows

CWE-191-i

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

CWE-191-j

Avoid data loss when converting between integer types

CWE-191-k

Avoid potential integer overflow/underflow on tainted data

CWE-194-a

The size_t argument passed to any function in string.h shall have an appropriate value

CWE-194-b

Do not pass negative values to functions expecting non-negative arguments

CWE-194-c

Avoid overflow when writing to a buffer

CWE-195-a

Avoid potential integer overflow/underflow on tainted data

CWE-195-b

Avoid value change when converting between integer types

CWE-195-c

Do not pass negative values to functions expecting non-negative arguments

CWE-196-a

Implicit conversions from wider to narrower integral type which may result in a loss of information shall not be used

CWE-226-a

Reset strings on fgets() or fgetws() failure

CWE-23-a

Protect against file name injection

CWE-242-a

Never use gets()

CWE-244-a

Sensitive data should be cleared before being deallocated

CWE-252-a

Always check the returned value of non-void function

CWE-338-a

The random number generator functions 'rand()' and 'srand()' should not be used

CWE-36-a

Protect against file name injection

CWE-364-a

Properly define signal handlers

CWE-367-a

Avoid race conditions while checking for the existence of a symbolic link

CWE-369-a

Avoid division by zero

CWE-377-a

Use secure temporary file name functions

CWE-391-a

Properly use errno value

CWE-396-a

Avoid using catch-all exception handlers

CWE-398-a

All non-null statements shall either have at least one side-effect however executed or cause control flow to change

CWE-398-b

Useless 'case' and 'default' clauses should not be used

CWE-398-c

Functions with void return type shall not be empty

CWE-398-d

Do not assign a variable to itself

CWE-398-e

Null statements should not be used

CWE-398-f

Empty compound statements should not be used

CWE-400-b

Validate potentially tainted data before it is used in the controlling expression of a loop

CWE-404-a

Ensure resources are freed

CWE-427-b

Protect against environment injection

CWE-440-a

Avoid throwing exceptions from functions that are declared not to throw

CWE-457-a

Avoid use before initialization

CWE-459-a

Ensure resources are freed

CWE-467-a

Do not use sizeof operator on pointer type to specify the size of the memory to be allocated via 'malloc', 'calloc' or 'realloc' function

CWE-468-a

Do not add or subtract a scaled integer to a pointer

CWE-469-a

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

CWE-475-a

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

CWE-478-a

Always provide a default branch for switch statements

CWE-479-a

Properly define signal handlers

CWE-480-a

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

CWE-481-a

The result of an assignment operator should not be used

CWE-482-a

All non-null statements shall either have at least one side-effect however executed or cause control flow to change

CWE-483-a

The statement forming the body of an 'if' or 'else' statement should be a compound statement

CWE-484-a

Missing break statement between cases in a switch statement

CWE-500-a

Avoid "public" data members

CWE-506-a

Avoid passing sensitive data to functions that write to log files

CWE-526-a

Avoid printing tainted data on the output console

CWE-534-a

Avoid passing sensitive data to functions that write to log files

CWE-535-a

Avoid passing sensitive data to functions that write to log files

CWE-561-a

There shall be no unreachable code in "else" block

CWE-561-b

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

CWE-561-c

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

CWE-561-d

There shall be no unreachable code in switch statement

CWE-561-e

There shall be no unreachable code in 'for' loop

CWE-561-f

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

CWE-561-g

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

CWE-561-h

Avoid unreachable methods

CWE-562-a

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

CWE-563-a

Avoid unused values

CWE-570-a

Avoid conditions that always evaluate to the same value

CWE-571-a

Avoid conditions that always evaluate to the same value

CWE-590-a

Do not free resources using invalid pointers

CWE-591-a

Sensitive data should be cleared before being deallocated

CWE-606-a

Validate potentially tainted data before it is used in the controlling expression of a loop

CWE-665-a

Avoid overflow due to reading a not zero terminated string

CWE-665-b

Avoid conditions that always evaluate to the same value

CWE-667-a

Do not abandon unreleased locks

CWE-672-a

Do not modify container while iterating over it

CWE-674-a

Avoid infinite recursion

CWE-675-a

Do not use resources that have been freed

CWE-685-a

The number of format specifiers in the format string and the number of corresponding arguments in the invocation of a string formatting function should be equal

CWE-688-a

There should be no mismatch between the '%s' and '%c' format specifiers in the format string and their corresponding arguments in the invocation of a string formatting function

CWE-690-a

Avoid null pointer dereferencing

CWE-758-a

Avoid use before initialization

CWE-761-a

Do not free resources using invalid pointers

CWE-762-a

Properly deallocate dynamically allocated resources

CWE-773-a

Ensure resources are freed

CWE-775-a

Ensure resources are freed

CWE-785-a

Ensure the output buffer is large enough when using path manipulation functions

CWE-789-a

Validate potentially tainted data before it is used to determine the size of memory allocation

CWE-832-a

Do not release a lock that has not been acquired

JSF-209_c

The names of the standard floating-point types should not be used

JSF-209_d

The typedef to the standard floating-point type should contain in the name the number indicating its size

MISRA2004-6_3_c

The names of standard floating-point types should not be used

MISRA2004-6_3_d

A typedef for a standard floating-point type should contain the number indicating its size in its name

MISRA2008-5_2_9_b

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

MISRA2012-DIR-4_6_d

The names of the standard floating-point types should not be used

MISRA2012-DIR-4_6_e

The typedef to the standard floating-point type should contain in the name the number indicating its size

MISRA2012-RULE-10_1_i

Pointers shall not be implicitly compared to NULL

MISRAC2012-DIR_4_6-d

The names of standard floating-point types should not be used

MISRAC2012-DIR_4_6-e

A typedef for a standard floating-point type should contain the number indicating its size in its name

MISRAC2012-RULE_10_1-i

Pointers shall not be implicitly compared to NULL

MISRAC2025-DIR_4_1-a

Avoid accessing arrays out of bounds

MISRAC2025-DIR_4_1-b

Avoid null pointer dereferencing

MISRAC2025-DIR_4_1-c

Avoid division by zero

MISRAC2025-DIR_4_1-d

Avoid buffer overflow due to defining incorrect format limits

MISRAC2025-DIR_4_1-e

Avoid overflow due to reading a not zero terminated string

MISRAC2025-DIR_4_1-g

Avoid overflow when reading from a buffer

MISRAC2025-DIR_4_1-h

Avoid overflow when writing to a buffer

MISRAC2025-DIR_4_1-i

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

MISRAC2025-DIR_4_1-j

Do not compare two unrelated pointers

MISRAC2025-DIR_4_1-k

Avoid wraparounds when performing arithmetic integer operations

MISRAC2025-DIR_4_1-l

Avoid signed integer overflows

MISRAC2025-DIR_4_1-m

Avoid data loss when converting between integer types

MISRAC2025-DIR_4_10-a

Use multiple include guards

MISRAC2025-DIR_4_11-a

Validate values passed to library functions

MISRAC2025-DIR_4_12-a

Dynamic heap memory allocation shall not be used

MISRAC2025-DIR_4_13-a

Ensure resources are freed

MISRAC2025-DIR_4_13-b

Do not use resources that have been freed

MISRAC2025-DIR_4_13-c

Do not free resources using invalid pointers

MISRAC2025-DIR_4_13-d

Do not abandon unreleased locks

MISRAC2025-DIR_4_13-e

Avoid double locking

MISRAC2025-DIR_4_13-f

Do not release a lock that has not been acquired

MISRAC2025-DIR_4_14-a

Avoid tainted data in array indexes

MISRAC2025-DIR_4_14-b

Avoid potential integer overflow/underflow on tainted data

MISRAC2025-DIR_4_14-c

Avoid buffer read overflow from tainted data

MISRAC2025-DIR_4_14-d

Avoid buffer write overflow from tainted data

MISRAC2025-DIR_4_14-e

Protect against command injection

MISRAC2025-DIR_4_14-f

Protect against file name injection

MISRAC2025-DIR_4_14-g

Protect against SQL injection

MISRAC2025-DIR_4_14-h

Prevent buffer overflows from tainted data

MISRAC2025-DIR_4_14-i

Avoid buffer overflow from tainted data due to defining incorrect format limits

MISRAC2025-DIR_4_14-j

Protect against environment injection

MISRAC2025-DIR_4_14-k

Avoid printing tainted data on the output console

MISRAC2025-DIR_4_14-l

Exclude unsanitized user input from format strings

MISRAC2025-DIR_4_15-a

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

MISRAC2025-DIR_4_2-a

All usage of assembler shall be documented

MISRAC2025-DIR_4_3-a

Assembly language shall be encapsulated and isolated

MISRAC2025-DIR_4_4-a

Sections of code should not be "commented out"

MISRAC2025-DIR_4_4-b

Sections of code should not be "commented out" using Doxygen comments

MISRAC2025-DIR_4_5-a

Identifiers in the same name space with overlapping visibility should be typographically unambiguous

MISRAC2025-DIR_4_6-a

A typedef for a standard integer type should contain the number indicating its size in its name

MISRAC2025-DIR_4_6-b

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

MISRAC2025-DIR_4_6-c

Use typedefs from stdint.h instead of declaring your own in C99 code

MISRAC2025-DIR_4_7-a

Consistently check the returned value of non-void functions

MISRAC2025-DIR_4_7-b

Always check the returned value of non-void function

MISRAC2025-DIR_4_8-a

If a pointer to a structure or union is never dereferenced within a translation unit, then the implementation of the object should be hidden

MISRAC2025-DIR_4_9-a

A function should be used in preference to a function-like macro

MISRAC2025-DIR_5_1-a

Do not use global variable with different locks set

MISRAC2025-DIR_5_1-b

Variable should be used in context of single critical section

MISRAC2025-DIR_5_1-c

There shall be no data races between threads

MISRAC2025-DIR_5_2-a

Do not acquire locks in different order

MISRAC2025-DIR_5_3-a

A thread should not be created by another thread

MISRAC2025-RULE_10_1-a

An expression of essentially Boolean type should always be used where an operand is interpreted as a Boolean value

MISRAC2025-RULE_10_1-b

An operand of essentially Boolean type should not be used where an operand is interpreted as a numeric value

MISRAC2025-RULE_10_1-c

An operand of essentially character type should not be used where an operand is interpreted as a numeric value

MISRAC2025-RULE_10_1-d

An operand of essentially enum type should not be used in an arithmetic operation

MISRAC2025-RULE_10_1-e

Shift and bitwise operations should not be performed on operands of essentially signed or enum type

MISRAC2025-RULE_10_1-f

An operand of essentially signed or enum type should not be used as the right hand operand to the bitwise shifting operator

MISRAC2025-RULE_10_1-g

An operand of essentially unsigned type should not be used as the operand to the unary minus operator

MISRAC2025-RULE_10_1-h

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

MISRAC2025-RULE_10_2-a

Expressions of essentially character type shall not be used inappropriately in addition and subtraction operations

MISRAC2025-RULE_10_3-a

The value of an expression shall not be assigned to an object with a narrower essential type

MISRAC2025-RULE_10_3-b

The value of an expression shall not be assigned to an object of a different essential type category

MISRAC2025-RULE_10_4-a

Both operands of an operator in which the usual arithmetic conversions are performed shall have the same essential type category

MISRAC2025-RULE_10_4-b

The second and third operands of the ternary operator shall have the same essential type category

MISRAC2025-RULE_10_5-a

The cast operation to essentially enumeration type is not allowed

MISRAC2025-RULE_10_5-b

Do not cast from or to essentially Boolean type

MISRAC2025-RULE_10_5-c

Do not use casts between essentially character types and essentially floating types

MISRAC2025-RULE_10_6-a

The value of a composite expression shall not be assigned to an object with wider essential type

MISRAC2025-RULE_10_7-a

If a composite expression is used as one operand of an operator in which the usual arithmetic conversions are performed then the other operand shall not have wider essential type

MISRAC2025-RULE_10_7-b

If a composite expression is used as one (second or third) operand of a conditional operator then the other operand shall not have wider essential type

MISRAC2025-RULE_10_8-a

The value of a composite expression shall not be cast to a different essential type category or a wider essential type

MISRAC2025-RULE_11_1-a

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

MISRAC2025-RULE_11_1-b

Conversions shall not be performed between non compatible pointer to a function types

MISRAC2025-RULE_11_10-a

The '_Atomic' qualifier should not be used with the 'void' type

MISRAC2025-RULE_11_11-a

Pointers shall not be implicitly compared to NULL

MISRAC2025-RULE_11_2-a

Conversions shall not be performed between a pointer to an incomplete type and any other type

MISRAC2025-RULE_11_3-a

A cast shall not be performed between a pointer to object type and a pointer to a different object type

MISRAC2025-RULE_11_4-b

A conversion should not be performed from an arithmetic type to a pointer type

MISRAC2025-RULE_11_4-c

A conversion should not be performed from a pointer type to an arithmetic type

MISRAC2025-RULE_11_5-b

A conversion should not be performed from pointer to void into pointer to object

MISRAC2025-RULE_11_6-b

A conversion should not be performed from an arithmetic type to a pointer type

MISRAC2025-RULE_11_6-c

A conversion should not be performed from a pointer type to an arithmetic type

MISRAC2025-RULE_11_8-a

A conversion shall not remove any 'const', 'volatile' or '_Atomic' qualification from the type accessed via a pointer or by reference

MISRAC2025-RULE_11_9-a

Literal zero (0) shall not be used as the null-pointer-constant

MISRAC2025-RULE_11_9-b

Use NULL instead of literal zero (0) as the null-pointer-constant

MISRAC2025-RULE_12_1-a

Use parentheses to indicate the precedence of operators in expressions

MISRAC2025-RULE_12_1-c

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

MISRAC2025-RULE_12_2-a

Avoid incorrect shift operations

MISRAC2025-RULE_12_2-b

The right-hand operand of a constant expression shift operator shall lie between zero and one less than the width in bits of the essential type of the left-hand operand

MISRAC2025-RULE_12_3-a

The comma operator shall not be used

MISRAC2025-RULE_12_4-a

Integer overflow or underflow in constant expression in '+', '-', '*' operator

MISRAC2025-RULE_12_4-b

Integer overflow or underflow in constant expression in '<<' operator

MISRAC2025-RULE_12_5-a

The 'sizeof' operator shall not have an operand which is a function parameter declared as "array of type"

MISRAC2025-RULE_12_6-a

Members of atomic objects of structure and union types should not be directly accessed

MISRAC2025-RULE_13_1-a

Initializer lists shall not contain persistent side effects

MISRAC2025-RULE_13_2-a

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

MISRAC2025-RULE_13_2-b

Avoid code that depends on the order of evaluation of function arguments

MISRAC2025-RULE_13_2-c

Avoid code that depends on the order of evaluation of the function designator and function arguments

MISRAC2025-RULE_13_2-d

Avoid code that depends on the order of evaluation of expressions involving a function call

MISRAC2025-RULE_13_2-e

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

MISRAC2025-RULE_13_2-f

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

MISRAC2025-RULE_13_2-g

Avoid code that depends on the order of evaluation of function calls

MISRAC2025-RULE_13_2-h

The value of an expression with atomic type should be independent from thread interleaving

MISRAC2025-RULE_13_3-a

A full expression containing an increment (++) or decrement (--) operator should have no other potential side effects

MISRAC2025-RULE_13_4-a

The result of an assignment operator should not be used

MISRAC2025-RULE_13_5-a

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

MISRAC2025-RULE_13_6-a

The operand of the sizeof operator shall not contain any expression which has side effects

MISRAC2025-RULE_13_6-b

Object designated by a volatile lvalue should not be accessed in the operand of the sizeof operator

MISRAC2025-RULE_13_6-c

The function call shall not be the operand of the sizeof operator

MISRAC2025-RULE_14_1-a

A loop counter in a 'for' loop shall not have essentially floating type

MISRAC2025-RULE_14_1-b

A loop counter in 'while' and 'do-while' loops shall not have essentially floating type

MISRAC2025-RULE_14_2-a

There shall only be one loop counter in a 'for' loop, which shall not be modified in the 'for' loop body

MISRAC2025-RULE_14_2-b

The first clause of a 'for' loop shall be well-formed

MISRAC2025-RULE_14_2-c

The second clause of a 'for' loop shall be well-formed

MISRAC2025-RULE_14_2-d

The third clause of a 'for' statement shall be well-formed

MISRAC2025-RULE_14_3-ac

Avoid conditions that always evaluate to the same value

MISRAC2025-RULE_14_4-a

Tests of a value against zero should be made explicit, unless the operand is effectively Boolean

MISRAC2025-RULE_15_1-a

The goto statement shall not be used

MISRAC2025-RULE_15_2-a

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

MISRAC2025-RULE_15_3-a

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

MISRAC2025-RULE_15_4-a

For any iteration statement there shall be no more than one break or goto statement used for loop termination

MISRAC2025-RULE_15_5-a

A function shall have a single point of exit at the end of the function

MISRAC2025-RULE_15_6-a

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

MISRAC2025-RULE_15_6-b

The statement forming the body of an 'if' or 'else' statement should be a compound statement

MISRAC2025-RULE_15_7-a

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

MISRAC2025-RULE_16_1-a

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

MISRAC2025-RULE_16_1-b

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

MISRAC2025-RULE_16_1-e

Always provide a default branch for switch statements

MISRAC2025-RULE_16_1-f

A 'default' label shall have a statement or a comment before terminating 'break'

MISRAC2025-RULE_16_1-g

A 'default' label, if it exists, shall appear as either the first or the last switch label of a switch statement

MISRAC2025-RULE_16_1-h

Every switch statement shall have at least two switch-clauses

MISRAC2025-RULE_16_1-i

Every switch branch should be unconditionally terminated

MISRAC2025-RULE_16_2-a

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

MISRAC2025-RULE_16_3-c

Every switch branch should be unconditionally terminated

MISRAC2025-RULE_16_4-a

Always provide a default branch for switch statements

MISRAC2025-RULE_16_4-b

A 'default' label shall have a statement or a comment before terminating 'break'

MISRAC2025-RULE_16_5-a

A 'default' label, if it exists, shall appear as either the first or the last switch label of a switch statement

MISRAC2025-RULE_16_6-a

Every switch statement shall have at least two switch-clauses

MISRAC2025-RULE_16_7-a

A switch expression shall not represent a value that is effectively Boolean

MISRAC2025-RULE_16_7-b

A switch expression shall not represent a value that is effectively Boolean

MISRAC2025-RULE_17_1-a

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

MISRAC2025-RULE_17_1-b

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

MISRAC2025-RULE_17_1-c

The standard header file <stdarg.h> or <cstdarg> shall not be used

MISRAC2025-RULE_17_10-a

Functions declared as 'noreturn' shall have the 'void' return type

MISRAC2025-RULE_17_11-a

Declare non-returning functions with the attribute that specifies that they do not return

MISRAC2025-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

MISRAC2025-RULE_17_13-a

Do not include any type qualifiers in the specification of a function type

MISRAC2025-RULE_17_2-a

Functions shall not call themselves, either directly or indirectly

MISRAC2025-RULE_17_3-a

Functions shall always have visible prototype at the function call

MISRAC2025-RULE_17_4-a

All exit paths from a function with non-void return type shall have an explicit return statement with an expression

MISRAC2025-RULE_17_4-b

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

MISRAC2025-RULE_17_5-a

The function argument corresponding to a parameter declared to have an array type shall have an appropriate number of elements

MISRAC2025-RULE_17_7-a

The value returned by a function having non-void return type shall be used

MISRAC2025-RULE_17_7-b

The value returned by a function having non-void return type shall be used

MISRAC2025-RULE_17_8-a

A function parameter should not be modified

MISRAC2025-RULE_17_9-a

Never return from functions that should not return

MISRAC2025-RULE_18_1-a

Avoid accessing arrays out of bounds

MISRAC2025-RULE_18_1-b

Avoid accessing arrays and pointers out of bounds

MISRAC2025-RULE_18_1-c

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

MISRAC2025-RULE_18_10-a

Pointers to variably-modified array types should not be used

MISRAC2025-RULE_18_2-a

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

MISRAC2025-RULE_18_3-a

Do not compare two unrelated pointers

MISRAC2025-RULE_18_4-a

The +, -, += and -= operators should not be applied to an expression of pointer type

MISRAC2025-RULE_18_5-a

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

MISRAC2025-RULE_18_6-a

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

MISRAC2025-RULE_18_6-b

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

MISRAC2025-RULE_18_6-c

The address of an object with thread storage duration shall not be assigned to an object with static storage duration

MISRAC2025-RULE_18_7-a

Flexible array members shall not be declared

MISRAC2025-RULE_18_8-a

Variable-length arrays should not be used

MISRAC2025-RULE_18_9-a

Do not modify objects with temporary lifetime

MISRAC2025-RULE_19_1-a

An object shall not be assigned to an overlapping object

MISRAC2025-RULE_19_1-b

An object shall not be assigned to an overlapping object

MISRAC2025-RULE_19_1-c

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

MISRAC2025-RULE_19_2-a

The union keyword should not be used

MISRAC2025-RULE_19_3-a

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

MISRAC2025-RULE_1_1-a

A program should not exceed the translation limits imposed by The Standard (c90)

MISRAC2025-RULE_1_1-b

A program should not exceed the translation limits imposed by The Standard (c99)

MISRAC2025-RULE_1_1-c

A program should not exceed the translation limits imposed by The Standard (c90)

MISRAC2025-RULE_1_1-d

A program should not exceed the translation limits imposed by The Standard (c99)

MISRAC2025-RULE_1_3-a

Avoid division by zero

MISRAC2025-RULE_1_3-b

Avoid use before initialization

MISRAC2025-RULE_1_3-c

Do not use resources that have been freed

MISRAC2025-RULE_1_3-d

Avoid overflow when reading from a buffer

MISRAC2025-RULE_1_3-e

Avoid overflow when writing to a buffer

MISRAC2025-RULE_1_3-f

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

MISRAC2025-RULE_1_3-g

Avoid code that depends on the order of evaluation of function arguments

MISRAC2025-RULE_1_3-h

Avoid code that depends on the order of evaluation of the function designator and function arguments

MISRAC2025-RULE_1_3-i

Avoid code that depends on the order of evaluation of expressions involving a function call

MISRAC2025-RULE_1_3-j

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

MISRAC2025-RULE_1_3-k

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

MISRAC2025-RULE_1_3-l

Avoid code that depends on the order of evaluation of function calls

MISRAC2025-RULE_1_3-m

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

MISRAC2025-RULE_1_3-n

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

MISRAC2025-RULE_1_3-o

The left-hand operand of a right-shift operator shall not have a negative value

MISRAC2025-RULE_1_4-j

The '_STDC_WANT_LIB_EXT1_' macro should not be defined to the value other than '0'

MISRAC2025-RULE_1_4-k

The 'rsize_t' type should not be used

MISRAC2025-RULE_1_4-l

The 'errno_t' type should not be used

MISRAC2025-RULE_1_4-m

Do not use following macros: RSIZE_MAX, L_tmpnam_s, TMP_MAX_S

MISRAC2025-RULE_1_4-n

Do not use the functions defined in Annex K of ISO/IEC 9899:2011 standard

MISRAC2025-RULE_1_5-a

The static storage class specifier shall be used in definitions and declarations of objects and functions that have internal linkage

MISRAC2025-RULE_1_5-b

Storage type modifiers shall be associated with the type, not the variable or the function

MISRAC2025-RULE_1_5-c

Function types shall be in prototype form

MISRAC2025-RULE_1_5-d

Do not use the macro ATOMIC_VAR_INIT

MISRAC2025-RULE_1_5-e

Do not use the 'bool', 'false' or 'true' identifiers in the #undef directive

MISRAC2025-RULE_1_5-f

Do not use the ungetc function on a stream with the file position indicator zero

MISRAC2025-RULE_1_5-g

Do not pass 0 value as a size argument to the realloc function

MISRAC2025-RULE_20_1-a

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

MISRAC2025-RULE_20_10-a

The # and ## preprocessor operators should not be used

MISRAC2025-RULE_20_11-a

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

MISRAC2025-RULE_20_12-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

MISRAC2025-RULE_20_13-a

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

MISRAC2025-RULE_20_14-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

MISRAC2025-RULE_20_15-a

Do not #define or #undef identifiers with names which start with underscore

MISRAC2025-RULE_20_15-b

Reserved identifiers, macros and functions in the standard library, shall not be defined, redefined or undefined (C90 code)

MISRAC2025-RULE_20_15-c

Reserved identifiers, macros and functions in the standard library, shall not be defined, redefined or undefined (C99 code)

MISRAC2025-RULE_20_15-d

Do not #define nor #undef identifier 'defined'

MISRAC2025-RULE_20_2-a

The ', ", /* or // characters shall not occur in a header file name

MISRAC2025-RULE_20_2-b

The \ character should not occur in a header file name

MISRAC2025-RULE_20_3-a

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

MISRAC2025-RULE_20_4-a

A macro shall not be defined with the same name as a keyword in C90

MISRAC2025-RULE_20_4-b

A macro shall not be defined with the same name as a keyword in C99

MISRAC2025-RULE_20_5-a

#undef shall not be used

MISRAC2025-RULE_20_6-a

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

MISRAC2025-RULE_20_7-b

Expressions resulting from the expansion of macro parameters shall be appropriately delimited

MISRAC2025-RULE_20_8-a

The controlling expression of a #if or #elif preprocessing directive shall evaluate to 0 or 1

MISRAC2025-RULE_20_9-b

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

MISRAC2025-RULE_21_10-a

The standard header files <time.h> or <ctime> shall not be used

MISRAC2025-RULE_21_10-b

The time handling functions and macros of the library <time.h> shall not be used

MISRAC2025-RULE_21_10-c

The types defined in the library <time.h> shall not be used

MISRAC2025-RULE_21_11-a

The standard header file <tgmath.h> shall not be used

MISRAC2025-RULE_21_12-a

The features provided by <fenv.h> should not be used

MISRAC2025-RULE_21_12-b

The standard header file <fenv.h> shall not be used

MISRAC2025-RULE_21_13-a

Do not pass incorrect values to ctype.h library functions

MISRAC2025-RULE_21_14-a

The Standard Library function memcmp shall not be used to compare null terminated strings

MISRAC2025-RULE_21_15-a

The pointer arguments to the Standard Library functions 'memcmp', 'memmove' and 'memcmp' shall be pointers to qualified or unqualified versions of compatible types

MISRAC2025-RULE_21_16-a

The pointer arguments to the Standard Library function 'memcmp' shall point to either a pointer type, an essentially signed type, an essentially unsigned type, an essentially Boolean type or an essentially enum type

MISRAC2025-RULE_21_17-a

Avoid overflow due to reading a not zero terminated string

MISRAC2025-RULE_21_17-b

Avoid overflow when writing to a buffer

MISRAC2025-RULE_21_18-a

The size_t argument passed to any function in string.h shall have an appropriate value

MISRAC2025-RULE_21_19-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

MISRAC2025-RULE_21_19-b

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

MISRAC2025-RULE_21_20-a

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

MISRAC2025-RULE_21_21-a

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

MISRAC2025-RULE_21_22-a

All arguments to any type-generic macros declared in <tgmath.h> shall have appropriate essential type

MISRAC2025-RULE_21_23-a

All arguments to any multi-argument type-generic macros declared in <tgmath.h> shall have the same standard type

MISRAC2025-RULE_21_24-a

The random number generator functions 'rand()' and 'srand()' should not be used

MISRAC2025-RULE_21_25-a

Only 'memory_order_seq_cst' should be used as an explicit memory order argument

MISRAC2025-RULE_21_26-a

The Standard Library function mtx_timedlock() shall not be invoked on a mutex that does not support timeout

MISRAC2025-RULE_21_3-a

Dynamic heap memory allocation shall not be used

MISRAC2025-RULE_21_4-a

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

MISRAC2025-RULE_21_4-b

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

MISRAC2025-RULE_21_5-a

The standard header files <signal.h> or <csignal> shall not be used

MISRAC2025-RULE_21_5-b

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

MISRAC2025-RULE_21_6-a

The input/output functions from the 'cstdio' and 'cwchar' libraries should not be used

MISRAC2025-RULE_21_7-a

The 'atof', 'atoi', 'atol' and 'atoll' functions from the 'stdlib.h' or 'cstdlib' library should not be used

MISRAC2025-RULE_21_8-a

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

MISRAC2025-RULE_21_8-b

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

MISRAC2025-RULE_21_8-c

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

MISRAC2025-RULE_21_8-d

The use of the 'assert' macro should not result in a call to the 'abort' function

MISRAC2025-RULE_21_9-a

The library functions bsearch and qsort of <stdlib.h> shall not be used

MISRAC2025-RULE_22_1-a

Ensure resources are freed

MISRAC2025-RULE_22_10-a

Properly use errno value

MISRAC2025-RULE_22_11-a

Do not join or detach a thread that was previously joined or detached

MISRAC2025-RULE_22_12-a

Thread objects, thread synchronization objects, and thread-specific storage pointers shall only be accessed by the appropriate Standard Library functions

MISRAC2025-RULE_22_13-a

Thread objects, thread synchronization objects and thread-specific storage pointers shall not have automatic storage duration

MISRAC2025-RULE_22_14-a

A thread synchronization object should not be initialized by a thread

MISRAC2025-RULE_22_14-b

The second argument passed to the 'mtx_init()' function call should be either 'mtx_plain', 'mtx_timed', 'mtx_plain | mtx_recursive', or 'mtx_timed | mtx_recursive'

MISRAC2025-RULE_22_15-a

A thread synchronization object should not be destroyed by a thread

MISRAC2025-RULE_22_16-a

Do not abandon unreleased locks

MISRAC2025-RULE_22_17-a

Do not release a lock that has not been acquired

MISRAC2025-RULE_22_18-a

Avoid double locking

MISRAC2025-RULE_22_19-a

Do not use more than one mutex for concurrent waiting operations on a condition variable

MISRAC2025-RULE_22_2-a

Do not use resources that have been freed

MISRAC2025-RULE_22_2-b

Do not free resources using invalid pointers

MISRAC2025-RULE_22_20-a

A thread-specific storage should not be created by a thread

MISRAC2025-RULE_22_3-a

The same file shall not be opened for read and write access at the same time on different streams

MISRAC2025-RULE_22_4-a

Avoid writing to a stream which has been opened as read only

MISRAC2025-RULE_22_5-a

A pointer to a FILE object shall not be dereferenced

MISRAC2025-RULE_22_5-b

A pointer to a FILE object shall not be dereferenced by a library function

MISRAC2025-RULE_22_6-a

Do not use resources that have been freed

MISRAC2025-RULE_22_7-a

The macro EOF should be compared with the unmodified return value from the Standard Library function

MISRAC2025-RULE_22_8-a

Properly use errno value

MISRAC2025-RULE_22_9-a

Properly use errno value

MISRAC2025-RULE_23_1-a

A generic selection should only be expanded from a macro

MISRAC2025-RULE_23_1-b

A generic selection used in a macro definition should have a macro parameter in the controlling expression

MISRAC2025-RULE_23_2-a

A generic selection that is not expanded from a macro shall not contain potential side effects in the controlling expression

MISRAC2025-RULE_23_3-a

A generic selection shall indicate at least one non-default association

MISRAC2025-RULE_23_4-a

A generic association shall list an appropriate type

MISRAC2025-RULE_23_5-a

A generic selection should not depend on implicit pointer type conversion

MISRAC2025-RULE_23_6-a

The controlling expression of a generic selection shall have an essential type that matches its standard type

MISRAC2025-RULE_23_6-b

Enumerated types should not be mixed with integer types in generic selections

MISRAC2025-RULE_23_7-a

A generic selection that is expanded from a macro shall evaluate its argument only once

MISRAC2025-RULE_23_8-a

The default association shall be placed first or last in the association list

MISRAC2025-RULE_2_1-a

There shall be no unreachable code in "else" block

MISRAC2025-RULE_2_1-b

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

MISRAC2025-RULE_2_1-c

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

MISRAC2025-RULE_2_1-d

There shall be no unreachable code in switch statement

MISRAC2025-RULE_2_1-e

There shall be no unreachable code in 'for' loop

MISRAC2025-RULE_2_1-f

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

MISRAC2025-RULE_2_1-g

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

MISRAC2025-RULE_2_1-h

Avoid unreachable methods

MISRAC2025-RULE_2_2-a

All non-null statements shall either have at least one side-effect however executed or cause control flow to change

MISRAC2025-RULE_2_2-b

Avoid unused values

MISRAC2025-RULE_2_3-a

A function should not contain unused type declarations

MISRAC2025-RULE_2_3-b

A source file should not contain unused type declarations

MISRAC2025-RULE_2_4-a

A function should not contain unused local tag declarations

MISRAC2025-RULE_2_4-b

A source file should not contain unused tag declarations

MISRAC2025-RULE_2_5-a

A source file should not contain unused macro definitions

MISRAC2025-RULE_2_6-a

A function should not contain unused label declarations

MISRAC2025-RULE_2_7-a

There should be no unused parameters in functions

MISRAC2025-RULE_2_8-a

A project should not contain unused variables with external linkage

MISRAC2025-RULE_2_8-b

A project should not contain unused variables with internal linkage

MISRAC2025-RULE_2_8-c

A project should not contain unused local variables

MISRAC2025-RULE_3_1-a

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

MISRAC2025-RULE_3_1-b

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

MISRAC2025-RULE_3_1-c

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

MISRAC2025-RULE_3_2-a

Line-splicing shall not be used in // comments

MISRAC2025-RULE_4_1-a

Octal and hexadecimal escape sequences shall be terminated

MISRAC2025-RULE_4_2-a

Trigraphs shall not be used

MISRAC2025-RULE_5_1-a

External identifiers shall be distinct

MISRAC2025-RULE_5_10-a

The names of standard library macros, objects and functions shall not be reused

MISRAC2025-RULE_5_10-b

The names of standard library macros, objects and functions shall not be reused (C90)

MISRAC2025-RULE_5_10-c

The names of standard library macros, objects and functions shall not be reused (C99)

MISRAC2025-RULE_5_2-a

Identifiers declared in the file scope and in the same name space shall be distinct (c90)

MISRAC2025-RULE_5_2-b

Identifiers declared in the file scope and in the same name space shall be distinct (c99)

MISRAC2025-RULE_5_2-c

Identifiers declared in the same block scope and name space shall be distinct (c90)

MISRAC2025-RULE_5_2-d

Identifiers declared in the same block scope and name space shall be distinct (c99)

MISRAC2025-RULE_5_3-a

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

MISRAC2025-RULE_5_3-b

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

MISRAC2025-RULE_5_4-a

The name of a macro should be distinct from the names of its parameters(c90)

MISRAC2025-RULE_5_4-b

The name of a macro should be distinct from the names of its parameters(c99)

MISRAC2025-RULE_5_4-c

The name of a macro should be distinct from the names of other macros that are currently defined(c90)

MISRAC2025-RULE_5_4-d

The name of a macro should be distinct from the names of other macros that are currently defined(c99)

MISRAC2025-RULE_5_5-a

The names of macros that exist prior to preprocessing should be distinct from the identifiers that exist after preprocessing (c90)

MISRAC2025-RULE_5_5-b

The names of macros that exist prior to preprocessing should be distinct from the identifiers that exist after preprocessing (c99)

MISRAC2025-RULE_5_6-a

A typedef name shall be a unique identifier

MISRAC2025-RULE_5_7-a

A tag name shall be a unique identifier

MISRAC2025-RULE_5_8-a

Identifiers that define objects with external linkage shall be unique

MISRAC2025-RULE_5_8-b

Identifiers that define functions with external linkage shall be unique

MISRAC2025-RULE_5_9-a

Identifiers that define objects with internal linkage shall be unique

MISRAC2025-RULE_5_9-b

Identifiers that define functions with internal linkage shall be unique

MISRAC2025-RULE_6_1-a

Bit fields shall only be defined to be of type unsigned int or signed int

MISRAC2025-RULE_6_2-a

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

MISRAC2025-RULE_6_3-a

A member of a union shall not be declared as a bit-field

MISRAC2025-RULE_7_1-a

Octal constants (other than zero) shall not be used

MISRAC2025-RULE_7_2-a

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

MISRAC2025-RULE_7_3-a

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

MISRAC2025-RULE_7_4-a

A string literal shall not be modified

MISRAC2025-RULE_7_5-a

Arguments of integer-constant macros should be decimal, octal, or hexadecimal constants with appropriate values

MISRAC2025-RULE_7_6-a

The small integer variants of the minimum-width integer constant macros should not be used

MISRAC2025-RULE_8_1-a

Whenever a function is declared or defined, its type shall be explicitly stated

MISRAC2025-RULE_8_1-b

Whenever an object is declared or defined, its type shall be explicitly stated

MISRAC2025-RULE_8_10-a

An inline function shall be declared with the static storage class

MISRAC2025-RULE_8_11-a

When an array with external linkage is declared, its size should be explicitly specified

MISRAC2025-RULE_8_12-a

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

MISRAC2025-RULE_8_13-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

MISRAC2025-RULE_8_13-b

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

MISRAC2025-RULE_8_14-a

The restrict type qualifier shall not be used

MISRAC2025-RULE_8_15-a

Explicit alignment specifiers in all declarations of an object with external linkage shall be the same

MISRAC2025-RULE_8_15-b

Explicit alignment specifiers in all declarations of an object with internal linkage shall be the same

MISRAC2025-RULE_8_16-a

The zero-alignment specifier should not be used in an object declaration

MISRAC2025-RULE_8_17-a

A declaration of an object should contain at most one explicit alignment specifier

MISRAC2025-RULE_8_18-a

Tentative definitions should not be placed in a header file

MISRAC2025-RULE_8_19-a

Objects with external linkage should be declared at file scope

MISRAC2025-RULE_8_19-b

Functions with external linkage should not be declared in implementation files

MISRAC2025-RULE_8_19-c

Objects with external linkage should not be declared in implementation files

MISRAC2025-RULE_8_19-d

Functions should not be declared at block scope

MISRAC2025-RULE_8_2-a

Identifiers shall be given for all of the parameters in a function prototype declaration

MISRAC2025-RULE_8_2-b

Function types shall have named parameters

MISRAC2025-RULE_8_2-c

Function types shall be in prototype form

MISRAC2025-RULE_8_3-a

If objects or functions are declared more than once their types shall be compatible

MISRAC2025-RULE_8_3-b

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

MISRAC2025-RULE_8_3-c

All declarations of an object or function shall have compatible types

MISRAC2025-RULE_8_4-a

A declaration shall be visible when an object or function with external linkage is defined

MISRAC2025-RULE_8_4-b

If objects or functions are declared more than once their types shall be compatible

MISRAC2025-RULE_8_5-a

An external object or function shall not have more than one non-defining declaration in translation unit

MISRAC2025-RULE_8_6-a

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

MISRAC2025-RULE_8_6-b

An identifier with external linkage shall have external definition

MISRAC2025-RULE_8_7-a

Functions and objects should not be defined with external linkage if they are referenced in only one translation unit

MISRAC2025-RULE_8_8-a

The static storage class specifier shall be used in definitions and declarations of objects and functions that have internal linkage

MISRAC2025-RULE_8_9-a

Objects shall be defined at block scope if they are only accessed from within a single function

MISRAC2025-RULE_9_1-a

Avoid use before initialization

MISRAC2025-RULE_9_2-a

The initializer for an aggregate or union shall be enclosed in braces

MISRAC2025-RULE_9_3-a

Arrays shall not be partially initialized

MISRAC2025-RULE_9_4-a

An element of an object shall not be initialized more than once

MISRAC2025-RULE_9_5-a

Where designated initializers are used to initialize an array object the size of the array shall be specified explicitly

MISRAC2025-RULE_9_6-a

An initializer using chained designators shall not contain initializers without designators

MISRAC2025-RULE_9_7-a

Atomic objects shall be properly initialized before being accessed

MISRACPP2023-7_0_6-b

The argument and the parameter of a function call should have the same type if the parameter is not overload-independent

MISRACPP2023-7_0_6-c

Passing an argument to a function's ellipsis parameter should not implicitly change the argument's type

MISRACPP2023-8_2_7-c

A conversion should not be performed from a pointer type to an arithmetic type

MISRACPP2023-8_2_8-b

A conversion should not be performed from a pointer type to an arithmetic type

NAMING-58

A typedef for a standard floating-point type should contain the number indicating its size in its name

PREPROC-31

Expressions resulting from the expansion of macro parameters shall be appropriately delimited

Updated Rules

Category ID

Rule IDs

AUTOSAR C++14 Coding Guidelines

AUTOSAR-A0_1_1-a, AUTOSAR-A0_1_2-a, AUTOSAR-A0_1_6-a, AUTOSAR-A12_1_1-b, AUTOSAR-A12_7_1-a, AUTOSAR-A12_8_4-a, AUTOSAR-A12_8_5-a, AUTOSAR-A12_8_5-b, AUTOSAR-A13_3_1-a, AUTOSAR-A14_5_1-a, AUTOSAR-A15_1_2-a, AUTOSAR-A18_1_1-a, AUTOSAR-A18_1_3-a, AUTOSAR-A18_1_6-a, AUTOSAR-A18_9_1-a, AUTOSAR-A18_9_2-a, AUTOSAR-A18_9_2-b, AUTOSAR-A18_9_3-a, AUTOSAR-A1_1_1-e, AUTOSAR-A1_1_1-g, AUTOSAR-A20_8_2-a, AUTOSAR-A20_8_3-a, AUTOSAR-A20_8_4-a, AUTOSAR-A20_8_5-a, AUTOSAR-A20_8_6-a, AUTOSAR-A27_0_1-e, AUTOSAR-A27_0_1-f, AUTOSAR-A27_0_1-g, AUTOSAR-A27_0_1-h, AUTOSAR-A27_0_2-a, AUTOSAR-A27_0_2-b, AUTOSAR-A27_0_2-f, AUTOSAR-A2_5_1-a, AUTOSAR-A4_10_1-b, AUTOSAR-A4_7_1-g, AUTOSAR-A5_0_1-a, AUTOSAR-A5_0_1-b, AUTOSAR-A5_0_1-c, AUTOSAR-A5_0_1-d, AUTOSAR-A5_0_1-e, AUTOSAR-A5_0_1-f, AUTOSAR-A5_0_1-g, AUTOSAR-A6_2_1-b, AUTOSAR-A8_4_11-a, AUTOSAR-A8_4_12-b, AUTOSAR-A8_4_12-c, AUTOSAR-A8_4_12-d, AUTOSAR-A8_4_13-a, AUTOSAR-A8_4_13-b, AUTOSAR-A8_4_13-c, AUTOSAR-A8_4_3-b, AUTOSAR-A8_4_5-a, AUTOSAR-A8_4_6-a, AUTOSAR-A8_4_9-a, AUTOSAR-M0_1_2-ac, AUTOSAR-M0_1_3-f, AUTOSAR-M0_3_1-b, AUTOSAR-M0_3_1-g, AUTOSAR-M0_3_1-h, AUTOSAR-M0_3_1-i, AUTOSAR-M16_0_1-a, AUTOSAR-M16_0_8-a, AUTOSAR-M3_4_1-a, AUTOSAR-M5_14_1-a, AUTOSAR-M5_3_4-c, AUTOSAR-M6_3_1-a, AUTOSAR-M6_4_1-a, AUTOSAR-M7_1_2-c, AUTOSAR-M8_4_4-a, AUTOSAR-M8_5_2-b, AUTOSAR-M9_3_3-a

Coding Conventions for C++

CODSTA-CPP-105, CODSTA-CPP-113, CODSTA-CPP-206, CODSTA-CPP-211, CODSTA-CPP-43, CODSTA-CPP-58, CODSTA-CPP-78, CODSTA-CPP-96

Coding Conventions for Modern C++

CODSTA-MCPP-04, CODSTA-MCPP-07, CODSTA-MCPP-10_b, CODSTA-MCPP-13, CODSTA-MCPP-13_b, CODSTA-MCPP-13_c, CODSTA-MCPP-13_d, CODSTA-MCPP-14, CODSTA-MCPP-16_b, CODSTA-MCPP-16_c, CODSTA-MCPP-16_d, CODSTA-MCPP-16_e, CODSTA-MCPP-21, CODSTA-MCPP-27, CODSTA-MCPP-29, CODSTA-MCPP-30, CODSTA-MCPP-34, CODSTA-MCPP-35, CODSTA-MCPP-36, CODSTA-MCPP-53, CODSTA-MCPP-54, CODSTA-MCPP-55

Coding Conventions

CODSTA-105, CODSTA-108_c, CODSTA-108_d, CODSTA-131, CODSTA-161_a, CODSTA-194, CODSTA-203, CODSTA-316

Common Weakness Enumeration

CWE-119-c, CWE-119-d, CWE-119-e, CWE-119-h, CWE-119-i, CWE-125-c, CWE-125-d, CWE-190-k, CWE-20-b, CWE-20-d, CWE-20-e, CWE-20-f, CWE-20-g, CWE-20-h, CWE-20-i, CWE-200-a, CWE-22-a, CWE-668-a, CWE-704-k, CWE-77-a, CWE-770-a, CWE-78-a, CWE-787-c, CWE-787-d, CWE-787-f, CWE-798-a, CWE-89-a

DISA ASD STIG

APSC_DV-000480-a, APSC_DV-000650-a, APSC_DV-001290-a, APSC_DV-001300-a, APSC_DV-002400-a, APSC_DV-002480-a, APSC_DV-002485-a, APSC_DV-002510-a, APSC_DV-002520-a, APSC_DV-002520-b, APSC_DV-002520-c, APSC_DV-002520-f, APSC_DV-002520-h, APSC_DV-002520-i, APSC_DV-002520-j, APSC_DV-002530-a, APSC_DV-002530-b, APSC_DV-002530-c, APSC_DV-002530-f, APSC_DV-002530-h, APSC_DV-002530-i, APSC_DV-002530-j, APSC_DV-002540-a, APSC_DV-002550-a, APSC_DV-002550-b, APSC_DV-002550-c, APSC_DV-002550-f, APSC_DV-002550-h, APSC_DV-002550-i, APSC_DV-002550-j, APSC_DV-002560-a, APSC_DV-002560-b, APSC_DV-002560-c, APSC_DV-002560-f, APSC_DV-002560-h, APSC_DV-002560-i, APSC_DV-002560-j, APSC_DV-002570-b, APSC_DV-002580-b, APSC_DV-002590-a, APSC_DV-002590-b, APSC_DV-002590-c, APSC_DV-002590-d, APSC_DV-002590-g, APSC_DV-002590-i, APSC_DV-002590-j, APSC_DV-003110-a, APSC_DV-003120-b, APSC_DV-003280-a, APSC_DV-003320-c, APSC_DV-003320-d

Exceptions

EXCEPT-09, EXCEPT-19

Flow Analysis

BD-PB-CC, BD-PB-CHECKRETGEN, BD-PB-LIFETIME, BD-PB-NAUNF, BD-PB-NZTS, BD-PB-OVERFFMT, BD-PB-OVERFNZT, BD-PB-OVERFRD, BD-PB-OVERFWR, BD-PB-UCMETH, BD-PB-VOVR, BD-SECURITY-OVERFRD, BD-SECURITY-OVERFWR, BD-SECURITY-TDALLOC, BD-SECURITY-TDCMD, BD-SECURITY-TDCONSOLE, BD-SECURITY-TDENV, BD-SECURITY-TDFNAMES, BD-SECURITY-TDINPUT, BD-SECURITY-TDINTOVERF, BD-SECURITY-TDLOOP, BD-SECURITY-TDSQL, BD-TRS-REVLOCK

Formatting

FORMAT-36

Global Static Analysis

GLOBAL-PREDICATENOSE, GLOBAL-UNUSEDTYPE

High Integrity C++

HICPP-12_4_2-a, HICPP-12_5_2-a, HICPP-13_1_2-a, HICPP-17_3_1-a, HICPP-17_3_2-a, HICPP-17_3_2-b, HICPP-17_3_2-c, HICPP-17_3_5-a, HICPP-17_4_2-a, HICPP-18_2_4-a, HICPP-1_2_1-h, HICPP-1_2_1-i, HICPP-2_2_1-b, HICPP-2_5_3-a, HICPP-3_4_3-b, HICPP-3_5_1-b, HICPP-5_1_2-a, HICPP-5_1_2-b, HICPP-5_1_2-c, HICPP-5_1_2-d, HICPP-5_1_2-e, HICPP-5_1_2-f, HICPP-5_1_2-g, HICPP-5_1_6-c, HICPP-5_1_6-d, HICPP-6_1_1-a, HICPP-6_1_1-b, HICPP-6_4_1-a, HICPP-9_1_1-a

Initialization

INIT-06

Joint Strike Fighter

JSF-011, JSF-015, JSF-044, JSF-059_a, JSF-059_b, JSF-071_b, JSF-081, JSF-115_a, JSF-117.1, JSF-127_b, JSF-136_b, JSF-139_b, JSF-143_a, JSF-157, JSF-166_c, JSF-180_f, JSF-204.1_a, JSF-204.1_b, JSF-204.1_c, JSF-204.1_d, JSF-204.1_e, JSF-204.1_f, JSF-204.1_g, JSF-204_d, JSF-209, JSF-209_b

Memory and Resource Management

MRM-57, MRM-60, MRM-62_b

MISRA C 1998

MISRA-004_a, MISRA-020, MISRA-027_b, MISRA-043_c

MISRA C 2004

MISRA2004-12_2_a, MISRA2004-12_2_b, MISRA2004-12_2_c, MISRA2004-12_2_d, MISRA2004-12_2_e, MISRA2004-12_2_f, MISRA2004-12_2_g, MISRA2004-12_3_c, MISRA2004-12_4_a, MISRA2004-14_8, MISRA2004-14_9, MISRA2004-16_9, MISRA2004-19_1, MISRA2004-19_16, MISRA2004-2_1, MISRA2004-2_4_b, MISRA2004-4_2, MISRA2004-6_3, MISRA2004-6_3_b, MISRA2004-9_2_b

MISRA C 2012 (Legacy)

MISRA2012-DIR-4_13_f, MISRA2012-DIR-4_14_b, MISRA2012-DIR-4_14_c, MISRA2012-DIR-4_14_d, MISRA2012-DIR-4_14_e, MISRA2012-DIR-4_14_f, MISRA2012-DIR-4_14_g, MISRA2012-DIR-4_14_j, MISRA2012-DIR-4_14_k, MISRA2012-DIR-4_14_l, MISRA2012-DIR-4_1_d, MISRA2012-DIR-4_1_e, MISRA2012-DIR-4_1_g, MISRA2012-DIR-4_1_h, MISRA2012-DIR-4_3, MISRA2012-DIR-4_4_b, MISRA2012-DIR-4_6_a, MISRA2012-DIR-4_6_b, MISRA2012-DIR-4_7_b, MISRA2012-RULE-10_1_a, MISRA2012-RULE-11_9_b, MISRA2012-RULE-13_2_a, MISRA2012-RULE-13_2_b, MISRA2012-RULE-13_2_c, MISRA2012-RULE-13_2_d, MISRA2012-RULE-13_2_e, MISRA2012-RULE-13_2_f, MISRA2012-RULE-13_2_g, MISRA2012-RULE-13_5, MISRA2012-RULE-14_3_zc, MISRA2012-RULE-15_6_a, MISRA2012-RULE-15_6_b, MISRA2012-RULE-17_12, MISRA2012-RULE-1_3_d, MISRA2012-RULE-1_3_e, MISRA2012-RULE-1_3_f, MISRA2012-RULE-1_3_g, MISRA2012-RULE-1_3_h, MISRA2012-RULE-1_3_i, MISRA2012-RULE-1_3_j, MISRA2012-RULE-1_3_k, MISRA2012-RULE-1_3_l, MISRA2012-RULE-20_1, MISRA2012-RULE-20_13, MISRA2012-RULE-21_17_a, MISRA2012-RULE-21_17_b, MISRA2012-RULE-21_22, MISRA2012-RULE-21_23, MISRA2012-RULE-22_17, MISRA2012-RULE-2_1_h, MISRA2012-RULE-2_2_b, MISRA2012-RULE-2_7, MISRA2012-RULE-2_8_c, MISRA2012-RULE-4_2, MISRA2012-RULE-9_3

MISRA C 2023 (MISRA C 2012)

MISRAC2012-DIR_4_1-d, MISRAC2012-DIR_4_1-e, MISRAC2012-DIR_4_1-g, MISRAC2012-DIR_4_1-h, MISRAC2012-DIR_4_13-f, MISRAC2012-DIR_4_14-b, MISRAC2012-DIR_4_14-c, MISRAC2012-DIR_4_14-d, MISRAC2012-DIR_4_14-e, MISRAC2012-DIR_4_14-f, MISRAC2012-DIR_4_14-g, MISRAC2012-DIR_4_14-j, MISRAC2012-DIR_4_14-k, MISRAC2012-DIR_4_14-l, MISRAC2012-DIR_4_3-a, MISRAC2012-DIR_4_4-b, MISRAC2012-DIR_4_6-a, MISRAC2012-DIR_4_6-b, MISRAC2012-DIR_4_7-b, MISRAC2012-RULE_10_1-a, MISRAC2012-RULE_11_9-b, MISRAC2012-RULE_13_2-a, MISRAC2012-RULE_13_2-b, MISRAC2012-RULE_13_2-c, MISRAC2012-RULE_13_2-d, MISRAC2012-RULE_13_2-e, MISRAC2012-RULE_13_2-f, MISRAC2012-RULE_13_2-g, MISRAC2012-RULE_13_5-a, MISRAC2012-RULE_14_3-ac, MISRAC2012-RULE_15_6-a, MISRAC2012-RULE_15_6-b, MISRAC2012-RULE_17_12-a, MISRAC2012-RULE_1_3-d, MISRAC2012-RULE_1_3-e, MISRAC2012-RULE_1_3-f, MISRAC2012-RULE_1_3-g, MISRAC2012-RULE_1_3-h, MISRAC2012-RULE_1_3-i, MISRAC2012-RULE_1_3-j, MISRAC2012-RULE_1_3-k, MISRAC2012-RULE_1_3-l, MISRAC2012-RULE_20_1-a, MISRAC2012-RULE_20_13-a, MISRAC2012-RULE_21_17-a, MISRAC2012-RULE_21_17-b, MISRAC2012-RULE_21_22-a, MISRAC2012-RULE_21_23-a, MISRAC2012-RULE_22_17-a, MISRAC2012-RULE_2_1-h, MISRAC2012-RULE_2_2-b, MISRAC2012-RULE_2_7-a, MISRAC2012-RULE_2_8-c, MISRAC2012-RULE_4_2-a, MISRAC2012-RULE_9_3-a

MISRA C++ 2008

MISRA2008-0_1_2_aa, MISRA2008-0_1_3_f, MISRA2008-0_1_5, MISRA2008-0_1_6, MISRA2008-0_1_7, MISRA2008-0_3_1_d, MISRA2008-0_3_1_e, MISRA2008-0_3_1_g, MISRA2008-0_3_1_h, MISRA2008-15_0_2, MISRA2008-16_0_1, MISRA2008-16_0_8, MISRA2008-2_3_1, MISRA2008-2_7_2_b, MISRA2008-2_7_3_b, MISRA2008-3_4_1_a, MISRA2008-5_0_1_a, MISRA2008-5_0_1_b, MISRA2008-5_0_1_c, MISRA2008-5_0_1_d, MISRA2008-5_0_1_e, MISRA2008-5_0_1_f, MISRA2008-5_0_1_g, MISRA2008-5_14_1, MISRA2008-5_3_4_c, MISRA2008-6_3_1, MISRA2008-6_4_1, MISRA2008-7_1_2_b, MISRA2008-8_4_4, MISRA2008-8_5_2_b, MISRA2008-9_3_3

MISRA C++ 2023

MISRACPP2023-0_0_2-a, MISRACPP2023-0_1_1-a, MISRACPP2023-0_1_2-a, MISRACPP2023-0_2_1-a, MISRACPP2023-0_2_4-a, MISRACPP2023-10_1_1-c, MISRACPP2023-11_3_1-a, MISRACPP2023-15_8_1-a, MISRACPP2023-15_8_1-b, MISRACPP2023-18_1_1-a, MISRACPP2023-19_0_1-a, MISRACPP2023-19_0_3-a, MISRACPP2023-21_6_2-c, MISRACPP2023-21_6_3-c, MISRACPP2023-25_5_1-b, MISRACPP2023-28_3_1-a, MISRACPP2023-28_6_1-a, MISRACPP2023-28_6_2-a, MISRACPP2023-28_6_2-b, MISRACPP2023-4_6_1-a, MISRACPP2023-4_6_1-b, MISRACPP2023-4_6_1-c, MISRACPP2023-4_6_1-d, MISRACPP2023-4_6_1-e, MISRACPP2023-4_6_1-f, MISRACPP2023-4_6_1-g, MISRACPP2023-5_0_1-a, MISRACPP2023-6_8_1-b, MISRACPP2023-6_8_1-c, MISRACPP2023-6_8_4-a, MISRACPP2023-7_0_1-a, MISRACPP2023-7_0_3-a, MISRACPP2023-7_11_1-a, MISRACPP2023-8_14_1-a, MISRACPP2023-8_7_1-c, MISRACPP2023-8_7_1-d, MISRACPP2023-8_7_1-e, MISRACPP2023-9_3_1-a, MISRACPP2023-9_3_1-b

Object Oriented

OOP-34, OOP-34_b

Optimization

OPT-01, OPT-02, OPT-02_b, OPT-06, OPT-38

OWASP API Security Top 10 (2019)

OWASP2019-API3-d, OWASP2019-API3-e, OWASP2019-API3-f, OWASP2019-API3-g, OWASP2019-API3-i, OWASP2019-API3-j, OWASP2019-API3-p, OWASP2019-API4-a, OWASP2019-API8-a, OWASP2019-API8-b, OWASP2019-API8-c, OWASP2019-API8-d, OWASP2019-API8-e, OWASP2019-API8-f

OWASP API Security Top 10 (2023)

OWASP2023-API10-b, OWASP2023-API10-d, OWASP2023-API10-e, OWASP2023-API10-f, OWASP2023-API10-g, OWASP2023-API10-h, OWASP2023-API10-i, OWASP2023-API3-c, OWASP2023-API4-a, OWASP2023-API4-b

OWASP Top 10 (2017)

OWASP2017-A1-b, OWASP2017-A1-c, OWASP2017-A1-d, OWASP2017-A1-e, OWASP2017-A1-f, OWASP2017-A5-a

OWASP Top 10 (2021)

OWASP2021-A1-a, OWASP2021-A3-b, OWASP2021-A3-c, OWASP2021-A3-d, OWASP2021-A3-e, OWASP2021-A3-f

Portability

PORT-08

Possible Bugs

PB-74

Security

SECURITY-15, SECURITY-50

SEI CERT C++

CERT_CPP-CON51-a, CERT_CPP-CON55-a, CERT_CPP-CTR55-a, CERT_CPP-ERR60-a, CERT_CPP-EXP50-a, CERT_CPP-EXP50-b, CERT_CPP-EXP50-c, CERT_CPP-EXP50-d, CERT_CPP-EXP50-e, CERT_CPP-EXP50-f, CERT_CPP-EXP52-c, CERT_CPP-EXP56-a, CERT_CPP-OOP54-a, CERT_CPP-STR50-b, CERT_CPP-STR50-c, CERT_CPP-STR50-f

SEI CERT C

CERT_C-API01-a, CERT_C-ARR38-a, CERT_C-ARR38-b, CERT_C-ARR38-c, CERT_C-ARR38-d, CERT_C-CON41-a, CERT_C-DCL19-a, CERT_C-DCL22-a, CERT_C-DCL31-a, CERT_C-ENV01-c, CERT_C-ERR33-d, CERT_C-EXP02-a, CERT_C-EXP10-a, CERT_C-EXP10-b, CERT_C-EXP10-c, CERT_C-EXP10-d, CERT_C-EXP19-a, CERT_C-EXP30-a, CERT_C-EXP30-b, CERT_C-EXP30-c, CERT_C-EXP30-d, CERT_C-EXP39-e, CERT_C-EXP39-f, CERT_C-EXP44-b, CERT_C-FIO32-a, CERT_C-FLP06-a, CERT_C-FLP36-a, CERT_C-INT04-a, CERT_C-INT04-b, CERT_C-INT04-c, CERT_C-INT31-a, CERT_C-MSC07-i, CERT_C-MSC12-i, CERT_C-MSC12-j, CERT_C-MSC13-a, CERT_C-MSC41-a, CERT_C-POS30-a, CERT_C-POS48-b, CERT_C-PRE07-a, CERT_C-STR02-a, CERT_C-STR02-b, CERT_C-STR02-c, CERT_C-STR03-a, CERT_C-STR31-b, CERT_C-STR31-d, CERT_C-STR32-a

STL Best Practices

STL-34, STL-35, STL-37, STL-39

Template

TEMPL-07_b

Removed Rules

Rule ID

Notes

AUTOSAR-M5_2_9-a

Removed from AUTOSAR C++ 14 configuration. For other configurations, MISRA2004-11_3_a can be used instead.

MISRA2008-5_2_9

Removed from MISRA C++ 2008 configuration. For other configurations, MISRA2004-11_3_a can be used instead.

MISRACPP2023-8_2_7-a

Removed from MISRA C++ 2023 configuration. For other configurations, MISRA2004-11_3_a can be used instead.

MISRACPP2023-8_2_7-b

Removed from MISRA C++ 2023 configuration. For other configurations, CODSTA-240 can be used instead.

MISRACPP2023-8_2_8-a

Removed from MISRA C++ 2023 configuration. For other configurations, MISRA2004-11_3_a can be used instead.

PORT-10

PORT-08 can be used instead.

  • No labels