2017-09-13 949 views

回答

1

感謝您的回答,parasoft不是一個知名的話題。 答案值得一塊黃金。我無法找到cpptesttrace。 有cpptest和cpptestscan。他們可以嗎?我使用舊版本的parasoft。

你是對的。 'cpptesttrace'是在Parasoft C++測試版本9.4(2012年中)中添加的,所以很可能您使用的是版本9.2或更早的版本,其中只有'cpptestscan'。

BTW,這裏是C++測試獨立安裝(不Visual Studio的插件)內的程序簡單說明:

  • cpptest - 啓動C++測試GUI(基於Eclipse),通常用於交互式工作桌面
  • cpptestcli - 用於自動化靜態分析的C++測試命令行驅動程序,例如作爲Jenkins作業運行,
  • cpptestscan - 用作編譯器命令行的前綴以捕獲單個編譯信息並將其添加到BDF文件中
  • cpptesttrace - (自Parasoft C++ test 9.4以來)用作前綴建立命令行,捕獲所有的編譯命令,並保存在一個文件中BDF

cpptestscan和cpptesttrace之間的主要區別在於:

  • cpptestscan必須預先考慮到每個編譯命令行。這意味着,cpptestscan只能捕獲單個編譯,並一次將一個文件保存到BDF中。這通常通過覆蓋使CC或CXX變量(指定編譯器,例如「cpptestscan g ++ -c foo.c -o foo.o」)來完成。
  • cpptestrace是爲了在整個構建命令中預置一次,並且它跟蹤由build命令調用的子進程。被識別爲編譯器調用的所有進程的記錄都存儲在BDF中。

如果makefile或構建腳本具有足夠的靈活性以允許在命令行覆蓋編譯器,則cpptestscan會很好,例如,

make CXX="cpptestscan g++" CC="cpptestscan gcc" 

通常可以使用基於製造的項目。自定義或自動生成的構建腳本,所有投注都關閉。通常,唯一的選擇是修改人們通常感到緊張的項目構建腳本。 在這種情況下,cpptesttrace可以提供幫助,因爲它完全沒有侵入性,並且可以從幾乎任何構建過程中捕獲構建信息。

讓我們再回到這個職位的原題,如果你有多個項目:

  • 使用cpptestscan,你需要以某種方式前綴編譯器cpptestscan在每個項目的構建腳本來創建相應的BDF
  • 使用cpptesttrace,你可以在每個項目的build命令前面添加cpptesttrace來創建相應的BDF 後者通常更容易,但是你需要更新的C++測試(最新版本爲10.3)。

我希望幫助。 BTW:如果你可以升級你的C++測試,請與Parasoft聯繫。

+0

非常感謝。這些解釋啓發了我。 – Alperen

+0

我有2個項目使用Parasoft。你的答案對兩者都很有幫助。其中一個是完美的作品,但我有另一個問題。它仍然失敗,並在一些文件中給出解析錯誤。我檢查了這些文件,發現它們都包含相同的標頭,但Parasoft IDE給出了「未解決的包含」錯誤。該項目在其自己的IDE中正確構建。而且,我使用了由此構建過程創建的bdf文件。由於這個通用頭文件位於包含目錄中,所以構建過程在其自己的IDE中正常工作。爲什麼這不起作用? – Alperen

+0

另外,我可以在bdf文件中看到相關的include目錄。而且,這個頭文件沒有C文件,因爲它包含一些簡單的定義。假設它的名字是「asd.h」,那麼在bdf文件中沒有「asd.o」這個詞。 – Alperen

0

使用make文件不是必需的。 Parasoft C++測試有一個名爲'cpptesttrace'的工具,它監視構建過程並收集編譯器調用以創建BDF文件。
cpptesttrace可以用於任何構建過程,無論是make,shell腳本還是甚至在IDE中構建(如果沒有命令行構建可用,最後的手段)。

cpptesttrace工作原理:

  • 你只需要前綴「cpptesttrace」也許一對夫婦選擇你原來的構建命令行,運行正常體形
  • 確保全面運行重建(如'make clean all')以確保BDF包含關於屬於您的構建的所有源的信息以及它們的編譯方式
  • cpptesttrace具有一組內置的支持編譯器,您可以通過運行'cpptesttrace --cpptesttraceHelp」。如果你的GNU GCC編譯器名稱是「異常的」,你可以重新定義cpptesttrace正在尋找的模式。
  • 在遇到麻煩的情況下,您可以隨時聯繫Parasoft的支持

例1:

我會給出一個make文件例如:),但它可能是使用SCons,果醬,或Python腳本或.bat: 假設,我構建完成這樣的:

make clean all 

我可以運行編譯如下,使用cpptesttrace: cpptesttrace make clean all 這將監視整個構建並從運行創建一個BDF文件。

例2:

如果你的版本是用腳本多層次的過程中或作出改變文件夾一路上,這可能是件好事告訴cpptesttrace爲BDF的絕對位置。擴展上面的例子中,我們可以運行:

cpptesttrace --cpptesttraceOutputFile=`pwd`/cpptest.bdf make clean all 

這將確保BDF路徑是絕對的,無論哪個源樹級別cpptesttrace被調用。

+0

感謝您的回答,parasoft不是一個知名的話題。答案值得一塊黃金。我無法找到cpptesttrace。有cpptest和cpptestscan。他們可以嗎?我使用舊版本的parasoft。 – Alperen