LoginSignup
3
3

More than 5 years have passed since last update.

SwiftLint 0.8.0 アップデート内容まとめ

Posted at

2月6日にSwiftLint0.8.0がリリースされたのでまとめます。

廃止、変更されたもの

SeverityLevelsConfigの設定

背景として、今までは.swiftlint.ymlファイルでwarningの値のみを設定していた場合、warningの値はデフォルト値から変更されますが、errorの値は変更されない状態でした。
そのため、例えばFileLengthのwarningのみ400から1200に上げてerrorは何もいじらないと、errorはデフォルトの1000が設定されたままになっており、FileLengthが1100の状態でビルドするとwarningには引っかからないのにerrorで引っかかってしまうという現象が起きていました。

しかし今回のアップデートで、warningしか設定していない場合、errorの値は使用されないという動作をするようになりました。

enabled_rules

opt_in_rulesという名前に変わりました。

強化、追加されたもの

whitelist_rules

SwiftLintのアップデートによって前回Lintを適用したときには採用していなかったルールも適用されてしまい、CIプロセスを破壊してしまう状況を防ぐために作られたものです。

whitelistはdisabled_rules(≒ブラックリスト)やopt_in_rulesと併用することはできません。
whitelistを使用した場合、列挙されたルールのみ適用してコードチェックを行うという動作になります。

プルリクはこちらです。

パフォーマンス改善

ColonRule, LineLengthRule, syntaxKindsByLineのパフォーマンスが改善されました。

rulesコマンド

$ swiftlint rules <rule identifier>
というコマンドを打つと、ルールの概要が表示されるようになりました。

また、identifierを指定しないで$ swiftlint rulesと打った場合は

  • identifier
  • opt-inかどうか
  • autocorrectコマンドで修正されるルールか
  • デフォルトでenabledなのかどうか
  • 警告を出すルールなのか、エラーを出すルールなのか、一定の数値に達した時に警告/エラーを出すルールなのか

の値が出力されるようになりました。

FunctionParameterCountRule

description: "Number of function parameters should be low."

新しく追加されたルールです。引数の数が6〜8個だと警告に、9以上だとエラーになります。
なので、5個以内に抑えれば警告もエラーも出ません。

CyclomaticComplexityRule

循環的複雑度ルールでは、ネスト内の関数は別で計算する必要があるのでは、という指摘を受けて修正されました。

OpeningBraceRule

OpeningBraceRuleに例外が追加されました。if/guard/whileの条件文が複数行に渡る場合はopening braceが次の行になっても構わないというルールに変更されました。

該当のissueを見てみると、issue作成者は1つのif文で複数のバインディングやwhereがあるときに、1つの文ごとに改行してインデントを揃えて書くことがあるそうです。
その場合、opening braceをその末尾に持って行くよりも改行した方が読みやすいのではないかという提案をしています。

従来のルールに則った場合
if
    let blah = blah,
    let foo = blah.foo
    where foo.something {
    // do something
}
こちらの方が読みやすいのでは?
if
    let blah = blah,
    let foo = blah.foo
    where foo.something
{
    // do something
}

メモリ

最大メモリ量が軽減されています。

バグFix

ValidDocsRule

偽陽性の修正が入りました。

TrailingNewlineのautocorrect

行ごとに複数のルール違反を扱えるように、TrailingNewlineのautocorrectに修正が入ったようです。

CyclomaticComplexityRule

switch文が含まれている時のcomplexityの計算が修正されました。

3
3
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
3
3