V7023. Suspicious use of a variable in similar code fragments. Perhaps this is a typo, and a different variable may have been intended.
Анализатор обнаружил два схожих по структуре блока кода, которые идут друг за другом и отличаются одной переменной: в первом блоке кода она встречалась несколько раз, а во втором — всего один. Вероятно, подобный код был написан с использованием copy-paste, а переменную забыли заменить.
Рассмотрим пример:
if (x > 0) {
Do1(x);
Do2(x);
}
if (y > 0) {
Do1(y);
Do2(x); // <=
}
В первом блоке все действия происходят с переменной x. Во втором блоке все действия происходят с переменной y, кроме метода Do2(x). Вероятно, здесь забыли поменять переменную, и корректный вариант должен выглядеть так:
if (x > 0) {
Do1(x);
Do2(x);
}
if (y > 0) {
Do1(y);
Do2(y);
}
Хорошей практикой, защищающей от такой ошибки, является вынос кода в отдельные функции:
processVariable(x);
processVariable(y);
function processVariable(value) {
if (value > 0) {
Do1(value);
Do2(value);
}
}