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

红薯
 红薯
发布于 2012年03月14日
收藏 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

本站文章除注明转载外,均为本站原创或编译。欢迎任何形式的转载,但请务必注明出处,尊重他人劳动共创开源社区。
转载请注明:文章转载自 OSCHINA 社区 [http://www.oschina.net]
本文标题:Coverity:开源代码比商业代码缺陷少
加载中

最新评论(10

冰力
冰力
孩子们,别梦了,商业代码质量更高,商业代码不包括外包那种垃圾代码 - -
D
D-dragon
很多商业软件的源代码根本不敢见人
SeaJones
SeaJones
好像是软文
nobody1986
nobody1986
逻辑方面的bug能检查出来么?
KrizeChan
KrizeChan

引用来自“无知的T”的评论

我是来看 2 楼的……

貌似商业软件不经常更新就不会有bug一样···
ValueError
ValueError
我是来看 2 楼的……
阿昭
阿昭
开源只要主要功能能通过,没有安全问题,就不算BUG了,而商业软件则要求要高得多,别的不说,光把兼容性引进来,开源软件就是BUG满天飞
張3.
張3.
我觉得应该是真的,但要明确一点,开源的东西学术味有时候会浓一点,商业代码比较有针对性。
卖豆浆不卖油条
卖豆浆不卖油条
这个倒是真的
返回顶部
顶部