翻譯|使用教程|編輯:李顯亮|2021-07-20 10:05:47.760|閱讀 238 次
概述:將 C/C++test 與基于 GNU Make 或類似構建工具的項目集成通常需要修改構建腳本。
# 界面/圖表報表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
相關鏈接:
Parasoft C/C++test針對C/C++開發的專業白盒自動化測試方案,能有效提高軟件開發效率和代碼質量。C++test 可以進行靜態分析,全面代碼審查,運行時錯誤檢測,并在單元測試和組件測試中集成覆蓋率分析。
將Parasoft C/C++test 與基于 GNU Make 或類似構建工具的項目集成通常需要修改構建腳本。在大多數情況下,編譯和鏈接規則調用的命令行應該被改變。這可能需要您修改 make 變量,或者在某些情況下,需要修改編譯和鏈接規則定義。
使用cpptestcc命令包裝器為編譯器命令行添加前綴以與 Make 編譯規則集成。要確定最佳方法,首先要分析構建腳本并找到編譯規則的定義。在某些情況下,特定文件有不同的規則,例如處理 C 或 C++ 文件的規則。以下示例顯示了如何定義編譯規則:
$(PRODUCT_OBJ_ROOT)/%$(EXT_OBJ) : %$(EXT_CXX)
$(CXX) $(CXXFLAGS) $(CXXSTATICFLAGS) -DAPPNAME=product
|
在這個例子中,編譯器被一個 CXX make 變量引用。有兩種選擇:
以下部分描述了如何繼續使用這兩種方法。
通過在引用編譯器的變量前添加一個附加變量來修改編譯規則:
$(PRODUCT_OBJ_ROOT)/%$(EXT_OBJ) : %$(EXT_CXX)
$(COV_TOOL) $(CXX) $(CXXFLAGS) $(CXXSTATICFLAGS) -
DAPPNAME=product
|
此外,COV_TOOL在 Make 調用時(示例 a)或在構建腳本(示例 b)中為添加的變量 ( )賦值:
例子一
make COV_TOOL="cpptestcc -compiler gcc_3_4 -line-coverage -workspace /home/test/proj/cov -- "
|
示例 b
在此選項中,變量可能位于依賴于附加變量的條件內:
ifeq (COV_BUILD,$(BUILD_TYPE))
COV_TOOL="cpptestcc -compiler gcc_3_4 -line-coverage
-workspace /home/test/proj/cov -- "
endif
|
在這種方法中,編譯器變量用于指定覆蓋工具命令行。這可以在 Make 調用時(示例 c)或在CXX指定變量的原始值之后的構建腳本(示例 d)中完成(以避免使用原始編譯器覆蓋覆蓋工具命令)。
示例 c
如果你的構建腳本對不同類型的文件有不同的編譯規則,你可能需要覆蓋多個變量,例如CCand CXX:
make CXX="cpptestcc -compiler gcc_3_4 -line-coverage -workspace /home/test/proj/cov -- g++"
|
例 d
在此選項中,變量可能位于依賴于附加變量的條件內:
ifeq (COV_BUILD,$(BUILD_TYPE))
CXX="cpptestcc -compiler gcc_3_4 -line-coverage -workspace /home/test/proj/cov -- g++"
endif
|
修改鏈接規則以包含代碼檢測所需的附加庫。cpptestcc根據具體的項目需求,工具庫可以有不同的形式。它可以是共享/動態庫、靜態庫或目標文件。在所有情況下,特定的鏈接器選項可能具有不同的形式,但無論情況如何,修改 Makefile 的方式都非常相似。
本節重點介紹在類 Make 環境中修改鏈接器命令行的一般方法。
要找到合適的修改位置,首先要分析構建腳本并找到鏈接規則的定義。以下示例顯示了如何定義鏈接規則:
$(PROJ_EXECUTABLE): $(PRODUCT_OBJ)
$(LXX) $(PRODUCT_OBJ) $(OFLAG_EXE)$(PROJ_EXECUTABLE) $(LXXFLAGS) $(SYSLIB) $(EXECUTABLE_LIB_LXX_OPTS)
|
您可以添加一個特殊變量來表示cpptestcc工具庫,或者將覆蓋率庫附加到鏈接規則中已使用的變量之一。
以下示例顯示了修改后的規則可能是什么樣子:
$(PROJ_EXECUTABLE): $(PRODUCT_OBJ)
$(LXX) $(PRODUCT_OBJ) $(OFLAG_EXE)$(PROJ_EXECUTABLE) $(LXXFLAGS) $(SYSLIB) $(EXECUTABLE_LIB_LXX_OPTS) $(COV_LIB)
|
此外,為添加的變量賦值(COV_LIB)在 Make 調用時(示例 e)或在構建腳本中(示例 f):
例子e
make COV_LIB="<COV_TOOL_INSTALLATION>/runtime/lib/cpptest.a "
|
示例 f
在此選項中,變量可能位于依賴于附加變量的條件內:
ifeq (COV_BUILD,$(BUILD_TYPE))
COV_LIB="<COV_TOOL_INSTALLATION>/runtime/lib/cpptest.a"
endif
|
ifeq (COV_BUILD,$(BUILD_TYPE))
LXXFLAGS+="<COV_TOOL_INSTALLATION>/bin/engine/lib/cpptest.a"
endif
|
Parasoft是一家專門提供軟件測試解決方案的公司,幫助企業打造無缺陷的軟件。
從開發到質量檢查,Parasoft的技術通過集成靜態和運行時分析,單元、功能和API測試,以及服務虛擬化,在不犧牲質量和安全性的情況下加快軟件交付,節約交付成本。
強大的報告和分析功能可幫助用戶快速查明有風險的代碼區域,并了解新代碼更改如何影響其軟件質量,而突破性的技術將人工智能和機器學習添加到軟件測試中,使組織更容易采用和擴展跨開發和測試團隊的有效的軟件測試實踐。
Parasoft針對C/C++、Java、.NET和嵌入式的開發測試都有著30多年的深入研究,很多全國500強企業使用Parasoft的產品實現了軟件快速、高質量的交付。
本站文章除注明轉載外,均為本站原創或翻譯。歡迎任何形式的轉載,但請務必注明出處、不得修改原文相關鏈接,如果存在內容上的異議請郵件反饋至chenjj@fc6vip.cn