Permalink
Find file Copy path
Fetching contributors…
Cannot retrieve contributors at this time
163 lines (127 sloc) 4.16 KB
AllCops:
TargetRubyVersion: 2.3
DisplayCopNames: true
DisplayStyleGuide: true
Exclude: # 自動生成されるものや外部ライブラリは除外
- 'vendor/**/*'
- 'db/schema.rb'
#
# Style
#
# 日本人なので日本語で書きたいときもある
Style/AsciiComments:
Enabled: false
# case
# when foo?
# when bar?
# end
# のようなものはcaseで書いたほうが見やすい
Style/EmptyCaseCondition:
Enabled: false
# 明示的に else で nil を返すのはわかりやすいので許可
Style/EmptyElse:
EnforcedStyle: empty
# 複数行でも -> のほうがきれいに見えることが多い
Style/Lambda:
EnforcedStyle: literal
# 区切り文字が2個以上必須になる場合のみ_区切りを必須
Style/NumericLiterals:
MinDigits: 7
# ローカル変数とメソッド呼び出しの区別をつけたほうがわかりやすいことが多い
Style/RedundantSelf:
Enabled: false
# クォートはお好みで
Style/StringLiterals:
Enabled: false
# 意味的に先に否定のロジックを書いた方がわかりやすいケースもある
Style/UnlessElse:
Enabled: false
# 3.0で文字列がデフォルトでfrozenなのを信じてない
Style/FrozenStringLiteralComment:
Enabled: false
Style/BlockDelimiters:
# メソッドチェインしている場合は複数行でも{}を使いたいので
# rubocop -a で変換されないよう除外
AutoCorrect: false
# expect { }.to で複数行xメソッドチェインが多発するので
# specを対象から除外する
Exclude:
- "spec/**/*.rb"
# 公開ライブラリでもない限り、ドキュメントを書くことはほぼないと考える
Style/Documentation:
Enabled: false
# - module 分割を強制すると以下の問題がある
# - インデントが深くなる
# - 自動生成で Hoge::Fuga のように生成されることがある
# - module に分割したいケースがある
# 上記のような理由から、 "module Hoge { module Fuga {" と "module Hoge::Fuga" の両方を許容するため disable に
Style/ClassAndModuleChildren:
Enabled: false
# num.positive? が num > 0 と比較したときに必ずしも同じニュアンスにならない。
# positive?/negative?を使わない設定にしてもいいがzero?は使いたいケースがあるので
# ルール自体をdisableにする
Style/NumericPredicate:
Enabled: false
# どちらかというと()に寄せる方がよいが
# rubocopのデフォルトに一時期あわせていた都合で
# そこら中で警告がでるのでdisable
Style/PercentLiteralDelimiters:
Enabled: false
#
# Layout
#
# 代入の後改行したほうが横に長くなりづらく見やすい
Layout/MultilineAssignmentLayout:
Enabled: true
# メソッドチェインで複数行になったときにインデントが長く横にのびるため
# 出来る限り短くなるようにする
Layout/AlignParameters:
EnforcedStyle: with_fixed_indentation
# メソッドチェインで複数行になったときにインデントが長く横にのびるため
# 出来る限り短くなるようにする
Layout/MultilineMethodCallIndentation:
EnforcedStyle: indented
#
# Lint
#
# 使っていない変数を見つけたい
Lint/UselessAssignment:
Enabled: true
#
# Metrics
#
Metrics/AbcSize:
Max: 30
Metrics/BlockNesting:
Max: 3
# クラスの肥大化は避けたいけど
# 行数でチェックするのもちょっと違う
Metrics/ClassLength:
Enabled: false
# クラスと同様
Metrics/ModuleLength:
Enabled: false
# 長すぎて困るということがあまりない
Metrics/LineLength:
Enabled: false
# LineLength同様
Metrics/BlockLength:
Enabled: false
# 他のLength系同様オフにしてもよかったが
# 他のLength系よりは行数を短くするメリットがでかいため残す
Metrics/MethodLength:
CountComments: false
Max: 30
Metrics/CyclomaticComplexity:
Max: 10
Metrics/ParameterLists:
Max: 5
CountKeywordArgs: true
Metrics/PerceivedComplexity:
Max: 7
#
# Performance
#
# パフォーマンスのメリットよりcasecmpを使った時のわかりづらさのデメリットのほうが大きい
Performance/Casecmp:
Enabled: false