静态代码分析的稀疏度和覆盖率工具有何不同?

时间:2014-10-14 16:08:45

标签: c static-code-analysis coverity

我是linux内核的新手。我想知道稀疏和覆盖率工具有何不同? 因为两者都用于静态代码分析。 那么如何确定哪种工具更好?我所知道的唯一区别是:稀疏是开源的,但是为了覆盖我们应该有许可使用它。

是否有任何特定的错误集只能通过覆盖/稀疏来追踪?

以下是Coverity报告此问题的代码段,但Sparse不会:

foo(){

     int x;
     scanf("%d", &x);

     switch(x){

               case 1: printf("CASE 1");
               case 2: printf("CASE 2");
                       break;
               default:
     }
}

在上面的例子中; Coverity将在案例1 中报告缺少中断语句的警告。但是,稀疏不是吗?

但是,这两种工具都用于软件的静态代码分析。 请分享任何可以突出显示这两种工具的加号和否定的文档。

1 个答案:

答案 0 :(得分:1)

工具的不同之处在于它们检测到的内容以及检测它们的程度。作为一般规则,始终建议在源代码上运行尽可能多的工具。当然,关于这样做有很多考虑因素。首先是拥有和维护任何一种工具的成本。

大牌(Fortify,Code声纳,Coverity,Klockwerk等)购买起来都很昂贵,而且每年的维护成本很高。从好的方面来说,它们都倾向于比开源工具更好地进行预制。

任何工具,无论是开源还是专有工具都需要“关心和喂养”,创建自定义规则,修改报告的内容等等。在我看来,这应该由一位专职的高级程序员来完成。精通安全编程的理论和实践。

工具报告的评估也应该由精通安全的程序员/分析师完成。这里采取的方式是,熟练的程序员不一定是安全的程序员。成为一名安全的程序员还有其他知识和技能。

有关各种工具的简要概述,我建议您查看位于here的各种SAMATE(静态分析指标和工具评估)报告。虽然我不相信SAMATE团队曾评估过“稀疏”。

我知道这些是关于使用静态分析工具的更多一般性,但鉴于目前的技术水平,我怀疑这些可能是你将得到的最好的。另外,您可以查看此State of the Art软件保障报告。

相关问题