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