Page tree

Skip to end of metadata
Go to start of metadata

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 16 Next »

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

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.

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" 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 Stubs API 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 "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):

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


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
  • No labels