声纳等于避免空值违规
Sonar Equals Avoid Null Violation
修复声纳违规并收到警告“等于避免空值:
字符串文字表达式应该在等号比较的左侧。" for:
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
在其他一两篇文章中,但我仍然不明白问题是什么...
警告是在告诉您不能确定 title
是否会 null
。但是,根据定义,文字(例如您的空字符串)永远不能为 null。由于 equals
可以将 null
作为参数处理,因此您可以通过编写 <literal>.equals(<somebject>)
来避免潜在的 NullPointerException
。如果您没有在 if 语句中使用 title
,则无需进一步进行空值检查:
if(!"".equals(title)){
//rest of loop
}
但是,由于您要检查某些内容是否 不 等于文字,因此让空值通过是没有意义的。
docs也有这个相关的注释:
Also, it is pretty common to see null check right before equals
comparisons which is not necessary [...]
修复声纳违规并收到警告“等于避免空值:
字符串文字表达式应该在等号比较的左侧。" for:
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
在其他一两篇文章中,但我仍然不明白问题是什么...
警告是在告诉您不能确定 title
是否会 null
。但是,根据定义,文字(例如您的空字符串)永远不能为 null。由于 equals
可以将 null
作为参数处理,因此您可以通过编写 <literal>.equals(<somebject>)
来避免潜在的 NullPointerException
。如果您没有在 if 语句中使用 title
,则无需进一步进行空值检查:
if(!"".equals(title)){
//rest of loop
}
但是,由于您要检查某些内容是否 不 等于文字,因此让空值通过是没有意义的。
docs也有这个相关的注释:
Also, it is pretty common to see null check right before equals comparisons which is not necessary [...]