-
SonarQube Community Edition Version 7.5 (build 20543)
-
squid:S2589 rule
-
Sonar detect Remove this expression which always evaluates to “true” but the expression can be false
-
To reproduce issue create a java class with the method:
public void run()
{
Object x = ... //call to sample method
try
{
if (x.equals("aaa")) //if x is null there is a NullPointerException
{
//do something
}
}
catch (NumberFormatException a)
{
//do something
}
finally
{
//finally block is executed even if there is NullPointerException in try block, so x can be null
if (x!=null)
{
//do something
}
}
}
The system detect “if” in finally block as useless but this is an error because if x is null, finally block is executed and if block not.