我们在各种开源项目中发现的 10000 个 bug

为了改善我们的静态代码分析的方法论,以及改进我们的静态分析工具PVS-Studio,我们会定期地用他们验证各种各样的开源项目。我们找到了很多bug,事实证明,再牛的人也会拼写错误 / 注意力不集中,没有人能保证不犯错。即便是在Microsoft Code Contracts, Qt, Linux kernel, CryEngine, VirtualBox, LibreOffice, Firefox, Boost, Tor这些项目里,依旧如此。目前我们检测了262个项目,都是官方发布版!我们一共记录了10000个bug!

作为一个惯例,如果我们在一个项目中找到比较多的bug,我们就会写一篇文章描述这些bug。你可以在这个链接看到我们写的文章:http://www.viva64.com/en/inspections/ 。如果bug很少,我们就直接跟项目的贡献者说,让他们来处理。

当然,262个项目中找到10000个bug其实并不多,平均每个项目只有38个。但是值得注意的是,这些项目的质量差别也很大,有的项目只发现一个bug,而另外一些则包含上百个bug。

另外需要注意的是,我们的主要目的是提升自己的方法论和工具,并不是要找出尽量多的bug。我们需要找出很多有趣的例子来写文章,所以实际的bug数量应该是多于这个数目的。所以我总是奉劝为项目贡献代码的人好好测试一下自己的代码,避免提交太多的bug。在分析的时候,找到那些不可重现的bug更能够体现查错工具的优越性,但是对实际项目却没什么用,因为不可重现往往意味着无法修正。静态分析工具很重要的功能就是能够定期运行,这样它就能够在程序员编写的过程中纠错,而不是已经调试了50个小时之后才发现错误,或者等用户开始抱怨了才发现错误。

好,是时候给大家看看我们发现的10000个bug了,通过下面链接查看:

http://www.viva64.com/en/examples/

这些bug可以帮助大家完善自己团队的编码标准,给编程技巧文章提供材料,辅助提高软件可靠性的研究,等等。

