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

Support for New Compilers

We've added support for the following compilers:

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.

1 Limited Support for C++17

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

This may affect the latest versions of GNU GCC and Microsoft Visual C++ compilers with C++17 extensions enabled. C/C++test may be unable to perform analysis of code that uses such extensions, or the analysis results may be inaccurate.

Support for Stub Callbacks

The Stub Callbacks framework allows you to specify test case-specific stub behavior – by using the interface of  the Test Case Editor or 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.

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

See Dynamic Stubs Configuration 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 and includes additional information about test execution. 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):

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

  • The installation directory of C/C++test Professional includes the distribution of C/C++test Standard. To use the capabilities of C/C++test Standard, unpack the C/C++test Standard distribution to a target location other than C/C++test Professional installation directory.
  • C/C++test Professional ships with the C/C++test Standard distribution located in the
  • 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 into 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


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




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