• <menu id="w2i4a"></menu>
  • logo Parasoft C/C++ test 自動(dòng)化用戶指南

    文檔首頁>>Parasoft C/C++ test 自動(dòng)化用戶指南>>Parasoft C/C++ test 自動(dòng)化用戶指南(二十一):與基于 Make 的構(gòu)建系統(tǒng)集成

    Parasoft C/C++ test 自動(dòng)化用戶指南(二十一):與基于 Make 的構(gòu)建系統(tǒ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 與基于 GNU Make 或類似構(gòu)建工具的項(xiàng)目集成通常需要修改構(gòu)建腳本。在大多數(shù)情況下,編譯和鏈接規(guī)則調(diào)用的命令行應(yīng)該被改變。這可能需要您修改 make 變量,或者在某些情況下,需要修改編譯和鏈接規(guī)則定義。

    與 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

    在這個(gè)例子中,編譯器被一個(gè) CXX make 變量引用。有兩種選擇:

    • 將前綴變量添加到編譯規(guī)則中,或者
    • 覆蓋編譯器變量

    以下部分描述了如何繼續(xù)使用這兩種方法。

    將前綴變量添加到編譯規(guī)則

    通過在引用編譯器的變量前添加一個(gè)附加變量來修改編譯規(guī)則:

    $(PRODUCT_OBJ_ROOT)/%$(EXT_OBJ) : %$(EXT_CXX)
       $(COV_TOOL) $(CXX) $(CXXFLAGS) $(CXXSTATICFLAGS) -
    DAPPNAME=product

    此外,COV_TOOL在 Make 調(diào)用時(shí)(示例 a)或在構(gòu)建腳本(示例 b)中為添加的變量 ( )賦值

    例子一

    make COV_TOOL="cpptestcc -compiler gcc_3_4 -line-coverage -workspace /home/test/proj/cov -- "

    示例 b

    在此選項(xiàng)中,變量可能位于依賴于附加變量的條件內(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)用時(shí)(示例 c)或在CXX指定變量的原始值之后的構(gòu)建腳本(示例 d)中完成(以避免使用原始編譯器覆蓋覆蓋工具命令)。

    示例 c

    如果你的構(gòu)建腳本對(duì)不同類型的文件有不同的編譯規(guī)則,你可能需要覆蓋多個(gè)變量,例如CCand CXX

    make CXX="cpptestcc -compiler gcc_3_4 -line-coverage -workspace /home/test/proj/cov -- g++"

    例 d

    在此選項(xiàng)中,變量可能位于依賴于附加變量的條件內(nèi):

    ifeq (COV_BUILD,$(BUILD_TYPE))
        CXX="cpptestcc -compiler gcc_3_4 -line-coverage -workspace /home/test/proj/cov -- g++"
    endif

    與 Make Linking Rule 集成

    修改鏈接規(guī)則以包含代碼檢測所需的附加庫。cpptestcc根據(jù)具體的項(xiàng)目需求工具庫可以有不同的形式。它可以是共享/動(dòng)態(tài)庫、靜態(tài)庫或目標(biāo)文件。在所有情況下,特定的鏈接器選項(xiàng)可能具有不同的形式,但無論情況如何,修改 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)

    您可以添加一個(gè)特殊變量來表示cpptestcc工具庫,或者將覆蓋率庫附加到鏈接規(guī)則中已使用的變量之一。 

    添加一個(gè)變量來表示 Coverage 工具庫

    以下示例顯示了修改后的規(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)用時(shí)(示例 e)或在構(gòu)建腳本中(示例 f):

    例子e 

    make COV_LIB="<COV_TOOL_INSTALLATION>/runtime/lib/cpptest.a "

    示例 f

    在此選項(xiàng)中,變量可能位于依賴于附加變量的條件內(nèi):

    ifeq (COV_BUILD,$(BUILD_TYPE))
        COV_LIB="<COV_TOOL_INSTALLATION>/runtime/lib/cpptest.a"
    endif

    將覆蓋庫附加到鏈接規(guī)則中的現(xiàn)有變量

    ifeq (COV_BUILD,$(BUILD_TYPE))
        LXXFLAGS+="<COV_TOOL_INSTALLATION>/bin/engine/lib/cpptest.a"
    endif

    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

    申請(qǐng)Parasoft測試試用

    掃碼咨詢


    添加微信 立即咨詢

    電話咨詢

    客服熱線
    023-68661681

    TOP
    三级成人熟女影院,欧美午夜成人精品视频,亚洲国产成人乱色在线观看,色中色成人论坛 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();