CodeQL 文档

不可比较类型的 Equals

ID: java/equals-on-unrelated-types
Kind: problem
Security severity: 
Severity: error
Precision: very-high
Tags:
   - reliability
   - correctness
Query suites:
   - java-security-and-quality.qls

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

形式为 x.equals(y) 的调用,其中 xy 具有不可比较的类型,应始终返回 false,因为 xy 的运行时类型将不同。如果两种类型不同且没有公共子类型,则它们不可比较。

建议

确保此类比较使用可比较类型。

示例

在以下示例中,第 5 行上的 equals 调用错误地引用了整个数组,而不是特定元素。因此,返回“找不到值”。

String[] anArray = new String[]{"a","b","c"}
String valueToFind = "b";

for(int i=0; i<anArray.length; i++){
  if(anArray.equals(valueToFind){    // anArray[i].equals(valueToFind) was intended
    return "Found value at index " + i;
  }
}

return "Value not found";

参考

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