background image

语句,控制程序退出该程序段的最内层

for、switch 或 while 语句。否则应报错。 

  

2) 类型检查:若操作符被用作不相容的操作数,应报错。 

  

3) 相关名字检查:当同样的一个名字需要出现大于等于两次的时候,必须要对这几

个地方使用的名字是否一致进行检查。

 

  

4) 作用域分析:分析元素的作用范围,保证元素不会出现使用问题。 

  

5) 一致性检查:绝大部分情况下只能定义一次对象。 

  

2.2 测试工具分析 

  

2.2.1 Klocwork 

  

Klocwork 公司综合应用近年来最先进的多种静态分析技术,基于其专利分析引擎技术,

开发了

Klocwork 测试工具。Klocwork 是一款非常优秀的软件静态分析软件。 

  它最主要的特点如下:

 

  

1) 发现软件缺陷的种类覆盖面广,既包含安全漏洞缺陷,又同时包含软件质量缺陷,

还能对编程规则、软件架构的违反情况进行分析;

 

  

2) 支持多种开发语言,可以分析 Java 和 C++/C 程序; 

  

3) 可以对软件的各种度量进行分析(包含 Halstead 程序度量、McCabe 复杂度); 

  

4) 可以全面的分析软件,既能对可视化的架构进行优化、分析,又能对软件的缺陷进

行分析;

 

  

5) 可以对千万级代码行的超大程序进行分析。 

  

6) 可以对多种主流的 IDE 开发环境提供集成; 

  针对软件运行时错误,

Klocwork 能识别数组越界、非法指针引用、非法浮点数操作、不

可达代码、无限循环等。

 

  

2.2.2 Polyspace 

  

Polyspace 是世界上首家自动检测嵌入式软件运行错误的工业化工具,不需要代码执行

和修改,不需要运行耗时的测试用例。其主要特点有:

 

  

1) 高效:可以在代码评审和测试阶段确定运行错误; 

  

2) 质量:彻底标识所有可能导致运行时错误的操作,并用不同的颜色标出来; 

  

3) 安全:处理所有的正确条件。总是考虑最坏的情景,并指出可能的运行错误; 

  

4) 产品化:PolySpace 是非侵入式的和基于源代码的。在开发过程中,使用 PolySpace

尽可能在单元和集成时检测运行错误,从而节约确认阶段的时间,不必更改过程。

 

  可以通过

PolySpace 自动检查的错误为:浮点数和整数的下/上溢出、读未初始化变量、

访问超界的数组、引用越界指针和空指针、算数运算非法(例如:负数开平方,除零错误)、
转换类型不合法、代码不可达、多线程应用中访问未保护数据的时候发生冲突。

   2.2.3 

Astree 
  

Astree 是一个可参数化设置的基于抽象解释的静态分析工具,其目标是证明用 C 语言

写的程序中不存在运行时错误。其主要特点有:

 

  

1) 在编译阶段就能测出软件的运行错误。只要是代码可编译的,就可将代码放在

Astrée 测试环境下,经过简单配置后,便可自动检查错误; 
  

2) 测试时不需要写测试用例。传统的覆盖率测试需要花费大量精力去开发测试用例,

而使用

Astrée 就不需再写用例; 

  

3) 测试时无须更多的代码插装,也不必改变开发过程; 

  

4) 分析准确性高,通过参数化设置等,可以实现“零误报”; 

  

5) 分析速度快。 

  

Astree 当前可以报告的错误包括:数组范围越界,整数被零除,浮点溢出和非法操作,

整数运算的

wrap around 行为(主要由溢出引起),以及类型转换导致的 wrap around 行为