假阳性和假阴性

时间:2020-02-26 16:32:40

标签: java

在静态分析中,是否有任何示例解释false negativefalse positive

对于 空引用分析

1 个答案:

答案 0 :(得分:2)

假阳性通常是指在某物不存在的情况下(例如“假”)检测到某物(即“阳性”)。

通常,假阴性是指当某物确实存在时未检测到 (即“阴性”)。

对于空解除引用分析,这意味着:

  • 误报是当它告诉您实际上有潜在的空指针取消引用,而这在运行时永远不会发生。
  • 否定错误是指它未能告诉您可能在运行时实际发生的空指针取消引用。

例如,考虑以下方法:

public void frobnicate(Object foo) {
  int hash = foo.hashCode(); // line #1
  int hash2 = foo.hashCode(); // line #2
}

如果分析告诉您在标记为“#2”的行上存在潜在的空指针取消引用,那么这是错误的,因为当执行到达该点时,foo不能为空。因此,此类通知将被视为误报。

如果分析失败告诉您在标记为“#1”的行上有潜在的空指针取消引用,则 也将是错误的,因为{{1 }}显然可以是foo。那将是一个假阴性。