PGRelief使用指南2014(windows版)

1 PGRelief的安装 

硬件方面:CPU:Intel系列的在PIII 1G或者以上即可;SPARC的在300MHZ以上的

即可。内存:推荐为1G以上内存。 

软件方面:目前GUI版本的PgRelief可以运行在如下软件平台: 

Windows2000/XP 日文版本 

Redhat Linux 7.3/9.0 日文版本 

Solaris 7/8/9 日文版 

2 PGRelief界面版的使用 

使用PGRelief进行静态分析的过程基本分为四步:创建分析项目、配置分析选项、进行分析、查看分析结果  。

2.1 创建分析项目

创建新项目 :点击主文件 ->新建项目

设置项目信息 

包括如下内容: 

设置项目名 

设置项目文件存放路径 

说明项目概要信息 

选择分析对象代码 (选择要对哪些源代码进行解析。目前PgRelief只支持对C/C++代码的检查)

2.2 配置分析选项

配置分析选项是整个分析过程中比较困难和麻烦的一步,只有配置正确,才能使PGRelief正确分析代码。

 PGRelief使用指南2014(windows版)

其中,必须要设置编译、宏定义、头文件路径。

2.2.1 设置编译器 

        由于不同的编译器以及不同的操作系统对 C/C++语言中的一些细节行为的处理是不同

的,因此必须根据被分析代码原先的开发环境(操作系统和编译器),在PGRelief中选择相

应的编译器选项。 

 PGRelief使用指南2014(windows版)

2.2.2宏设置

在这里可以定义或者取消定义一些宏,如下图所示: 

 PGRelief使用指南2014(windows版)

一般而言这里是不需要特别进行设置的,但是如果在编译程序时定义了一些

影响到程序编译的重要的宏,则需要在这里加以定义,如在linux下makefile

里面定义的宏。

 

2.2.3标准头文件和用户自定义头文件

 PGRelief使用指南2014(windows版)

用户自定义头文件 :用户头文件目录的设定 ,是需要用户自己手动添加:当前解析的cpp 或者c 文件,所要用到的所有的用户自定义的头文件的路径。注意,不能有遗漏。

标准头文件 :标准头文件目录的设定类似于用户头文件目录的设定,是需要用户自己手动添加:当前

解析的cpp 或者c 文件,所要用到的所有的标准库的头文件的路径。注意,不能有遗漏,并且要有先后次序。

2.2.4 其它

  除了以上三项是必须之外,剩下的选项是可选的。用户可以根据自身的要求,并结合帮助

文档,进行更加详细的,符合自己要求的设置。

2.3 进行分析

分析的步骤 

在完成对分析选项的配置后,就可以开始进行解析了。 对一个项目的解析包括两个阶段: 

单文件分析(在这个阶段会逐个对项目中的每个文件进行分析);文件间分析(在所有文件的单文件分析都完成的情况下,将所有文件的全局信息连接起来进行分析)。

分析的方式 

用户可以选择多种方式进行解析: 

全体解析 :对当前项目下所有文件进行解析,包括单文件分析和文件间分析 

选择解析 :对选定的一个或者多个文件进行解析,此时仅仅进行单文件分析 

差分解析 :对项目中所有还没有分析的文件进行分析,并最后执行文件间分析。

分析错误的解决 

一般来说,文件分析中断主要是由头文件找不到或者源文件不符合C/C++标准导致的。根据

我们的经验,总结了以下几种错误情况:

中断 

中断原 

解决方 

找 不 到

头文件 

忘记添加头文件 

添加头文件 

文件中以 #include <****.h> 格式包

含用户编写的头文件 

根据头文件被引用的格式,应该把该头文件添加到标准头文件中 

头文件是以相对路径形式包含的,如

#include "****.h" 

 系统把设置的头文件路径做为当前路径,

需要重新设置头文件路径 

                                        注意:由于头文件配置错误引起的中断,需要重新配置头文件。

2.3.4 其它解析操作 

保存解析信息 :参见下图: 

 PGRelief使用指南2014(windows版)

2.4 查看分析结果

可以通过以下2种方式查看指摘信息:根据指摘号来查看指摘信息;根据指摘出现的文件来查看指摘信息。 

