Parasoft C/C++ test 自動(dòng)化用戶指南(二十二):收集CMake項(xiàng)目的應(yīng)用覆蓋率
Parasoft C/C++test針對(duì)C/C++開發(fā)的專業(yè)白盒自動(dòng)化測試方案,能有效提高軟件開發(fā)效率和代碼質(zhì)量。C++test 可以進(jìn)行靜態(tài)分析,全面代碼審查,運(yùn)行時(shí)錯(cuò)誤檢測,并在單元測試和組件測試中集成覆蓋率分析。
Parasoft C/C++test申請(qǐng)免費(fèi)試用
Parasoft C/C++test 附帶了 CMake 的擴(kuò)展,允許您將 C/C++test 的代碼覆蓋率分析直接集成到您的 CMake 項(xiàng)目中。該擴(kuò)展會(huì)cpptestcc在構(gòu)建項(xiàng)目時(shí)自動(dòng)修改編譯器/鏈接器命令行以使用覆蓋工具。因此,在您運(yùn)行檢測的應(yīng)用程序或執(zhí)行功能或單元測試后,將創(chuàng)建 C/C++ 測試覆蓋率日志文件 (.clog)。然后可以使用覆蓋率日志文件生成完整的代碼覆蓋率報(bào)告。
對(duì) CMake 集成的支持包括:
- <CPPTEST_INSTALL_DIR>/integration/cmake/cpptest-coverage.cmake擴(kuò)展 - 你需要添加到CMakeFiles.txt構(gòu)建文件中的CMake的C/C++test擴(kuò)展文件。
- CPPTEST_COVERAGE=ON 和 CPPTEST_HOME=<CPPTEST_INSTALL_DIR> 選項(xiàng) - 擴(kuò)展提供的選項(xiàng),用于在用 CMake 構(gòu)建應(yīng)用程序時(shí)激活該擴(kuò)展。
- cpptest_coverage_report目標(biāo) - 擴(kuò)展提供的目標(biāo),用于使用.clog文件作為輸入生成覆蓋率報(bào)告。
此外,<CPPTEST_INSTALL_DIR>/examples/Timer目錄包括一個(gè)示例項(xiàng)目,用于演示收集CMake項(xiàng)目的代碼覆蓋率。
工作流程概述
-
復(fù)制到您的 CMake 項(xiàng)目。 <CPPTEST_INSTALL_DIR>/integration/cmake/cpptest-coverage.cmake
-
查看文件中的覆蓋配置詳細(xì)信息并根據(jù)需要更新選項(xiàng)。至少,必須確保使用該選項(xiàng)指定的編譯器配置與您的編譯器相匹配。有關(guān)可用選項(xiàng),請(qǐng)參閱自定義 CMake 的 Coverage Extension。 cpptest-coverage.cmake CPPTEST_COMPILER_ID
-
將cpptest-coverage.cmake擴(kuò)展包含到您的主 CMakeLists.txt構(gòu)建文件中。擴(kuò)展必須在所有構(gòu)建目標(biāo)定義之前,以確保自動(dòng)修改編譯器/鏈接器命令行。
-
CPPTEST_COVERAGE and CPPTEST_HOME在配置和構(gòu)建 CMake 項(xiàng)目時(shí)使用選項(xiàng)激活擴(kuò)展:
> cmake -DCPPTEST_COVERAGE=ON -DCPPTEST_HOME=<CPPTEST_INSTALL_DIR> ..默認(rèn)情況下,C/C++test 的覆蓋率數(shù)據(jù)文件將在. <CMAKE_BINARY_DIR>/cpptest-coverage/<CMAKE_PROJECT_NAME>/.cpptest
-
運(yùn)行您的應(yīng)用程序或執(zhí)行您的功能或單元測試。
默認(rèn)情況下,C/C++test 覆蓋率日志文件 ( .clog ) 將在.clog中創(chuàng)建 <CMAKE_BINARY_DIR>/cpptest-coverage/<CMAKE_PROJECT_NAME>/<CMAKE_PROJECT_NAME>.clog。 -
運(yùn)行helper 目標(biāo)以生成覆蓋率報(bào)告: cpptest_coverage_report
> make cpptest_coverage_report覆蓋率報(bào)告將在以下位置生成:<CMAKE_BINARY_DIR>/cpptest-coverage/<CMAKE_PROJECT_NAME>/reports.
我們建議使用cpptest_coverage_report目標(biāo)生成覆蓋率報(bào)告。另外,您也可以使用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 擴(kuò)展自定義收集覆蓋率,請(qǐng)打開cpptest-coverage.cmake 您復(fù)制到 CMake 項(xiàng)目的文件并修改 C/C++test 選項(xiàng)。
選項(xiàng)名稱
|
描述
|
默認(rèn)
|
---|---|---|
CPPTEST_COMPILER_ID |
指定與您的編譯器匹配的編譯器配置。 |
gcc_9-64 |
CPPTEST_COVERAGE_TYPE_FLAGS | 指定覆蓋類型。有關(guān)可用選項(xiàng),請(qǐng)參閱 cpptestcc 的命令行參考。 | -優(yōu)化線覆蓋 |
CPPTEST_COVERAGE_WORKSPACE | 指定覆蓋工具的工作空間路徑,默認(rèn)情況下存儲(chǔ) C/C++test 的覆蓋數(shù)據(jù)文件。 | <CMAKE_BINARY_DIR>/cpptest-coverage/<CMAKE_PROJECT_NAME> |
CPPTEST_COVERAGE_LOG_FILE |
指定 C/C++test 覆蓋率日志文件 ( .clog )的名稱和位置。 重要提示:在運(yùn)行檢測的應(yīng)用程序之前,您必須確保覆蓋日志目錄存在。 |
<CPPTEST_COVERAGE_WORKSPACE>/<CMAKE_PROJECT_NAME>.clog |
CPPTEST_CPPTESTCC_OPTS | 指定cpptestcc覆蓋工具的選項(xiàng) 。 |
|
此外,您可能需要查看:
- cpptest_coverage_report目標(biāo)的定義,指定cpptestcli用于生成覆蓋率報(bào)告的參數(shù)。
- # Build C/C++test coverage runtime library 部分,其中包括為C / C ++測試的運(yùn)行時(shí)庫配置(該庫自動(dòng)地被覆蓋擴(kuò)展構(gòu)建)。
- CPPTEST_LINKER_FLAGS選項(xiàng),該選項(xiàng)定義了如何將C / C ++測試覆蓋運(yùn)行時(shí)將被鏈接。
將 Coverage Extension 與 CMake 集成的示例
本節(jié)演示如何使用 C/C++test 的 CMake 覆蓋擴(kuò)展為位于<CPPTEST_INSTALL_DIR>/examples/Timer 目錄中的示例項(xiàng)目收集覆蓋數(shù)據(jù)。該定時(shí)器項(xiàng)目配置為使用cpptest-coverage.cmake附帶的擴(kuò)展<CPPTEST_INSTALL_DIR>/integration/cmake。
要收集示例項(xiàng)目的覆蓋率:
- 如果您使用默認(rèn) GNU GCC 9 (x64) 以外的編譯器,請(qǐng)轉(zhuǎn)到<CPPTEST_INSTALL_DIR>/integration/cmake/cpptest-coverage.cmake并修改 的默認(rèn)值CPPTEST_COMPILER_ID以匹配您的編譯器。
-
構(gòu)建示例項(xiàng)目:
> cd <CPPTEST_INSTALL_DIR>/examples/Timer> mkdir build> cd build> cmake -DCPPTEST_COVERAGE=ON -DCPPTEST_HOME=<CPPTEST_INSTALL_DIR> ..> make -
運(yùn)行應(yīng)用程序:
> ./timer -
生成覆蓋率報(bào)告:
> make cpptest_coverage_report報(bào)告將在<CPPTEST_INSTALL_DIR>/examples/Timer/build/cpptest-coverage/Timer/reports.
Parasoft——領(lǐng)先的自動(dòng)化測試工具,滿足絕大多數(shù)行業(yè)標(biāo)準(zhǔn)
Parasoft是一家專門提供軟件測試解決方案的公司,幫助企業(yè)打造無缺陷的軟件。
從開發(fā)到質(zhì)量檢查,Parasoft的技術(shù)通過集成靜態(tài)和運(yùn)行時(shí)分析,單元、功能和API測試,以及服務(wù)虛擬化,在不犧牲質(zhì)量和安全性的情況下加快軟件交付,節(jié)約交付成本。
強(qiáng)大的報(bào)告和分析功能可幫助用戶快速查明有風(fēng)險(xiǎn)的代碼區(qū)域,并了解新代碼更改如何影響其軟件質(zhì)量,而突破性的技術(shù)將人工智能和機(jī)器學(xué)習(xí)添加到軟件測試中,使組織更容易采用和擴(kuò)展跨開發(fā)和測試團(tuán)隊(duì)的有效的軟件測試實(shí)踐。
Parasoft針對(duì)C/C++、Java、.NET和嵌入式的開發(fā)測試都有著30多年的深入研究,很多全國500強(qiáng)企業(yè)使用Parasoft的產(chǎn)品實(shí)現(xiàn)了軟件快速、高質(zhì)量的交付。
獲取Parasoft資料或申請(qǐng)?jiān)囉每杉観Q:2867205852