#swiftlint
https://github.com/realm/SwiftLint
バージョン
0.18.1
Homebrewで入れました。
brew install swiftlint
#本題
.swiftlint.ymlサンプルで検索してもあんまり出てこなかったので、今回作成したものを上げておきます。
今回作成して、自分のプロジェクトで使用している.swiftlint.ymlファイルの内容は下記になります。
# 無効にするルール。
disabled_rules:
# コードの記載のない改行を許可したい
- trailing_whitespace
# force_cast は場合によっては使用するため
- force_cast
# デフォルト無効のルールのうち、有効にするもの。
opt_in_rules:
- attributes
- closure_end_indentation
- closure_spacing
- conditional_returns_on_newline
- empty_count
- explicit_init
- explicit_type_interface # new
- fatal_error_message # new
# ファイルヘッダを修正してもエラー解除されないため
#- file_header
- first_where
# 場合によっては特に問題ないので
#- force_unwrapping
- implicitly_unwrapped_optional # new
- missing_docs
- nimble_operator
- number_separator
- object_literal
- operator_usage_whitespace
- overridden_super_call
# 基本的にはprivateにしたほうが良いがアプリ規模が小さいので今回は無効
#- private_outlet
- prohibited_super_call
- redundant_nil_coalescing
# そこまで多くならないので整列していなくても問題ない
#- sorted_imports
- switch_case_on_newline
- valid_docs
# 追加したOSSライブラリは対象に含めたくない
excluded:
- Pods/
- Carthage/
# 1行あたりの文字数制限を300に変更
# プロジェクト作成時にデフォルトで追加されるコメントをひっかけないため
line_length: 300
# 変数名が1文字以上なら許可に変更
identifier_name:
min_length: 1
基本的な方針としては、できるだけルールを適用させて、どうしてもめんどくさいものだけ省くようにしました。
そのため、opt-in-rulesもたくさん書いてます。
force〇〇系は、あまりswiftを書いたことがない方は外さないほうが良いと思いますが、なれてきたら外してしまったほうが良いと思います。毎回nilチェックするのも大変ですし。
まだswiftlintは安定していないので、結構バグが多いので動かない時もありますので注意が必要です。
あと、変数名の部分は2文字以上や3文字以上にしたほうがいいのかもしれません。(僕は"v"とか"e"とか使いたいので1文字以上にしています...)
#参考
ルールの解説に関しては下記を参考にさせていただきました。
【SwiftLintのRules全まとめ】
http://qiita.com/KAGE_MIKU/items/80e6d905dc0059c342b3
【swiftlint 0.18.1 までの rule まとめ】
http://qiita.com/rd0501/items/103c33d2df20f052523a
他のサンプル
【SwiftLint を導入しました】
http://qiita.com/hoshi-takanori/items/b82e62de8313ff256044