写点什么

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

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

关注

评论

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

Rhino 8 for Mac(犀牛3D建模软件)

iMac小白

Rhino8激活版 Rhinoceros8 Rhino 8下载

使用pandas高效读取筛选csv数据

霍格沃兹测试开发学社

YashanDB V23.2 LTS发版

Geek_2d6073

npm命令完整使用指南

霍格沃兹测试开发学社

Docker从入门到精通:Docker 容器数据卷详解

霍格沃兹测试开发学社

在钉钉AI Agent 商店,寻找未来TOB 应用的答案

ToB行业头条

架构实战营 - 模块二 - 作业

小畅

如何在 Windows 上安装SSMS,保姆级教程来了!

霍格沃兹测试开发学社

卫星地面站监测系统仿真

DevOps和数字孪生

卫星 协同仿真

出海扩建扩产,光伏制造可复用的数据“最佳实践” | 数据要素 × 工业制造

奇点云

奇点云 数据要素 工业制造 光伏产业

Things 3.20.5中文免激活版 mac日程和任务管理工具

iMac小白

Things 3 Things下载

【论文速读】| 针对红队攻击和防御大模型的攻击提示生成

云起无垠

澳鹏中国大模型智能开发平台4大优势

澳鹏Appen

人工智能 数据 数据集 数据标注 大模型

ETLCloud平台组件模版的使用技巧

RestCloud

组件 ETL 模板使用

程序员转技术管理要做哪些努力?

伤感汤姆布利柏

Apache Flink 中作业图与执行图的深入解析

木南曌

flink 实时计算

ClkLog实践中的挑战:如何设计和实施有效的埋点指标

ClkLog

开源 数据分析 开源软件 埋点分析系统

把 KubeBlocks 跑在 Kata 上,真的可行吗?

小猿姐

数据库 云原生 Kata Containers

以数智,赋医道:读懂医疗行业的智能化升级

脑极体

AI

Stable Diffusion中的embedding

程序那些事

人工智能 程序那些事 openai

【论文速读】|大语言模型(LLM)智能体可以自主利用1-day漏洞

云起无垠

智己汽车与火山引擎在模型应用及算法领域达成深度合作

新消费日报

MySQL 开源到商业(二):开源骇客沦为大厂社畜

小猿姐

MySQL 数据库

Parallels Desktop 19 for Mac虚拟机 19.1.0

iMac小白

Parallels Desktop 虚拟机 Parallels Desktop下载 Parallels Desktop19

UI自动化测试工程实践

智在碧得

自动化测试 UI自动化测试 UI自动化 技术实践 UI自动化例子

还没用上 Llama3? 一条命令集成到你的应用!

Jade@pluto-lang

AWS SageMaker LLM #LangChain Llama3

这10款VS Code神仙插件,嵌入式程序员必备

不在线第一只蜗牛

「白嫖」开源的后果就是供应链攻击么?| 编码人声

声网

详解数仓的向量化执行引擎

快乐非自愿限量之名

Python 人工智能 数据库 算法

博睿数据亮相GOPS全球运维大会,Bonree ONE 2024春季正式版发布!

博睿数据

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