本文所使用的软件为Parasoft C/C++Test 2022.2(下文称cpptest),记录了C++Test静态测试和单元测试的命令行操作,以及将C++Test集成至Jenkins的配置方法。问题记录更新ing…
文章目录
一、 Jenkins构建配置
该部分只记录Jenkins的构建配置,关于cpptest的具体操作配置和脚本实现方式见二、 Cpptest使用操作。
1. 安装插件Parasoft Findings
2. 点击项目 --> 配置 --> 增加构建步骤
点击应用,保存即可。build.sh
见附录。
3. 增加构建后操作步骤
3.1 静态分析
3.1.1 选择“Record compiler warnings and static analysis results”;
3.1.2 Tools选择“Parasoft结果”或者“Parasoft Findings”,Report encoding选择“GBK”。
至此,完成静态分析在Jenkins中的配置,点击进入Jenkins项目后,左侧出现Parasoft Warnings
选项。
3.2 单元测试
3.2.1 选择“Publish xUnit test result”;
3.2.2 Report Type 选择“ParasoftAnalyzers-10.x”;
3.2.3 修改localsettings文件
关于localsettings文件的导出:
-localsettings
参数指定了⼀个.properties
⽂件,这个⽂件主要是设置⾸选项的内容.
命令行指定的-localsettings
选项指定的文件(也就是配置许可证的文件),需要加上report.contexts_details=true
。
至此,单元测试的配置已完成,点击立即构建面板可显示数据。
二、 Cpptest使用操作
写在开头:
本文主要介绍命令行操作方法,其中Cpptest测试规则的配置通过图形化界面进行设置。
1. 静态测试
1.1 克隆项目至parasoft的工作空间(已设置为/home/swp/parasoft/workspace),cd至工作空间下
1.2 生成bdf文件
生成bdf文件需要有Makefile,可以通过执行cmake
命令进行生成,工程目录如下图。
cd /src
cmake .. # 在当前目录下生成MakeFile
make clean
cpptesttrace \
--cpptesttraceOutputFile=/home/swp/parasoft/workspace/jenkins_test/src/cpptestscan.bdf \
--cpptesttraceProjectName=demo
make
1.3 执行静态测试
1.3.1 界面操作
如果为界面操作,依次点击文件 --> 新建 --> 项目 --> C/C++test --> 创建来自(.bdf/.json)的项目 创建项目,之后点击Parasoft --> 测试执行 --> 静态测试。
1.3.2 命令行操作
cpptestcli \
-config "user://Recommended Rules" \
-data "/home/swp/parasoft/workspace" \
-resource "/home/swp/parasoft/workspace/jenkins_test/src" \
-bdf "/home/swp/parasoft/workspace/jenkins_test/src/cpptestscan.bdf" \
-report "/home/swp/parasoft/workspace/jenkins_test/src/reports/" \
-localsettings "/home/swp/parasoft/workspace/localsettings.properties"
报告的存储位置与名称可自定义。
2. 单元测试
单元测试同静态测试,只需修改cpptestcli -config
中的规则即可。
注:
- 既进行静态测试又进行单元测试时,生成一次bdf文件即可,否则会产生冲突。
- 多次进行测试时,bdf文件并不会被覆盖,而是会被“续写”。(通过观察bdf文件的大小发现,假设第一次执行后bdf文件的大小为2kb,第二次执行后文件大小变为4kb。)如果想要避免该情况,可以选择在每次构建前删除bdf文件。
问题记录
1. “/usr/include/c++/9/iostream" # include <bits/c++ config.h>:No such File or directionary.
报错缺少c++ config.h
文件。
解决方案:
sudo apt install gcc-<version>-multilib
sudo apt install g++-<version>-multilib
# e.g.
## 假设电脑使用的gcc版本为9.4.0,则apt install gcc-9-multilib;g++同理。
## 也可不输入版本号,安装时将自动安装对应版本。
2. 本地执行脚本正常,jenkins运行脚本时报错找不到命令cpptesttrace: Not Found
解决方法: 参考链接指路
修改前Jenkins --> Build Steps --> Execute shell如下:
./build.sh
修改后:
# cpptesttrace绝对路径
export PATH=/home/swp/parasoft-cpptest/cpptest/bin:$PATH
# cpptestcli绝对路径
export PATH=/home/swp/parasoft-cpptest/cpptest:$PATH
./build.sh
问题解决。