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设置编译器
指定编译器。
用法:
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