ReactiveCocoaを使っているとあまり関係ないですが、KVC/KVOの文字列を間違っていると悲しいですよね。
今回紹介するClang-KeyPathValidatorはKVC系のメソッドのリテラルをコンパイル時にチェックして、警告を出してくれるClangのプラグインです。
Xcodeと組み合わせて動作できるようなので試してみました。
導入
バイナリがありますので、それを適当な場所に置くだけです。
Releasesページより、kvc-clang-rel34–2014–05–17.zipとKVC-Warning-Test-Project–2014–05–17.zipの2つのファイルをダウンロードします。
本体であるkvc-clang-rel34–2014–05–17.zipを~/devに配置します。
$ cd ~/dev $ unzip ~/Downloads/kvc-clang-rel34-2014-05-17.zip
サンプルプロジェクトでの動作確認
動作確認用に、サンプルプロジェクトKVC-Warning-Test-Project–2014–05–17.zipを解凍します。
$ cd ~/src $ unzip ~/Downloads/KVC-Warning-Test-Project-2014-05-17.zip
テストプロジェクト内のコンパイル用スクリプトclang_warning_wrapper.shを修正します。
# ↓ これを追記 CUSTOM_CLANG_ROOT=$HOME/dev/kvc-clang-rel34-2014-05-17
プロジェクトをビルド
これで、ソースコードやIssue Naivgatorで警告が表示されているはずです。
動作としては、無理矢理コンパイラ変数CC
を書き換えて、clang_warning_wrapper.shを呼ぶようにし、それがkvc-clang-rel34–2014–05–17に入っているclang
経由でプラグインを呼びつつコンパイルもしています。
LLVMとClangのバージョンが古いので、そういうことをしているらしいです。
$CUSTOM_CLANG_ROOT/bin/clang -Xclang -load -Xclang $CUSTOM_CLANG_ROOT/lib/libKeyPathValidator.dylib -Xclang -plugin -Xclang validate-key-paths -fsyntax-only -Qunused-arguments $@ $DISABLE_BAD_WARNINGS_IN_CUSTOM_CLANG
新規プロジェクトへの導入
一応、次のようにすれば導入できました。ただし、PCHを切ってしまうのであまりお勧めではありません。
- プロジェクトを作成
- コンパイル用スクリプトclang_warning_wrapper.shをプロジェクト直下にコピーして、
chmod +x clang_warning_wrapper.sh
で実行権限を追加します。 - プロジェクト設定からUser-Definedを追加を選択します。
- キーを
CC
として、値をデバッグ版のみ$(SRCROOT)/clang_warning_wrapper.sh
とします。 Prefix Header
をデバッグ版のみ削除します。
ちなみに、pchを削除しないと、次のようなエラーになってコンパイルできませんでした。
おわりに
Clang-KeyPathValidatorを紹介しました。JenkinsやGitのフックでチェックできるようになるとよさげだなと思いました。
0 件のコメント:
コメントを投稿
注: コメントを投稿できるのは、このブログのメンバーだけです。