2.2.0-beta1
Resolved Issues
The following issues have been fixed in this release of the analyzer.
Internal ID | Call ID | Summary | Notes |
---|---|---|---|
CPP-273 | - | Constructors and destructors are detected as "C++ Function" with name ending with "@ctor" and "@dtor" respectively | In case, if/when class definition is not found, constructors and destructors would be named as @ctor and @dtor respectively. Analyzer log will contain following message in this scenario: Definition for ‘<class name>’ not found. ‘@ctor\@dtor’ would be detected as 'C++ Function'. |
CPP-287 | - | Incorrect object detection when unresolved macro is used inside struct\class | |
CPP-298 | - | False violation for lambda for "Avoid having a method call or additional expressions in a statement using "++" or "--" operators (C/C++)" | |
CPP-301 | - | Missing violation for _tmain for "Ensure that there is at least one exception handler to catch-all otherwise unhandled exceptions in the main function(C++)" | |
CPP-303 | - | False violation for _tmain for "Avoid using catch all" | |
CPP-304 | - | False violations for QR "Avoid testing floating point numbers for equality" |
New Rules
The following new rules have been added in this release of the analyzer:
Rule ID | Rule Name | |
---|---|---|
CPP-175 | Avoid performing conversion from a function pointer to any other type (C/C++) | |
CPP-171 | Avoid casting and converting a pointer type to an integral type (C/C++) | |
CPP-243 | Avoid using 'enum' types as operands for arithmetic contexts | |
CPP-240 | Avoid having boolean operators with non-boolean operands (C/C++) | |
CPP-241 | Avoid having expressions with bool type to be used as operands on operators other than =, &&, ||, !, ==, !=, the unary & operator, and the conditional operator | |
CPP-307 | Avoid dynamic_cast to convert current object to its derived class from its constructor or destructor | |
CPP-239 | Avoid delete operators to exit with an exception. | |
CPP-308 | Avoid move constructor and move assignment operator to exit with an exception | |
CPP-242 | Avoid using C-style and functional notation casts (C++) | |
CPP-244 | Handlers of a function-try-block implementation of a class constructor or destructor shall not reference non-static members from this class or its bases. |
2.2.0-alpha1
Resolved issues
The following issues have been fixed in this release of the analyzer.
Internal ID | Call ID | Summary | Notes |
---|---|---|---|
CPP-256 | - | CASTONCAST: access violation while parsing template | As a result of this fix, objects and links may increase. Also, as the files are not be skipped, analysis time may increase. |
CPP-257 | - | CASTONCAST: access violation while parsing function declaration | As a result of this fix, objects and links may increase. Also, as the files are not be skipped, analysis time may increase. |
CPP-271 | - | CASTONCAST: False violation for "All if … else if constructs shall be terminated with an else clause (C/C++)" if else is not delimited by {} | |
CPP-274 | - | CASTONCAST: False violations for "Avoid non-void return type function without an explicit return of an expression (C/C++)" | In certain cases, constructors and destructors were detected as C++ Function instead of constructors and destructors. In such cases, false violations was displayed. This has been fixed. |
CPP-275 | - | CASTONCAST: False Violation for "Ensure Switch statements have at least 2 case clauses (C/C++)" with nested switch | |
CPP-276 | - | CASTONCAST: False violation for "Avoid missing default in switch statements" with nested switch | |
CPP-283 | - | Run-time exception while parsing struct when macro used in struct is not resolved | As a result of this fix, objects and links may increase. Also, as the files are not be skipped, analysis time may increase. |
CPP-284 | - | CASTONCAST: False violation for "Avoid using "sizeof" on expressions that contain side effects" when using C++ version of _countof |
New rules
The following new rules have been added in this release of the analyzer:
Rule ID | Rule Name |
---|---|
1065066 | Avoid having a method call or additional expressions in a statement using "+" or "--" operators (C/C+) |
1065068 | Avoid using Digraphs (C++) |
1065070 | Avoid using Trigraphs |
1065072 | Avoid using Unions |
1065074 | All constructors that are callable with a single argument of fundamental type shall be declared explicit. |
1065076 | Avoid declaring data members in non-POD classes as public or protected |
1065078 | A base class shall be declared virtual only if it is used in a diamond hierarchy |