LoginSignup
26
25

More than 5 years have passed since last update.

JenkinsでObjective-Cの静的解析を実行できるようにする

Posted at

はじめに

コード品質を保つためにも、静的解析は大事です。
ただ、毎回手作業で解析するのも面倒なので、Jenkinsを使って自動化しましょう!

説明すること

  • Jankinsのインストールから、scan-buildを実行するジョブの作成まで

説明しないこと

  • JenkinsのSCM関連の設定方法
  • xcodebuild等のコマンド

環境

  • MacOS X (10.9.4)
  • homebrew 0.9.5

インストールするもの

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"を選択します。
add_build_procedure.png

追加された"Clang Scam-Build"では、以下の項目を設定します。
configure_scan-build.png

実行結果の解析を追加

同じように設定画面で、「ビルド後の処理の追加」で"Publish Clang Scan-Build Result"を選択します。
add_build_prpcedure_after.png

ここでは何個以上の警告をバグと見なすか指定することができますが、よほどのことがない限り 0 を設定しておきましょう。
configure_threshold.png

ジョブの実行

ここまで設定した後にビルドを実行すると、scan-buildが自動的に実行されます。

26
25
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
26
25