テンプレート
※2016/02/06 追記
enabled_rulesについて追記しました。
もう少ししたらopt_in_rulesになるようです。
その際にwhitelist_rulesというのも追加されるようです。
また、0.7.1にてCustomRulesというものが追加されました。
こちらについてはSwiftLint 0.7.1 アップデート内容まとめ - CustomRulesを御覧ください。
※2016/02/21 追記
enabled_rulesはopt_in_rulesという名前に変わりました。
whitelist_rulesについてはこちらに書きました。
# 無効にするルール
disabled_rules:
- <ルール名>
# 採用するopt-inのルール
enabled_rules:
- <ルール名>
# Lint対象にするファイル
included:
- <パス>
# Lint対象から外すファイル
excluded:
- <パス>
# 数値化できるパラメータをカスタマイズ
<rule name>:
- <数値> # warning
- <数値> # error
# レポートの種類
reporter:
- <種類名>
# ネストしたconfigファイルを使うかどうか
use_nested_configs: <Bool値>
disabled_rules
SwiftLintのdisabled_rules一覧(実例付き)で詳しく書いたのでそちらをご参照ください。
enabled_rules
多くのルールはdisabled_rulesに記述しない限りそのルールが適用されるのに対し、いくつかのルール(0.7.2時点ではempty_countとmissing_docs、force_unwrappingだけだと思います)はここに記述しない限りルールとして適用されません。
included
Lint対象のファイルがあるパスを記述します。プロジェクト名を書いておけば大丈夫です。
ここのへんについてはSwiftLintの.swiftlint.ymlで起きたエラーへの対処の記事でも少し触れてます。
excluded
Lint対象から外すファイルがあるパスを記述します。
Pods, Carthageやその他特定のディレクトリ、ファイルを指定できます。
パラメータのカスタマイズ
※2016/02/06 追記
SwiftLint0.7.0で書き方が変わりました。詳しくはこちらの記事を御覧ください。
SwiftLint 0.7.0 アップデート内容まとめ - SeverityLevelsConfig
SwiftLint 0.7.0 アップデート内容まとめ - VariableNameRule
数値化できるパラメータの場合はカスタマイズすることができます。
例えばこんなかんじです。
file_length:
- 600 # warning
- 1200 # error
最初に指定した数値がwarningの数値、次に指定した数値がerrorの数値になります。
ちなみに実際に動かして試した限りだと、file_length:600
のように一つだけ指定するとwarningだけ値が書き変わって、errorはデフォルト値(file_lengthの場合は1000)のまま適用されるようです。
reporter
レポートの種類を指定できます。レポートの種類にはxcode, json, csv, checkstyleがあります。
Configuration.swiftのinitを見ると、デフォルトでは"xcode"が指定されているようです。
エラーがある状態で以下の各種類を指定すると左ペインがこの状態になり、これをクリックすることでレポートを見ることができます。
checkstyle(XML)を指定するとこんなかんじになります。
※checkstyleは最近(0.5.4)追加されたので、以前のバージョンを使っている場合はアップデートをする必要があります。
use_nested_configs
configファイルをネストさせた状態で置くこともできるようです。デフォルトはfalseです。
いまいち理解できていない部分もあるので原文載せておきます。
#### Nested Configurations
SwiftLint supports nesting configuration files for more granular control over
the linting process.
* Set the `use_nested_configs: true` value in your root `.swiftlint.yml` file
* Include additional `.swiftlint.yml` files where necessary in your directory
structure.
* Each file will be linted using the configuration file that is in it's
directory or at the deepest level of it's parent directories. Otherwise the
root configuration will be used.
* `excluded`, `included`, and `use_nested_configs` are ignored for nested
configurations
ちなみに、SwiftLintのテストには以下の階層に置かれていました。
Source/SwiftLintFrameworkTests/Resources/ProjectMock/.swiftlint.yml
Source/SwiftLintFrameworkTests/Resources/ProjectMock/Level1/Level2/.swiftlint.yml
おまけ:autocorrect
.swiftlint.ymlに関係のある話ではないのですが、適切な書き場所がなかったのでここでおまけとして書きます。
SwiftLintにはautocorrect機能があります。コマンドラインでswiftlint autocorrect
を叩けば実行されます。
もちろん警告が出ているところ全てが修正されるわけではなくて(file_lengthで警告が出ているからといって勝手に行をごっそり削除されたら大変ですね)、特定の項目においてautocorrectが実行されるようです。
例えば
func hoge()
{
}
上記のコードでopening_braceの警告が出ている状態で上記コマンドを実行すると
func hoge() {
}
に修正されます。