2010-07-02 57 views
11

是否可以從gcov覆蓋率分析中排除某些函數或代碼行?我的代碼包含某些用於調試的函數,並且不作爲我的測試套件的一部分執行。這些功能降低了gcov報告的覆蓋率。我想從結果中排除這些功能。如果通過gcov無法實現,也許可以通過lcov,但我無法弄清楚。感謝您的幫助。從gcov/lcov覆蓋率結果中排除某些函數

+0

參見http://stackoverflow.com/questions/3555083/how-do-i-tell-gcov-to-ignore-un-hittable-lines-of-c-code – jchl 2012-01-05 16:59:11

回答

5

我通過運行lcov --capture的輸出,通過簡單的awk腳本過濾掉某些源文件。 lcov --capture的輸出格式非常簡單,下面的awk腳本會過濾掉匹配file_pattern的源文件。我認爲可以調整腳本以使其過濾功能而不是文件名。

BEGIN { 
     record="" 
} 

/^SF/ { 
     if (match ($0, "file_pattern")) { 
      doprint = 0 
     } else { 
      doprint = 1 
     } 
} 

/^end_of_record$/ { 
     if (doprint) { 
      print record $0 
     } 
     record = "" 
     next 
} 

{ 
    record=record $0 "\n" 
} 
相關問題