Versions Compared

Key

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

In this release, we've focused on extending support for new compilers and enhancing code analysis capabilities:

Table of Contents
maxLevel1

Support for New Compilers

We've added support for the following compilers:

Scroll Table Layout
sortDirectionASC
repeatTableHeadersdefault
widths60%,40%
sortByColumn1
sortEnabledfalse
cellHighlightingtrue

Compiler NameCompiler Acronym
Altium TASKING Vx-toolset for TriCore C/C++ Compiler 6.0vxtc_6_0
Altium TASKING Vx-toolset for TriCore C/C++ Compiler 6.2vxtc_6_2
ARM Compiler 6.6armclang_6_6
ARM Compiler 6.9armclang_6_9
Clang C/C++ Compiler v 3.9clang_3_9
Clang C/C++ Compiler v 4.0clang_4_0
Clang C/C++ Compiler v 5.0clang_5_0
Clang C/C++ Compiler v 6.0clang_6_0]
Freescale CodeWarrior C/C++ Compiler v. 6.0 for ColdFirecwcf_6_0
GCC for Tricore 4.9.xtricoregcc_4_9
GNU GCC 7.x1gcc_7
GNU GCC 7.x (x86_64)1gcc_7-64
Green Hills Software Compiler for ARM v. 2014.1.xghsarm_2014_1
Green Hills Software Compiler for ARM v. 2017.5.xghsarm_2017_5
Green Hills Software Compiler for ARM64 v. 2014_1.xghsarm64_2014_1
Green Hills Software Compiler for ARM64 v. 2017_5.xghsarm64_2017_5
Green Hills Software Compiler for V850 v. 2013.5.xghsv850_2013_5
Green Hills Software Compiler for V850 v. 2014.1.xghsv850_2014_1
Green Hills Software Compiler for V850 v. 2017.5.xghsv850_2017_5
IAR Compiler for ARM v. 8.20.xiccarm_8_20
IAR Compiler for RX v. 3.10.xiccrx_3_10
Intel(R) C++ Compiler v 18.0intelicc_18_0
QNX GCC 5.xqcc_5
QNX GCC 5.x (ARM)qccarm_5
QNX GCC 5.x (ARM64)qccarm_5-64
QNX GCC 5.x (x86-64)qcc_5-64
TI ARM C/C++ Compiler GNU GCC 7.xtiarmgcc_7
TI ARM C/C++ Compiler v18.1tiarm_18_1
TI MSP430 C/C++ Compiler GNU GCC 6.xtimsp430gcc_6
TI MSP430 C/C++ Compiler v18.1timsp430_18_1
TI TMS320C2000 C/C++ Compiler v16.9tic2000_16_9
TI TMS320C2000 C/C++ Compiler v18.1tic2000_18_1
TI TMS320C6x C/C++ Compiler v8.2tic6000_8_2

The compilers are now marked with the following support levels:

  • Extended: Support has been validated with extended testing and is approved for use in safety-critical software development.
  • Standard: Support has been validated with standard testing and is approved for use in non-safety critical software development.

See Compilers for details about currently supported compilers.

Anchor
gcc_7_limitations
gcc_7_limitations
1 C/C++test may not be able to analyze code that uses the latest versions of GNU GCC or Microsoft Visual C++ compilers with C++17 extensions enabled. The analysis results may also be inaccurate. C/C++test does not support the following C++17 extensions:

  • P0017R1 Extension to aggregate initialization
  • P0091R4 Template argument deduction for class templates
  • P0127R2 Declaring non-type template parameters with auto
  • P0195R2 Pack expansions in using-declarations
  • P0522R0 Matching of template template-arguments excludes compatible templates

New and Updated Test Configurations

We've added the following built-in test configurations:

  • AUTOSAR C++14 Coding Guidelines

  • High Integrity C++

  • SEI CERT C Guidelines
  • UL 2900
  • OWASP Top 10 2017
  • DO178C Unit Testing
  • ISO26262 Unit Testing

The rules enabled in the MISRA C 2012 built-in test configuration are now differently grouped and have new rule IDs, which may impact their previous suppressions; see MISRA C 2012 Rules for details.

Parasoft's Recommended FDA C++ Phase 1, 2, and 3 have been replace with the following test configurations:

  • Recommended Rules for FDA (C)
  • Recommended Rules for FDA (C++)

