V6001. There are identical sub-expressions to the left and to the right of the 'foo' operator.
The analyzer has detected a code fragment that is very likely to have a logical error in it. The program text contains an operator (<, >, <=, >=, ==, !=, &&, ||, -, /, &, |, ^) whose both operands are identical subexpressions.
Consider this example:
if (a.x != 0 && a.x != 0)
In this case, the '&&' operator is surrounded by identical subexpressions "a.x != 0", which enables the analyzer to detect a mistake made through carelessness. A correct version of this code, which won't trigger the diagnostic, should look as follows:
if (a.x != 0 && a.y != 0)
The analyzer compares the code blocks, taking into account inversion of the expression's parts in relation to the operator. For example, it will detect the error in the following code:
if (a.x > a.y && a.y < a.x)
This diagnostic is classified as:
You can look at examples of errors detected by the V6001 diagnostic.