In this release, we've focused on extending support for new compilers, as well as creating Compliance Packs that include new and enhanced test configurations:

Support for Environments

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 the C++17 standard for GNU GCC or Microsoft Visual C++ compilers
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 IDEs

We've added support for the following IDEs:

  • Texas Instruments Code Composer Studio 7.4
  • Texas Instruments Code Composer Studio 8.0

Removed Environments

See Removed Support for Environments for information about environments that are no longer supported.

Compliance Packs

In this release, we've introduced Compliance Packs to give you instant access to test configurations that help you enforce industry-specific compliance standards and practices. Compliance Packs leverage a broad range of C/C++test's testing capabilities tailored for particular compliance domains.

The following Compliance Packs are available:

Compliance PackTest Configurations
Aerospace Pack
  • Joint Strike Fighter
  • DO178C Software Level A Unit Testing
  • DO178C Software Level B Unit Testing
  • DO178C Software Level C and D Unit Testing
Automotive Pack
  • AUTOSAR C++14 Coding Guidelines
  • HIS Source Code Metrics
  • High Integrity C++
  • MISRA C 1998
  • MISRA C 2004
  • MISRA C 2012
  • MISRA C++ 2008
  • ISO26262 ASIL A Unit Testing
  • ISO26262 ASIL B and C Unit Testing
  • ISO26262 ASIL D Unit Testing
Medical Devices Pack
  • Recommended Rules for FDA (C)
  • Recommended Rules for FDA (C++)
Security Pack
  • CWE SANS Top 25
  • OWASP Top 10 2017
  • Payment Card Industry Data Security Standard
  • SEI CERT C Guidelines
  • Security Rules
  • UL 2900

(info) Compliance Packs require dedicated license features to be activated. Contact Parasoft Support for more details on Compliance Packs licensing.

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 following test configurations have been moved from the Static Analysis category to one of the Compliance Packs (see Compliance Packs):

  • Joint Strike Fighter →  Aerospace Pack
  • HIS Source Code Metrics → Automotive Pack
  • MISRA C 1998 → Automotive Pack
  • MISRA C 2004 →  Automotive Pack
  • MISRA C 2012 → Automotive Pack
  • MISRA C++ 2008 → Automotive Pack
  • CWE SANS Top 25 → Security Pack
  • PCI Data Security Standard → Security Pack
  • Security Rules → Security Pack

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 "MISRA C" test configurations have been renamed 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

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.

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" 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 the 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 versions 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" and "MISRA C 2012 (Legacy)" rule categories.

Dynamic Stub Configuration with 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 Stub API for dynamic stub configuration 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 "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

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.
  • The option for generating the coverage details report has been moved from the "Reports" preference page to the "Test Configurations" page: go to Execution> Runtime> Generate detailed coverage report for [coverage metric].
  • 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 the following DTP documentation: DTP 5.4.0 Release Notes and Migrating Team Server Suppression Data to DTP.
  • The RuleWizard Module has been extended with the following nodes and properties (see the Rule Wizard documentation for details):
    - the Explicit Template Instance node and its properties
    - the InitializerInClass property
    - the ReferenceQualifier property

Resolved Bugs and FRs

Resolved Bug/FR IDDescription
CPP-40357Rule MRM-20 should not report violations on allocations of local pointers
CPP-40380Fix CppUnit integration docs: use CppTest_CppUnitResultsListener not CppTest_CppUnitResultsOutputter
CPP-40384Review CODSTA-37 rule: floating constants not detected
CPP-40388Having an #endif before the first #if 0 in a test case editor managed test case causes an StringIndexOutOfBounds exception to be thrown
CPP-40402Memory leak in RS232 Common transport implementation
CPP-40405Rule MISRA-028 (JSF-140) does not report violation on the 'register' keyword used in parameter declaration
CPP-40566Property 'fullname' in RuleWizard returns empty string for functions with more than one parameter of the built-in '__m128i' type
CPP-40573Rule INIT-15 reports false positive on structs with aggregate-initialized member
CPP-40574cpptest GUI crash when LD_LIBRARY_PATH is not set
CPP-40578Unwanted EDG diagnostic messages in the console when console verbosity is set to 'Normal' or 'Low'
CPP-40579The CODSTA-63 rules doesn't trigger on enum constants
CPP-40594MisraCpp2008UnderlyingType property returns incorrect type for unsigned constants expressions
CPP-40702Rule CODSTA-CPP-78 (MISRA2008-9_3_3) detects function that can not be 'const'
CPP-40719constexpr template specialization is not being reconstructed correctly in C++14 mode
CPP-40760Block comment in CODE step may trigger a compilation error
CPP-40761Test suite data may be corrupted if curly bracket "{" is used in test suite description
CPP-40765

parse error with niclang_3_3 - error: expected a ";"

CPP-40780

error: "operator=" has already been declared in the current scope

CPP-40796OPT-06 False Positives
CPP-40819Code Analysis for proj_igo9_all.cpp finished with code 4 (cwc)
CPP-40907internal error: assertion failed: gen_declaration: bad entity kind on source seq list (cp_gen_be.c, line 21265)
CPP-40913cannot compile the test executable when excel data source contains "
CPP-41045MISRA2004-14_2 (MISRA2012-RULE-2_2_a) reports false positive on casts to a void type

CPP-41047

multiThread option not working for Static Analysis
CPP-41048Lots of false warnings reported by C++test parsewr during instrumentation of Tasking code
CPP-41178Incorrect value of cpptestDebug configuration property may lead to linker errors when debugging test cases
CPP-41239Rule JSF-138_b should not report violations on definitions of const objects
CPP-41246MISRA2012-RULE-21_6 (CODSTA-110) reports false negatives on most of stdio.h API
CPP-41332

-fail command for C++test Engines

FA-5903Inaccurate message from BD-SECURITY-INTOVERF rule (incorrect expression reported as possibly overflown)
FA-5906BD-SECURITY-INTOVERF inaccurate presentation/messages when reporting use of the ptr that results from a pointer arithmetic using potentially overflown value
FA-5994Cannot define constructor as null not accepting method for BD.EXCEPT.NP
FA-6279

BD-PB-CC False Positive

FA-6280

False Negatives for rule BD-RES-FREE

FA-6402

FA does not recognize iccarm's errno pattern

FA-6140Not all paths are counted when reporting flowanalysis.output.performance.info for some of the rules.



Removed Support for Environments

IDEs

The following IDEs are no longer supported:

  • Eclipse IDE for C/C++ Developers 3.2, 3.3, 3.4, 3.5, 3.6, 3.7
  • ARM Workbench IDE for RVDS 3.0, 3.1, 4.0, 4.1
  • QNX Momentics IDE 4.x
  • Texas Instruments Code Composer Studio 4.x
  • Wind River Workbench 2.6, 3.0, 3.1, 3.2
  • Visual Studio 2005

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


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

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

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