#swiftlint
https://github.com/realm/SwiftLint
#バージョン
0.18.1
2017/04/13時点での最新
Swift3.1にも対応しているみたいです。
#参考
http://qiita.com/KAGE_MIKU/items/80e6d905dc0059c342b3
#本題
上記の記事の後に追加されたルールが何個かあって、調べたので書き残しておきます。
※順番に関しては、上記の記事の後に追加されたルールを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'を読んだら良いと思います。
#最後に
漏れとかあったら教えていただければ追加しておきます。