V3198. The variable is assigned the same value that it already holds.
Анализатор обнаружил ситуацию, когда переменной присваивается значение, которое она уже имеет.
Рассмотрим пример:
public long GetFactorial(long it)
{
long currentValue = 1;
for (int i = 1; i <= it; i++)
{
currentValue = currentValue * currentValue;
}
return currentValue;
}
Метод 'GetFactorial' должен возвращать значение факториала, соответствующее параметру. Однако этот метод всегда будет возвращать единицу. Данная ситуация возникает из-за того, что на каждой итерации цикла переменной 'currentValue' присваивается значение, которое она уже имеет.
Для исправления нужно заменить один из множителей на 'i':
for (int i = 1; i <= it; i++)
{
currentValue = currentValue * i;
}
Дополнительная настройка диагностики
Существует возможность игнорировать возвращаемые значения методов и свойств для данного диагностического правила. Для этого нужно добавить в файл '.pvsconfig' следующую команду:
//V_3198_IGNORE_RETURN_VALUE:NamespaseName.TypeName.MethodName
При использовании команды из примера, данное диагностическое правило не будет выдавать предупреждения, если переменной присваивается возвращаемое значение метода 'NamespaseName.TypeName.MethodName'.
Аналогичным образом можно размечать свойства.
Данная диагностика классифицируется как: