2012/06/28

Lion + Xcode 4.3.3環境でコードカバレッジを取得する

先日、Lion + Xcode 4.3.3に移行しました。 そのとき、前の記事「Xcode + CoverStoryでテストコードのカバレッジを見えるようにする」 のSnow Leopard + Xcode 4.2のときにやった方法ではカバレッジ取得のためのテスト実行ができなくなったので調べてみました。

どうやら、Xcode 4.3になってから、/Developerの場所が変わり、さらにlibprofile_rt.{a ,dylib}が/usr/libにないことが原因のようです。

2012.07.12 追記: Command Line Toolsを導入している場合には次の記事も参考にしてください。

手順

次のように設定すればよいです。

  1. sudo ln -s /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/usr/lib/libprofile_rt.dylib /usr/lib/libprofile_rt.dylib
  2. XcodeのBuild Settingsを開く
  3. Other C Flagsに-fprofile-arcsと-ftest-coverageを追加する
  4. Other Linker Flagsに-lprofile_rtを追加する
  5. Other Linker Flagsに-L/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/usr/lib/を追加する (不要かも)

参考: ios5 - Code coverage on iOS Using Xcode 4.2 on Lion - Stack Overflow

また、Cover Storyの導入や利用については以前の記事を参照してください。

別の方法 (Xcode 4.2のみ?)

手元の環境では、この方法では解決できませんでしたが、Xcode 4.2だといけるっぽいので一応紹介。

  1. [Build Settings]で次の2つをYesにする。
    • Generate Test Coverage Files
    • Instrument Program Flow.
  2. Cのファイルを作成して、次のように書く #include <stdio.h>

    FILE *fopen$UNIX2003( const char *filename, const char *mode )
    {
        return fopen(filename, mode);
    }
    
    size_t fwrite$UNIX2003( const void *a, size_t b, size_t c, FILE *d )
    {
        return fwrite(a, b, c, d);
    }
    

参考: ios - Code coverage with Xcode 4.2 - Missing files - Stack Overflow

関連リンク

0 件のコメント:

コメントを投稿

注: コメントを投稿できるのは、このブログのメンバーだけです。