XcodeGen を使って SwiftLint を導入する際の手順をこの記事で紹介する。
導入手順としては、大きく分けて以下の手順がある。
- Mintfile に SwiftLint を追加する
.swiftlint.yml
ファイルをプロジェクトに追加する- ビルド時スクリプトで SwiftLint を実行するように XcodeGen の設定を変更する
それぞれ詳しく見ていこう。
Mintfile に SwiftLint を追加する
SwiftLint は Homebrew や CocoaPods でインストールが可能だが、今回は mint 経由でローカルの開発環境にインストールする。
リポジトリ にあるように $ mint install realm/SwiftLint
でインストール可能。
Mintfile をプロジェクトに入れて Git 管理している場合もあると思うので、その場合は以下のように記述する。
バージョンを固定しているが、バーコードは Releases を参照。
realm/[email protected]
これで $ mint bootstrap
を叩けばインストールされる。
.swiftlint.yml
に設定を記述して追加する
.swiftlint.yml
ファイルをプロジェクトのルートディレクトリに作成、設定を記載して追加する。
(ルートディレクトリ = Mintfile が置いてあるディレクトリ)
ルールに関してはここでは記述しないので、リポジトリを参照。
ビルド時に SwiftLint を実行するように XcodeGen を設定する
次に、ビルド時に SwiftLint による静的解析が実行されるようにする。
XcodeGen の yml によって prebuildScripts
で設定を行う。
以下のような project.yml
があるとする。
name: HogeApp
options: ...
configs: ...
settings: ...
targets:
HogeApp:
dependencies: ...
info: ...
platform: iOS
setting: ...
...
この HogeApp
ターゲットに対して以下のような prebuildScripts
を設定する。
targets:
HogeApp:
prebuildScripts:
- name: Run SwiftLint
script: |
if mint list | grep -q 'SwiftLint'; then
mint run swiftlint
else
echo "warning: SwiftLint not installed."
fi
これでビルド時に SwiftLint が実行されるようになった。
オプショナル: コマンドから実行しやすいように Makefile に追加する
ここまでで SwiftLint の導入は完了したのだが、時々、ターミナルから静的解析をかけて確認したい場合がある。
その時のために今回は Makefile に追加する。
Makefile に以下を追加する。
Makefile のインデントはタブ文字である必要があるの注意。
.PHONY: lint
lint:
@if !(type "mint" > /dev/null 2>&1); then \
echo "Mint not installed, see https://github.com/yonaskolb/Mint"; \
exit 1; \
fi
mint run swiftlint --quiet
これで実行したいたときは Makefile
があるディレクトリで$ make lint
と叩けば実行される。