写点什么

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

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

关注

评论

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

易周金融分析 | 银保监会发文规范养老金融;宁波银行拿下消金牌照

易观分析

金融 银行

大数据培训拉链表优化实践分享

@零度

数据仓库 大数据开发

ArrayList源码分析-删除

zarmnosaj

5月月更

Java初学01:学习路线

爱好编程进阶

Java 程序员 后端开发

网站开发进阶(六十六)CSS3 - 新单位vmin/vmax与旧单位ex/ch使用详解

No Silver Bullet

Ex 5月月更 vmin vmax ch

《Mybatis 手撸专栏》第8章:把反射用到出神入化

小傅哥

小傅哥 mybatis 源码学习 反射代理 技术框架

java高并发系列 - 第28天:实战篇,微服务日志的伤痛

爱好编程进阶

Java 程序员 后端开发

C语言_文件操作相关练习题

DS小龙哥

5月月更

2021 最新版 Spring Boot 速记教程

爱好编程进阶

Java 程序员 后端开发

Java初学者:String类

爱好编程进阶

程序员 后端开发

leetcode38

爱好编程进阶

程序员 后端开发

vivo 万台规模 HDFS 集群升级 HDFS 3.x 实践

vivo互联网技术

大数据 hadoop hdfs

手把手教你使用 ESLint + Prettier 规范项目代码

CRMEB

如何打造一个爆款H5?

源字节1号

软件开发 H5 小程序开发

3年CRUD经验的Java程序员,金九银十想要跳槽,面试却遭到屡屡碰壁

爱好编程进阶

Java 程序员 后端开发

Java开发的凡尔赛你不懂,晒出12月工资条,直言太辛苦

爱好编程进阶

程序员 后端开发

Liga译文 | 浅析「产品思维」

LigaAI

产品思维

一文看懂——什么是Bonree Server?

博睿数据

Server 博睿数据 IT运维

OpenHarmony源码解析之电话子系统——通话流程

OpenHarmony开发者

OpenHarmony 电话子系统

IDEA 2020

爱好编程进阶

Java 程序员 后端开发

同域下跨应用登录问题

混合应用开发 融合登录 统一登录

面试突击48:死锁的排查工具有哪些?

王磊

Java java面试

Kubernetes下web服务的性能测试三部曲之二:纵向扩容

程序员欣宸

Java Kubernetes 5月月更 Jemter

听说你想学Python爬虫?我从零教你啊

梦想橡皮擦

5月月更

java培训千万数据提升速度的 SQL 优化方案

@零度

MySQL JAVA开发

浅谈 SAP UI5 框架对一些其他前端框架比如 Vue 的支持

汪子熙

JavaScript 前端开发 SAP Fiori 5月月更

Kafka的体系结构

爱好编程进阶

Java 程序员 后端开发

Java多线程学习

爱好编程进阶

Java 程序员 后端开发

Java小白翻身教程-链表结构与编译大法(1)

爱好编程进阶

Java 程序员 后端开发

Java必备技能之源码篇(Nginx源码研究之nginx限流模块)

爱好编程进阶

Java 程序员 后端开发

JUC常见的锁

爱好编程进阶

程序员 后端开发

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