Parasoft C/C++ test 自动化用户指南(二十二):收集CMake项目的应用覆盖率
Parasoft C/C++test针对C/C++开发的专业白盒自动化测试方案,能有效提高软件开发效率和代码质量。C++test 可以进行静态分析,全面代码审查,运行时错误检测,并在单元测试和组件测试中集成覆盖率分析。
Parasoft C/C++test 附带了 CMake 的扩展,允许您将 C/C++test 的代码覆盖率分析直接集成到您的 CMake 项目中。该扩展会cpptestcc在构建项目时自动修改编译器/链接器命令行以使用覆盖工具。因此,在您运行检测的应用程序或执行功能或单元测试后,将创建 C/C++ 测试覆盖率日志文件 (.clog)。然后可以使用覆盖率日志文件生成完整的代码覆盖率报告。
对 CMake 集成的支持包括:
- <CPPTEST_INSTALL_DIR>/integration/cmake/cpptest-coverage.cmake扩展 - 你需要添加到CMakeFiles.txt构建文件中的CMake的C/C++test扩展文件。
- CPPTEST_COVERAGE=ON 和 CPPTEST_HOME=<CPPTEST_INSTALL_DIR> 选项 - 扩展提供的选项,用于在用 CMake 构建应用程序时激活该扩展。
- cpptest_coverage_report目标 - 扩展提供的目标,用于使用.clog文件作为输入生成覆盖率报告。
此外,<CPPTEST_INSTALL_DIR>/examples/Timer目录包括一个示例项目,用于演示收集CMake项目的代码覆盖率。
工作流程概述
-
复制到您的 CMake 项目。 <CPPTEST_INSTALL_DIR>/integration/cmake/cpptest-coverage.cmake
-
查看文件中的覆盖配置详细信息并根据需要更新选项。至少,必须确保使用该选项指定的编译器配置与您的编译器相匹配。有关可用选项,请参阅自定义 CMake 的 Coverage Extension。 cpptest-coverage.cmake CPPTEST_COMPILER_ID
-
将cpptest-coverage.cmake扩展包含到您的主 CMakeLists.txt构建文件中。扩展必须在所有构建目标定义之前,以确保自动修改编译器/链接器命令行。
-
CPPTEST_COVERAGE and CPPTEST_HOME在配置和构建 CMake 项目时使用选项激活扩展:
> cmake -DCPPTEST_COVERAGE=ON -DCPPTEST_HOME=<CPPTEST_INSTALL_DIR> ..默认情况下,C/C++test 的覆盖率数据文件将在. <CMAKE_BINARY_DIR>/cpptest-coverage/<CMAKE_PROJECT_NAME>/.cpptest
-
运行您的应用程序或执行您的功能或单元测试。
默认情况下,C/C++test 覆盖率日志文件 ( .clog ) 将在.clog中创建 <CMAKE_BINARY_DIR>/cpptest-coverage/<CMAKE_PROJECT_NAME>/<CMAKE_PROJECT_NAME>.clog。 -
运行helper 目标以生成覆盖率报告: cpptest_coverage_report
> make cpptest_coverage_report覆盖率报告将在以下位置生成:<CMAKE_BINARY_DIR>/cpptest-coverage/<CMAKE_PROJECT_NAME>/reports.
我们建议使用cpptest_coverage_report目标生成覆盖率报告。另外,您也可以使用cpptestcli与覆盖测试配置和.clog文件作为输入:
> cd <CMAKE_BINARY_DIR>/cpptest-coverage/<CMAKE_PROJECT_NAME>> cpptestcli -config "builtin://Coverage" -input <CMAKE_PROJECT_NAME>.clog
自定义 CMake 的 Coverage Extension
要使用 C/C++test 扩展自定义收集覆盖率,请打开cpptest-coverage.cmake 您复制到 CMake 项目的文件并修改 C/C++test 选项。
选项名称
|
描述
|
默认
|
---|---|---|
CPPTEST_COMPILER_ID |
指定与您的编译器匹配的编译器配置。 |
gcc_9-64 |
CPPTEST_COVERAGE_TYPE_FLAGS | 指定覆盖类型。有关可用选项,请参阅 cpptestcc 的命令行参考。 | -优化线覆盖 |
CPPTEST_COVERAGE_WORKSPACE | 指定覆盖工具的工作空间路径,默认情况下存储 C/C++test 的覆盖数据文件。 | <CMAKE_BINARY_DIR>/cpptest-coverage/<CMAKE_PROJECT_NAME> |
CPPTEST_COVERAGE_LOG_FILE |
指定 C/C++test 覆盖率日志文件 ( .clog )的名称和位置。 重要提示:在运行检测的应用程序之前,您必须确保覆盖日志目录存在。 |
<CPPTEST_COVERAGE_WORKSPACE>/<CMAKE_PROJECT_NAME>.clog |
CPPTEST_CPPTESTCC_OPTS | 指定cpptestcc覆盖工具的选项 。 |
|
此外,您可能需要查看:
- cpptest_coverage_report目标的定义,指定cpptestcli用于生成覆盖率报告的参数。
- # Build C/C++test coverage runtime library 部分,其中包括为C / C ++测试的运行时库配置(该库自动地被覆盖扩展构建)。
- CPPTEST_LINKER_FLAGS选项,该选项定义了如何将C / C ++测试覆盖运行时将被链接。
将 Coverage Extension 与 CMake 集成的示例
本节演示如何使用 C/C++test 的 CMake 覆盖扩展为位于<CPPTEST_INSTALL_DIR>/examples/Timer 目录中的示例项目收集覆盖数据。该定时器项目配置为使用cpptest-coverage.cmake附带的扩展<CPPTEST_INSTALL_DIR>/integration/cmake。
要收集示例项目的覆盖率:
- 如果您使用默认 GNU GCC 9 (x64) 以外的编译器,请转到<CPPTEST_INSTALL_DIR>/integration/cmake/cpptest-coverage.cmake并修改 的默认值CPPTEST_COMPILER_ID以匹配您的编译器。
-
构建示例项目:
> cd <CPPTEST_INSTALL_DIR>/examples/Timer> mkdir build> cd build> cmake -DCPPTEST_COVERAGE=ON -DCPPTEST_HOME=<CPPTEST_INSTALL_DIR> ..> make -
运行应用程序:
> ./timer -
生成覆盖率报告:
> make cpptest_coverage_report报告将在<CPPTEST_INSTALL_DIR>/examples/Timer/build/cpptest-coverage/Timer/reports.
Parasoft——领先的自动化测试工具,满足绝大多数行业标准
Parasoft是一家专门提供软件测试解决方案的公司,帮助企业打造无缺陷的软件。
从开发到质量检查,Parasoft的技术通过集成静态和运行时分析,单元、功能和API测试,以及服务虚拟化,在不牺牲质量和安全性的情况下加快软件交付,节约交付成本。
强大的报告和分析功能可帮助用户快速查明有风险的代码区域,并了解新代码更改如何影响其软件质量,而突破性的技术将人工智能和机器学习添加到软件测试中,使组织更容易采用和扩展跨开发和测试团队的有效的软件测试实践。
Parasoft针对C/C++、Java、.NET和嵌入式的开发测试都有着30多年的深入研究,很多全国500强企业使用Parasoft的产品实现了软件快速、高质量的交付。
获取Parasoft资料或申请试用可加QQ:2867205852