LoginSignup
1
0

More than 5 years have passed since last update.

swiftlint 0.18.1 までの rule まとめ

Posted at

swiftlint

バージョン

0.18.1
2017/04/13時点での最新

Swift3.1にも対応しているみたいです。

参考

本題

上記の記事の後に追加されたルールが何個かあって、調べたので書き残しておきます。
※順番に関しては、上記の記事の後に追加されたルールをabc順に並べてます。

explicit_type_interface

クラス変数とかインスタンス変数とかには"型"を記述しろ的なことだと思います。

だめな例
var myVar = 0
let mylet = 0
static var myStaticVar = 0
class var myClassVar = 0
いい例
var myVar: Int? = 0
let myVar: Int? = 0
static var myVar: Int? = 0
class var myVar: Int? = 0

fatal_error_message

fatalErrorを使う場合はメッセージをちゃんと書きなさいということですね

だめな例
fatalError(\"\")
fatalError()
いい例
fatalError(\"Foo\")
fatalError(x)

implicitly_unwrapped_optional

暗黙的なUnwrapはだめだよ的な感じ。
主に変数とかを宣言するときに!を使って宣言しないで、?を使うか、初期値をいれろってことですね。
ただ、例外的にIBOutletはOKみたいです。

これが原因で落ちることがちょいちょいあるのでいい!

だめな例
let label: UILabel!
let IBOutlet: UILabel!
let labels: [UILabel!]
var ints: [Int!] = [42, nil, 42]
let label: IBOutlet!
let int: Int! = 42
let int: Int! = nil
var int: Int! = 42
let int: ImplicitlyUnwrappedOptional<Int>
let collection: AnyCollection<Int!>
func foo(int: Int!) {}
いい例
@IBOutlet private var label: UILabel!
@IBOutlet var label: UILabel!
@IBOutlet var label: [UILabel!]
if !boolean {}
let int: Int? = 42
let int: Int? = nil

ルールの見方

https://github.com/realm/SwiftLint/tree/master/Source/SwiftLintFramework/Rules
上記にアクセスすると全ルールが見れます。
各ファイルのtriggeringExamplesが悪い例で'nonTriggeringExamples'がいい例です。
よくわからない場合はその上に書いてある'description'を読んだら良いと思います。

最後に

漏れとかあったら教えていただければ追加しておきます。

1
0
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
1
0