声纳等于避免无效违规

时间:2015-03-11 08:59:30

标签: java sonarqube

修复声纳违规并发出警告"等于避免空:
字符串文字表达式应位于等于比较的左侧。"为:

if (title != null && !title.equals("")) {
//rest of loop
}

我把它改为:

if(!("").equals(title) && title != null){
//rest of loop
}

这种改变还好吗?它会修复违规行为吗?有人可能会向我解释为什么原件是违规的吗?我不明白这个问题并阅读:  https://sonar43.spring.io/rules/show/checkstyle:com.puppycrawl.tools.checkstyle.checks.coding.EqualsAvoidNullCheck?layout=false

在其他一两篇文章中,但我不知道问题是什么......

1 个答案:

答案 0 :(得分:2)

警告告诉您,我们不确定title是不是null。但是,根据定义,文字(例如空字符串)永远不能为空。由于equals可以处理null作为参数,因此您可以通过编写NullPointerException来避免潜在的<literal>.equals(<somebject>)。如果您未在if语句中使用title,则无需进一步进行空值检查:

if(!"".equals(title)){
    //rest of loop
}

但是,由于您正在检查某些内容是否等于文字,因此让空值通过是没有意义的。

docs也有相关说明:

  

此外,在equals之前看到null检查是很常见的   比较不必要[...]