V3228. It is possible that an assigned variable should be used in the next condition. Consider checking for misprints.

Анализатор обнаружил потенциальную ошибку: вместо одной переменной была проверена другая, имеющая схожее имя.

Рассмотрим пример:

bool UserProcessing()
{
  ....
  var user1 = FindUser(id1);

  if (user1 == null)
    return false;
  ....
  var user2 = FindUser(id2);

  if (user1 == null)
    return false;
  ....
}

В данном примере инициализируются две переменные со схожими именами: user1 и user2. После инициализации переменных значение каждой из них должно проверяться на равенство с null. Однако из-за опечатки в условии второго if переменная user2 не будет проверена.

Исправленный вариант:

bool UserProcessing()
{
  ....
  var user1 = FindUser(id1);

  if (user1 == null)
    return false;
  ....
  var user2 = FindUser(id2);

  if (user2 == null)
    return false;
  ....
}

Рассмотрим еще один случай:

private readonly int _value;
....
public CustomType(int value)
{
  ....
  _value = value < 0 ? 0 : value;

  if (value == 0) { .... }
  ....
}

Полю _value присваивается значение параметра value, ограниченное положительными значениями. Далее вместо валидного значения поля на равенство с 0 проверяется параметр, который все также может иметь отрицательное значение.

Исправленный вариант:

private readonly int _value;
....
public CustomType(int value)
{
  ....
  _value = value < 0 ? 0 : value;

  if (_value == 0) { .... }
  ....
}

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