【发布时间】:2017-01-10 21:05:51
【问题描述】:
我的方法 matches1() 的逻辑表达式有问题。
问题
SonarQube 告诉我有一个错误:
(expectedGlobalRule == null && actual != null)
SonarQube: 更改此条件,使其不总是评估为 “真的”。 条件不应无条件地评估为“TRUE”或“FALSE”
我实际上是在执行此逻辑以避免“要执行的块”上出现 NPE。
我的代码
matches1()
private boolean matches1(GbRule actual, GbRule expected) {
if(actual == null && expected == null) {
return true;
} else if((expected == null && actual != null) || (expected != null && actual == null)) {
return false;
} else {
//Block to be executed
}
}
我颠倒了逻辑,看看 SonarQube 会告诉我什么,他没有抱怨。 matches2()
private boolean matches2(GbRule actual, GbRule expected) {
if(actual == null && expected == null) {
return true;
} else if(expected != null && actual != null) {
//Block to be executed
} else {
return false;
}
}
问题
- 问题出在我的布尔逻辑还是 SonarQube 丢失了 他的想法?
- 如果问题出在 sonarQube 内部,我该如何解决?
【问题讨论】:
-
你能说明
expectedGlobalRule的定义吗? -
您的参数名为 expected,但您的代码使用的是 expectedGlobalRule。所以错字 - 还是故意的?如果是后者 - expeectedGlobalRule 怎么样?
-
@garnulf expectedGlobalRule 不应该在那里,我更正了它
-
您现在仍然遇到声纳问题吗?
-
是的,在我的 matcher1() 上仍有 SonarQube 警告
标签: java sonarqube boolean-expression