JD.BITR
当 if 检查在两侧仅包含常量时,发生 JD.BITR。导致这种问题的原因可能是在发生程序错误后进行了编译器优化,从而将表达式替换为了常量。作为子用例,该检查器会在如下示例情况中触发意外分配。注意:该错误是否会发生,取决于 Java 编译器优化代码的方式。对于某些编译器,永远不会发生 JD.BITR,而是会发生 JD.RC.EXPR.DEAD 或 JD.RC.EXPR.CHECK。
漏洞与风险
“if”语句中的静态求值表达式最有可能是逻辑错误。
缓解与预防
修复“if”语句。
示例 1
复制
static void check(boolean hasFields) {
if (hasFields = true) {
foo();
}
return;
}
针对第 11 行报告 JD.BITR:表达式“hasFields = true”始终是“true”。是否有拼写错误?