【问题标题】:Coverity scan - annotation or model to analyse reachability of a certain point in programsCoverity scan - 注释或模型来分析程序中某个点的可达性
【发布时间】:2017-10-07 16:45:16
【问题描述】:

给定以下程序:

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

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

让 non_det_float() 成为一个可以返回任何浮点数的函数。 (所以是一个不确定的浮点数)

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

问题:

  1. 覆盖扫描是否能够分析 some_error() 是否可达?或者简单地说“some_error() 是死代码”?

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

如果有任何可能的话,很高兴知道如何做。 我们必须定义一个模型吗?我们必须使用一些注释吗?

提前致谢。

【问题讨论】:

    标签: c coverity


    【解决方案1】:

    这(我认为)等同于停止问题,因此无法确定(即,始终存在无法知道 some_function() 是否被调用的定义)。

    这并不是说它不能频繁地猜测或可靠地知道,但必然会有它不能的情况。

    【讨论】:

    • 当然,这是正确的。但是有足够的工具能够做到这一点(至少在大多数情况下),比如 CBMC、CPAchecker、Smack 等。我想知道 Coverity 是否能够满足我的要求。 ^^我还没有找到正确的方法,但是
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-04-28
    • 1970-01-01
    • 2018-02-23
    • 2017-09-19
    • 1970-01-01
    • 2019-02-22
    • 1970-01-01
    相关资源
    最近更新 更多