自动化测试工具Parasoft C/C++ test 自动化用户指南(二十二):收集CMake项目的应用覆盖率

翻译|使用教程|编辑:李显亮|2021-07-22 10:09:05.827|阅读 31 次

概述:Parasoft C/C++test 附带了 CMake 的扩展,允许将 C/C++test 的代码覆盖率分析直接集成到 CMake 项目中。因此,在运行检测的应用程序或执行功能或单元测试后,将创建 C/C++ 测试覆盖率日志文件。然后可以使用覆盖率日志文件生成完整的代码覆盖率报告。

# 31款JAVA开发必备控件和工具 # 企业数字化建设合规无风险[专题]

相关链接:

Parasoft C/C++test针对C/C++开发的专业白盒自动化测试方案,能有效提高软件开发效率和代码质量。C++test 可以进行静态分析,全面代码审查,运行时错误检测,并在单元测试和组件测试中集成覆盖率分析。

Parasoft 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项目的代码覆盖率。

工作流程概述

  1. 复制到您的 CMake 项目。 <CPPTEST_INSTALL_DIR>/integration/cmake/cpptest-coverage.cmake 

  2. 查看文件中的覆盖配置详细信息并根据需要更新选项。至少,必须确保使用该选项指定的编译器配置与您的编译器相匹配。有关可用选项,请参阅自定义 CMake 的 Coverage Extension cpptest-coverage.cmake  CPPTEST_COMPILER_ID

  3. cpptest-coverage.cmake扩展包含到您的主 CMakeLists.txt构建文件中。扩展必须在所有构建目标定义之前,以确保自动修改编译器/链接器命令行。

  4. 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

  5. 运行您的应用程序或执行您的功能或单元测试。
    默认情况下,C/C++test 覆盖率日志文件 ( .clog ) 将在.clog中创建 <CMAKE_BINARY_DIR>/cpptest-coverage/<CMAKE_PROJECT_NAME>/<CMAKE_PROJECT_NAME>.clog

  6. 运行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

要收集示例项目的覆盖率:

  1. 如果您使用默认 GNU GCC 9 (x64) 以外的编译器,请转到<CPPTEST_INSTALL_DIR>/integration/cmake/cpptest-coverage.cmake并修改 的默认值CPPTEST_COMPILER_ID以匹配您的编译器。
  2. 构建示例项目:

    > cd <CPPTEST_INSTALL_DIR>/examples/Timer
    > mkdir build
    > cd build
    > cmake -DCPPTEST_COVERAGE=ON -DCPPTEST_HOME=<CPPTEST_INSTALL_DIR> ..
    > make
  3. 运行应用程序:

    > ./timer
  4. 生成覆盖率报告:

    > 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测试试用


标签:

本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至hey@evget.com


为你推荐

  • 推荐视频
  • 推荐活动
  • 推荐产品
  • 推荐文章
  • 慧都慧问
在线咨询
联系我们
TOP
在线客服系统
live chat