Help us understand the problem. What is going on with this article?

SwiftLintを変更のあったファイルのみに実行する方法

More than 1 year has passed since last update.

SwiftLintの個別ファイル実行方法

公式にも書いてあるRun Script Phaseを少し書き換えてgitのdiff差分で回すだけ。

if which swiftlint >/dev/null; then
  git diff --name-only | grep .swift | while read filename; do
    swiftlint --path "$filename"
  done
else
  echo "SwiftLint does not exist, download from https://github.com/realm/SwiftLint"
fi
  • この方法だと、全体に実行しないので、ビルド実行時間が短くなる利点もあり
  • git diff--cachedを付けるべきかは、開発フローによるのでお好みで

なぜ差分だけに実行?

既存サービスの途中からSwiftLintを導入した場合、膨大な数の警告が出て、lint以外の警告を見逃してしまうため。

本当は、個別ファイルの保存のタイミングで自動実行できると良いのだけど、そこまでは方法わからず。
Xcode Source Editor Extensionを作ればいけるのかな。

おまけ: swiftlint autocorrect --format

re-indentしてくれる。autocorrectするときは、合わせてどうぞ。

$ swiftlint help autocorrect 

[--format]
    should reformat the Swift files

公式サイトのCHANGELOG.md説明

--format option to autocorrect command which re-indents Swift files much like pasting into Xcode would.
KazukiTanaka
iOSやRails、事業開発のフリーランスしてます。
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away