The analyzer has detected a potential error: an extra expression in the code. Such "lost" expressions most often occur in the code when the key word return is missing or due to careless code refactoring.
Consider this sample:
void Run(int &a, int b, int c, bool X) { if (X) a = b + c; else b - c; }
The program text is incomplete because of the misprint. It compiles well but has no practical sense.
This is the correct code:
void Run(int &a, int b, int c, bool X) { if (X) a = b + c; else a = b - c; }
Sometimes "lost" expressions do have practical sense. For example, the analyzer won't generate the warning for the following code:
struct A {}; struct B : public A {}; ... void Foo(B *p) { static_cast<A*>(p); ... }
The "static_cast<A*>(p);" expression here checks that the 'B' class is a inherits of the 'A' class. If it is not so, a compilation error will occur.
As another example, we can cite the following code intended to suppress the compiler-generated warnings about unused variables:
void Foo(int a, int b) { a, b; }
The analyzer won't generate the V607 warning in this case.
This diagnostic is classified as:
You can look at examples of errors detected by the V607 diagnostic. |