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 Name | Compiler Acronym |
---|---|
Altium TASKING Vx-toolset for TriCore C/C++ Compiler 6.0 | vxtc_6_0 |
Altium TASKING Vx-toolset for TriCore C/C++ Compiler 6.2 | vxtc_6_2 |
ARM Compiler 6.6 | armclang_6_6 |
ARM Compiler 6.9 | armclang_6_9 |
Clang C/C++ Compiler v 3.9 | clang_3_9 |
Clang C/C++ Compiler v 4.0 | clang_4_0 |
Clang C/C++ Compiler v 5.0 | clang_5_0 |
Clang C/C++ Compiler v 6.0 | clang_6_0] |
Freescale CodeWarrior C/C++ Compiler v. 6.0 for ColdFire | cwcf_6_0 |
GCC for Tricore 4.9.x | tricoregcc_4_9 |
GNU GCC 7.x1 | gcc_7 |
GNU GCC 7.x (x86_64)1 | gcc_7-64 |
Green Hills Software Compiler for ARM v. 2014.1.x | ghsarm_2014_1 |
Green Hills Software Compiler for ARM v. 2017.5.x | ghsarm_2017_5 |
Green Hills Software Compiler for ARM64 v. 2014_1.x | ghsarm64_2014_1 |
Green Hills Software Compiler for ARM64 v. 2017_5.x | ghsarm64_2017_5 |
Green Hills Software Compiler for V850 v. 2013.5.x | ghsv850_2013_5 |
Green Hills Software Compiler for V850 v. 2014.1.x | ghsv850_2014_1 |
Green Hills Software Compiler for V850 v. 2017.5.x | ghsv850_2017_5 |
IAR Compiler for ARM v. 8.20.x | iccarm_8_20 |
IAR Compiler for RX v. 3.10.x | iccrx_3_10 |
Intel(R) C++ Compiler v 18.0 | intelicc_18_0 |
QNX GCC 5.x | qcc_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.x | tiarmgcc_7 |
TI ARM C/C++ Compiler v18.1 | tiarm_18_1 |
TI MSP430 C/C++ Compiler GNU GCC 6.x | timsp430gcc_6 |
TI MSP430 C/C++ Compiler v18.1 | timsp430_18_1 |
TI TMS320C2000 C/C++ Compiler v16.9 | tic2000_16_9 |
TI TMS320C2000 C/C++ Compiler v18.1 | tic2000_18_1 |
TI TMS320C6x C/C++ Compiler v8.2 | tic6000_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 Name | Compiler Acronym |
---|---|
ARM Developer Suite 1.2 | ads_1_2 |
Borland C++ Compiler 5.6.x for Win32 | bcc32_5_6 |
CodeGear C++ Compiler 5.9.x for Win32 | bcc32_5_9 |
Wind River Diab 5.0 | diab_5_0 |
Wind River Diab 5.5.x | diab_5_5 |
Wind River Diab 5.6.x | diab_5_6 |
eCosCentric GCC 3.4.x | ecosgcc_3_4 |
Microsoft Embedded Visual C++ 4.0 | evc_4_0 |
Microsoft Visual C++ 8.0 for Windows Mobile | evc_8_0 |
Microsoft Visual C++ 9.0 for Windows Mobile | evc_9_0 |
GNU GCC 2.9.x | gcc_2_9 |
GNU GCC 3.2.x | gcc_3_2 |
GNU GCC 3.3.x | gcc_3_3 |
GNU GCC 3.3.x (x86_64) | gcc_3_3-64 |
GNU GCC 3.4.x | gcc_3_4 |
GNU GCC 3.4.x (x86_64) | gcc_3_4-64 |
Green Hills Software Compiler for V850 v. 3.4 | ghs_3_4 |
Green Hills Software Compiler Native v. 4.0.x | ghs_4_0 |
IAR Compiler for MSP430 v. 4.2x | icc430_4_2 |
IAR Compiler for MSP430 v. 5.3x | icc430_5_3 |
IAR Compiler for ARM v. 5.3x | iccarm_5_3 |
IAR Compiler for ARM v. 5.4x | iccarm_5_4 |
IAR Compiler for ARM v. 5.5x | iccarm_5_5 |
Altera Nios II 5.1 b73 GCC 3.4.x | nios2gcc_3_4 |
Altera Nios GCC 2.9 | niosgcc_2_9 |
QNX GCC 2.9.x | qcc_2_9 |
QNX GCC 3.3.x | qcc_3_3 |
ARM RealView 2.2 | rvct_2_2 |
ARM RealView 3.0 | rvct_3_0 |
ARM RealView 3.1 | rvct_3_1 |
ARM RealView 3.1 for uVision | rvct_3_1_uV |
ARM RealView 4.0 | rvct_4_0 |
ARM RealView 4.0 for uVision | rvct_4_0_uV |
STMicroelectronics ST20 | st20_2_2 |
STMicroelectronics ST40 | st40_3_1 |
TI TMS470 C/C++ Compiler v4.9.x | tiarm_4_9 |
TI ARM C/C++ Compiler v5.0.x | tiarm_5_0 |
TI TMS320C2000 C/C++ Compiler v4.1 | tic2000_4_1 |
TI TMS320C2000 C/C++ Compiler v5.2 | tic2000_5_2 |
TI TMS320C2000 C/C++ Compiler v6.0 | tic2000_6_0 |
TI TMS320C54x C/C++ Compiler v4.2 | tic54x_4_2 |
TI TMS320C55x C/C++ Compiler v4.3 | tic55x_4_3 |
TI TMS320C6x C/C++ Compiler v5.1 | tic6000_5_1 |
TI TMS320C6x C/C++ Compiler v6.0 | tic6000_6_0 |
TI TMS320C6x C/C++ Compiler v6.1 | tic6000_6_1 |
TI TMS320C6x C/C++ Compiler v7.0 | tic6000_7_0 |
TI TMS320C6x C/C++ Compiler v7.2 | tic6000_7_2 |
TI MSP430 C/C++ Compiler v3.2 | timsp430_3_2 |
Microsoft Visual C++ 6.0 | vc_6_0 |
Microsoft Visual C++ 7.0 | vc_7_0 |
Microsoft Visual C++ 7.1 | vc_7_1 |
Microsoft Visual C++ 8.0 | vc_8_0 |
Microsoft Visual C++ 8.0 (x64) | vc_8_0-64 |
Altium TASKING Vx-toolset for TriCore C/C++ Compiler 2.5 | vxtc_2_5 |
Altium TASKING Vx-toolset for TriCore C/C++ Compiler 3.3 | vxtc_3_3 |
Altium TASKING Vx-toolset for TriCore C/C++ Compiler 3.4 | vxtc_3_4 |
Altium TASKING Vx-toolset for TriCore C/C++ Compiler 3.5 | vxtc_3_5 |
Wind River EGCS 2.9 | wregcs_2_9 |
Wind River GCC 2.9 | wrgcc_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:
- theExplicit Template Instance
node and its properties
- theInitializerInClass
property
- theReferenceQualifier
property
Resolved Bugs and FRs
New Rules
The following rules have been added:
Rule ID | Header |
---|---|
BD-PB-DNMPTR | Do not modify the alignment of objects by calling realloc() |
BD-PB-EXITHAN | Properly define exit handlers |
BD-PB-FGETS | Reset strings on fgets() or fgetws() failure |
BD-PB-FSETPOS | Only use values for fsetpos() that are returned from fgetpos() |
BD-PB-SIGHAN | Properly define signal handlers |
BD-PB-SIGRETURN | Do not return from a computational exception signal handler |
BD-PB-STDEXC | Always throw created std::exception object |
BD-PB-STREAMINOUT | Do not alternately input and output from a stream without an intervening flush or positioning call |
BD-PB-SUBSEQFRWD | Do not subsequently use the argument to std::forward |
BD-PB-VLASIZE | Ensure the size of the variable length array is in valid range |
BD-SECURITY-LOG | Avoid passing unvalidated binary data to log methods |
BD-TRS-FRC | Avoid race conditions while accessing files |
BD-TRS-JOINDETACH | Do not join or detach a thread that was previously joined or detached |
CODSTA-191 | Wrap functions that can spuriously wake up in a loop |
CODSTA-192 | The final member of a structure should not be an array of size '0' or '1' |
CODSTA-193 | Allocate structures containing a flexible array member dynamically |
CODSTA-194 | Wrap functions that can fail spuriously in a loop |
CODSTA-195 | Do not refer to an atomic variable twice in an expression |
CODSTA-196 | Do not access an array in the result of a function call |
CODSTA-198 | The value of a complex expression of floating type may only be cast to a narrower floating type |
CODSTA-MCPP-19 | Declare assignment operators with the ref-qualifier & |
CODSTA-MCPP-20 | Prefer smart pointers over raw local pointers |
CODSTA-MCPP-21 | Do not call lock() directly on a mutex |
GLOBAL-ONEDEFINLINE | An inline function that is used in multiple translation units shall be defined in one and only one file |
GLOBAL-ONEDEFTEMPL | A function template that is used in multiple translation units shall be defined in one and only one file |
GLOBAL-ONEDEFTYPE | A type that is used in multiple translation units shall be defined in one and only one file |
INIT-16 | The initializer for an aggregate or union shall be enclosed in braces |
MRM-52 | Use RAII to prevent resource leaks |
PB-71 | Do not copy instances of structures containing a flexible array member |
PB-72 | Do not call va_arg with an argument of the incorrect type |
PB-73 | Evaluation of constant unsigned integer expressions should not lead to wrap-around |
PREPROC-20 | Match the filename in a #include directive to the one on the filesystem |
PREPROC-21 | Avoid token concatenation that may produce universal character names |
SECURITY-49 | Use the 'cnd_signal()' function with a unique condition variable |
TEMPL-15 | Declare 'extern' an explicitly instantiated template |