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

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

译者 金毅 多年来服务于欧美软件外包行业从事管理工作,对软件工程、方法学等在外包业的运用和CMMI实施略有感悟。

This entry was posted in Case. Bookmark the permalink.

发表评论

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / 更改 )

Twitter picture

You are commenting using your Twitter account. Log Out / 更改 )

Facebook photo

You are commenting using your Facebook account. Log Out / 更改 )

Google+ photo

You are commenting using your Google+ account. Log Out / 更改 )

Connecting to %s