はじめに
コード品質を保つためにも、静的解析は大事です。
ただ、毎回手作業で解析するのも面倒なので、Jenkinsを使って自動化しましょう!
説明すること
- Jankinsのインストールから、scan-buildを実行するジョブの作成まで
説明しないこと
- JenkinsのSCM関連の設定方法
- xcodebuild等のコマンド
環境
- MacOS X (10.9.4)
- homebrew 0.9.5
インストールするもの
- Command Line Tools for Xcode
- Java for OS X 2014-001
- scan-build
- Jenkins
Command Line Tools for Xcodeのインストール
ここ等を参考にインストールしてください。
Javaのインストール
OracleのJDKでも良いですが、今回はAppleのJava for OS X 2014-001をインストールします。
scan-buildのインストール
次に、Objective-Cの静的解析を実行するため、scan-buildをインストールします。
公式サイトのダウンロードページから、最新のリソースをダウンロードしてください。ダウンロード後、適当なディレクトリに解凍するだけでインストール完了です。
単体で動かしてみたい場合はこんな感じで。
$ scan-build xcodebuild -target <your_target> -configuration debug -sdk iphonesimulator clean build -scheme <your_scheme>
Jenkinsのインストール
今回はhomebrewでインストールします。
$ brew install jenkins
インストール後、以下のコマンドで起動してみる。
$ java -jar /usr/local/opt/jenkins/libexec/jenkins.war
ポートを変えたい場合は--httpPort=[port]
で指定。
起動に成功したらアクセスして動作確認。
http://127.0.0.1
Jenkins scan-buildプラグインの導入
ここからJenkins側の設定を弄っていきます。
プラグインのインストール
「Jenkinsの管理」 -> 「プラグインの管理」 で以下のプラグインをインストールします。
- Clang Scan-Build Plugin
- Token Macro Plugin
- Xcode Integration
Clang Static Analyzerの有効化
「Jenkinsの管理」 -> 「システムの設定」 で"Clang Static Analyzer"セクションの「Clang Static Analyzer追加」ボタンをクリックして、scan-buildを使える状態にします。
- 名前: Analyzer(自分の好きな名前でOK)
- インストールディレクトリ: scan-buildを解凍したディレクトリを指定
静的解析ジョブの作成
ここまでできればあと一歩です。
「新規ジョブ作成」で「フリースタイル・プロジェクトの作成」を選択し、新しいジョブを作成します。
ジョブが作成された後、
* 「ビルド手順」にscan-buildの処理を追加
* 「ビルド後処理」にscan-buildの実行結果を判断する処理を追加
scan-buildの追加
ジョブの設定画面で、「ビルド手順の追加」から"Clang Scam-Build"を選択します。
追加された"Clang Scam-Build"では、以下の項目を設定します。
実行結果の解析を追加
同じように設定画面で、「ビルド後の処理の追加」で"Publish Clang Scan-Build Result"を選択します。
ここでは何個以上の警告をバグと見なすか指定することができますが、よほどのことがない限り 0 を設定しておきましょう。
ジョブの実行
ここまで設定した後にビルドを実行すると、scan-buildが自動的に実行されます。