2012/07/12

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

Command Line Toolsを入れたらまたカバレッジが取れなくなりました。 Command Line Toolsを入れたことで、/usr/lib/libprofile_rt.dylibが上書きされて実体になっていたりしたので、そこらへんが原因のようです。

カバレッジの取得 (Lion + Xcode 4.3.3 + Command Line Tools)

いろいろ調べた結果、次のようにすればよいとわかりました。

  1. XcodeのPreferenceのDownloadsタブからCommand Line ToolsをInstallしておく。

  2. Xcodeのプロジェクト設定において、ターゲットMyProjectにある次の2項目をYESにする。
    • Instrument Program Flow
    • Generate Test Coverage Files
  3. Objectve-Cの新規クラス作成からCoverageFixというクラスを追加する。
    • Target MembershipはMyProjectのみにチェックを入れておく (MyProjectTestはチェックしなくてよい)。
  4. CoverageFix.hに次の2行を追加

       @interface CoverageFix : NSObject 
     + FILE* fopen$UNIX2003(const char* filename, const char* mode); 
     + size_t fwrite$UNIX2003(const void* ptr, size_t size, size_t nitems, FILE* stream); 
       @end 
    
  5. CoverageFix.mに次の6行を追加

       @implementation CoverageFix 
     + FILE* fopen$UNIX2003(const char* filename, const char* mode) { 
     +     return fopen(filename, mode); 
     + } 
     + size_t fwrite$UNIX2003(const void* ptr, size_t size, size_t nitems, FILE* stream) { 
     +     return fwrite(ptr, size, nitems, stream); 
     + } 
       @end 
    

これでテスト実行すると、$HOME/Library/Developer/Xcode/DerivedData/MyProject-<適当な文字列>/Build/Intermediates/MyProject.build/Debug-iphonesimulator/MyProject.build/Objects-normal/i386あたりに.gcnoと.gcdaなどが生成されているはずです。

参考

CoverStoryの利用

CoverStoryの利用法も簡単に紹介します。

  1. http://code.google.com/p/coverstory/ からdmgをダウンロードしてApplicationにドロップ
  2. gcovが生成物があるフォルダ (i386) をCoverStoryにドロップ
  3. 次のようなウィンドウが開きます。左に実行したファイル一覧があり、右に実行したコードが表示されます。テストされていないコードスクロールバー上で赤く表示されます。

関連情報

0 件のコメント:

コメントを投稿

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