C 覆盖率扫描-注释或模型,用于分析程序中某一点的可达性

C 覆盖率扫描-注释或模型,用于分析程序中某一点的可达性,c,coverity,C,Coverity,鉴于以下计划: int main(){ float x = non_det_float(); float y = NAN; if (isnan(y) && x == 1.0f){ some_error(); } } 让non_det_float()函数可以返回任何浮点值。(因此是不确定的浮动) 设某个_error()为终止程序的错误 问题: coverity scan是否能够分析某个_error()是否可以访问?或者简单地说“某个错误()是死代码” c

鉴于以下计划:

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

  if (isnan(y) && x == 1.0f){
    some_error();
  }
}
让non_det_float()函数可以返回任何浮点值。(因此是不确定的浮动)

设某个_error()为终止程序的错误

问题:

  • coverity scan是否能够分析某个_error()是否可以访问?或者简单地说“某个错误()是死代码”

  • coverity scan是否能够模拟非确定性浮点/双精度浮点或甚至非确定性循环

  • 如果这一切都有可能的话,知道怎么做就好了。 我们必须定义一个模型吗?我们必须使用一些注释吗

    提前感谢。

    这(我认为)相当于停止问题,因此是不可判定的(即,始终存在无法知道是否调用某个函数()的定义)


    这并不是说它不能经常猜测或可靠地知道,但在某些情况下,它肯定不能。当然,这是正确的。但是有足够的工具能够做到这一点(至少在大多数情况下是如此),如CBMC、CPAchecker、Smack等。我想知道Coverity是否能够满足我的要求。^^我还没有找到正确的方法