当前位置: 首页 > news >正文

Parasoft C/C++test 针对 CMake 项目的自动化测试配置

Parasoft C/C++test是一款强大的软件测试工具,专门为C和C++语言开发提供全面的代码质量保障解决方案。它集成了静态分析、单元测试、覆盖率分析等多种测试技术,帮助开发团队在软件开发早期发现和修复缺陷,提高代码质量和可靠性。对于使用CMake构建系统的项目,C/C++test从2020.1版本开始提供了专门的支持,简化了测试配置流程,使开发人员能够更高效地集成自动化测试到他们的开发工作流中。

在之前,我们都是使用的CMake自带的命令,先生成Makefile文件,然后使用cpptesttrace.exe跟着make命令生成BDF文件。但是这样生成的BDF文件里不仅包含项目中的文件,还包含CMake自动生成的文件,有时还会出现文件重复的问题(一般因为项目编译时,文件被拷贝到build文件夹下)。

使用条件

C/C++test2020.1版本以上。

具体使用

具体使用只有导入项目方式跟其他项目有些区别,导入项目有两种方式:

  • 生成json文件方式
  • 修改CMakeLists.txt文件方式

前者使用简单,仅适用于静态分析,因为生成的json文件中没有包含link信息,而这是所单元测试需要的。后者相对要麻烦,但是支持单元测试。

生成json文件方式

这种方式使用的是CMake自带的功能,主要方式是修改CMAKE_EXPORT_COMPILE_COMMANDS选项。两种方式:

1.在CMakeLists.txt文件中将CMAKE_EXPORT_COMPILE_COMMANDS选项设置为ON;

set(CMAKE_EXPORT_COMPILE_COMMANDS ON)

2.生成构建脚本时,将其添加到cmake的命令行调用中。

cmake -DCMAKE_EXPORT_COMPILE_COMMANDS=1 <path_to_src>

修改CMakeLists.txt文件方式

1.修改主CMakeLists.txt文件,将<INSTALL_DIR>/integration/cmake/cpptest-project.cmakeinclude进来(大部分情况下,其实不需要修改这个cpptest-project.cmake文件);

2.根据情况加上cpptest_add_executable(),具体下面说明;

3.运行CMake的时候设置CPPTEST_PROJECT=ON,实际命令可能是cmake -DCPPTEST_PROJECT=ON ..;

4.使用import projects的方式,将项目导入到workspace中,命令行就使用-import参数替代-bdf参数,这里导入项目的文件地址一般就是项目文件夹,如果找不到,可以在项目下搜索 .parasoft文件;

5.后面就是基本的静态分析和单元测试的步骤了。

cpptest_add_executable()的详细说明

其实这个部分,我们不仅仅是要添加cpptest_add_executable(),如果有需要,我们还需要添加target_include_directories()和target_link_libraries(),否则可能缺少链接信息等。

添加的原则是遇到add_executable()添加cpptest_add_executable(),遇到target_include_directories()添加target_include_directories(),遇到target_link_libraries()添加target_link_libraries()。一般情况下,这些都在各个模块的CMakeLists.txt文件中出现。

cpptest_add_executable部分

按照用户手册中提到的,cpptest_add_executable部分组成如下:

cpptest_add_executable(
<target_name>
[CPPTEST_COMPILER_ID <compiler_id>]
[CPPTEST_PROJECT_NAME <test_project_name>]
[CPPTEST_PROJECT_LOC <test_project_location>]
[CPPTEST_PROJECT_FOLDERS <name1=location1> <name2=location2> ...]
[EXCLUDE_FROM_ALL]
SOURCES <src1.cpp> <src2.cpp> ... | TARGETS <target1> <target2> ...
)</span></span>

这里详细说明一下几个必需要设置的参数:

<target_name>:这个必需要设置,内容随意,推荐在原项目名后加_cpptest,但是这个参数会关系到其他地方的设置。另外如果是一个大项目下面包含的多个模块,那么各个模块的<target_name>需要设置成不同的;

SOURCES:这个与TARGETS是二选一,后面跟需要跟踪编译信息的文件,有的时候,我们能够从CMakeLists.txt文件中找到相关的变量,而不需要将涉及的源文件一一列出来;

TARGETS:推荐使用TARGETS,比如CMakeLists.txt文件中有project(xxx),那么我们就可以设置TARGETS xxx;

target_link_libraries/target_link_libraries部分

这部分的设置参照原本的target_link_libraries就行,但是其中的<target_name>需要跟上面的对应起来。

比如,原本的是

target_link_libraries(main mod1 mod2 mod3)

那么我们就需要再添加

target_link_libraries(main_cpptest mod1 mod2 mod3)

通过Parasoft C/C++test对CMake项目的针对性支持,开发团队能够更加高效地实施全面的软件质量保障策略。这一集成不仅帮助实现了早期缺陷检测、代码规范符合性验证以及单元测试自动化,还支持持续集成环境的无缝集成。

Parasoft C/C++test特别适用于航空航天、汽车电子、医疗设备、工业控制等高可靠性要求的行业,帮助这些行业解决功能安全标准合规性问题,确保软件系统的高度可靠性和安全性。通过将质量保障左移,C/C++test使团队能够在开发初期发现和修复问题,大幅降低后期修复成本,加速产品上市时间,同时确保交付高质量的软件产品。​​​​​​​

http://www.dtcms.com/a/390989.html

相关文章:

  • LED强光手电筒MCU控制方案开发分析
  • linux中为什么 rm 命令能删除自己 | linux使用rm命令删自己会怎样?
  • django登录注册案例(下)
  • 【TES600G】基于JFM7K325T FPGA+FT-M6678 DSP的全国产化信号处理平台
  • 卷积神经网络深度解析:从基础原理到实战应用的完整指南
  • 企业档案管理系统:精准破局制造行业档案管理困境
  • 【完整源码+数据集+部署教程】考古坑洞私挖盗洞图像分割系统: yolov8-seg-act
  • MMDB详解
  • TC8:SOMEIP_ETS_130测试用例解析
  • 等效学习率翻倍?梯度累积三连坑:未除以 accum_steps、调度器步进错位、梯度裁剪/正则标度错误(含可复现实验与修复模板)
  • 嵌入式学习笔记(44)IMX6ULL
  • OpenStack 学习笔记(五):网络管理和虚拟网络实践与存储管理实验(下)
  • 博睿数据携手华为共筑智能未来,深度参与HUAWEI CONNECT 2025并发表主题演讲
  • 陈童理论物理新讲1 哈密顿力学初步
  • 9.19 Sass
  • 设计模式详解:单例模式、工厂方法模式、抽象工厂模式
  • 终端同居物语:Shell咏唱术式与权限结界の完全解析书
  • XeLaTeX 中文删除线自动换行问题的解决方案
  • R语言中的因子(Factor)详解 factor_path <- as.factor(char_path)
  • 软件测试之⾃动化测试常⽤函数(沉淀中)
  • 火山引擎多模态数据湖:基于 Daft 与 Lance,构筑 AI 时代数据湖新范式
  • 关于强化学习的一篇经典学习文章
  • 【JavaScript 性能优化实战】第四篇:webpack 与 vite 打包优化实战
  • maven-profile实现springboot多版本配置打包
  • OpenLayers地图交互 -- 章节二:绘制交互详解:从基础几何到复杂图形的完整绘制方案
  • Java 工厂模式 + 策略模式实战:工具管理器的设计与实现
  • 污水处理厂远程调试与智能化运维解决方案
  • 【提示工程】Ch2-提示技术(Prompt Technique)
  • vLLM - Worker
  • GitHub上面仓库名写错了,怎么改