In this release, we've focused on improving the code analysis capabilities and extended our support for coding standards, including MISRA and Joint Strike Fighter (see New and Updated Code Analysis Rules for additional information.
This is a minor update to C/C++test DTP Engine. See the release notes for 10.3.0 for additional information.
New and Updated Code Analysis Rules
Rule ID | Header |
---|---|
CODSTA-MCPP-07 | Prefer lambdas over std::bind, std::bind1st and std::bind2nd |
CODSTA-MCPP-08_a | Prefer 'auto' to explicit type names in variable declarations |
CODSTA-MCPP-08_b | Prefer 'auto' to explicit type names for function return types |
CODSTA-MCPP-09 | Declare functions 'noexcept' if they will not emit exceptions |
CODSTA-MCPP-11_a_cpp11 | Useconstexprto declare const variables whenever possible |
CODSTA-MCPP-11_b_cpp11 | Useconstexprto declare functions whenever possible |
CODSTA-MCPP-14 | Avoid Overloading on Forwarding References |
COMMENT-04 | Comment every function |
JSF-134 | Assumptions (limitations) made by functions should be documented in the function's preamble |
JSF-071_c | A class's virtual functions shall not be invoked from any of its constructors |
JSF-071.1 | A class's virtual functions shall not be invoked from any of its constructors |
JSF-071.1_b | A class's virtual functions shall not be invoked from its destructor |
JSF-119 | Functions shall not call themselves, either directly or indirectly |
MISRA2004-16_2 | Functions shall not call themselves, either directly or indirectly |
MISRA2008-7_5_4 | Functions should not call themselves, either directly or indirectly |
MISRA2012-RULE-17_2 | Functions shall not call themselves, either directly or indirectly |
OOP-16 | Avoid calling virtual functions from constructors |
OOP-16_b | Avoid calling virtual functions from destructors |
Updates to the RuleWizard Module
The following nodes and properties have been added to RuleWizard:
- IsMoveAssignmentOperator (true for move assignment operator)
- IsCopyAssignmentOperator (true for copy assignment operator)
- HasDefaultValue property (true for function parameters with default value)
- IsDeclInCommaList property (true for variable declared in a comma-separated list of declarators)
- 'Vacuous destructor call' node (represents explicit destructor call for simple type or class that doesn't have one)
- NewDeclaration node (represents declaration of a new operator)
- DeleteDeclaration node (represents declaration of a delete operator)
See RuleWizard 10.3.1 User's Guide for more details.
Additional Updates and Enhancements
- Improved Flow Analysis execution.
- Updates to Japanese localization.
Resolved FRs and PRs
ID | Description |
---|---|
121109 | MachineID is changed frequently on Windows 7 |
121190 | BD-PB-UCMETH false positives because of failures in building CFGs |
120641 | BD.EXCEPT.NR false positive when not entering an important function |
119002 | Link error when using data sources with the same names in "type=array" mode |
121704 | COMMENT-04 doesn't trigger |
119493 | Ctrl+S does not work reliably in TC Editor |
120912 | No "Refresh Test Project" action for WRWB-specific Test Projects |
121020 | Visual Studio 2015 support for updates 2 and 3 |
121351 | Parsing fails for common UDLs under MSVC-14 (VS2015) |
120760 | Link error for QArrayData(const QArrayData &) - (declared implicitly), required for copy that was eliminated, cannot be referenced -- it is a deleted function |
118145 | CPPTEST_DS_GET_MEM_BUFFER's length should not treat NULL as buffer's end |
116997 | Support for Q suffix |
108733 | Support for __float128 |
120653 | Add support for 'getline()' as a source of the tainted data |
120781 | BD-RES-LEAKS false negative on the code containing nested loops |
110613 | BD-RES-LEAKS false positive due to incorrect models for getaddrinfo/freeaddrinfo |
121371 | Subsequent incremental analysis after scope changes are significantly slower |
122022 | Parse error: argument list for class template "F" is missing |
121434 | Outcome of "if (a)" may be incorrectly evaluated to "false" when "a"castedto "int" type is 0, while the original "a" value was != 0 (for C language only, when DC, SCC, MCDC is enabled) |