静态分析:健全与不健全

Static analysis: sound vs unsound

我已经开始使用静态分析了。在阅读了几篇论文后,我仍然不清楚一件事。正确的和不正确的静态分析的正确定义是什么?

问题是我在不同的地方发现了相互矛盾的定义: “......声音分析模拟程序的所有行为。” http://blog.errstr.com/2013/01/17/on-static-analysis/

"Unsound tools/Formal tools: These tools report all defects checked for & produces no false negatives." http://techvolve.blogspot.de/2014/03/static-analysis-overview.html

http://techvolve.blogspot.de/2014/03/static-analysis-overview.html中的定义是相反的。应该是:

  • 不可靠的工具:这些工具牺牲了发现错误的最大化,以将误报最小化到合理的水平。因此,这些工具是故意不精确和不可判定的——这意味着可能存在误报和漏报。
  • 完善的 tools/Formal 工具:这些工具报告所有已检查的缺陷并且不会产生漏报。这些相对较慢。但是,会产生大量误报。

即使您省略了混淆,该页面也不是特别好。 “不可判定”一词在第一段中仍然以非常规的方式使用。 (问题要么是可判定的,要么是不可判定的。工具既不是一个也不是另一个。)

你最好从你的书目搜索中忽略这篇文章。