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) { .... }
....
}
Данная диагностика классифицируется как: