GCC C C 產生覆蓋率

2021-10-03 06:14:54 字數 797 閱讀 1555

在linux上的c/c++開發一般都使用gcc/g++作為主要的編譯器,如果需要產生覆蓋率資料需要在makefile或者scons檔案中做下面的編譯鏈結設定:

scons是乙個開放原始碼、以python語言編碼的自動化構建工具,可用來替代make編寫複雜的makefile。並且scons是跨平台的,只要scons指令碼寫的好,可以在linux和windows下隨意編譯。

scons 的設計目標就是讓開發人員更容易、更可靠和更快速的建造軟體。

與傳統的 make 工具比較,scons 具有以下優點:

基本要求就上面三點,但有乙個建議,為了上述幾個編譯選項的使用不影響到正常的編譯過程(否則會極大地影響程式的執行效率)。在使用makefile中通過引數傳遞來支援覆蓋率產生,可以在makefile使用下面的方式:

ifeq (

$(coverage)

, yes)

cxxflags += -fprofile-arcs -ftest-coverage

linkercxx += -fprofile-arcs -ftest-coverage

opt_flags = -g3

endif

這樣,可以使用 make coverage=yes 來引入這些編譯選項而不會影響到正常的編譯(scons同理)。

覆蓋率產生的過程如下面三個步驟所示:

編譯鏈結帶覆蓋率引數的源**;

執行測試程式;

使用gcov獲取文字形式的覆蓋率資料或使用lcov獲取html形式的覆蓋率資料;

可以參考:

覆蓋率選項,覆蓋率分析

covergroup選項提供不同的覆蓋率選項,來計算覆蓋率。乙個covergroup可能會被多個地方例化使用,預設情況下sv會將所有的例項的覆蓋率合併到一起計算。如果需要單獨列出每個covergroup例項的覆蓋率,需要以下設定覆蓋率選項。covergroup cov coverpoint tr.l...

功能覆蓋率

功能覆蓋率 function coverage 是屬於黑盒測試範疇內的,在實際測試中,涉及到的覆蓋率一般都是結構化覆蓋率,與黑盒相關的覆蓋率比較少。功能覆蓋中最常見的是需求覆蓋,其含義是通過設計一定的測試用例,要求每個需求點都被測試到。其公式是 需求覆蓋 被驗證到的需求數量 總的需求數量 在黑盒測試...

測試覆蓋率

摘要 在測試方法中粗略的介紹了幾種測試方法。其中,白盒測試的動態分析方法中提到邏輯覆蓋率測試有 語句覆蓋 分支覆蓋 判定覆蓋 條件覆蓋 條件 判定覆蓋和路徑覆蓋。這裡將詳細闡述邏輯覆蓋率測試。準備知識 可執行語句 可執行的一項操作 真 假分支 ture false 運算元 opreand 操作符 o...