Command Line Toolsを入れたらまたカバレッジが取れなくなりました。 Command Line Toolsを入れたことで、/usr/lib/libprofile_rt.dylibが上書きされて実体になっていたりしたので、そこらへんが原因のようです。
カバレッジの取得 (Lion + Xcode 4.3.3 + Command Line Tools)
いろいろ調べた結果、次のようにすればよいとわかりました。
XcodeのPreferenceのDownloadsタブからCommand Line ToolsをInstallしておく。
- Xcodeのプロジェクト設定において、ターゲットMyProjectにある次の2項目をYESにする。
- Instrument Program Flow
- Generate Test Coverage Files
- Objectve-Cの新規クラス作成からCoverageFixというクラスを追加する。
- Target MembershipはMyProjectのみにチェックを入れておく (MyProjectTestはチェックしなくてよい)。
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
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の利用法も簡単に紹介します。
- http://code.google.com/p/coverstory/ からdmgをダウンロードしてApplicationにドロップ
- gcovが生成物があるフォルダ (i386) をCoverStoryにドロップ
- 次のようなウィンドウが開きます。左に実行したファイル一覧があり、右に実行したコードが表示されます。テストされていないコードスクロールバー上で赤く表示されます。
0 件のコメント:
コメントを投稿
注: コメントを投稿できるのは、このブログのメンバーだけです。