无用比较测试¶
ID: java/constant-comparison
Kind: problem
Security severity:
Severity: warning
Precision: very-high
Tags:
- correctness
- logic
- external/cwe/cwe-570
- external/cwe/cwe-571
Query suites:
- java-security-and-quality.qls
某些比较测试的结果有时可以从其上下文和其他比较的结果中推断出来。这可能表明逻辑错误,并且如果例如循环条件从不改变其值,可能会导致死代码或无限循环。
建议¶
检查代码以确保逻辑正确,并考虑简化逻辑表达式。
示例¶
在以下示例中,对 x
的最终测试始终为 true
,因此条件是冗余的并且可能错误。如果“执行更多操作”部分旨在始终在循环后执行,则应删除条件以使这一点明确。
void method(int x) {
while(x >= 0) {
// do stuff
x--;
}
if (x < 0) { // BAD: always true
// do more stuff
}
}