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

The analyzer has detected a potential error where a variable with a similar name is checked instead of the intended one.

The example:

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

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

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

In the example, two variables with similar names, user1 and user2, are initialized. After initialization, the value of each variable should be checked for null. However, due to a typo in the second if condition, the user2 variable will not be checked.

The fixed code:

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

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

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

Another example:

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

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

The _value field is assigned the value parameter that is limited to positive values. Instead of validating the field, the parameter is checked for 0, which may still have a negative value.

The fixed code:

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

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

This diagnostic is classified as: