2天时间,聊今年最热的 Agent、上下文工程、AI 产品创新等话题。2025 年最后一场~ 了解详情
写点什么

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:473330
用户头像

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

关注

评论

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

第2周 学习总结

sunpengjian

架构师训练营 No.2 周总结

连增申

架构师训练营week2 命题作业

Geek_z9dmvw

极客大学第二周作业

方堃

极客大学

第2周 架构师实现自己架构目标的主要手段

陆不得

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

狂奔嘀兔纸

极客大学架构师训练营

架构师训练营第二周作业

15359861984

极客时间第 0 期架构师训练营第二周作业

2流程序员

第二周作业

Geek_2b3614

第二课作业

lwyanhao

解决 Jenkins 中使用代理来执行 npm install 的问题

jerry.mei

Docker DevOps 运维 jenkins

第三课 容我三思

Geek_bobo

第二周作业 - 命题作业

molly

极客大学架构师训练营

第二周作业

孙强

第二课学习总结

lwyanhao

架构师课程第二周总结

dongge

Week02总结

leis

第二周总结

孙强

架构师训练营第二周总结

草原上的奔跑

第二周作业

nihuihua

架构师训练营总结 -2

River Tree

架构 总结 软件设计原则

设计模式与设计原则(第二周总结)

麻辣

架构师训练营第 02周—— 练习

李伟

极客大学架构师训练营

week2-依赖倒置原则&接口隔离原则

暖丶冬

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

Frode

极客大学架构师训练营

Wireshark的使用与数据分析(三)--显示过滤器

姬翔

Wireshark

【第二周】命题作业——软件设计原则

三尾鱼

面向对象 极客大学架构师训练营

Homework-依赖倒置原则的理解

River Tree

Homework 依赖倒置原则

架构师训练营第二周总结

好名字

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

第二周学习笔记

方堃

学习

架构师训练营-Week 02 命题作业

华乐彬

极客大学架构师训练营 设计原则

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