>
>
>
V3107. Identical expression to the left…


V3107. Identical expression to the left and to the right of compound assignment.

Анализатор обнаружил одинаковые подвыражения в левой и правой части составного оператора присваивания (compound assignment operator). Возможно эта операция содержит ошибку, не имеет смысла, либо может быть упрощена.

Рассмотрим пример. Пусть у нас имеется выражение следующего вида:

x += x + 5;

Возможно программист хотел просто прибавить к переменной 'x' значение 5. Тогда корректный код может выглядеть так:

x = x + 5;

Либо же программист хотел прибавить 5, но случайно добавил лишнюю переменную 'x' в выражение. Тогда корректный код может выглядеть так:

x += 5;

Впрочем, возможно код написан правильно. Однако согласитесь, читать такое выражения сложно и лучше переписать его. Более читабельный вариант может выглядеть так:

x = x * 2 + 5;

Рассмотрим следующий пример:

x += x;

Данная операция эквивалентна операции умножения на два. Более понятное выражение будет иметь следующий вид:

x *= 2;

Рассмотрим еще одно выражение:

y += top - y;

Мы пытаемся прибавить переменной 'y' разницу между переменной 'top' и переменной 'y'. Давайте разложим данное выражение:

y = y + top – y;

Данное выражение можно упростить, так как переменная 'y' вычитается сама из себя, что является бессмысленным. Тогда простой и корректный код будет выглядеть так:

y = top;

Взгляните на примеры ошибок, обнаруженных с помощью диагностики V3107.