7

Xcode 4.2を使い始めましたが、コードカバレッジの生成に問題があります。

Xcode4.2にはGCC4.2コンパイラは含まれていませんが、LLVMGCC4.2コンパイラに置き換えられました。最初のものは、以前のバージョンのXcodeでコードカバレッジを生成するために必要でした。

CoverStory Webサイトの「チュートリアル」に従いましたが、結果は次のようになります。

a)すべての手順を実行すると、カバレッジファイルはありません。
b)libprofile_rt.dylibをプロジェクトにリンクすると、失敗するはずのテストが失敗しなくなります。

誰かがこの問題に遭遇しましたか?そして、どのようにそれを解決しましたか?

ありがとう

4

3 に答える 3

4

このブログには、LLVM を使用して gcc 互換のカバレッジ結果を達成する方法に関する優れたチュートリアルがあります。

カバレッジ機能は現在の LLVM フロントエンドで利用できますが、
XCode に同梱されている現在のバージョンでは公開されていないようです。

カバレッジの目的で独自のバージョンをコンパイルし、最終的なバイナリ生成のために出荷されたバージョンに固執することが解決策になる可能性があることに著者に同意します。

また、彼のチュートリアルが次のように主張していることにも注意してください。

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

多分これはあなたに役立つでしょう。

于 2011-10-28T09:49:06.710 に答える
3

xcode 4.2でgcc 4.2でのコンパイルを有効にする方法を次に示します。これは主にコマンド ライン経由で行われるため、: で始まる行が表示されたら、 Terminal.appを開いて.の後に始まるコマンドを実行する必要があります。[ 15:30 jon@MacBookPro / ]$$

このプロセスではファイルやディレクトリが削除されたり削除されたりしないため、将来 LLVM でコンパイルする必要がある場合に簡単に元に戻すことができます。

  1. ダウンロード - ただし、まだインストールしないでください- xcode_4.1_for_lion.dmgまたはxcode_4.1_for_snow_leopard.dmg

  2. 次の手順に従って、Xcode 4.1 を にインストールします/Developer-4.1

    1. /Developer作業ディレクトリ (Xcode 4.2 がインストールされている場所) をバックアップします。

    2. [ 15:30 jon@MacBookPro / ]$ sudo mv -v /Developer /Developer-4.2
      
    3. デフォルトのインストール場所を使用して Xcode 4.1 インストーラーを実行します ( /Developer)

    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.2GCC 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"
    
    • 41行目と42行目を次のように変更します。

      ShowInCompilerSelectionPopup = NO;
      IsNoLongerSupported = YES;
      
    • これに:

      ShowInCompilerSelectionPopup = YES; 
      IsNoLongerSupported = NO;
      
  4. Xcode 4.2 iOS/Simulator Frameworkusrディレクトリをバックアップします。

    [ 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 Frameworkusrディレクトリを 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. gccおよびinfoiOS 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]コマンド ラインから ( 、、、などviを使用して) 開く場合は、パスを引用符で囲むか、スペースをエスケープしてください。emacsnano"/long path/with spaces/in it/file.xcspec"/some/long\ path/with\ spaces/in\ it/file.xcspec

[2] iPhoneOS.platform SDK には独自の個別の/usr/libディレクトリがありますが、iPhoneSimulator.platform SDK にはないため、これが必要です。

于 2011-10-29T21:59:57.620 に答える