Coverity扫描 - 用于分析程序中某个点的可达性的注释或模型

时间:2017-10-07 16:45:16

标签: c coverity

鉴于以下计划:

int main(){
  float x = non_det_float();
  float y = NAN;

  if (isnan(y) && x == 1.0f){
    some_error();
  }
}

让non_det_float()成为可以返回ANY float的函数。 (所以一个不确定的浮动)

让some_error()成为终止程序的错误。

问题:

  1. 覆盖率扫描是否能够分析some_error()是否可以访问?或者只是说" some_error()是死代码"

  2. 覆盖率扫描是否能够模拟非确定性浮点数/双精度数甚至非确定性循环?

  3. 如果有可能,那么知道如何做是很好的。 我们必须定义一个模型吗?我们必须使用一些注释吗?

    提前感谢。

1 个答案:

答案 0 :(得分:1)

这是(我认为)等同于停机问题,因此是不可判定的(即,无论是否调用some_function()都无法确定是否存在定义。)

这并不是说它不能经常猜测或不可靠地知道,但有必要的情况是它不能。