写点什么

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

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

关注

评论

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

YashanDB ARRAY_LENGTH函数

YashanDB

2025 程序员薪资大洗牌:掌握这 3 个 AI 核心技术,薪资瞬间翻倍

飞算JavaAI开发助手

编程 AI 开发者

YashanDB ARRAY_NDIMS函数

YashanDB

YashanDB ARRAY_POSITION函数

YashanDB

YashanDB ARRAY_REMOVE函数

YashanDB

YashanDB ARRAY_TO_STRING函数

YashanDB

YashanDB ARRAY_REPLACE函数

YashanDB

YashanDB ASIN函数

YashanDB

YashanDB ATAN2函数

YashanDB

YashanDB BIN函数

YashanDB

看图学会Kubernetes

Marvin

Docker Kubernetes k8s 学习笔记 虚拟化技术

为什么mac文件拖拽不了 mac文件拖不进硬盘里 macbookpro文件无法拖进移动硬盘

阿拉灯神丁

mac三指操作设置 NTFS 磁盘管理器 Tuxera NTFS2024 文件拖拽工具 Mac文件管理

YashanDB AVG函数

YashanDB

华为云生态大会2025前瞻:为伙伴们打通行业智能跃迁通路

Alter

单月飙涨 300%!揭秘MSKE三大核心优势

MSKE铭文

#区块链 比特币行情 MSKE铭文 比特币铭文

SvelteKit 最新中文文档教程(19)—— 最佳实践之身份认证

冴羽

前端 前端框架 React Svelte SvelteKit

Easysearch VS Opensearch 数据写入与存储性能对比

极限实验室

easysearch OpenSearch

2025 年 AI 编程新风向:从智能辅助到自主开发的跨越

飞算JavaAI开发助手

编程 AI 代码

想考试PMP的同学看过来

Marvin

项目管理 pmp IT PMP Certification PMP考试

低代码困局:方法论迷途与破局之道

代码制造者

低代码

iVX如何拿捏中大型工程建筑行业砼管理系统

代码制造者

无代码开发 低代码开发中大型系统

YashanDB ARRAY_APPEND函数

YashanDB

YashanDB ASCII函数

YashanDB

25亿专项激励金!百度联盟发布“智跃计划”,开放四大能力赋能开发者

极客天地

流媒体分享系列之用户画像

Marvin

广告 流媒体 用户画像 剧情

使用 Rust 代码实现 FFmpeg 滤镜:简化音视频处理的新方法

Yeauty

YashanDB ARRAY_UPPER函数

YashanDB

YashanDB ATAN函数

YashanDB

表 vs 物化视图:核心区别与选型指南

镜舟科技

分析型数据库 StarRocks 物化视图 实时分析 MPP 架构

看一个有经验的程序员如何学习一门新语言

Marvin

flutter 编程 前端 跨平台 学习分享

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