admin 管理员组

文章数量: 1086019


2024年3月20日发(作者:英格兰对法国历史交锋)

IT技术论坛

TECHNOLOGY AND INFORMATION

浅述基于Klocwork的QT开发环境软件代码审查

陈莹 赵玉丽

南京莱斯电子设备有限公司 江苏 南京 210000

摘 要 Klocwork工具能够在配置项黑盒功能测试前对代码进行静态检查,快速发现代码缺陷。然而,目前并无基于

通用平台开发环境的Klocwork代码审查脚本。本文介绍了在实践中总结的针对目前广泛使用的QT4.7和QT5.4开发环境

的详细Klocwork工具应用方法,并设计了检查脚本,通过被检查出来的缺陷的处理验证了脚本的易用性。典型案例表

明,Klocwork代码审查工具有助于及时发现并解决C/C++软件源代码的各种缺陷,从而提高软件质量和安全性。

关键词 QT开发环境;Klocwork检查;代码审查

引言

QT是面向对象的应用跨平台的C/C++语言工具包,QT应

用程序设计方法遵循面向对象的编程方法。编写QT应用程序的

主要方法是基于已有的QT类进行编写用户类。它既可以开发

GUI程序,也可以开发非GUI程序,比如控制台工具和服务器。

QT拥有很多的窗口部件,如按钮、菜单、滚动条和应用程序窗

口等,这些窗口部件组合起来可以创建很多种用户界面

[1]

1  背景介绍

QT开发环境能够跨平台运行,目前支持的平台系统有:

Linux(32位、64位)(包括中标麒麟平台),MacOSX以及

Windows平台。它提供给应用程序开发者建立图形用户界面所

需的功能。QT很容易扩展,并且允许真正的组件编程。QT利

用signal/slot(信号/槽)机制实现对象之间的通信。signal和slot

没有构成一一对应的关系,同一个signal可以连接很多个slot,

多个signal也可以与某一个slot相连。虽然signal/slot机制比回调

函数的速度缓慢,但缓慢速度并不明显。特别是在嵌入式系统

中这些signal和slot使用不多的场合,这种速度上的损失可以忍

受,并且该种机制具有简明性和灵活性

[2]

。开发团队在对应的

集成和测试中若能有效发现违反编码规则的问题、软件代码缺

陷和存在的安全隐患漏洞,如:内存及资源管理错误、内存泄

漏、空指针引用、未初始化的变量、未经验证的用户输入、数

组边界采用不可信数据,可以大大降低系统后续风险,同时减

少严重经济损失甚至灾难事故的发生概率

[3-5]

。应用源代码分析

工具Klocwork,不需设计测试用例,也不需运行程序,就能够

快速检测出Windows、Linux操作系统下C、C++、Java语言代码

漏洞、代码设计缺陷,并同时可生成详细、全面的缺陷修复率

以及其他关键软件度量的报告。

1  传统模式的代码审查

通常情况下,Klocwork可以通过新建一个测试项目,输入

项目名,选择文件类型,并选择要分析的dsw或dsp工程名,然

后在valid configurations栏下面选择debug选项,钩选生成测试报

告,从而完成测试项目的生成。

代码审查的具体方法为:

1.1 设置环境变量

将qmake、nmake加入环境变量,或可修改

加入头文件的路径,以消除分析错误防止分析结果不准确。

1.2 创建一个新项目

如果这个项目是第一次分析,就在Klocwork上创建一个新

项目,使用命令为kadmincreate-project,如果

不是第一次分析的,就不用再次创建新项目了,使用原来创建

的项目名即可。

1.3 导入kb文件

42

  

科学与信息化2021年1月下

导入kb文件,命令为:kwadmin import- config

project-name>QT 4.6.2kb

1.4 根据.pro文件生成.out文件

打开VS命令窗口,执行命令,如D:QTQT5.3binqmake.

exe,执行成功后,会在.pro工程目录下生成makefile、makefile.

debug、e三个文件。在VS命令窗口中,执行

kwinject nmake –f e命令,可以在.pro文件目录下

看到有.out文件生成,打开生成的.out文件,可以查看到正确的

版本号和相关的.out信息

[6]

(1)执行nmake –f makefileclean命令

在VS命令窗口中,执行nmake –f makefile clean命令,可以

根据输入调试信息查看默认用的哪个makefile。例如,nmake –f

e clean

(2)使用klocwork分析QT项目

使用Klocwork分析QT项目的命令为 kwbuildproject

-project-f–o tables ,此步骤

即build文件。

(3)将分析后的项目结果导入数据库

将分析后的项目结果导入数据库的命令为:kwadmin

loadtables,此时可进入Klocwork start page中

进入 project list里查看.pro工程的问题列表。

但是Klocwork Insight版本对QT的支持并不完全,比如针对

QT4.7和QT5.4等开发环境,无法生成对应的out文件,目前缺少

可以直接进行广泛代码审查的测试脚本。下面就在实践中总结

的通过命令行方式进行代码审查的脚本方法进行探讨。

2  设置脚本进行代码审查

2.1 设置脚本对QT4.7开发环境下的代码审查

(1)创建工程,创建检查工程需要执行如下指令

. /K10 /server /bin/kwadmin-url安装Klocwork工

具的服务器IP地址: 8080 create –project,可以通过浏览器网

页检查工程创建情况,登录localhost:8080/输入用户名

Administrator 密码为空,查看工程创建情况。

1)编译生成中间文件

cd到工程目录下,找到Makefile文件,执行makeclean命

令; 执行kwinject –o make生成out文件。

2)分析中间文件

kwbuildproject-add-analysis-options=--lef-planner-in-

memory-project Myproject–o tables –f 。

执行命令后,到工程目录下,生成tables目录成功。

3)生成报告

执行命令 kwadmin load Myproject tables。

4)查看报告


本文标签: 代码 审查 生成 工程 脚本