-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy path.rubocop.yml
169 lines (132 loc) · 4.35 KB
/
.rubocop.yml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
inherit_from: .rubocop_todo.yml
# 自動生成されるものはチェック対象から除外する
AllCops:
Exclude:
- "vendor/**/*" # rubocop config/default.yml
- "db/schema.rb"
- "db/seeds.rb"
DisplayCopNames: true
##################### Style ##################################
# 日本語のコメントを許可する
Style/AsciiComments:
Enabled: false
# do .. end から更にメソッドチェーンすると見づらいので
# auto-correct せず、自分で修正する
# spec 内は見た目が綺麗になるので許可
Style/BlockDelimiters:
AutoCorrect: false
Exclude:
- "spec/**/*"
# option 等、明示的にハッシュにした方が分かりやすい場合もある
Style/BracesAroundHashParameters:
Enabled: false
Layout/AlignHash:
EnforcedColonStyle: separator
# Hash#has_key? は許可したい
Style/PreferredHashMethods:
Enabled: false
Style/FrozenStringLiteralComment:
Enabled: false
# コメントのないクラス・モジュールを許可
Style/Documentation:
Enabled: false
# !! 演算子を許可
Style/DoubleNegation:
Enabled: false
# if 文の中に 3 行程度のブロックを書くぐらいは許容した方が現実的
Style/GuardClause:
MinBodyLength: 5
# rake タスクの順序の hash は rocket を許可する
Style/HashSyntax:
Exclude:
- "**/*.rake"
- "Rakefile"
# 1行だけの if/unless を許可
Style/IfUnlessModifier:
Enabled: false
# scope 等は複数行でも lambda ではなく ->{} で揃えた方が見た目が綺麗
Style/Lambda:
Enabled: false
# 1_000_000 と区切り文字が 2 個以上必要になる場合のみ _ 区切りを必須にする
Style/NumericLiterals:
MinDigits: 7
# 正規表現にマッチさせた時の特殊変数の置き換えは Regex.last_match ではなく
# 名前付きキャプチャを使って参照したいので auto-correct しない
Style/PerlBackrefs:
AutoCorrect: false
# モジュール名::クラス名の定義を許可
Style/ClassAndModuleChildren:
Enabled: false
# 特に model 内において、ローカル変数とメソッド呼び出しの区別をつけた方が分かりやすい場合が多い
Style/RedundantSelf:
Enabled: false
# 受け取り側で multiple assignment しろというのを明示
Style/RedundantReturn:
AllowMultipleReturnValues: true
# spec 内は見た目が綺麗になるので許可
Style/Semicolon:
Exclude:
- "spec/**/*"
# fail と使い分ける必要ナシ
Style/SignalException:
EnforcedStyle: only_raise
# auto-correct 時に Style/StringLiterals とカニバって無限ループになる (v0.28.0)
Style/StringLiteralsInInterpolation:
Enabled: false
# いくらなんでも inject { |a, e| } は短すぎるので分かりやすい名前をつけたい
Style/SingleLineBlockParams:
Enabled: false
# * migrate
# * jbuilder
# * model の association
# * controller の callback
# 辺りの桁揃えで引っかかるので全体的にチェックしない
Layout/SpaceBeforeFirstArg:
Enabled: false
Layout/EmptyLinesAroundBlockBody:
Enabled: true
##################### Lint ##################################
# * 同名のメソッドがある場合にローカル変数に `_` を付ける
# * 一時変数として `_` を付ける
# というテクニックは頻出する
Lint/UnderscorePrefixedVariableName:
Enabled: false
# 子クラスで実装させるつもりのメソッドで引っかかるので
Lint/UnusedMethodArgument:
Enabled: false
# 条件文の中での代入を許可
Lint/AssignmentInCondition:
Enabled: false
##################### Metrics ##################################
# 30 まではギリギリ許せる範囲だった
Metrics/AbcSize:
Max: 30
# 6 は強すぎるので緩める
Metrics/CyclomaticComplexity:
Max: 10
Metrics/LineLength:
Max: 160
AllowHeredoc: true
AllowURI: true
URISchemes:
- http
- https
IgnoreCopDirectives: false
Exclude:
- "db/migrate/*.rb"
- 'spec/**/*' # データ作成の時は1ラインのが好ましいと判断
- 'config/**/*'
- 'db/**/*'
- 'Gemfile'
- 'Rakefile'
# 20 行超えるのは migration ファイル以外滅多に無い
Metrics/MethodLength:
Max: 20
Exclude:
- "db/migrate/*.rb"
Metrics/BlockLength:
Exclude:
- 'spec/**/*'
# 分岐の数。ガード句を多用しているとデフォルト 7 だと厳しい
Metrics/PerceivedComplexity:
Max: 8