Данное диагностическое правило выявляет случаи, когда некоторое значение присваивается переменной, которая далее перетирается новым значением или вовсе не используется.
Случай 1.
Одной и той же переменной дважды подряд присваивается значение. Причем между этими присваиваниями сама переменная не используется.
Рассмотрим пример:
A = GetA(); A = GetB();
То, что переменной 'A' два раза присваивается значение, может свидетельствовать о наличии ошибки. Высока вероятность, что код должен выглядеть следующим образом:
A = GetA(); B = GetB();
Если переменная между присваиваниями используется, то этот код считается анализатором корректным:
A = 1; A = Foo(A);
Случай 2.
Локальной переменной присваивается значение, но переменная далее нигде не используется до выхода из метода.
Рассмотрим фрагмент кода:
String GetDisplayName(Titles titles, String name) { String result = null; String tmp = normalize(name); if (titles.isValidName(name, tmp)){ result = name; } return name; }
Программист хотел, чтобы результатом метода была переменная 'result', которая инициализируется в зависимости от выполнения 'isValidName'. К сожалению, из-за опечатки метод всегда возвращает переменную 'name'. Правильный код должен выглядеть следующим образом:
String GetDisplayName(Titles titles, String name) { String result = null; String tmp = normalize(name); if (titles.isValidName(name, tmp)){ result = name; } return result; }
Данная диагностика классифицируется как:
|
Взгляните на примеры ошибок, обнаруженных с помощью диагностики V6021. |