Анализатор обнаружил потенциально возможную ошибку, связанную с тем, что одной и той же переменной дважды подряд присваивается значение. Причем между этими присваиваниями сама переменная не используется.
Рассмотрим пример:
A = GetA();
A = GetB();
То, что переменной 'A' два раза присваивается значение, может свидетельствовать о наличии ошибки. Высока вероятность, что код должен выглядеть следующим образом:
A = GetA();
B = GetB();
Если переменная между присваиваниями используется, то этот код считается анализатором корректным:
A = 1;
A = Foo(A);
Рассмотрим, как подобная ошибка может выглядеть на практике. Следующий код взят из реального приложения:
....
if (bool.TryParse(setting, out value))
_singleSignOn = value;
_singleSignOn = false;
....
Корректный вариант должен был выглядеть так:
....
if (bool.TryParse(setting, out value))
_singleSignOn = value;
else
_singleSignOn = false;
....
Иногда анализатор выдает ложные предупреждения, когда запись в переменные используется для отладочных целей. Пример подобного кода:
status = Foo1();
status = Foo2();
В данной ситуации:
Данная диагностика классифицируется как:
Взгляните на примеры ошибок, обнаруженных с помощью диагностики V3008. |