新調したばかりのMacに、swiftの静的解析ツール、SwiftLintを導入してみました。
SwiftLint(GitHub)
https://github.com/realm/SwiftLint
準備(Command Line Tools for Xcode, Homebrewインストール)
SwiftLintの導入にはパッケージ管理システムのHomebrewのインストールが必要のようです。
そしてHomebrewのインストールにはCommand Line Tools for Xcodeが必要です。
なのでCommand Line Tools for Xcodeからインストールしましょう。
*さらに言うと、Command Line Tools for XcodeのインストールにはXcodeがインストールされていることが必要ですが、ここは省略。
1, Command Line Tools for Xcodeのインストール
$ xcode-select --install
*インストール確認メッセージが表示されます。
2, Homebrew インストール
Homebrewのサイト( https://brew.sh )にインストールコマンドが書いてあるのでそれを実行します。
$ /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
*途中でMacの管理者権限パスワードが求められます。
インストール終了するとこんなメッセージが表示されます。
==> Next steps:
- Run `brew help` to get started
- Further documentation:
http://docs.brew.sh
Run `brew help` to get startedとあるので、実行しましょう。
$ brew help
helpが表示されるだけですね。
brew doctor
を実行してエラーがないか確認するといいでしょう。
SwiftLintインストール
1, SwiftLintをインストール
brew install swiftlint
$ brew install swiftlint
Updating Homebrew...
==> Auto-updated Homebrew!
Updated 1 tap (homebrew/core).
==> Updated Formulae
kobalt
==> Downloading https://homebrew.bintray.com/bottles/swiftlint-0.17.0.el_capitan
######################################################################## 100.0%
==> Pouring swiftlint-0.17.0.el_capitan.bottle.tar.gz
🍺 /usr/local/Cellar/swiftlint/0.17.0: 37 files, 13.8MB
2, Xcodeでの設定
プロジェクトを開き、「Build Phases」-> 左上の「+」マーク -> 「New Run Script Phase」を選択。
以下のScriptを記述しましょう。
*"Run Script"という名前を適切に変えてあげると、さらに良いと思います。
if which swiftlint >/dev/null; then
swiftlint
else
echo "SwiftLint does not exist, download from https://github.com/realm/SwiftLint"
fi
3, プロジェクト実行
コマンド+B や コマンド+R でプロジェクト実行すると、おびただしいほどの警告が表示されます。
4, .swiftlint.ymlファイルを作成
swiftLintはxcodeprojファイルと同階層に以下のような.swiftlint.yml
ファイルを作成することによって警告の検出有無を調節できます。
included:
- Source
- Tests
excluded:
- Tests/SwiftLintFrameworkTests/Resources
opt_in_rules:
- empty_count
- file_header
- explicit_init
- closure_spacing
- overridden_super_call
- redundant_nil_coalescing
- private_outlet
- nimble_operator
- attributes
- operator_usage_whitespace
- closure_end_indentation
- first_where
- sorted_imports
- object_literal
- number_separator
- prohibited_super_call
- fatal_error_message
line_length: 120
number_separator:
minimum_length: 5
SwiftLint導入については以上です。
.swiftlint.yml
ファイルについては、また今度。。