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正确分析代码。
其中,必须要设置编译、宏定义、头文件路径。
2.2.1 设置编译器
由于不同的编译器以及不同的操作系统对 C/C++语言中的一些细节行为的处理是不同
的,因此必须根据被分析代码原先的开发环境(操作系统和编译器),在PGRelief中选择相
应的编译器选项。
2.2.2宏设置
在这里可以定义或者取消定义一些宏,如下图所示:
一般而言这里是不需要特别进行设置的,但是如果在编译程序时定义了一些
影响到程序编译的重要的宏,则需要在这里加以定义,如在linux下makefile
里面定义的宏。
2.2.3标准头文件和用户自定义头文件
用户自定义头文件 :用户头文件目录的设定 ,是需要用户自己手动添加:当前解析的cpp 或者c 文件,所要用到的所有的用户自定义的头文件的路径。注意,不能有遗漏。
标准头文件 :标准头文件目录的设定类似于用户头文件目录的设定,是需要用户自己手动添加:当前
解析的cpp 或者c 文件,所要用到的所有的标准库的头文件的路径。注意,不能有遗漏,并且要有先后次序。
2.2.4 其它
除了以上三项是必须之外,剩下的选项是可选的。用户可以根据自身的要求,并结合帮助
文档,进行更加详细的,符合自己要求的设置。
2.3 进行分析
分析的步骤
在完成对分析选项的配置后,就可以开始进行解析了。 对一个项目的解析包括两个阶段:
单文件分析(在这个阶段会逐个对项目中的每个文件进行分析);文件间分析(在所有文件的单文件分析都完成的情况下,将所有文件的全局信息连接起来进行分析)。
分析的方式
用户可以选择多种方式进行解析:
全体解析 :对当前项目下所有文件进行解析,包括单文件分析和文件间分析
选择解析 :对选定的一个或者多个文件进行解析,此时仅仅进行单文件分析
差分解析 :对项目中所有还没有分析的文件进行分析,并最后执行文件间分析。
分析错误的解决
一般来说,文件分析中断主要是由头文件找不到或者源文件不符合C/C++标准导致的。根据
我们的经验,总结了以下几种错误情况:
找 不 到 头文件 |
忘记添加头文件 |
添加头文件 |
文件中以 #include <****.h> 格式包 含用户编写的头文件 |
根据头文件被引用的格式,应该把该头文件添加到标准头文件中 |
|
头文件是以相对路径形式包含的,如 #include "****.h" |
系统把设置的头文件路径做为当前路径, 需要重新设置头文件路径 |
注意:由于头文件配置错误引起的中断,需要重新配置头文件。
2.3.4 其它解析操作
保存解析信息 :参见下图:
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选项设置当前路径为头文件路径 |