2011-05-01 244 views
22

我需要代碼覆蓋我的iphone應用程序。XCode - 代碼覆蓋率?

任何人都可以提供有關如何獲得代碼覆蓋Xcode 4的詳細信息?

謝謝

+0

鏘/ LLVM沒有對gcov的支持並且不提供代碼覆蓋功能。您可能能夠使用gcc和GCC,具體取決於您的程序是否使用GCC構建。請參閱[LLVM上的此錯誤報告](http://llvm.org/bugs/show_bug.cgi?id=8030),並考慮[提交功能請求雷達](http://bugreport.apple.com)。 – 2011-05-01 23:03:24

+0

你已經在你的info.plist中設置了UIApplicationExitsOnSusspend爲YES – aryaxt 2011-06-24 13:41:47

+1

@Bavarious:根據你的bugreport,clang現在支持報道嗎? – 2011-07-07 13:32:40

回答

12

下載封面我有一個entry on my blog覆蓋這個確切的話題。

它提供了關於如何在Xcode 4中啓用GCOV以及如何使用CoverStory顯示結果的分步指南。

+0

我遵循了您的所有說明,並且每個文件的結果都覆蓋了0%的代碼。測試正在通過構建結果顯示。有什麼建議麼? – aryaxt 2011-05-10 18:11:32

+0

確保您沒有使用任何預編譯頭文件,因爲這些可能會導致0%的結果。你可能還需要做一個乾淨的構建。 – 2011-05-10 20:15:06

+0

謝謝。還有1個問題。我可以將我的目標設置爲ios還是必須是MAC OS X. – aryaxt 2011-05-10 20:44:43

9

這些步驟將有所幫助。

  1. 創建一個新的構建配置('Coverage'),從'Debug'配置中複製。

  2. 開拓爲主要對象構建設置,請確保您的新的配置選擇,以及:

    Enable 「Generate Test Coverage Files」 
    Enable 「Instrument Program Flow」 
    Add 「-lgcov」 to 「Other Linker Flags」 
    
  3. 與覆蓋模式編譯應用程序。

  4. 檢查應用程序包文件夾中的.gcno文件。

    報道 - iphonesimulator/applicationname.build /目標正常

    打開.gcno文件與封面。從
    http://code.google.com/p/coverstory/downloads/list

參考網站

3

我無法找到一個很好的例子,所以希望這可以幫助別人。

如果你想從你的代碼覆蓋生成HTML(一旦你生成你的.gcda文件),您可以安裝lcov和使用這些命令:

function generate-codecoverage-html() { 
    if [[ $1 == "-h" || ! $# -eq 2 ]]; then 
     echo " usage: $0 path/to/codecoverage/dir/ path/to/htmldir/" 
     return 
    fi 

    timestamp=$(date) 
    tmpfile="/tmp/codecoverage.info-$date" 
    lcov --no-checksum --directory "$1" --capture --output-file "$tmpfile" 
    genhtml --output-directory "$2" "$tmpfile" 
} 
+0

'lcov'在哪裏? – AnneTheAgile 2017-11-10 21:16:49

+0

找到了; https://github.com/linux-test-project/lcov,在https://github.com/jonreid/XcodeCoverage中引用 – AnneTheAgile 2017-11-10 21:57:45