Loading
0

基于Docker与Parasoft C/C++test的代码分析与单元测试实践

通过将Parasoft C/C++test与Docker相结合,我们构建了一个标准化、可复用的代码质量分析环境。这一实践旨在解决因开发环境差异导致的测试结果不一致问题,确保静态分析与单元测试能够在统一、可控的编译工具链中执行。利用Docker的隔离特性,我们将Parasoft的代码采集工具与项目构建流程(如Makefile)集成,通过生成构建数据文件(BDF)为后续深度代码分析提供基础。这种方法是实现持续测试与DevOps实践的关键步骤,特别适用于需要符合功能安全标准(如ISO 26262)的嵌入式系统开发。

>>点击获取Parasoft C/C++test试用

准备阶段 Ubuntu 64位,cpptest工具,Docker

1.在创建Docker的脚本中添加以下几个参数

-v /home/u/parasoft/cpptest:/home/u/parasoft/cpptest (c++test安装目录) -v /home/u/parasoft/cpptest/examples/Timer:/home/u/parasoft/cpptest/examples/Timer(项目目录) -v /home/u/workspace/space12.27.2:/home/u/workspace/space12.27.2 (指定工作空间目录) --name gcc9-test-container(指定Docker名字) 注意:保证宿主机目录和Docker中的目录完全一致

2.容器中添加cpptest的环境变量

export PATH=$PATH:/home/u/parasoft/cpptest/bin 验证cpptesttrace命令可不可用 直接输入cpptesttrace来验证

3.生成bdf

进入Docker目录后,切换到项目根目录,执行以下命令: Cpptesttrace -cpptesttraceProjectName=demo -cpptesttraceOutputFile=/home/u/parasoft/cpptest/examples/Timer/demo.bdf make cpptesttraceProjectName=指定项目名 cpptesttraceOutputFile=指定生成bdf的绝对路径以及bdf名字 make是构建命令,可以用其他任何构建命令替代,例如build.sh

4.后台运行Docker
5.将容器名称分配给环境变量

export CPPTEST_CONTAINER_NAME=gcc9-test-container

6.在同一终端启动cpptest
7.导入在容器内生成的.bdf文件

编译器配置如下,需要自定义编译器

编译器的名称和种类可根据自己的需要进行修改

c编译器选择c++test安装目录下的/integration/docker中的remote-gcc C++编译器选择c++test安装目录下的/integration/docker中的remote-g++ 连接器选择c++test安装目录下的/integration/docker中的remote-g++ 如下图所示

以上就基本配置成功啦

8.执行静态分析

可能会遇到如下报错

解决办法:缺少库文件,下载库文件即可

9.单元测试

单元测试相对于静态分析多了一个步骤,在自定义编译器时,最后会告诉自定义编译器 gui.propertie的存放路径,如下所示

在容器中cd 到这个目录下找到gui.propertities文件

然后vim 打开这个文件,修改两个地方

在容器中进行单元测试时在执行单元测试时,不选Run unit tests了选择Run Unit tests in Container然后就这样执行啦。

在成功配置环境的基础上,团队可进一步将该方案集成至CI/CD流水线,实现自动化代码质量门禁。通过Parasoft C/C++test提供的静态分析、单元测试及覆盖率检测能力,结合Docker容器提供的环境一致性保障,开发者能够在早期发现代码缺陷,有效提升软件可靠性并降低合规认证风险。这一技术实践不仅适用于汽车电子领域,也可为其他对代码质量有高要求的行业提供参考。

关于慧都

慧都是一家行业数字化解决方案公司,专注于软件、石油与工业领域,以深入的业务理解和行业经验,帮助企业实现智能化转型与持续竞争优势。在软件工程领域,我们提供开发控件、研发管理、代码开发、部署运维等软件开发全链路所需的产品,提供正版授权采购、技术选型、个性化维保等服务,帮助客户实现技术合规、降本增效与风险可控。

慧都科技作为Parasoft公司在中国区的官方授权合作伙伴,为国内企业提供Parasoft C/C++test产品的正版授权、定制化部署与全生命周期技术支持与服务。我们致力于助力客户精准贯彻功能安全标准、全面提升软件开发效率、有效管控项目风险,最终构建符合国际标准的高质量软件体系。