美文网首页
Coverity 工具静态扫描 QT 项目实践

Coverity 工具静态扫描 QT 项目实践

作者: 猫咪不吃鱼 | 来源:发表于2022-01-21 16:36 被阅读0次

一、前言

本文同样不讲述 Coverity 工具的安装和部署,只记录在扫描 QT 项目的过程和遇到的问题。QT 项目的开发可以有多种方式,例如:在自带的 QT Creator 上,再者可在 Visual Studio 上配置相应的插件,本文所实践的项目即是采用的后者。

二、实践场景描述及配置

纯净的设备环境下,去扫描 QT 工程,并将结果上传到 Coverity 后台,因此需要配置 QT 项目的编译环境 qmake

这里以 Ubuntu 系统为例,直接使用命令行安装即可:

sudo apt-get install cmake qt5-default qtcreator

安装完成之后,输入 qmake -v 进行验证,如出现如下情况则安装成功:

$ qmake -v
QMake version 3.1
Using Qt version 5.11.3 in /usr/lib/x86_64-linux-gnu

三、编译过程

1、生成 .pro 文件

qmake -project

2、根据 .pro 文件生成 Makefile

qmake

注意生成的 Makefile 文件中可能有些库文件没有链接进去,因此需要手动添加进入

3、编译项目

make

一切顺利的话,会根据 Makefile 中的规则生成对应的文件,至此编译成功

四、Coverity 指令

相关指令参数介绍,参见 Coverity 工具静态扫描Android项目实践

make clean
cov-configure --comptype g++ --compiler g++ --template
cov-build --dir result make -j
cov-analyze --dir result --all
cov-commit-defects --stream authorize_v_1.0 --host 10.212.xxx.xxx --port 8081 --user zsk --password zskqq123 --dir result

五、注意事项

1、Linux 系统下编译时链接的库为 .a 而不是 .lib
2、qmake 根据 .pro 文件生成的 Makefile 中有些头文件和库没有包含进去,可以根据编译时打印的日志手动添加
3、一般在 LIBS 下指定链接库,形如包含与 Makefile 同级目录下的 lib64 文件夹下的 libslm_runtime.so/.a,则可以表示为:

# 注意 -L : 表示递归目录  -l : 表示是库 ,libslm_runtime.a 不带前缀和扩展,表示为 slm_runtime 
LIBS = -L./lib64 -lslm_runtime

4、假如编译生成的是一个二进制可执行文件,名字为 authorize,可以采用如下命令来检查该执行文件运行所需要的链接库是否完整:

ldd authorize

假如出现:xxx.so:not found,则表明 authorize 在运行时没有在系统环境中找到该 xxx.so 文件,因此需要在系统环境中配置 LD_LIBRARY_PATH :

/etc/profile 中追加如下命令:

# LD_LIBRARY_PATH 指向 xxx.so 所在的目录
export LD_LIBRARY_PATH=/usr/zsk/opt/lib64:$PATH

相关文章

网友评论

      本文标题:Coverity 工具静态扫描 QT 项目实践

      本文链接:https://www.haomeiwen.com/subject/yiiehrtx.html