其它操作: 

查看指摘的源文件处 :选中一条指摘信息 --> 点击主菜单 打开pgr浏览,系统会自动定位到指摘的位置 

3 PGRelief命令行的使用

         3.1 配置分析选项

3.1.1设置编译器

-K    

         指定编译器。

         用法:

                   pgr -K GNU/GCC3 a.cc

                  [支持的编译器一览]

公司

编译器

[DIAB DATA Company]

DIABDATA/DCCANSI 、DIABDATA/DCCKANDR、DIABDATA/DCCSTRICT、DIABDATA/DCC

[FUJITSU Products

FUJITSU/FCC401、FUJITSU/FCC401C、FUJITSU/FCC401、FUJITSU/SOFTUNEF2MC16B

FUJITSU/SOFTUNEFRB、FUJITSU/SOFTUNEFR

[GNU Products]

GNU/GCC、GNU/GCC3、GNU/GCC3_C90、GNU/GCC4、GNU/GCC4_C++03、GNU/GCC3_C90

[Microsoft  Visual  C++ Compiler]

MS/VC1、MS/VC4MFC、MS/VC4、MS/VC42、MS/VC42MFC、MS/VC5、MS/VC5MFC、MS/VC6、MS/VC6MFC、MS/VC6WIN64、MS/VC2003、MS/VC2003MFC、MS/VC2005、MS/VC2005MFC

MS/VC2008、MS/VC2008MFC、MS/VC2010、MS/VC2010MFC、MS/VC2010CLR

[Mentor Graphics Japan Co.Ltd. Products]

MGJ/MRIPC、MGJ/MRISUN

[HITACHI Products]

HITACHI/SH、HITACHI/H8

[RENESAS company]

RENESAS/78K0R、RENESAS/740、RENESAS/7770、RENESAS/H8——300、RENESAS/H8S、RENESAS/M16C

RENESAS/M16C80、RENESAS/M32C、RENESAS/M32R、RENESAS/RX\ RENESAS/superH

Sun Microsystems

SUN/ SPARC3、SUN/ SPARC4、SUN/SPARC4C、SUN/SPARC4S、SUN/SPARC5、SUN/SPARC5C、SUN/SPARC5S、SUN/SPARC42、SUN/SPARC42C、SUN/SPARC42S、SUN/SPARC201、SUN/SPARC301、

SUN/SPARC301C、SUN/SPARC301S

NFC

NFC/78K0、NFC/78K0S、NFC/78K4、NFC/V850

 

3.1.2宏设置

-D macro

         指定宏

         用法:

                   pgr -D macro a.cc 

         效果:

                   相当于,在a.cc开头写了  #define macro 1

-D mac=value

         指定宏

         用法:(注意mac=value不能有空格,value可以使任意值)

                   pgr -D mac=value a.cc

-U macro

         指定系统宏。

         用法:

                   pgr -U __LINE__ a.cc

         选项的参数:

                   __LINE__, __FILE__, __TIME__, __DATE__, __STDC__等

                   C++ __cplusplus

                   C99  _STDC_HOSTED__, __STDC_VERSION__

3.1.3标准头文件和用户自定义头文件

-I

         设置自定义头文件的查找路径

         用法:

                   pgr -I path a.cc

         注意:path最好是头文件全路径,或是正确的相对路径。是文件夹,别搞错。

-Y

         设置标准头文件的查找途径

                   pgr -Y path a.cc

 

4 常见问题

4.1 分析错误的解决 

一般来说,文件分析中断主要是由头文件找不到或者源文件不符合C/C++标准导致的。根据

我们的经验,总结了以下几种错误情况: 

中断 

中断原 

解决方 

找 不 到

头文件 

忘记添加头文件 

添加头文件 

文件中以 #include <****.h> 格式包

含用户编写的头文件 

使用 –Y选项设置头文件路径

头文件是以相对路径形式包含的,如

#include "****.h" 

使用 –I选项设置当前路径为头文件路径

 

PGRelief使用指南2014(windows版)

上一篇:if的各种真假判断


下一篇:[AaronYang]C#人爱学不学8[事件和.net4.5的弱事件深入浅出]