Scroll Ignore | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
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 EnvironmentsNew CompilersWe've added support for the following compilers:
The compilers are now marked with the following support levels:
See Compilers for details about currently supported 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:
New IDEsWe've added support for the following IDEs:
Removed EnvironmentsSee Removed Support for Environments for information about environments that are no longer supported.
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:
New and Updated Test ConfigurationsWe've added the following built-in test configurations:
The following test configurations have been moved from the Static Analysis category to one of the Compliance Packs (see Compliance Packs):
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:
The "MISRA C" test configurations have been renamed as "MISRA C 1998". The following test configurations have been removed:
See Built-in Test Configurations for the list of test configurations shipped with C/C++test. New and Updated Code Analysis RulesIn 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.
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.
Dynamic Stub Configuration with Stub CallbacksThe 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 EditorWe've enhanced the Test Case Editor to facilitate modifying test suites and test cases.
See Adding Test Suites and Test Cases with the Test Case Editor for details. Reporting Test Execution DetailsYou 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 Reports. Other Changes
|
Notes:
...
|
...
Resolved Bugs and FRs
IDEsThe following IDEs are no longer supported:
CompilersThe following compilers are no longer supported (see Compilers for details about currently supported compilers):
Anchor |
|
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 |
New rules have also been added to the following compliance categories:
Rule ID Prefix | Category |
---|---|
AUTOSAR | AUTOSAR C++14 Coding Guidelines |
CERT_C | SEI CERT C |
HICPP | High Integrity C++ |
MISRAC2012 | MISRA C 2012 |
Anchor | ||||
---|---|---|---|---|
|
Rule Category | Rule IDs |
---|---|
Flow Analysis | BD-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 Conventions | CODSTA-110, CODSTA-166_a, CODSTA-37, CODSTA-47, CODSTA-63, CODSTA-CPP-78 |
Initialization | INIT-15 |
Joint Strike Fighter | JSF-138_a, JSF-138_b, JSF-140, JSF-187 |
MISRA C 1998 | MISRA-024, MISRA-028 |
MISRA C 2004 | MISRA2004-14_2, MISRA2004-8_11 |
MISRA C++ 2008 | MISRA2008-0_1_3_b, MISRA2008-0_1_6, MISRA2008-0_1_9, MISRA2008-5_0_21, MISRA2008-9_3_3 |
MISRA C 2012 | MISRA2012-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 Management | MRM-09, MRM-20 |
Object Oriented | OOP-07 |
Optimization | OPT-06 |
Scroll Only |
---|
For information about this release, see https://docs.parasoft.com/display/CPPDESKE1040/Updates+in+10.4.0 |