Java 假阳性和假阴性

Java 假阳性和假阴性,java,Java,在静态分析中,是否有任何示例解释假阴性和假阳性 对于零参考分析?假阳性通常是指当检测到某个不存在的东西时(即“阳性”)(即“假”) 一般来说,假阴性是指当某些东西确实存在时,却没有被检测到(即“阴性”) 对于空解引用分析,这意味着: 假阳性是指它告诉您存在潜在的空指针取消引用,而实际上这种情况在运行时永远不会发生 假阴性是指它无法告诉您实际可能在运行时发生的潜在空指针取消引用 例如,考虑这种方法: public void frobnicate(Object foo) { int hash

在静态分析中,是否有任何示例解释
假阴性
假阳性


对于零参考分析

假阳性通常是指当检测到某个不存在的东西时(即“阳性”)(即“假”)

一般来说,假阴性是指当某些东西确实存在时,却没有被检测到(即“阴性”)

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

  • 假阳性是指它告诉您存在潜在的空指针取消引用,而实际上这种情况在运行时永远不会发生
  • 假阴性是指它无法告诉您实际可能在运行时发生的潜在空指针取消引用
例如,考虑这种方法:

public void frobnicate(Object foo) {
  int hash = foo.hashCode(); // line #1
  int hash2 = foo.hashCode(); // line #2
}
如果分析告诉您,在标记为“#2”的行中存在潜在的空指针解引用,那么这是错误的,因为当执行达到该点时,
foo
不能为空。因此,此类通知将被视为假阳性


如果分析未能告诉您在标记为“#1”的行处存在潜在的空指针解引用,那么它也将是错误的,因为
foo
在该点上可以明显地
null
。这将是一个假阴性。

一般来说,假阳性是指当检测到某个东西时(即“阳性”),而它不在那里(即“假”)

一般来说,假阴性是指当某些东西确实存在时,却没有被检测到(即“阴性”)

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

  • 假阳性是指它告诉您存在潜在的空指针取消引用,而实际上这种情况在运行时永远不会发生
  • 假阴性是指它无法告诉您实际可能在运行时发生的潜在空指针取消引用
例如,考虑这种方法:

public void frobnicate(Object foo) {
  int hash = foo.hashCode(); // line #1
  int hash2 = foo.hashCode(); // line #2
}
如果分析告诉您,在标记为“#2”的行中存在潜在的空指针解引用,那么这是错误的,因为当执行达到该点时,
foo
不能为空。因此,此类通知将被视为假阳性

如果分析未能告诉您在标记为“#1”的行处存在潜在的空指针解引用,那么它也将是错误的,因为
foo
在该点上可以明显地
null
。这将是一个假阴性