1)对代码进行静态分析,无需改动任何源码文件;
2)分析出来的缺陷问题准率比较高。根据我使用情况来看,达到90%以上;
3)针对问题的描述非常清晰,有详细的问题产生流程(具体每一步骤所涉及的源代码文件、行数),基本上一看就清楚问题的产生来源;
4)具备跨文件/模块的分析能力(这一点对于大型项目尤其重要)。
当然,目前为止我也只是试用了该软件关于问题缺陷的分析功能,还有很多高级功能没有用到。以下针对该软件的安装及简单使用进行说明。
Linux系统软件安装及操作:
1)安装服务端程序:
./kw-server-installer.9.2.1.7276.linux.sh -i /usr/local/kwserver –a
-i选项设置安装目录,-a不打印授权协议信息
注意:必须以普通用户进行服务端程序的安装。
2)拷贝license文件到安装目录下的prjects_root/licenses目录;
3)启动klockwork软件:
/usr/local/kwserver/bin/kwservice -r /usr/local/kwserver/projects_root/ start
Klockwork软件自带了mysql数据库,其启动时也会进行数据库的启动,可能造成其自带数据库端口号与系统数据库端口号冲突,此时通过如下命令进行数据库端口号的修改:
/usr/local/kwserver/bin/kwservice –r /usr/local/kwserver/projects_root/ set-service-property database port 3310
如上命令将数据库缺省的3306端口改为3310。
注意:以上命令只能由普通用户执行(非root用户)。
4)代码静态分析:
a)采集程序信息
进入软件项目目录,运行如下命令采集程序信息(第一次运行该命令必须保证完整make):
/usr/local/kwserver/bin/kwinject -o xxx.out make
其中,xxx.out为所采集程序信息的输出文件,为避免遗忘,名称与项目名称一致。
b)建立静态分析工程:
/usr/local/kwserver/bin/kwadmin create-project xxx --language c,cxx
其中,xxx为静态分析工程名称(即分析结果项目名称)。c,cxx表示该工程为C/C++工程(当前支持c,cxx,java,csharp,多种语言中用“,”分隔)。可通过如下命令查看当前存在的工程:/usr/local/kwserver/bin/kwadmin list-projects。
c)对代码进行静态分析:
/usr/local/kwserver/bin/kwbuildproject -f -o ./table1 xxx.out
其中,-f表示强制进行项目的build,即使目标目录中已经存在上次build后的数据。 -o设置分析结果目录,./table1为静态分析结果数据的存放目录,可以根据需要进行修改。xxx.out为前述生成的静态分析工程名称。如果一个项目涉及多个静态分析工程,则多个工程间用空格进行分隔。
d)加载分析结果:
/usr/local/kwserver/bin/kwadmin load xxx ./table1/
其中,xxx为静态分析工程名称,./table1为静态分析结果数据目录。
5)通过http://xxx.xxx.xxx.xxx:8080地址查看以上静态分析结果,其中xxx.xxx.xxx.xxx为klockwork服务器地址,截图如下: