你们中有多少人在开发过程中使用静态代码分析工具,使用该工具时遇到的误报数量是多少?这是为了研究。
5 回答
您可以尝试CppDepend,它使用 CQLinq 一种代码查询语言来定义规则。您可以轻松自定义规则以使其适应您的需求并删除误报检测。
作为一个非常粗略的经验法则,我估计一个好的商业级静态分析工具会有 20% 的真正误报,并且会发现大约 20% 的真正错误。在实践中更相关的是,报告的缺陷中有更高的百分比会被错误地归类为误报,这通常是因为开发人员正确或错误地认为错误不太可能发生。(FindBugs 对此有一个“几乎无害”的分类。)在我的 Dobb 博士的文章http://pobox.com/~flash/Deploying_Static_Analysis.pdf中进行了讨论和参考。
认真的研究不仅会比较误报率与真阳性率(精确度),还会比较误报率,即工具未报告的问题(召回率)。我希望您会发现,误报较少的工具会有更多的误报。
找到假阴性并非易事。有测试套件(如https://www.nist.gov/publications/juliet-11-cc-and-java-test-suite),但这是合成代码,而不是具有多级间接和复杂的生产级代码逻辑流。
祝你好运!
我使用 Coverity 已有 2 年了。到目前为止,没有得到任何误报。
以前我使用 Code Sonar。我偶尔会得到误报。
我逐步添加了规则(通过项目特定的配置),因此很少有误报(或者我知道如何处理的已知误报)。如果你只是采用标准的 FingBugs 规则,就会有太多的误报,这就是人们普遍停止使用它的原因。除此之外,我还添加了 FindBugs contrib 规则。
对于 JavaScript,我使用 jsHint。
误报取决于主动规则......我担心你的研究会因为这个事实而变得相当困难。