The analyzer detected a potential error in an arithmetic or logical expression: a variable is used both in the left and the right parts of a compound-assignment expression.
Consider the following example:
void Foo(int x, int y, int z) { x += x + y; .... }
This code is likely to contain a typo and was probably meant to look like this:
void Foo(int x, int y, int z) { x = x + y; .... }
Or like this:
void Foo(int x, int y, int z) { x += z + y; .... }
It is true that programmers use expressions like these as a tricky means to multiply a number by two, but such code is strange and needs to be checked. Such expressions look rather complicated and probably should be rewritten in a simpler and clearer way:
void Foo(int x, int y, int z) { x = x * 2 + y; .... }
There are also more suspicious expressions that need to be inspected:
void Foo(int x, int y) { x -= x + y; }
This expression can be simplified in the following way:
It is not clear if this behavior is intended or caused by a typo. In any case, this code should be checked.
This diagnostic is classified as:
You can look at examples of errors detected by the V765 diagnostic. |