LoginSignup
16
15

More than 5 years have passed since last update.

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

Last updated at Posted at 2016-01-28

この間0.6.0がリリースされたと思ったらその10日後に0.7.0がリリースされ、そしてその2日後に0.7.1がリリースされました。
いろいろパワーアップしたり追加されたりしているので新しい記事として書くことにしました。
長くなるので0.7.0の記事と0.7.1の記事を分けます。

廃止されたもの

XPCDictionary

今まで使用していた全てのXPCDictionaryは[String: SourceKitRepresentable]に置き換えられました。

VariableNameMinLengthRule、VariableNameMaxLengthRule

代わりにVariableNameRuleに統合されました。

VariableNameRule

内容自体は以前のVariableNameMinLengthRule、VariableNameMaxLengthRule、VariableNameRuleが合わさったものと考えればいいと思います。

.swiftlint.ymlでは以下のように記述します(Configurationから抜粋)。

variable_name:
  min_length:
    error: 4 # only error
  max_length: # warning and error
    warning: 40
    error: 50
  excluded: # excluded via string array
    - id
    - URL
    - GlobalAPIKey

従来まではerrorやwarningの値を定義するときは以下のように記述していましたね。

<rule name>:
- <数値> # warning
- <数値> # error

ViolationLevelRule

代わりにConfigProviderRuleとSeverityLevelsConfigが加わりました。

ConfigProviderRule

ConfigProviderRuleはプロトコルです。
ちゃんとわかっていないのでぼかしますが、ルールはこれに則っているべき、とかそういうかんじだと思います(後日ちゃんと書き直そうと思います)。

参考:CONTRIBUTING.md

SeverityLevelsConfig

warning、errorがこれに該当します。

SeverityLevelsConfig.swift

READMEによると、”severity”という文字列を明示的に記述することも、省略することもできるようです。

force_cast: warning # implicitly
force_try:
  severity: warning # explicitly

さらに数値をカスタマイズするときの”warning”, “error”文字列ですが、これも明示的に記述することも、省略することもできるようです。

# implicitly
line_length: 110
# they can set both implicitly with an array
type_body_length:
  - 300 # warning
  - 400 # error
# or they can set both explicitly
file_length:
  warning: 500
  error: 1200

強化されたもの

TypeBodyLengthRule

コメント行や空行はカウントされなくなりました。

FunctionBodyLengthRule

コメント行や空行はカウントされなくなりました。

TypeNameRule、VariableNameRule

NameConfigを用いたConfigProviderRuleに準拠するようになり、min_length(最小文字数)、max_length(最大文字数)、excluded names(ルール適用外文字列)を指定できるようになりました。

CyclomaticComplexityRule

新しく追加されたルールです。直訳すると「循環的複雑度に関するルール」です。

循環的複雑度についてこの記事をもとにざっくりと理解したところでは「ある1つの関数がどれだけ複雑なのかを表した指標」であり、「デフォルトで数値は1で、条件分岐が増えるごとに+1される」といったかんじでしょうか。

スクリーンショット 2016-01-27 15.10.25.png

SwiftLintのCyclomaticComplexityRuleでは、complexityを10以下に抑えないと警告が表示されます。

complexityが増えるキーワードとされているものは以下の通りです。
foreach, if, switch, case, guard, for, repeatwhile, while

全てのルール

全てのルールはSeverityConfigに基づいてwarningなどのseverityを設定できるようになりました。

バグFix

  • ネストされた設定ファイルを使用した時に無限再帰が発生してしまってクラッシュする問題が修正されました。
  • NULL文字が含まれていた場合にクラッシュする問題が修正されました。
16
15
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
16
15