簡體   English   中英

Xcode 4.2代碼覆蓋率

[英]Xcode 4.2 Code Coverage

我開始使用Xcode 4.2,我在生成代碼覆蓋方面遇到了問題。

Xcode 4.2不包含GCC 4.2編譯器,但它已被LLVM GCC 4.2編譯器取代。 第一個需要在以前版本的Xcode中生成代碼覆蓋。

我按照CoverStory 網站上的“教程”進行了操作,但結果如下:

a)當我執行所有步驟時,沒有覆蓋文件。
b)當我將libprofile_rt.dylib鏈接到我的項目時,應該失敗的測試,不再失敗。

有人遇到過這個問題嗎? 你是怎么解決的?

謝謝

這個博客提供了一個很好的教程,介紹如何使用LLVM實現與gcc兼容的覆蓋結果。

覆蓋功能在當前的LLVM前端中可用,但似乎沒有暴露
在XCode附帶的當前版本中。

我同意作者的說法,它可以是一個解決方案來編譯自己的版本用於覆蓋目的,並堅持最終二進制生成的發貨版本。

我還值得注意他的教程聲稱:

Since Clang outputs these files in the same format as GCC,
they are compatible with tools such as CoverStory.

也許這對你有用。

這是一種在xcode 4.2中使用gcc 4.2進行編譯的方法。 這主要通過命令行完成,因此當您看到以[ 15:30 jon@MacBookPro / ]$開頭的行時,您需要打開Terminal.app並運行在$后面開始的命令。

在此過程中不會刪除刪除任何文件或目錄,因此如果您將來需要使用LLVM進行編譯,則很容易撤消。

  1. 下載-但是不要安裝尚未 - xcode_4.1_for_lion.dmgxcode_4.1_for_snow_leopard.dmg

  2. 現在,按照以下步驟將Xcode 4.1安裝到/Developer-4.1

    1. 備份working /Developer目錄(安裝Xcode 4.2的地方)

    2.  [ 15:30 jon@MacBookPro / ]$ sudo mv -v /Developer /Developer-4.2 
    3. 使用默認安裝位置( /Developer )運行Xcode 4.1安裝程序

    4. 將新的Xcode 4.1安裝移至/Developer-4.1

       [ 15:30 jon@MacBookPro / ]$ sudo mv -v /Developer /Developer-4.1 
    5. 將Xcode 4.2開發人員目錄移回/Developer

       [ 15:30 jon@MacBookPro / ]$ sudo mv -v /Developer-4.2 /Developer 
  3. 編輯Xcode 4.2 GCC 4.2.xcspec文件,使gcc 4.2顯示在編譯器選項列表中[1]

     [ 15:30 jon@MacBookPro / ]$ sudo vi "/Developer/Library/Xcode/PrivatePlugIns/Xcode3Core.ideplugin/Contents/SharedSupport/Developer/Library/Xcode/Plug-ins/GCC 4.2 (Plausible Blocks).xcplugin/Contents/Resources/GCC 4.2.xcspec" 
    • 從這里改變第4142行:

       ShowInCompilerSelectionPopup = NO; IsNoLongerSupported = YES; 
    • 對此:

       ShowInCompilerSelectionPopup = YES; IsNoLongerSupported = NO; 
  4. 備份Xcode 4.2 iOS / Simulator Framework usr目錄:

     [ 15:30 jon@MacBookPro / ]$ sudo mv -v /Developer/Platforms/iPhoneOS.platform/Developer/usr /Developer/Platforms/iPhoneOS.platform/Developer/usr.backup [ 15:30 jon@MacBookPro / ]$ sudo mv -v /Developer/Platforms/iPhoneSimulator.platform/Developer/usr /Developer/Platforms/iPhoneSimulator.platform/Developer/usr.backup 
  5. 將Xcode 4.1 iOS / Simulator Framework usr目錄復制到Xcode 4.2:

     [ 15:30 jon@MacBookPro / ]$ sudo cp -rv /Developer-4.1/Platforms/iPhoneOS.platform/Developer/usr /Developer/Platforms/iPhoneOS.platform/Developer/usr [ 15:30 jon@MacBookPro / ]$ sudo cp -rv /Developer-4.1/usr /Developer/Platforms/iPhoneSimulator.platform/Developer/usr 
  6. gccinfo iOS SDK庫目錄從Xcode 4.1復制到Xcode 4.2 [2]

     [ 15:30 jon@MacBookPro / ]$ sudo cp -rv /Developer-4.1/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS4.3.sdk/usr/lib/gcc /Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS5.0.sdk/usr/lib/gcc [ 15:30 jon@MacBookPro / ]$ sudo cp -rv /Developer-4.1/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS4.3.sdk/usr/lib/info /Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS5.0.sdk/usr/lib/info 
  7. 使用gcc-4.2編譯!

    xcode 4.2中CGG 4.2的屏幕截圖

這是一篇博文,我寫了一些關於這個過程的更多信息。 如果您遇到任何問題或有任何問題,請隨時在博客上發表評論。


[1]如果從命令行打開(使用類似viemacsnano等的東西),請確保將路徑括在引號“/ long path / with spaces / in / file.xcspec”中,或者轉義空格/ some / long \\ path / with \\ spaces / in \\ it / file.xcspec

[2]這是必要的,因為iPhoneOS.platform SDK有自己的單獨的/usr/lib目錄,但iPhoneSimulator.platform SDK沒有

Xcode 4.2的默認編譯器是LLVM 3.0。 Apple正在從LLVM轉移到GCC 4.2,它仍然可以選擇。 然而,GCC 4.2已經不復存在了。

我想除了找到一個與LLVM 3.0(最好)或LLVM GCC 4.2一起使用的不同代碼覆蓋解決方案之外別無選擇,或者等到有人提供這樣的工具。 畢竟,Xcode 4.2相對較新,代碼覆蓋相對重要,所以我相信最終會有一個有效的解決方案。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM