Page tree

Versions Compared

Key

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

In this release, we've focused on providing support for new compilers and IDEs, as well as extending our support for coding standards, including MISRA 2008.

Support for New Compilers

  • Microsoft Visual C++ 14.1x/ 2017
  • WindRiver GCC 4.8.x (Static Analysis only)
  • IAR Compiler for ARM 8.11.x

Extended Support for IDEs

  • Support for Eclipse 4.7 
  • Support for Visual Studio 2017

Integration with Visual Studio 2017 is now available for C/C++test DTP Engine and its Parasoft DTP Plugin for Visual Studio. Support for Visual Studio 2017 in C/C++test Desktop is coming in release 10.3.4.

Enhanced Workflow for Test Configurations on Desktop

We've made it easier for you to interact with test configurations when working with C/C++test on your desktop. Now you can easily duplicate and customize an existing test configuration on DTP, as well as run a test configuration right form your IDE Preference page; see Creating Custom Test Configurations and Setting the Active Test Configuration for details.

Enhancements to Static Analysis

In this release, we've added new static analysis rules to cover the MISRA C++ 2008; see New Code Analysis Rules. The severity levels for MISRA C++ 2008 rules have been updated:

  • Required → Severity 2
  • Advisory → Severity 4
  • Document → Severity 5

Flow Analysis has been extended with support for C++11 Thread API (for BD-TRS rules) and new configuration options that allow you to:

  • disable terminators / functions with the noreturn attribute
  • parameterize the BD-PB-VOVR rule with the "Report when there is at least one path where the value of the variable is not used" option; see the rule documentation for details.
  • disable reporting violations whose paths pass via inline assembly code
  • enable or disable all tainted data sources in the rule parameters

The RuleWizard Module has been extended with the following nodes and properties:

  • IsFinal - returns true if function or class was declared with 'final' or 'sealed' specifier
  • IsExplicitFinal - returns true if function or class was declared with 'final' specifier
  • IsSealed - returns true if function or class was declared with 'sealed' specifier

See RuleWizard 10.3.3 User's Guide for more details.

Anchor
New Code Analysis Rules
New Code Analysis Rules
New Code Analysis Rules

Rule IDHeader
BD-PB-PTRARRA pointer operand and any pointer resulting from pointer arithmetic using that operand shall both address elements of the same array
BD-TRS-CMFMake const member functions thread-safe
CODSTA-CPP-90Using-directives and using-declarations (excluding class scope or function scope using-declarations) shall not be used in header files
CODSTA-CPP-91The overloaded binary operator should be implemented in terms of its corresponding compound assignment operator
CODSTA-CPP-92All accessible entity names within a multiple inheritance hierarchy should be unique
GLOBAL-COMPATDECLSAll declarations of an object or function shall have compatible types
GLOBAL-EXCSPECDECLIf a function is declared with an exception-specification, then all declarations of the same function (in other translation units) shall be declared with the same set of type-ids
GLOBAL-ONEDEFRULEThe One Definition Rule shall not be violated
GLOBAL-ONEFILEDECLA type, object or function that is used in multiple translation units shall be declared in one and only one file
GLOBAL-ONEUSEVARA project shall not contain non-volatile POD variables having only one use
GLOBAL-TEMPLNOINSTAll class templates, function templates, class template member functions and class template static members shall be instantiated at least one
GLOBAL-UNIQUETYPEDEFA typedef name (including qualification, if any) shall be a unique identifier
GLOBAL-UNUSEDTYPEA project shall not contain unused type declarations
GLOBAL-UNUSEDVIRTPARAMThere shall be no unused parameters (named or unnamed) in the set of parameters for a virtual function and all the functions that override it
GLOBAL-VIRTBASECLASSA base class shall only be declared virtual if it is used in a diamond hierarchy
MISRA2008-0_1_12There shall be no unused parameters (named or unnamed) in the set of parameters for a virtual function and all the functions that override it
MISRA2008-0_1_4A project shall not contain non-volatile POD variables having only one use
MISRA2008-0_1_5A project shall not contain unused type declarations
MISRA2008-0_1_6Avoid unused values
MISRA2008-0_1_9:All non-null statements shall either have at least one side-effect however executed or cause control flow to change
MISRA2008-0_3_1_aAvoid accessing arrays out of bounds
MISRA2008-0_3_1_bAvoid null pointer dereferencing
MISRA2008-0_3_1_cAvoid division by zero
MISRA2008-0_3_1_dAvoid buffer overflow due to defining incorrect format limits
MISRA2008-0_3_1_eAvoid overflow due to reading a not zero terminated string
MISRA2008-0_3_1_fDo not check for null after dereferencing
MISRA2008-0_3_1_gAvoid overflow when reading from a buffer
MISRA2008-0_3_1_hAvoid overflow when writing to a buffer
MISRA2008-0_3_1_iPointer arithmetic shall only be applied to pointers that address an array or array element
MISRA2008-0_3_1_j,=,,= shall not be applied to objects of pointer type, except where they point to the same array
MISRA2008-2_10_3A typedef name (including qualification, if any) shall be a unique identifier
MISRA2008-3_2_1All declarations of an object or function shall have compatible types
MISRA2008-3_2_2The One Definition Rule shall not be violated
MISRA2008-3_2_3A type, object or function that is used in multiple translation units shall be declared in one and only one file

