写点什么

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

  • 2012-03-12
  • 本文字数:911 字

    阅读完需:约 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

2012-03-12 06:473010
用户头像

发布了 114 篇内容, 共 36.7 次阅读, 收获喜欢 2 次。

关注

评论

发布
暂无评论
发现更多内容

源自Google的招聘哲学:你真的了解招聘吗?

伴鱼技术团队

技术管理 技术人 文化 招聘 人才

深入理解JVM垃圾回收机制 - 引用类型

Skye

深入理解JVM 强引用 软引用 弱引用 虚引用

架构师训练营第三周 - 总结

Larry

总结03-代码重构

梦子说

极客大学架构师训练营 课程总结

代码重构总结

Lane

极客大学架构师训练营

区块链技术可简化房地产交易流程

CECBC

智能合约 区块链技术 房地产业

架构师训练营 -week3- 总结

Geek_5a6ca3

昆明全国领先打响“公共资源交易+区块链”新生态

CECBC

区块链技术 存证 昆易链

架构师训练营第三周总结

架构师 极客大学架构师训练营

架构师训练营-第三周-20200624-单例模式和组合模式

丁亚宁

极客大学架构师训练营 课程作业

组合模式实现树结构

新世界

架构师训练营第三周学习总结

Bruce Xiong

架构师训练营第三周学习总结:面向对象设计和设计模式

hifly

设计模式 极客大学架构师训练营 OOD SOLID 策略模式

架构师训练营-第三周-20200624-学习总结

丁亚宁

极客大学架构师训练营

第三周作业:设计模式

Larry

课堂作业 week3

Dennis

第三周学习总结

G小调

一周信创舆情观察(6.15~6.21)

统小信uos

新基建 信创 matlab 舆情

架构师训练营——第三周学习总结

jiangnanage

架构师训练营 - 作业 -3- 设计模式

superman

极客大学架构师训练营

第三周设计模式作业

插入排序

wjchenge

插入排序

Week3学习总结

熊威

架构师课程第三周总结

dongge

第三周作业

架构师之面向对象的设计模式

彭阿三

架构师训练营 -week3- 作业

Geek_5a6ca3

设计模式-单例与组合

ashuai1106

架构师 极客大学架构师训练营

开源项目中的设计模式

dony.zhang

架构师训练营第三周总结

王鑫龙

我嗅到了数据开发工程师的危机

Geek_6rptuk

大数据 数据仓库 数据分析 数据开发

Coverity:开源代码比商业代码缺陷少_软件工程_Abel Avram_InfoQ精选文章