BugFinder无法找到NTL吗?

1视图(30天)
奥利弗•穆勒
奥利弗•穆勒 2021年1月28日
编辑: Anirban 2021年1月29日
我知道BugFinder分析不应该CodeProver详尽的,但是即使是最简单的形式的非终止循环在结果不明显。这是预期行为吗?
在文件中我分析使用一些工具,
(g_tj.rounds);
可以不终止,因为g_tj不是明显的波动,因此编译器可以缓存的访问。这当然是在CodeProver标记为红色的检查,但即使是免费ccpcheck标志着这是可疑的。
从BugFinder图像中可以看到结果,提示似乎推测不终止,但线并不标志着(的)在输出结果,即使所有BugFinder检查启用。
我缺少什么?

接受的答案

Anirban
Anirban 2021年1月29日
编辑:Anirban 2021年1月29日
你好奥利弗,
代码验证可以发现这和其他更复杂的情况下终止循环的。下面错误查找器使用相同的引擎(不同速度分析的基本假设)和作为工具提示你已经注意到了,虫子仪也可以检测这个简单的无限循环。然而,不提供此功能的检查错误发现者。
在实践中,无限循环,如你点的也会表现为循环体中的一个问题(例如,一个在一些数组访问越界数组索引或溢出一些数学操作),和错误发现者可以探测到这些问题。因此,检查器在循环语句本身并不总是必要的。
在大多数情况下,它是安全的假设错误发现者将发现更简单的情况下,虽然代码验证,因为它的详尽分析,会发现更复杂的问题的例子。例如,两种产品的数组索引检查程序。s manbetx 845终止循环似乎是一个例外的情况目前在错误发现者并没有一个明确的检查。这种情况可能会改变在将来的版本中。

更多的答案(0)