写点什么

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

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

关注

评论

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

借助 Kubernetes 三步开启云原生之旅

NGINX开源社区

nginx NGINX Ingress Controller NGINX Kubernetes Gateway

NFTScan 正式上线 Linea NFTScan 浏览器和 NFT API 数据服务

NFT Research

NFT\ NFTScan Linea

业务开发“银弹” ——低代码平台建设

互联网工科生

软件开发 低代码 业务开发

赛桨PaddleScience v1.0正式版发布,飞桨科学计算能力全面升级!

飞桨PaddlePaddle

人工智能 百度 paddle AI 飞桨

企业数智化国产替代,用友BIP的四大优势

用友BIP

国产替代

情景规划与财务建模,运行全面预算管理的新机制

智达方通

智达方通 全面预算管理 企业财务计划与分析 财务建模

一文读懂React中的RSC是什么?

汽车之家客户端前端团队

Python案例分析|使用Python图像处理库Pillow处理图像文件

TiAmo

Python 数据分析 图像操作

OpenCloudOS开源社区产品完成阿里云PolarDB数据库开源产品兼容适配

阿里云数据库开源

polarDB PolarDB-X PolarDB for PostgreSQL 阿里云PolarDB

如何避免在C#中出现混乱代码

互联网工科生

代码 代码编写

创新 = 颠覆?AI创新如何做大蛋糕

华为云开发者联盟

人工智能 华为云 华为云开发者联盟 企业号 7 月 PK 榜

Oracle数据库知识图谱正式发布,一起搭建知识体系完善知识架构

墨天轮

MySQL 数据库 oracle postgresql 数据库优化

软件测试/测试开发丨学习笔记之 Python 函数

测试人

Python 程序员 软件测试 函数

Flink 遇见 Apache Celeborn:统一的数据 Shuffle 服务

Apache Flink

大数据 flink 实时计算

标准化,企业财务共享中心的灵魂内核(上)——建设路径避雷指南

用友BIP

财务共享

上海市静安区财政局领导带队调研合合信息,政企共话科技创新

合合技术团队

文字识别 合合信息 商业大数据

开发者评价:Serverless 容器最值得推荐的能力是什么?

阿里巴巴云原生

阿里云 Serverless 容器 云原生

对话网心科技李浩|携“边缘云+AI”之势,拓展算力业务场景落地

网心科技

Flink CDC & MongoDB 联合实时数仓的探索实践

Apache Flink

大数据 flink 实时计算

PCB反复评审难题,终极解决办法有了?

华秋PCB

工具 PCB PCB设计 布线 器件选型

用微服务架构推进企业数字化转型升级

力软低代码开发平台

软件测试/测试开发丨接口测试之Postman 安装与使用

测试人

Python 程序员 软件测试 Postman 接口测试

用友BIP:企业数智化与信创化的完美结合

用友BIP

国产替代

装备制造行业人力资源数智化挑战,你遇到了几条?

用友BIP

人力资源 制造

铜锁 SM2 算法性能优化实践(一)|综述

铜锁开源密码库

密码学 隐私保护 数据安全 密码学和算法 国密

看大国重器用友BIP如何扛起中国企业数智化转型的使命担当

用友BIP

国产替代

GaussDB技术解读丨高级压缩

华为云开发者联盟

数据库 后端 华为云 华为云开发者联盟 企业号 7 月 PK 榜

麒麟云容器运行时优化之容器创建优化

麒麟云

Kubernetes 容器云 银河麒麟 云原生操作系统 容器运行时

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