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'.

Аналогичным образом можно размечать свойства.

Данная диагностика классифицируется как: