为什么动态分析无法涵盖程序的所有执行路径?

时间:2014-02-27 05:03:35

标签: testing code-analysis static-analysis dynamic-analysis

我是程序分析领域的新手,在阅读了这方面的一些资料后,我有些问题无法找到相应的答案。

请参阅,如果我实现了一个工具:符号执行+具体执行 就像DART

一样

然后我认为它应该涵盖所有执行路径,同时保持动态分析功能..

我被告知动态分析无法涵盖所有​​执行路径,但基本上为什么呢?我认为像DART这样的技术现在已经相当成熟......

其他人,比如模型检查,从理论上保证了100%的代码覆盖率......我是对的吗?

有人能给我一些帮助吗?谢谢!

1 个答案:

答案 0 :(得分:1)

通过一段代码的路径数量是“if”语句数量的指数。例如,如果您有一段这样的代码:

if (a) {
  // do something
}
if (b) {
  // do something
}
...
if (z) {
  // do something
}

然后有67108864个可能的代码路径,具体取决于26个布尔变量的值。