The following "MISRA C" test configurations have been renamed :

  • MISRA C →  MISRA C 1998
  • CERT C Coding Standard → SEI CERT C Guidelines

    as "MISRA C 1998".

    The following test configurations have been removed:

    • OWASP Top 10 Security Vulnerabilities (replaced with OWASP Top 10 2017)
    • CERT C Coding Standard (replaced with SEI CERT C Guidelines)
    • ISO 26262 Recommended Rules
    • DISA-STIG Coding Standard
    • SAMATE Annex A Source Code Weaknesses
    • CRules

    We've also updated the way the test configurations are organized. The built-in test configurations that enforce coding standards, such as MISRA, OWASP, JSF, and others, are now grouped in the aerospace, automotive, medical, and security compliance packs.

    See Built-in Test Configurations for the list of test configurations shipped with C/C++test.

    New and Updated Code Analysis Rules

    In this release, we've added new static analysis rules to extend coverage of compliance standards; see New Rules and Updated Rules for the lists of new and updated rules.

    Anchor
    MISRA C 2012 Rules
    MISRA C 2012 Rules
    MISRA C 2012 Rules

    The rules that enforce the MISRA C 2012 Standard now have new rule IDs and are all grouped under one category "MISRA C 2012 Guidelines " to facilitate reviewing results and ensure full compatibility with Parasoft's MISRA C 2012 Compliance Pack.

    • The layout and IDs of rules enabled in the MISRA C 2012 built-in test configuration have been updated; this may affect they way they are processed by DTP and their previous suppressions.
    • The previous layout and IDs of MISRA C 2012 rules have been retained for backward compatibility as the "MISRA C 2012 (Legacy)" rule category –  custom test configurations that were created to enforce the MISRA C 2012 Standard with previous version of C/C++test automatically refer to this category and do not require updating.

    (warning) The above changes do not impact rule implementations, which are identical for the "MISRA C 2012 Guidelines" and "MISRA C 2012 (Legacy)" rule categories.

    Support for Stub Callbacks

    The Stub Callbacks framework allows you to specify test case-specific stub behavior through the Test Case Editor interface or by manually modifying test case source code. You can define a specific stub logic that will be performed each time a stub is called during test case execution.

    The Stubs API has been deprecated and is now disabled by default.

    See Dynamic Stubs Configuration 1 for details.

    Enhanced Test Case Editor

    We've enhanced the Test Case Editor to facilitate modifying test suites and test cases.

    • The new "Stub Configuration" and "Stub Expectations" steps allow you to configure stub behavior using the Stub Callbacks framework (see Using Stub Callbacks for details). The "Stubs" step is now deprecated.
    • The "Additional Test Suite Code" editor enables you to configure code sections that are automatically added to your test suite code.

    See Adding Test Suites and Test Cases with the Test Case Editor for details.

    Reporting Test Execution Details

    You can now generate an additional Test Execution Details Report that is linked to your regular report. The new report includes additional information about test execution – especially useful for teams developing safety critical applications. See Understanding Results.

    Removed Support for Environments

    IDEs

    The following IDEs are no longer supported:

    • Eclipse 3.5-3.7

    Compilers

    The following compilers are no longer supported (see Compilers for details about currently supported compilers):

    Scroll Table Layout
    sortDirectionASC
    repeatTableHeadersdefault
    widths60%,40%
    sortByColumn1
    sortEnabledfalse
    cellHighlightingtrue

    Compiler NameCompiler Acronym
    ARM Developer Suite 1.2ads_1_2
    Borland C++ Compiler 5.6.x for Win32bcc32_5_6
    CodeGear C++ Compiler 5.9.x for Win32bcc32_5_9
    Wind River Diab 5.0diab_5_0
    Wind River Diab 5.5.xdiab_5_5
    Wind River Diab 5.6.xdiab_5_6
    eCosCentric GCC 3.4.xecosgcc_3_4
    Microsoft Embedded Visual C++ 4.0evc_4_0
    Microsoft Visual C++ 8.0 for Windows Mobileevc_8_0
    Microsoft Visual C++ 9.0 for Windows Mobileevc_9_0
    GNU GCC 2.9.xgcc_2_9
    GNU GCC 3.2.xgcc_3_2
    GNU GCC 3.3.xgcc_3_3
    GNU GCC 3.3.x (x86_64)gcc_3_3-64
    GNU GCC 3.4.xgcc_3_4
    GNU GCC 3.4.x (x86_64)gcc_3_4-64
    Green Hills Software Compiler for V850 v. 3.4ghs_3_4
    Green Hills Software Compiler Native v. 4.0.xghs_4_0
    IAR Compiler for MSP430 v. 4.2xicc430_4_2
    IAR Compiler for MSP430 v. 5.3xicc430_5_3
    IAR Compiler for ARM v. 5.3xiccarm_5_3
    IAR Compiler for ARM v. 5.4xiccarm_5_4
    IAR Compiler for ARM v. 5.5xiccarm_5_5
    Altera Nios II 5.1 b73 GCC 3.4.xnios2gcc_3_4
    Altera Nios GCC 2.9niosgcc_2_9
    QNX GCC 2.9.xqcc_2_9
    QNX GCC 3.3.xqcc_3_3
    ARM RealView 2.2rvct_2_2
    ARM RealView 3.0rvct_3_0
    ARM RealView 3.1rvct_3_1
    ARM RealView 3.1 for uVisionrvct_3_1_uV
    ARM RealView 4.0rvct_4_0
    ARM RealView 4.0 for uVisionrvct_4_0_uV
    STMicroelectronics ST20st20_2_2
    STMicroelectronics ST40st40_3_1
    TI TMS470 C/C++ Compiler v4.9.xtiarm_4_9
    TI ARM C/C++ Compiler v5.0.xtiarm_5_0
    TI TMS320C2000 C/C++ Compiler v4.1tic2000_4_1
    TI TMS320C2000 C/C++ Compiler v5.2tic2000_5_2
    TI TMS320C2000 C/C++ Compiler v6.0tic2000_6_0
    TI TMS320C54x C/C++ Compiler v4.2tic54x_4_2
    TI TMS320C55x C/C++ Compiler v4.3tic55x_4_3
    TI TMS320C6x C/C++ Compiler v5.1tic6000_5_1
    TI TMS320C6x C/C++ Compiler v6.0tic6000_6_0
    TI TMS320C6x C/C++ Compiler v6.1tic6000_6_1
    TI TMS320C6x C/C++ Compiler v7.0tic6000_7_0
    TI TMS320C6x C/C++ Compiler v7.2tic6000_7_2
    TI MSP430 C/C++ Compiler v3.2timsp430_3_2
    Microsoft Visual C++ 6.0vc_6_0
    Microsoft Visual C++ 7.0vc_7_0
    Microsoft Visual C++ 7.1vc_7_1
    Microsoft Visual C++ 8.0vc_8_0
    Microsoft Visual C++ 8.0 (x64)vc_8_0-64
    Altium TASKING Vx-toolset for TriCore C/C++ Compiler 2.5vxtc_2_5
    Altium TASKING Vx-toolset for TriCore C/C++ Compiler 3.3vxtc_3_3
    Altium TASKING Vx-toolset for TriCore C/C++ Compiler 3.4vxtc_3_4
    Altium TASKING Vx-toolset for TriCore C/C++ Compiler 3.5vxtc_3_5
    Wind River EGCS 2.9wregcs_2_9
    Wind River GCC 2.9wrgcc_2_9

    Other Changes

    • C/C++test Professional ships with C/C++test Standard (formerly DTP Engine for C/C++). The C/C++test Standard distribution is located in the C/C++test Professional installation directory. To use C/C++test Standard, unpack the distribution to a target location other than C/C++test Professional installation directory. See Parasoft C/C++test Standard for details.
    • DTP 5.4.0 is required to leverage DTP capabilities and workflows.
    • Findings marked with the Do Not Show priority on your DTP no longer simulate suppressions and should be converted to true suppressions; see DTP 5.4.0 Release Notes.
    • The RuleWizard Module has been extended with the following nodes and properties:
      - the Explicit Template Instance node and its properties
      - the InitializerInClass property
      - the ReferenceQualifier property

    Resolved Bugs and FRs


    Anchor
    New_Rules_Cpp
    New_Rules_Cpp
    New Rules

    The following rules have been added:

    Rule IDHeader
    BD-PB-DNMPTRDo not modify the alignment of objects by calling realloc()
    BD-PB-EXITHANProperly define exit handlers
    BD-PB-FGETSReset strings on fgets() or fgetws() failure
    BD-PB-FSETPOSOnly use values for fsetpos() that are returned from fgetpos()
    BD-PB-SIGHANProperly define signal handlers
    BD-PB-SIGRETURNDo not return from a computational exception signal handler
    BD-PB-STDEXCAlways throw created std::exception object
    BD-PB-STREAMINOUTDo not alternately input and output from a stream without an intervening flush or positioning call
    BD-PB-SUBSEQFRWDDo not subsequently use the argument to std::forward
    BD-PB-VLASIZEEnsure the size of the variable length array is in valid range
    BD-SECURITY-LOGAvoid passing unvalidated binary data to log methods
    BD-TRS-FRCAvoid race conditions while accessing files
    BD-TRS-JOINDETACHDo not join or detach a thread that was previously joined or detached
    CODSTA-191Wrap functions that can spuriously wake up in a loop
    CODSTA-192The final member of a structure should not be an array of size '0' or '1'
    CODSTA-193Allocate structures containing a flexible array member dynamically
    CODSTA-194Wrap functions that can fail spuriously in a loop
    CODSTA-195Do not refer to an atomic variable twice in an expression
    CODSTA-196Do not access an array in the result of a function call
    CODSTA-198The value of a complex expression of floating type may only be cast to a narrower floating type
    CODSTA-MCPP-19Declare assignment operators with the ref-qualifier &
    CODSTA-MCPP-20Prefer smart pointers over raw local pointers
    CODSTA-MCPP-21Do not call lock() directly on a mutex
    GLOBAL-ONEDEFINLINEAn inline function that is used in multiple translation units shall be defined in one and only one file
    GLOBAL-ONEDEFTEMPLA function template that is used in multiple translation units shall be defined in one and only one file
    GLOBAL-ONEDEFTYPEA type that is used in multiple translation units shall be defined in one and only one file
    INIT-16The initializer for an aggregate or union shall be enclosed in braces
    MRM-52Use RAII to prevent resource leaks
    PB-71Do not copy instances of structures containing a flexible array member
    PB-72Do not call va_arg with an argument of the incorrect type
    PB-73Evaluation of constant unsigned integer expressions should not lead to wrap-around
    PREPROC-20Match the filename in a #include directive to the one on the filesystem
    PREPROC-21Avoid token concatenation that may produce universal character names
    SECURITY-49Use the 'cnd_signal()' function with a unique condition variable
    TEMPL-15Declare 'extern' an explicitly instantiated template

    New rules have also been added to the following compliance categories:

    Rule ID PrefixCategory
    AUTOSARAUTOSAR C++14 Coding Guidelines
    CERT_CSEI CERT C
    HICPPHigh Integrity C++
    MISRAC2012MISRA C 2012

    Anchor
    Updated Rules
    Updated Rules
    Updated Rules

    Rule CategoryRule IDs
    Flow AnalysisBD-API-CTYPE, BD-EXCEPT-NP, BD-PB-CC, BD-PB-EXCEPT, BD-PB-INTOVERF, BD-PB-SWITCH, BD-PB-VOVR, BD-RES-FREE, BD-RES-LEAKS, BD-SECURITY-INTOVERF, BD-TRS-ARG, BD-TRS-LOCK, BD-TRS-MLOCK, BD-TRS-ORDER
    Coding ConventionsCODSTA-110, CODSTA-166_a, CODSTA-37, CODSTA-47, CODSTA-63, CODSTA-CPP-78
    InitializationINIT-15
    Joint Strike FighterJSF-138_a, JSF-138_b, JSF-140, JSF-187
    MISRA C 1998MISRA-024, MISRA-028
    MISRA C 2004MISRA2004-14_2, MISRA2004-8_11
    MISRA C++ 2008MISRA2008-0_1_3_b, MISRA2008-0_1_6, MISRA2008-0_1_9, MISRA2008-5_0_21, MISRA2008-9_3_3
    MISRA C 2012MISRA2012-DIR-4_13_a, MISRA2012-DIR-4_13_b, MISRA2012-DIR-4_13_d, MISRA2012-DIR-4_14_b, MISRA2012-RULE-14_3_zc, MISRA2012-RULE-14_3_zd, MISRA2012-RULE-1_3_c, MISRA2012-RULE-21_13, MISRA2012-RULE-21_6, MISRA2012-RULE-22_1, MISRA2012-RULE-22_2_a, MISRA2012-RULE-22_5_a, MISRA2012-RULE-22_6, MISRA2012-RULE-2_2_a, MISRA2012-RULE-8_8
    Memory and Resource ManagementMRM-09, MRM-20
    Object OrientedOOP-07
    OptimizationOPT-06

    ...