MISRA2008-3_2_4

An identifier with external linkage shall have exactly one external definition
MISRA2008-5_0_16_aAvoid accessing arrays out of bounds
MISRA2008-5_0_16_bA pointer operand and any pointer resulting from pointer arithmetic using that operand shall both address elements of the same array
MISRA2008-5_17_1The overloaded binary operator should be implemented in terms of its corresponding compound assignment operator
MISRA2008-5_19_1_aInteger overflow or underflow in constant expression in '+', '-', '*' operator
MISRA2008-5_19_1_bInteger overflow or underflow in constant expression in '' operator
MISRA2008-7_2_1An expression with enum underlying type shall only have values corresponding to the enumerators of the enumeration
MISRA2008-7_3_6Using-directives and using-declarations (excluding class scope or function scope using-declarations) shall not be used in header files
MISRA2008-10_1_2A base class shall only be declared virtual if it is used in a diamond hierarchy
MISRA2008-10_2_1All accessible entity names within a multiple inheritance hierarchy should be unique
MISRA2008-14_5_1Do not declare non-member generic functions in associated namespaces
MISRA2008-14_6_2The function shall resolve to a function declared previously in the translation unit
MISRA2008-14_7_1All class templates, function templates, class template member functions and class template static members shall be instantiated at least one.
MISRA2008-15_4_1If a function is declared with an exception-specification, then all declarations of the same function (in other translation units) shall be declared with the same set of type-ids

MISRA2012-RULE-18_1_c

A pointer operand and any pointer resulting from pointer arithmetic using that operand shall both address elements of the same array
PB-70An expression with enum underlying type shall only have values corresponding to the enumerators of the enumeration
TEMPL-13Do not declare non-member generic functions in associated namespaces
TEMPL-14The function shall resolve to a function declared previously in the translation unit

Updated Code Analysis Rules

Scroll Table Layout
widths35%,65%

Rule CategoryRule IDs
Flow AnalysisBD-PB-OVERFWR, BD-PB-OVERFRD, BD-PB-VOVR, BD-SECURITY-ARRAY, BD-TRS-LOCK, BD-TRS-TSHL
Coding ConventionsCODSTA-103, CODSTA-163_b
CommentsCOMMENT-13
InitializationINIT-06
Joint Strike FighterJSF-071_b, JSF-111, JSF-171, JSF-187, JSF-204_b
MISRA 2004MISRA2004-14_2, MISRA2004-15_1, MISRA2004-17_2, MISRA2004-17_3, MISRA2004-17_6_a
MISRA 2008MISRA2008-0_1_6, MISRA2008-0_1_9, MISRA2008-0_3_1_g, MISRA2008-0_3_1_h, MISRA2008-0_3_1_i, MISRA2008-0_3_1_j, MISRA2008-5_0_17, MISRA2008-5_0_18, MISRA2008-5_19_1_a, MISRA2008-5_19_1_b, MISRA2008-6_4_3_a, MISRA2008-6_4_4, MISRA2008-7_5_1, MISRA2008-7_5_2_a
MISRA 2012MISRA2012-DIR-4_1_g, MISRA2012-DIR-4_1_h, MISRA2012-DIR-4_1_i, MISRA2012-DIR-4_1_j, MISRA2012-DIR-4_13_d, MISRA2012-DIR-4_14_a, MISRA2012-RULE-1_3_d, MISRA2012-RULE-1_3_e, MISRA2012-RULE-1_3_m, MISRA2012-RULE-2_2_a, MISRA2012-RULE-3_2, MISRA2012-RULE-10_3_b, MISRA2012-RULE-12_4_a, MISRA2012-RULE-12_4_b, MISRA2012-RULE-16_1_b, MISRA2012-RULE-16_2, MISRA2012-RULE-18_2, MISRA2012-RULE-18_3, MISRA2012-RULE-18_6_a, MISRA2012-RULE-21_17_b
Possible BugsPB-11, PB-66_a, PB-66_b


Resolved Bugs and FRs

Bug/FR IDDescription
CPP-18579Rule MISRA2012-RULE-10_3_b (CODSTA-163_b) reports false positives
CPP-36999base_from_member.hpp", line 136: error: expected a ")" ::new ((void*) 0) MemberType( static_cast<T&&>(x)... ) 
CPP-38187The rule MISRA2004-17_6_a reports false positive violation
CPP-38241PB-11 incorrect behaviour
CPP-38336MISRA2004-17_6_a-3 reporting a false positive
CPP-38342Rule MISRA2004-15_1 throwing a false postive with 'default
CPP-38589CDD rules regression in C++test 10.3.2 (Japanese only)
CPP-38602Add C++11 "final" specifier for function to RuleWizard dictionary
CPP-39168Cannot generate BDF using msbuild on Windows 7 
CPP-39211User rule may not be executed if there's a sub-rule (text rule) in the same directory
CPP-39356Parse errors related to C++11 with Keil for ARM v5.x 
CPP-39405 INIT-06 false positive for default move constructor 
CPP-39407double argument to static_assert
CPP-39409MISRA2012-RULE-7_1 false positive
CPP-39410MISRA2012-RULE-16_4_b false positive
CPP-39415RVCT compilers accept the big-letter '--C99' flag
CPP-39495Support for IAR EWARM 8.x
Scroll Only

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