V6060. The reference was used before it was verified against null.


The analyzer has detected a potential error that could result in using a null object.

What the analyzer detects is the situation where the object is used first and only then checked for the value 'null'. This means one of the two things:

1) If the object equals 'null', an error will occur.

2) The program executes correctly all the time since the object never equals 'null'. Therefore, the check is redundant.

Consider the following code snippet triggering the warning:

boolean isSomething(String str)
{
  String prepareStr = prepare(str);
  if (prepareStr.contains("*?*"))
  {
    ...
  }
  ...
  return prepareStr == null ? false : prepareStr.contains("?*?");
}

So, is it a potential bug or redundant comparison in the code above? The 'prepareStr' variable participates in some calculations first and is checked for 'null' at the end. Both situations might take place here. And if the 'prepare' method can return 'null', you must modify the code:

boolean isSomething(String str)
{
  String prepareStr = prepare(str);
  if (prepareStr == null) {
    return false;
  }

  if (prepareStr.contains("*?*"))
  {
    //...
  }
  //...
  return prepareStr.contains("?*?");
}

If 'prepare' does not return 'null', you can simply remove the check to make it easier for your fellow programmers.


Do you make errors in the code?

Check your code
with PVS-Studio

Static code analysis
for C, C++, and C#

goto PVS-Studio;