2016-08-17 121 views
0

我們使用Xcode 7和8(測試版)。 Apple在XCode 7中棄用了GCOV代碼覆蓋範圍,並在XCode 8中完全刪除了它。因此,我們正試圖轉移到導出profdata文件。我們如何爲iOS手動測試生成(profdata)代碼覆蓋率?

我們需要能夠生成代碼覆蓋率文件(profdata/profraw但不gcno或gcda)在執行手動任務,這裏就是我的嘗試:

GTM_CONFIGURATION_OTHER_CFLAGS = -fprofile-instr-generate -fcoverage-mapping 

除了

//If enabled, passes flag -fprofile-instr-generate and -fprofile-instr-generate 
CLANG_INSTRUMENT_FOR_OPTIMIZATION_PROFILING = YES 

我知道如何爲XCTests運行代碼覆蓋率,但在這種情況下,我需要在手動運行時也能夠生成代碼覆蓋率。

回答

1

我相信,但還沒有嘗試過,這可以通過在您的代碼中調用__llvm_profile_write_file(void)來完成。您需要轉發聲明,並找出在需要時觸發呼叫的方式。值得注意的是,生成的文件將繼續彙總整個執行的覆蓋範圍,並且如果您想比較不同執行階段的覆蓋範圍,您可能需要複製生成的文件。

,我發現了一些細節此位置:http://clang.llvm.org/docs/SourceBasedCodeCoverage.html

「前向申報INT __llvm_profile_write_file(無效),並把它寫了一份簡歷,這個函數返回0,當它成功,非零值,否則調用此函數多次將配置文件數據添加到現有的磁盤原始配置文件中。「

+0

這個函數產生了什麼?需要使用「llvm-profdata merge -o」合併的profraw文件?或profdata文件? – LiohAu

+0

@LiohAu:需要合併的profraw文件。 – Arcank

-1

看起來像int __llvm_profile_write_file(void)適用於與CLANG_INSTRUMENT_FOR_OPTIMIZATION_PROFILING配對的Obj C項目。但只要你在swift項目中添加一個swift文件就會抱怨.. Swift does not support profile guided optimization.。有沒有解決方法?

相關問題