2014/05/30

Clang-KeyPathValidatorでKVCのパスをXcodeでチェックできるようにする

ReactiveCocoaを使っているとあまり関係ないですが、KVC/KVOの文字列を間違っていると悲しいですよね。

今回紹介するClang-KeyPathValidatorはKVC系のメソッドのリテラルをコンパイル時にチェックして、警告を出してくれるClangのプラグインです。

Xcodeと組み合わせて動作できるようなので試してみました。

導入

バイナリがありますので、それを適当な場所に置くだけです。

  1. Releasesページより、kvc-clang-rel34–2014–05–17.zipとKVC-Warning-Test-Project–2014–05–17.zipの2つのファイルをダウンロードします。

  2. 本体であるkvc-clang-rel34–2014–05–17.zipを~/devに配置します。

    $ cd ~/dev
    $ unzip ~/Downloads/kvc-clang-rel34-2014-05-17.zip 
    

サンプルプロジェクトでの動作確認

  1. 動作確認用に、サンプルプロジェクトKVC-Warning-Test-Project–2014–05–17.zipを解凍します。

    $ cd ~/src
    $ unzip ~/Downloads/KVC-Warning-Test-Project-2014-05-17.zip
    
  2. テストプロジェクト内のコンパイル用スクリプトclang_warning_wrapper.shを修正します。

    # ↓ これを追記
    CUSTOM_CLANG_ROOT=$HOME/dev/kvc-clang-rel34-2014-05-17
    
  3. プロジェクトをビルド

これで、ソースコードや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を切ってしまうのであまりお勧めではありません。

  1. プロジェクトを作成
  2. コンパイル用スクリプトclang_warning_wrapper.shをプロジェクト直下にコピーして、chmod +x clang_warning_wrapper.shで実行権限を追加します。
  3. プロジェクト設定からUser-Definedを追加を選択します。
  4. キーをCCとして、値をデバッグ版のみ$(SRCROOT)/clang_warning_wrapper.shとします。
  5. Prefix Headerをデバッグ版のみ削除します。

ちなみに、pchを削除しないと、次のようなエラーになってコンパイルできませんでした。

おわりに

Clang-KeyPathValidatorを紹介しました。JenkinsやGitのフックでチェックできるようになるとよさげだなと思いました。

関連リンク

0 件のコメント:

コメントを投稿

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