27
26

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

OCLint&XCodeを用いたObjective-Cの静的解析

Last updated at Posted at 2015-01-17

OCLintとは

Objective-Cの静的解析ツール。
JavaのCheckStyleみたく、コードの問題点を教えてくれる。
本稿ではXCodeから使用できるようにする。

OClint公式サイト

インストール&設定

xctoolのインストール

※ Homebrewインストール済みとします。

$ brew install xctool

OCLintのインストール

  1. ダウンロード
    http://oclint.org/downloads.html

  2. 配置
    oclint-0.8.1フォルダを/usr/local などに移動する(例./usr/local/oclint-0.8.1/)。

XCodeの設定

  1. 対象のProjectを選択する。
  2. 左下の「+」をクリックする。
    1-2.png
  3. iOS - Other - Aggregateを選択して、Nextをクリックする。
    3.png
  4. Projectが対象のプロジェクトになっていることを確認し、Product NameにOCLintと入力し、Finishをクリックする。
    4.png
  5. TARGETSからOCLintを選択する。
  6. Build Phasesを選択する。
    5-6.png
  7. 左上の「+」をクリックし、「New Run Script Phase」を選択する。
    7.png
  8. Run Scriptに以下を記述する(変数を適切に設定する)。
    • PROJECT … プロジェクトファイル名
    • SCHEME … ターゲットスキーム(大抵はプロジェクト名と同じかと)
    • XCTOOL … xctoolが格納されている場所。Homebrewでインストールしていれば/usr/local/bin
    • OCLINT_HOME … oclintのインストール場所。
PROJECT=ProjectName
SCHEME=${PROJECT}

XCTOOL=/usr/local/bin
export PATH=$XCTOOL:$PATH
OCLINT_HOME=/usr/local/oclint-0.8.1
export PATH=$OCLINT_HOME/bin:$PATH

xctool -project ${SRCROOT}/${PROJECT}.xcodeproj -scheme ${SCHEME} -reporter json-compilation-database:compile_commands.json clean
xctool -project ${SRCROOT}/${PROJECT}.xcodeproj -scheme ${SCHEME} -reporter json-compilation-database:compile_commands.json build

oclint-json-compilation-database | sed 's/\(.*\.\m\{1,2\}:[0-9]*:[0-9]*:\)/\1 warning:/'

実行

  1. 左上からOCLintターゲットを選択し、Buildする(時間かかる)。
    lint.png

治したいところ

ソースフォルダにcompile_commands.jsonが生成されてしまう。
消せばいいんだけど、$(TARGET_TEMP_DIR)でできないか。

27
26
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
27
26

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?