BT

如何利用碎片时间提升技术认知与能力? 点击获取答案

Coverity:开源代码比商业代码缺陷少

| 作者 Abel Avram 关注 7 他的粉丝 ,译者 金毅 关注 0 他的粉丝 发布于 2012年3月13日. 估计阅读时间: 3 分钟 | 如何结合区块链技术,帮助企业降本增效?让我们深度了解几个成功的案例。

Coverity的一项调查发现,在代码量相当的情况下,使用了static analysis的开源代码通常比商业私有代码的缺陷少。

Coverity Scan是一个关注开源代码完整性的公私合营的研究项目,于2006年由美国国土安全部(U.S. Department of Homeland Security)发起并与斯坦福(Stanford)大学合办。在过去的五年中,Coverity Scan采用Coverity公司的static analysis工具评估和改进了300多个开源项目的代码质量。比如在2006年,此工具就帮助开源代码修复了6000多个Bug。

近期发布的2011 Scan报告(PDF)显示,开源项目的缺陷通常比商业私有项目少。该报告分析了2011年期间最活跃的前45个开源项目的代码,总共37,000,000多行代码,并且只有影响级别为中或高的缺陷参与采样分析。调研数据不涉及QA测试或后续发布过程中发现的缺陷。参与Coverity Scan计划的所有项目的代码都经过Coverity Static Analysis的测试和分析。

参与分析的开源项目的代码行数大部分在100k-500k行之间,只有2个项目超过了7M行,总代码量为37,446,469行,平均每个项目约832,000行。开源项目的缺陷率为每千行代码0.45个缺陷,而对于那些没有采用自动测试工具比如static analysis的公司,行业平均值大约是每千行代码1个缺陷。

Coverity Scan覆盖了14种缺陷,开源代码中位列前五的缺陷是:

缺陷 数量 影响

控制流问题

3,128

空指针异常

2,818

未初始化的变量

2,051

内存越界

1,551

错误处理方面的问题

1,535

调查同时覆盖了41个使用了static analysis的商业私有项目。这些项目规模各异,也来自不同领域,总共超过300M行代码,平均每个项目代码量约有7.4M行。结果显示,在项目规模相当的情况下,开源代码的质量与私有的持平。例如,Linux 2.6代码大约有7M行,缺陷密度为0.62,私有代码则大约为0.64。通常Linux的缺陷密度比较低,但其代码量在2011年从5.3M增至6.8M。作为参考,PHP 5.3和PostgreSQL 9.1的缺陷密度值则为每千行代码0.2和0.21个缺陷。

综合上述,此次调查清晰地表明,采用自动测试,包括static analysis,能够很好地减少代码缺陷的数量。

查看英文原文:Coverity: Open Source Code Has Fewer Defects than Commercial One

评价本文

专业度
风格

您好,朋友!

您需要 注册一个InfoQ账号 或者 才能进行评论。在您完成注册后还需要进行一些设置。

获得来自InfoQ的更多体验。

告诉我们您的想法

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我
社区评论

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

讨论

登陆InfoQ,与你最关心的话题互动。


找回密码....

Follow

关注你最喜爱的话题和作者

快速浏览网站内你所感兴趣话题的精选内容。

Like

内容自由定制

选择想要阅读的主题和喜爱的作者定制自己的新闻源。

Notifications

获取更新

设置通知机制以获取内容更新对您而言是否重要

BT