V607. Ownerless expression 'Foo'.
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. |