CodeQL 文档

表达式始终计算为相同的值

ID: java/evaluation-to-constant
Kind: problem
Security severity: 
Severity: warning
Precision: very-high
Tags:
   - maintainability
   - useless-code
Query suites:
   - java-security-and-quality.qls

单击以在 CodeQL 存储库中查看查询

某些表达式始终计算为相同的结果,无论其子表达式是什么

  • x * 0 始终计算为 0

  • x % 1 始终计算为 0

  • x & 0 始终计算为 0

  • x || true 始终计算为 true

  • x && false 始终计算为 false。只要 x 不是常量,此类表达式通常是错误的。

建议

如果表达式应该在每次执行时计算为相同的结果,请考虑用其结果替换整个表达式。

示例

以下方法尝试通过检查 x % 1 == 0 来确定 x 是否为偶数。

public boolean isEven(int x) {
	return x % 1 == 0; //Does not work
}

但是,当 x 是整数时,x % 1 == 0 始终为真。正确的检查是 x % 2 == 0

public boolean isEven(int x) {
    return x % 2 == 0; //Does work
}

参考资料

  • ©GitHub, Inc.
  • 条款
  • 隐私