2012/10/05

JenkinsでObjective-Cソースコードの静的解析結果のグラフを表示できるようにする

前回の記事「JenkinsでObjective-Cのコード重複を採れるようにする」でObjective-Cのコード重複をJenkinsで採れるようにしました。

今回はJenkinsのClang Scan-Build Pluginを導入して、Objective-Cソースコードの静的解析結果のグラフを表示できるようにするまでの手順を紹介します。

Clang Static Analyzerの導入と動作チェック

Clang Scan-Build PluginはXcode単体では動作せず、Clang Static Analyzerが必要になります。これは、次の手順で導入します。

  1. 次のURLから checker-###.tar.bz2 をダウンロード (###は数字)。

  2. パッケージを解凍。

    cd ~/dev
    tar jxvf ~/Downloads/checker-269.tar.bz2
    
  3. 次のコマンドを.xcodeprojがあるディレクトリで実行。

    $HOME/dev/checker-269/scan-build \
     --use-cc=/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang \
     xcodebuild -alltargets -sdk iphonesimulator -configuration Debug
    

なお、次のエラーが出る場合には--use-ccの場所を適切に設定する必要があります。 Xcode関連のツールが/Applications/Xcode.app内に入ってしまったため、明示的に場所を指定する必要があるみたいです。--use-cc=`which clang`とするとはまります。上記のようにフルパスで指定してください。

ld: file not found: /usr/lib/arc/libarclite_iphonesimulator.a

実行の最後に** BUILD SUCCEEDED **が表示されたら成功です。

Clang Scan-Build Pluginの導入と設定

  1. JenkinsからClang Scan-Build Pluginをインストール

  2. Jenkinsの管理→システムの設定からClang Static Analyzerの設定を行います。ここでは、名前をてきとうに決めてパスを指定しておきます。

  3. ジョブの設定から、ビルド手順の追加→Clang Scan-Buildを追加して、次のように設定します。

    まず、Additional scan-build argumentsは次のように先ほどの--use-ccを設定しておきます。

    --use-cc=/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang
    

    Targetについては、Clang Scan-Buildのヘルプには、ここが空でもよいように書かれていますが、実際に空にすると次のようなエラーが出ます。

    xcodebuild: error: option '-activetarget' is no longer supported
    

    なのでターゲット名を入れておく必要があります。ターゲット名はXcode上のプロジェクト設定で見ることができるものです。

  4. 最後に、ビルド後処理にPublish Clang Scan-Build Resultsを追加しておきます。ここでは、バグが何個以内なら安定ビルドと見なすかを指定できますが、今回は指定しませんでした。

レポート出力例

ジョブ実行後には次のようなレポートが表示されます。正直あまり見やすくないです。

detailをクリックするとXcodeのようにコード位置にメッセージ付きで表示されます。

グラフが表示されるようになるので傾向がわかるようになるのはありがたいかも。

まとめ

Clang Scan-Build Pluginの導入と設定のしかたを紹介しました。

XcodeのAnalyzeレポートのほうが見やすい/使いやすいので、個人的にはジョブ単体でのレポートにはあまり価値がないように思えました。そのため、 グラフが表示される点としきい値で不安定ビルドにできるあたりがこのプラグインの利点かなと思いました。

関連リンク

0 件のコメント:

コメントを投稿

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