文章转载自 开源中国社区[http://www.oschina.net]

时间: 2024-09-29 23:42:25

我们在各种开源项目中发现的 10000 个 bug的相关文章

Google 在 47 个开源项目中发现了 1000 多个 bug

在过去五个月中,Google 的 OSS-Fuzz 计划已经在 47 个开源软件项目中发掘了超过 1000 个 bug . OSS-Fuzz 是 Google 在去年12月推出的一个开源安全计划,针对开源软件进行持续的模糊测试,利用更新的模糊测试技术与可拓展的分布式执行相结合,提高一般软件基础架构的安全性与稳定性.项目结合了多种模糊测试技术/漏洞捕捉技术(即原来的libfuzzer)与清洗技术(即原来的 AddressSanitizer),并且通过 ClusterFuzz 为大规模可分布式执行提

superword开源项目中的定义相似规则

两个词之间的关系有同义.反义.近义(有多近?).相关(有多相关?)等等.我们如何来判断两个词之间的关系呢?利用计算机能自动找出这种关系吗?当然可以,不仅能找出来,而且还能量化出有多近和有多相关. 本文描述了superword开源项目中的定义相似规则,利用词的定义计算词和词之间的相似性.词的定义使用的是韦氏词典,同时也支持牛津词典.相似性算法使用的是word分词提供的10大相似性算法. 定义相似规则主要包括以下6步: 1.获取要计算的词的定义: String wordDefinition = My

开源项目中经常出现的七种错误

启动一个新的开源项目可能会遇到一些困难.也许你脑子里有一个很棒的想法,但是想把它们变成富有成效的.健康的.吸引人的社区还需要做很多工作.令人叹息的是,相同的错误总是被无代价的重复,出现低级错误是团队中的忌讳.下面就请跟随笔者一起,看看开源项目中经常出现的错误,并且尝试去规避它们.相信会对你的项目开发有所帮助. 1.聊天代替发送 在数以千计的开源项目中,有太多人因为松散的渠道.邮件列表问题或其它方面在一开始就陷入困境.讨论围绕着房子而展开,范围也越来越大,把许多不同的想法和考虑纳入其中.一个早期的

Palo Alto研究员称 未知攻击者使用恶意程序Dimnie攻击Github开发者 企图在开源项目中注入后门

过去几个月间,在GitHub网站上发布代码的开发者陆续遭到攻击,这些攻击都使用了一种鲜为人知却切实有效的网络间谍软件.攻击始于1月份,通过精心构造的恶意邮件吸引开发者注意,如请求他们为开发项目提供帮助或邀请他们参与有偿定制编程工作. 恶意邮件诱骗开发者下载恶意程序Dimnie 邮件中的.gz附件包含Word文档,其中嵌入了恶意宏代码.运行后,宏代码会执行PowerShell脚本,连接远程服务器,下载恶意程序Dimnie.根据Palo Alto Networks(PAN)研究员所说,Dimnie至

5个开源项目中常见的陷阱

提及开源,从软件.硬件以及理念已经越来越流行,应用形式也越发丰富.如果企业想开始一个新的开源项目,opensource网站提出的五个开源项目"陷阱"值得关注,同时即便是已经展开项目执行,通过了解无论在哪个阶段都可以有效.平稳的完成. 仅你自己支持 如果你计划发布一个开源产品,需要深刻理解"你需要的支持"的含义.不要指望社会各界来帮助你提供产品支持,每个人都会以为他们所做的事非常重要.得到千百万人的支持.同样不要指望大批社区志愿者会自发涌入你的支持论坛,帮你回答问题.

VS 2017开发ASP.NET Core Web应用过程中发现的一个重大Bug

今天试着用VS 2017去开发一个.net core项目,想着看看.net core的开发和MVC5开发有什么区别,然后从中发现了一个VS2017的Bug. 首先,我们新建项目,ASP.NET Core Web应用程序,如图: 新建好后,我们按照习惯,在controller文件夹上面,点击鼠标右键,添加控制器...,出现了如下界面:   这个对话框什么意思呢?怎么会提示添加依赖项呢?按理来说,我们直接调试运行,项目就跑起来了!!! 先不管他,我们直接点击添加,然后稍等一会儿,等他添加依赖.完成后

100个开源C/C++项目中的bugs(一)数组和字符串处理的错误

from:http://www.oschina.net/question/1579_45444 100个开源C/C++项目中的bugs 摘要 介绍 发现错误样本的各类开源项目 数组和字符串处理的错误 未定义行为 与运算符优先级相关的错误 格式化输出错误 代码打印错误例子 不正确的使用基本函数和类 无效代码的例子 总为 true 或 false 的条件 代码漏洞 复制粘贴 逾期空指针检查 杂项 摘要 本文演示静态代码分析的能力. 提供了100个已在开源C/C++项目中发现的错误例子给读者研究.所有

开源 学习-怎样参与到一个开源的项目中去?

问题描述 怎样参与到一个开源的项目中去? 本人是一名大四的学生,最近没有特别多的课程了,所以时间比较多,希望能够参与到一个适当的开源项目中去,能够学习到更多的东西.但是我目前还不了解,应该怎样去参与一个开源的项目中,希望得到大家的指教,谢谢大家了! 解决方案 可以在网络上找相关的群体加入,一般都会流下邮件等信息,比如说你可以在git.oschina.net中查找

来自微信团队的 6 个开源项目

从GitHub上可以看出,到目前为止,由腾讯微信团队发起的开源项目已经有6个,并且这其中大部分都是在2016年开源的,领域涉及移动.数据库.基础类库.框架.中国大公司的开源曾经给社区留下不好的印象,比如有人就这么说,大公司的开源,开源也就意味着结束.也有人说,大公司的开源大部分都是KPI项目,开源与业务不能相得益彰,所以根本无法持续投入. 相比来说,Facebook就是互联网公司里的开源大户,目前他们的开源项目已经有近300个.对于为什么要发布开源项目,Facebook开源项目负责人也曾经解释过