、Coverity概述
Coverity公司是由一流的斯坦福大学的科学家于2002年成立的,产品核心技术是1998年至2002年在斯坦福大学计算机系统实验室开发的,用于解决一个计算机科学领域最困难的问题,在2003年发布了第一个能够帮助Linux、FreeBSD等开源项目检测大量关键缺陷的系统。Coverity公司推出的综合开发测试平台,基于新一代的不做代码规则检查、只专注检测代码中的Bug静态分析技术,可以更好地帮助开发人员在写代码的时候就能发现并修复安全缺陷,缩短产品上市时间和降低风险。Coverity是唯一位列IDC前10名软件质量工具供应商的静态分析工具厂商,被VDC评为静态源代码分析领域的领导者。
二、使用Coverity的优势
从2006年开始,Coverity与美国国土安全部一起,研发了Coverity SCAN项目,来保证开源软件的安全性和完整性。Coverity SCAN分析了超过290个开源项目,包括Linux、Apache、PHP和Android,以下表格展示出了开源软件中最常出现的缺陷类型,商业软件也与之类似。
SCAN项目中的出现频率 风险程度
空指针引用 27.60% 中
资源泄露 23.19% 高
错误的表达式 9.76% 中
未初始化变量 8.41% 高
释放后使用 5.91% 高
缓冲区溢出 5.52% 高
像空指针引用、资源泄漏和缓冲区溢出等缺陷类型常常会带来严重的质量和安全风险。使用Coverity,相比于传统的测试方法,会更易于发现这样的缺陷。
在开发阶段使用Coverity,一方面开发人员可以对产品的质量更有信心,另一方面,测试人员可以把更多的精力放在业务逻辑的测试上面,而不是花大量精力去确认一些要在特殊条件下才可能出现的BUG(典型的如空指针引用),从而可以提高测试的效率。
三、Coverity典型缺陷说明
1、空指针引用(Null pointer dereferences)