-
Notifications
You must be signed in to change notification settings - Fork 109
/
Copy path.rubocop.yml
348 lines (336 loc) · 10.4 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
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
# ----------------
# - INSTRUCTIONS -
# ----------------
# The DMPRoadmap codebase tries to follow the latest Ruby/Rails style guidelines as defined
# by the community via the Rubocop gem.
#
# Before submitting a PR, please run `bin/rubocop` from the project root.
# Note that you can specify individual files or folders e.g.: `bin/rubocop app/mailers`
# Note you can let Rubocop auto-correct many issues with the `-a` flag
#
# New versions of Rubocop typically include new Cops (Cops are inidivual Rubocop rules).
# If you see a message like the following when you run `bin/rubocop`:
#
# "The following cops were added to RuboCop, but are not configured. Please set Enabled
# to either `true` or `false` in your `.rubocop.yml` file."
#
# You should copy and paste the specified Cops into this file. You can review what the
# Cop will do by Googling the name of the rule e.g.: "rubocop Layout/SpaceBeforeBrackets"
#
# After you review the rule, you can either Enable it or Disable it in this file. The
# Rubocop documentation for the Cop may also give you additional options that can be
# configured.
#
# Try to place any new Cops under their relevant section and in alphabetical order
AllCops:
# Show the name of the cops being voilated in the feedback
DisplayCopNames: true
DisplayStyleGuide: true
# Rubocop will skip checking the following directories
Exclude:
- 'bin/**/*'
- 'db/**/*'
- 'vendor/**/*'
- 'node_modules/**/*'
# Automatically add any new Cops to this file and enable them
NewCops: enable
# Cache the results for faster processing
UseCache: true
# -----------
# - GEMSPEC -
# -----------
Gemspec/DateAssignment: # new in 1.10
Enabled: true
# ----------
# - LAYOUT -
# ----------
Layout/LineEndStringConcatenationIndentation: # new in 1.18
Enabled: true
Layout/SpaceBeforeBrackets: # new in 1.7
Enabled: true
# --------
# - LINT -
# --------
Lint/AmbiguousAssignment: # new in 1.7
Enabled: true
Lint/AmbiguousOperatorPrecedence: # new in 1.21
Enabled: true
Lint/AmbiguousRange: # new in 1.19
Enabled: true
Lint/DeprecatedConstants: # new in 1.8
Enabled: true
Lint/DuplicateBranch: # new in 1.3
Enabled: true
Lint/DuplicateRegexpCharacterClassElement: # new in 1.1
Enabled: true
Lint/EmptyBlock: # new in 1.1
Enabled: true
Lint/EmptyClass: # new in 1.3
Enabled: true
Lint/EmptyInPattern: # new in 1.16
Enabled: true
Lint/IncompatibleIoSelectWithFiberScheduler: # new in 1.21
Enabled: true
Lint/LambdaWithoutLiteralBlock: # new in 1.8
Enabled: true
Lint/NoReturnInBeginEndBlocks: # new in 1.2
Enabled: true
Lint/NumberedParameterAssignment: # new in 1.9
Enabled: true
Lint/OrAssignmentToConstant: # new in 1.9
Enabled: true
Lint/RedundantDirGlobSort: # new in 1.8
Enabled: true
Lint/RequireRelativeSelfPath: # new in 1.22
Enabled: true
Lint/SymbolConversion: # new in 1.9
Enabled: true
Lint/ToEnumArguments: # new in 1.1
Enabled: true
Lint/TripleQuotes: # new in 1.9
Enabled: true
Lint/UnexpectedBlockArity: # new in 1.5
Enabled: true
Lint/UnmodifiedReduceAccumulator: # new in 1.1
Enabled: true
# -----------
# - METRICS -
# -----------
# briley Oct. 4th 2021
# Default is 100 lines. Most of our controllers, models, etc. violate this
# Cop, so setting it to 300 since we do not have time to refactor everything
Metrics/ClassLength:
Max: 300
# briley Oct. 4th 2021
# Default is 10 lines which feels very restrictive but would also require us to do
# too much refactoring at this point.
Metrics/MethodLength:
Max: 20
# ------------
# - SECURITY -
# ------------
Security/IoMethods: # new in 1.22
Enabled: true
# ---------
# - STYLE -
# ---------
Style/ArgumentsForwarding: # new in 1.1
Enabled: true
Style/CollectionCompact: # new in 1.2
Enabled: true
Style/DocumentDynamicEvalDefinition: # new in 1.1
Enabled: true
Style/EndlessMethod: # new in 1.8
Enabled: true
Style/HashConversion: # new in 1.10
Enabled: true
Style/HashExcept: # new in 1.7
Enabled: true
Style/IfWithBooleanLiteralBranches: # new in 1.9
Enabled: true
Style/InPatternThen: # new in 1.16
Enabled: true
Style/MultilineInPatternThen: # new in 1.16
Enabled: true
Style/NegatedIfElseCondition: # new in 1.2
Enabled: true
Style/NilLambda: # new in 1.3
Enabled: true
Style/NumberedParameters: # new in 1.22
Enabled: true
Style/NumberedParametersLimit: # new in 1.22
Enabled: true
Style/QuotedSymbols: # new in 1.16
Enabled: true
Style/RedundantArgument: # new in 1.4
Enabled: true
Style/RedundantSelfAssignmentBranch: # new in 1.19
Enabled: true
Style/SelectByRegexp: # new in 1.22
Enabled: true
Style/StringChars: # new in 1.12
Enabled: true
Style/SwapValues: # new in 1.1
Enabled: true
# ================================================
# OLD SETTINGS:
# ================================================
# ================================================
# AllCops:
# # Cache the results for faster processing
# UseCache: true
# # Show the name of the cops being voilated in the feedback
# DisplayCopNames: true
# DisplayStyleGuide: true
# Exclude:
# - 'bin/**/*'
# - 'db/**/*'
# - 'vendor/**/*'
# - 'node_modules/**/*'
# - 'test/**/*'
# - 'lib/tasks/*'
#
# # Force no empty lines at the start or end of a block's body. Ignore specs, since this
# # improves readability within the RSpec blocks.
# Layout/EmptyLinesAroundBlockBody:
# Exclude:
# - 'spec/**/*'
#
# # Force a single blank line around a class's body. Adding this whitespace makes code
# # a bit easier to read.
# Layout/EmptyLinesAroundClassBody:
# Enabled: true
# EnforcedStyle: empty_lines
#
# # Force a single blank line around a module's body. Adding this whitespace makes code
# # a bit easier to read.
# Layout/EmptyLinesAroundModuleBody:
# Enabled: true
# EnforcedStyle: empty_lines
#
# # Ignore this cop. The Rubocop default is sensible, but the rubocop-rails gem modifies
# # this to position end keywords awkwardly.
# Layout/EndAlignment:
# Enabled: true
# EnforcedStyleAlignWith: keyword
# # The difference between `rails` and `normal` is that the `rails` style
# # prescribes that in classes and modules the `protected` and `private`
# # modifier keywords shall be indented the same as public methods and that
# # protected and private members shall be indented one step more than the
# # modifiers. Other than that, both styles mean that entities on the same
# # logical depth shall have the same indentation.
# Layout/IndentationConsistency:
# Description: 'Keep indentation straight.'
# StyleGuide: '#spaces-indentation'
# Enabled: true
# EnforcedStyle: normal
#
# Layout/IndentationWidth:
# Description: 'Use 2 spaces for indentation.'
# StyleGuide: '#spaces-indentation'
# Enabled: true
#
# # Restrict the length of each line of code to 90 characters. Enforcing this is important
# # as many developers are working on smaller screens, or split screens. Having to scroll
# # to read a full line of code makes code harder to read and more frustrating to work with.
# Layout/LineLength:
# # I've found that 90 is a suitable limit. Many developers balk at the 80 character
# # default.
# Max: 100
#
# Layout/EmptyLinesAroundAttributeAccessor:
# Enabled: true
#
# Layout/SpaceAroundMethodCallOperator:
# Enabled: true
#
# # Enforce this in the main code but ignore it in specs since the Rspec core methods
# # are defined as potentially ambiguous blocks
# Lint/AmbiguousBlockAssociation:
# Exclude:
# - 'spec/**/*'
#
# Lint/DeprecatedOpenSSLConstant:
# Enabled: true
#
# Lint/MixedRegexpCaptureTypes:
# Enabled: true
#
# Lint/RaiseException:
# Enabled: true
#
# Lint/StructNewOverride:
# Enabled: true
#
# # Bumping the default AbcSize so we don't need to refactor everything
# Metrics/AbcSize:
# Max: 25
#
# # Restrict the number of lines of code that may be within a block of code. This should
# # force developers to break their code into smaller discrete methods or objects.
# Metrics/BlockLength:
# # Exclude specs, since those are defined as large blocks of code
# Exclude:
# - 'spec/**/*'
#
# # Bumping the default ClassLength so we don't need to refactor everything
# Metrics/ClassLength:
# Max: 300
#
# # Bumping the default CyclomaticComplexity so we don't need to refactor everything
# Metrics/CyclomaticComplexity:
# Max: 25
#
# # Bumping the default MethodLength so we don't need to refactor everything
# Metrics/MethodLength:
# Max: 25
#
# # Bumping the default PerceivedComplexity so we don't need to refactor everything
# Metrics/PerceivedComplexity:
# Max: 25
#
# # This cop enforces the use of boolean and/or "&&" and "||" over "and" "or".
# # Sometimes using "and"/"or" is preferrable, when these are used as control flow.
# #
# # For example:
# #
# # render text: "Hello world" and return
# #
# Style/AndOr:
# Enabled: false
#
# # This cop enforces how modules and classes are nested within another module or class.
# # In Rails code (e.g. models and controllers) nesting with a colon is preferrable (e.g.
# # User::Session).
# Style/ClassAndModuleChildren:
# Exclude:
# - 'app/**/*'
#
# # This cop enforces each class to have documentation at the top. That's not always
# # practical or necessary in Rails apps (e.g. the purpose of helpers is self evident).
# Style/Documentation:
# Enabled: false
#
# # Enforce empty methods to be written across two lines, like any normal method would be.
# # This allows for easy modification of the method in future.
# Style/EmptyMethod:
# Enabled: true
# EnforcedStyle: expanded
#
# # Leave the string formatting style as `"some text %{value}" % { value: "text" }`
# # since we're uncertain what effect `format` and `sprintf` may have on the Fastgetext
# # markup `_("text")`
# Style/FormatString:
# EnforcedStyle: percent
#
# # Prefer the use of `"some %{token} text"` instead of `some %<token> text` or
# # `some %token text` since it would invalidate many of our translation strings
# Style/FormatStringToken:
# EnforcedStyle: template
#
# # Enforce double quotes. Don't allow single quotes. This is preferred since double
# # quotes are more useful (they support escaping characters, and interpolation).
# Style/StringLiterals:
# Enabled: true
# EnforcedStyle: double_quotes
#
# Style/ExponentialNotation:
# Enabled: true
#
# Style/HashEachMethods:
# Enabled: true
#
# Style/HashTransformKeys:
# Enabled: true
#
# Style/HashTransformValues:
# Enabled: true
#
# Style/RedundantRegexpCharacterClass:
# Enabled: true
#
# Style/RedundantRegexpEscape:
# Enabled: true
#
# Style/SlicingWithRange:
# Enabled: true