silvercop 1.0.3 → 1.1.0

Sign up to get free protection for your applications and to get access to all the features.
data/config/default.yml DELETED
@@ -1,3963 +0,0 @@
1
- # Common configuration.
2
-
3
- AllCops:
4
- RubyInterpreters:
5
- - ruby
6
- - macruby
7
- - rake
8
- - jruby
9
- - rbx
10
- # Include common Ruby source files.
11
- Include:
12
- - '**/*.rb'
13
- - '**/*.arb'
14
- - '**/*.axlsx'
15
- - '**/*.builder'
16
- - '**/*.fcgi'
17
- - '**/*.gemfile'
18
- - '**/*.gemspec'
19
- - '**/*.god'
20
- - '**/*.jb'
21
- - '**/*.jbuilder'
22
- - '**/*.mspec'
23
- - '**/*.opal'
24
- - '**/*.pluginspec'
25
- - '**/*.podspec'
26
- - '**/*.rabl'
27
- - '**/*.rake'
28
- - '**/*.rbuild'
29
- - '**/*.rbw'
30
- - '**/*.rbx'
31
- - '**/*.ru'
32
- - '**/*.ruby'
33
- - '**/*.spec'
34
- - '**/*.thor'
35
- - '**/*.watchr'
36
- - '**/.irbrc'
37
- - '**/.pryrc'
38
- - '**/buildfile'
39
- - '**/Appraisals'
40
- - '**/Berksfile'
41
- - '**/Brewfile'
42
- - '**/Buildfile'
43
- - '**/Capfile'
44
- - '**/Cheffile'
45
- - '**/Dangerfile'
46
- - '**/Deliverfile'
47
- - '**/Fastfile'
48
- - '**/*Fastfile'
49
- - '**/Gemfile'
50
- - '**/Guardfile'
51
- - '**/Jarfile'
52
- - '**/Mavenfile'
53
- - '**/Podfile'
54
- - '**/Puppetfile'
55
- - '**/Rakefile'
56
- - '**/Snapfile'
57
- - '**/Thorfile'
58
- - '**/Vagabondfile'
59
- - '**/Vagrantfile'
60
- Exclude:
61
- - 'node_modules/**/*'
62
- - 'tmp/**/*'
63
- - 'vendor/**/*'
64
- - '.git/**/*'
65
- # Default formatter will be used if no `-f/--format` option is given.
66
- DefaultFormatter: progress
67
- # Cop names are displayed in offense messages by default. Change behavior
68
- # by overriding DisplayCopNames, or by giving the `--no-display-cop-names`
69
- # option.
70
- DisplayCopNames: true
71
- # Style guide URLs are not displayed in offense messages by default. Change
72
- # behavior by overriding `DisplayStyleGuide`, or by giving the
73
- # `-S/--display-style-guide` option.
74
- DisplayStyleGuide: false
75
- # When specifying style guide URLs, any paths and/or fragments will be
76
- # evaluated relative to the base URL.
77
- StyleGuideBaseURL: https://rubystyle.guide
78
- # Extra details are not displayed in offense messages by default. Change
79
- # behavior by overriding ExtraDetails, or by giving the
80
- # `-E/--extra-details` option.
81
- ExtraDetails: false
82
- # Additional cops that do not reference a style guide rule may be enabled by
83
- # default. Change behavior by overriding `StyleGuideCopsOnly`, or by giving
84
- # the `--only-guide-cops` option.
85
- StyleGuideCopsOnly: false
86
- # All cops except the ones configured `Enabled: false` in this file are enabled by default.
87
- # Change this behavior by overriding either `DisabledByDefault` or `EnabledByDefault`.
88
- # When `DisabledByDefault` is `true`, all cops in the default configuration
89
- # are disabled, and only cops in user configuration are enabled. This makes
90
- # cops opt-in instead of opt-out. Note that when `DisabledByDefault` is `true`,
91
- # cops in user configuration will be enabled even if they don't set the
92
- # Enabled parameter.
93
- # When `EnabledByDefault` is `true`, all cops, even those configured `Enabled: false`
94
- # in this file are enabled by default. Cops can still be disabled in user configuration.
95
- # Note that it is invalid to set both EnabledByDefault and DisabledByDefault
96
- # to true in the same configuration.
97
- EnabledByDefault: false
98
- DisabledByDefault: false
99
- # Enables the result cache if `true`. Can be overridden by the `--cache` command
100
- # line option.
101
- UseCache: true
102
- # Threshold for how many files can be stored in the result cache before some
103
- # of the files are automatically removed.
104
- MaxFilesInCache: 20000
105
- # The cache will be stored in "rubocop_cache" under this directory. If
106
- # CacheRootDirectory is ~ (nil), which it is by default, the root will be
107
- # taken from the environment variable `$XDG_CACHE_HOME` if it is set, or if
108
- # `$XDG_CACHE_HOME` is not set, it will be `$HOME/.cache/`.
109
- CacheRootDirectory: ~
110
- # It is possible for a malicious user to know the location of RuboCop's cache
111
- # directory by looking at CacheRootDirectory, and create a symlink in its
112
- # place that could cause RuboCop to overwrite unintended files, or read
113
- # malicious input. If you are certain that your cache location is secure from
114
- # this kind of attack, and wish to use a symlinked cache location, set this
115
- # value to "true".
116
- AllowSymlinksInCacheRootDirectory: false
117
- # What MRI version of the Ruby interpreter is the inspected code intended to
118
- # run on? (If there is more than one, set this to the lowest version.)
119
- # If a value is specified for TargetRubyVersion then it is used. Acceptable
120
- # values are specificed as a float (i.e. 2.5); the teeny version of Ruby
121
- # should not be included. If the project specifies a Ruby version in the
122
- # .ruby-version file, Gemfile or gems.rb file, RuboCop will try to determine
123
- # the desired version of Ruby by inspecting the .ruby-version file first,
124
- # followed by the Gemfile.lock or gems.locked file. (Although the Ruby version
125
- # is specified in the Gemfile or gems.rb file, RuboCop reads the final value
126
- # from the lock file.) If the Ruby version is still unresolved, RuboCop will
127
- # use the oldest officially supported Ruby version (currently Ruby 2.3).
128
- TargetRubyVersion: ~
129
-
130
- #################### Bundler ###############################
131
-
132
- Bundler/DuplicatedGem:
133
- Description: 'Checks for duplicate gem entries in Gemfile.'
134
- Enabled: true
135
- VersionAdded: '0.46'
136
- Include:
137
- - '**/*.gemfile'
138
- - '**/Gemfile'
139
- - '**/gems.rb'
140
-
141
- Bundler/GemComment:
142
- Description: 'Add a comment describing each gem.'
143
- Enabled: false
144
- VersionAdded: '0.59'
145
- VersionChanged: '0.77'
146
- Include:
147
- - '**/*.gemfile'
148
- - '**/Gemfile'
149
- - '**/gems.rb'
150
- IgnoredGems: []
151
-
152
- Bundler/InsecureProtocolSource:
153
- Description: >-
154
- The source `:gemcutter`, `:rubygems` and `:rubyforge` are deprecated
155
- because HTTP requests are insecure. Please change your source to
156
- 'https://rubygems.org' if possible, or 'http://rubygems.org' if not.
157
- Enabled: true
158
- VersionAdded: '0.50'
159
- Include:
160
- - '**/*.gemfile'
161
- - '**/Gemfile'
162
- - '**/gems.rb'
163
-
164
- Bundler/OrderedGems:
165
- Description: >-
166
- Gems within groups in the Gemfile should be alphabetically sorted.
167
- Enabled: true
168
- VersionAdded: '0.46'
169
- VersionChanged: '0.47'
170
- TreatCommentsAsGroupSeparators: true
171
- Include:
172
- - '**/*.gemfile'
173
- - '**/Gemfile'
174
- - '**/gems.rb'
175
-
176
- #################### Gemspec ###############################
177
-
178
- Gemspec/DuplicatedAssignment:
179
- Description: 'An attribute assignment method calls should be listed only once in a gemspec.'
180
- Enabled: true
181
- VersionAdded: '0.52'
182
- Include:
183
- - '**/*.gemspec'
184
-
185
- Gemspec/OrderedDependencies:
186
- Description: >-
187
- Dependencies in the gemspec should be alphabetically sorted.
188
- Enabled: true
189
- VersionAdded: '0.51'
190
- TreatCommentsAsGroupSeparators: true
191
- Include:
192
- - '**/*.gemspec'
193
-
194
- Gemspec/RequiredRubyVersion:
195
- Description: 'Checks that `required_ruby_version` of gemspec and `TargetRubyVersion` of .rubocop.yml are equal.'
196
- Enabled: true
197
- VersionAdded: '0.52'
198
- Include:
199
- - '**/*.gemspec'
200
-
201
- Gemspec/RubyVersionGlobalsUsage:
202
- Description: Checks usage of RUBY_VERSION in gemspec.
203
- StyleGuide: '#no-ruby-version-in-the-gemspec'
204
- Enabled: true
205
- VersionAdded: '0.72'
206
- Include:
207
- - '**/*.gemspec'
208
-
209
- #################### Layout ###########################
210
-
211
- Layout/AccessModifierIndentation:
212
- Description: Check indentation of private/protected visibility modifiers.
213
- StyleGuide: '#indent-public-private-protected'
214
- Enabled: true
215
- VersionAdded: '0.49'
216
- EnforcedStyle: indent
217
- SupportedStyles:
218
- - outdent
219
- - indent
220
- # By default, the indentation width from Layout/IndentationWidth is used
221
- # But it can be overridden by setting this parameter
222
- IndentationWidth: ~
223
-
224
- Layout/ArgumentAlignment:
225
- Description: >-
226
- Align the arguments of a method call if they span more
227
- than one line.
228
- StyleGuide: '#no-double-indent'
229
- Enabled: true
230
- VersionAdded: '0.68'
231
- VersionChanged: '0.77'
232
- # Alignment of arguments in multi-line method calls.
233
- #
234
- # The `with_first_argument` style aligns the following lines along the same
235
- # column as the first parameter.
236
- #
237
- # method_call(a,
238
- # b)
239
- #
240
- # The `with_fixed_indentation` style aligns the following lines with one
241
- # level of indentation relative to the start of the line with the method call.
242
- #
243
- # method_call(a,
244
- # b)
245
- EnforcedStyle: with_first_argument
246
- SupportedStyles:
247
- - with_first_argument
248
- - with_fixed_indentation
249
- # By default, the indentation width from Layout/IndentationWidth is used
250
- # But it can be overridden by setting this parameter
251
- IndentationWidth: ~
252
-
253
- Layout/ArrayAlignment:
254
- Description: >-
255
- Align the elements of an array literal if they span more than
256
- one line.
257
- StyleGuide: '#align-multiline-arrays'
258
- Enabled: true
259
- VersionAdded: '0.49'
260
- VersionChanged: '0.77'
261
-
262
- Layout/AssignmentIndentation:
263
- Description: >-
264
- Checks the indentation of the first line of the
265
- right-hand-side of a multi-line assignment.
266
- Enabled: true
267
- VersionAdded: '0.49'
268
- VersionChanged: '0.77'
269
- # By default, the indentation width from `Layout/IndentationWidth` is used
270
- # But it can be overridden by setting this parameter
271
- IndentationWidth: ~
272
-
273
- Layout/BlockAlignment:
274
- Description: 'Align block ends correctly.'
275
- Enabled: true
276
- VersionAdded: '0.53'
277
- # The value `start_of_block` means that the `end` should be aligned with line
278
- # where the `do` keyword appears.
279
- # The value `start_of_line` means it should be aligned with the whole
280
- # expression's starting line.
281
- # The value `either` means both are allowed.
282
- EnforcedStyleAlignWith: either
283
- SupportedStylesAlignWith:
284
- - either
285
- - start_of_block
286
- - start_of_line
287
-
288
- Layout/BlockEndNewline:
289
- Description: 'Put end statement of multiline block on its own line.'
290
- Enabled: true
291
- VersionAdded: '0.49'
292
-
293
- Layout/CaseIndentation:
294
- Description: 'Indentation of when in a case/when/[else/]end.'
295
- StyleGuide: '#indent-when-to-case'
296
- Enabled: true
297
- VersionAdded: '0.49'
298
- EnforcedStyle: case
299
- SupportedStyles:
300
- - case
301
- - end
302
- IndentOneStep: false
303
- # By default, the indentation width from `Layout/IndentationWidth` is used.
304
- # But it can be overridden by setting this parameter.
305
- # This only matters if `IndentOneStep` is `true`
306
- IndentationWidth: ~
307
-
308
- Layout/ClassStructure:
309
- Description: 'Enforces a configured order of definitions within a class body.'
310
- StyleGuide: '#consistent-classes'
311
- Enabled: false
312
- VersionAdded: '0.52'
313
- Categories:
314
- module_inclusion:
315
- - include
316
- - prepend
317
- - extend
318
- ExpectedOrder:
319
- - module_inclusion
320
- - constants
321
- - public_class_methods
322
- - initializer
323
- - public_methods
324
- - protected_methods
325
- - private_methods
326
-
327
- Layout/ClosingHeredocIndentation:
328
- Description: 'Checks the indentation of here document closings.'
329
- Enabled: true
330
- VersionAdded: '0.57'
331
-
332
- Layout/ClosingParenthesisIndentation:
333
- Description: 'Checks the indentation of hanging closing parentheses.'
334
- Enabled: true
335
- VersionAdded: '0.49'
336
-
337
- Layout/CommentIndentation:
338
- Description: 'Indentation of comments.'
339
- Enabled: true
340
- VersionAdded: '0.49'
341
-
342
- Layout/ConditionPosition:
343
- Description: >-
344
- Checks for condition placed in a confusing position relative to
345
- the keyword.
346
- StyleGuide: '#same-line-condition'
347
- Enabled: true
348
- VersionAdded: '0.53'
349
-
350
- Layout/DefEndAlignment:
351
- Description: 'Align ends corresponding to defs correctly.'
352
- Enabled: true
353
- VersionAdded: '0.53'
354
- # The value `def` means that `end` should be aligned with the def keyword.
355
- # The value `start_of_line` means that `end` should be aligned with method
356
- # calls like `private`, `public`, etc, if present in front of the `def`
357
- # keyword on the same line.
358
- EnforcedStyleAlignWith: start_of_line
359
- SupportedStylesAlignWith:
360
- - start_of_line
361
- - def
362
- AutoCorrect: false
363
- Severity: warning
364
-
365
- Layout/DotPosition:
366
- Description: 'Checks the position of the dot in multi-line method calls.'
367
- StyleGuide: '#consistent-multi-line-chains'
368
- Enabled: true
369
- VersionAdded: '0.49'
370
- EnforcedStyle: leading
371
- SupportedStyles:
372
- - leading
373
- - trailing
374
-
375
- Layout/ElseAlignment:
376
- Description: 'Align elses and elsifs correctly.'
377
- Enabled: true
378
- VersionAdded: '0.49'
379
-
380
- Layout/EmptyComment:
381
- Description: 'Checks empty comment.'
382
- Enabled: true
383
- VersionAdded: '0.53'
384
- AllowBorderComment: true
385
- AllowMarginComment: true
386
-
387
- Layout/EmptyLineAfterGuardClause:
388
- Description: 'Add empty line after guard clause.'
389
- Enabled: true
390
- VersionAdded: '0.56'
391
- VersionChanged: '0.59'
392
-
393
- Layout/EmptyLineAfterMagicComment:
394
- Description: 'Add an empty line after magic comments to separate them from code.'
395
- StyleGuide: '#separate-magic-comments-from-code'
396
- Enabled: true
397
- VersionAdded: '0.49'
398
-
399
- Layout/EmptyLineBetweenDefs:
400
- Description: 'Use empty lines between defs.'
401
- StyleGuide: '#empty-lines-between-methods'
402
- Enabled: true
403
- VersionAdded: '0.49'
404
- # If `true`, this parameter means that single line method definitions don't
405
- # need an empty line between them.
406
- AllowAdjacentOneLineDefs: false
407
- # Can be array to specify minimum and maximum number of empty lines, e.g. [1, 2]
408
- NumberOfEmptyLines: 1
409
-
410
- Layout/EmptyLines:
411
- Description: "Don't use several empty lines in a row."
412
- StyleGuide: '#two-or-more-empty-lines'
413
- Enabled: true
414
- VersionAdded: '0.49'
415
-
416
- Layout/EmptyLinesAroundAccessModifier:
417
- Description: "Keep blank lines around access modifiers."
418
- StyleGuide: '#empty-lines-around-access-modifier'
419
- Enabled: true
420
- VersionAdded: '0.49'
421
- EnforcedStyle: around
422
- SupportedStyles:
423
- - around
424
- - only_before
425
- Reference:
426
- # A reference to `EnforcedStyle: only_before`.
427
- - https://edgeguides.rubyonrails.org/contributing_to_ruby_on_rails.html#follow-the-coding-conventions
428
-
429
- Layout/EmptyLinesAroundArguments:
430
- Description: "Keeps track of empty lines around method arguments."
431
- Enabled: true
432
- VersionAdded: '0.52'
433
-
434
- Layout/EmptyLinesAroundBeginBody:
435
- Description: "Keeps track of empty lines around begin-end bodies."
436
- StyleGuide: '#empty-lines-around-bodies'
437
- Enabled: true
438
- VersionAdded: '0.49'
439
-
440
- Layout/EmptyLinesAroundBlockBody:
441
- Description: "Keeps track of empty lines around block bodies."
442
- StyleGuide: '#empty-lines-around-bodies'
443
- Enabled: true
444
- VersionAdded: '0.49'
445
- EnforcedStyle: no_empty_lines
446
- SupportedStyles:
447
- - empty_lines
448
- - no_empty_lines
449
-
450
- Layout/EmptyLinesAroundClassBody:
451
- Description: "Keeps track of empty lines around class bodies."
452
- StyleGuide: '#empty-lines-around-bodies'
453
- Enabled: true
454
- VersionAdded: '0.49'
455
- VersionChanged: '0.53'
456
- EnforcedStyle: no_empty_lines
457
- SupportedStyles:
458
- - empty_lines
459
- - empty_lines_except_namespace
460
- - empty_lines_special
461
- - no_empty_lines
462
- - beginning_only
463
- - ending_only
464
-
465
- Layout/EmptyLinesAroundExceptionHandlingKeywords:
466
- Description: "Keeps track of empty lines around exception handling keywords."
467
- StyleGuide: '#empty-lines-around-bodies'
468
- Enabled: true
469
- VersionAdded: '0.49'
470
-
471
- Layout/EmptyLinesAroundMethodBody:
472
- Description: "Keeps track of empty lines around method bodies."
473
- StyleGuide: '#empty-lines-around-bodies'
474
- Enabled: true
475
- VersionAdded: '0.49'
476
-
477
- Layout/EmptyLinesAroundModuleBody:
478
- Description: "Keeps track of empty lines around module bodies."
479
- StyleGuide: '#empty-lines-around-bodies'
480
- Enabled: true
481
- VersionAdded: '0.49'
482
- EnforcedStyle: no_empty_lines
483
- SupportedStyles:
484
- - empty_lines
485
- - empty_lines_except_namespace
486
- - empty_lines_special
487
- - no_empty_lines
488
-
489
- Layout/EndAlignment:
490
- Description: 'Align ends correctly.'
491
- Enabled: true
492
- VersionAdded: '0.53'
493
- # The value `keyword` means that `end` should be aligned with the matching
494
- # keyword (`if`, `while`, etc.).
495
- # The value `variable` means that in assignments, `end` should be aligned
496
- # with the start of the variable on the left hand side of `=`. In all other
497
- # situations, `end` should still be aligned with the keyword.
498
- # The value `start_of_line` means that `end` should be aligned with the start
499
- # of the line which the matching keyword appears on.
500
- EnforcedStyleAlignWith: keyword
501
- SupportedStylesAlignWith:
502
- - keyword
503
- - variable
504
- - start_of_line
505
- AutoCorrect: false
506
- Severity: warning
507
-
508
- Layout/EndOfLine:
509
- Description: 'Use Unix-style line endings.'
510
- StyleGuide: '#crlf'
511
- Enabled: true
512
- VersionAdded: '0.49'
513
- # The `native` style means that CR+LF (Carriage Return + Line Feed) is
514
- # enforced on Windows, and LF is enforced on other platforms. The other styles
515
- # mean LF and CR+LF, respectively.
516
- EnforcedStyle: native
517
- SupportedStyles:
518
- - native
519
- - lf
520
- - crlf
521
-
522
- Layout/ExtraSpacing:
523
- Description: 'Do not use unnecessary spacing.'
524
- Enabled: true
525
- VersionAdded: '0.49'
526
- # When true, allows most uses of extra spacing if the intent is to align
527
- # things with the previous or next line, not counting empty lines or comment
528
- # lines.
529
- AllowForAlignment: true
530
- # When true, allows things like 'obj.meth(arg) # comment',
531
- # rather than insisting on 'obj.meth(arg) # comment'.
532
- # If done for alignment, either this OR AllowForAlignment will allow it.
533
- AllowBeforeTrailingComments: false
534
- # When true, forces the alignment of `=` in assignments on consecutive lines.
535
- ForceEqualSignAlignment: false
536
-
537
- Layout/FirstArgumentIndentation:
538
- Description: 'Checks the indentation of the first argument in a method call.'
539
- Enabled: true
540
- VersionAdded: '0.68'
541
- VersionChanged: '0.77'
542
- EnforcedStyle: special_for_inner_method_call_in_parentheses
543
- SupportedStyles:
544
- # The first parameter should always be indented one step more than the
545
- # preceding line.
546
- - consistent
547
- # The first parameter should always be indented one level relative to the
548
- # parent that is receiving the parameter
549
- - consistent_relative_to_receiver
550
- # The first parameter should normally be indented one step more than the
551
- # preceding line, but if it's a parameter for a method call that is itself
552
- # a parameter in a method call, then the inner parameter should be indented
553
- # relative to the inner method.
554
- - special_for_inner_method_call
555
- # Same as `special_for_inner_method_call` except that the special rule only
556
- # applies if the outer method call encloses its arguments in parentheses.
557
- - special_for_inner_method_call_in_parentheses
558
- # By default, the indentation width from `Layout/IndentationWidth` is used
559
- # But it can be overridden by setting this parameter
560
- IndentationWidth: ~
561
-
562
- Layout/FirstArrayElementIndentation:
563
- Description: >-
564
- Checks the indentation of the first element in an array
565
- literal.
566
- Enabled: true
567
- VersionAdded: '0.68'
568
- VersionChanged: '0.77'
569
- # The value `special_inside_parentheses` means that array literals with
570
- # brackets that have their opening bracket on the same line as a surrounding
571
- # opening round parenthesis, shall have their first element indented relative
572
- # to the first position inside the parenthesis.
573
- #
574
- # The value `consistent` means that the indentation of the first element shall
575
- # always be relative to the first position of the line where the opening
576
- # bracket is.
577
- #
578
- # The value `align_brackets` means that the indentation of the first element
579
- # shall always be relative to the position of the opening bracket.
580
- EnforcedStyle: special_inside_parentheses
581
- SupportedStyles:
582
- - special_inside_parentheses
583
- - consistent
584
- - align_brackets
585
- # By default, the indentation width from `Layout/IndentationWidth` is used
586
- # But it can be overridden by setting this parameter
587
- IndentationWidth: ~
588
-
589
- Layout/FirstArrayElementLineBreak:
590
- Description: >-
591
- Checks for a line break before the first element in a
592
- multi-line array.
593
- Enabled: false
594
- VersionAdded: '0.49'
595
-
596
- Layout/FirstHashElementIndentation:
597
- Description: 'Checks the indentation of the first key in a hash literal.'
598
- Enabled: true
599
- VersionAdded: '0.68'
600
- VersionChanged: '0.77'
601
- # The value `special_inside_parentheses` means that hash literals with braces
602
- # that have their opening brace on the same line as a surrounding opening
603
- # round parenthesis, shall have their first key indented relative to the
604
- # first position inside the parenthesis.
605
- #
606
- # The value `consistent` means that the indentation of the first key shall
607
- # always be relative to the first position of the line where the opening
608
- # brace is.
609
- #
610
- # The value `align_braces` means that the indentation of the first key shall
611
- # always be relative to the position of the opening brace.
612
- EnforcedStyle: special_inside_parentheses
613
- SupportedStyles:
614
- - special_inside_parentheses
615
- - consistent
616
- - align_braces
617
- # By default, the indentation width from `Layout/IndentationWidth` is used
618
- # But it can be overridden by setting this parameter
619
- IndentationWidth: ~
620
-
621
- Layout/FirstHashElementLineBreak:
622
- Description: >-
623
- Checks for a line break before the first element in a
624
- multi-line hash.
625
- Enabled: false
626
- VersionAdded: '0.49'
627
-
628
- Layout/FirstMethodArgumentLineBreak:
629
- Description: >-
630
- Checks for a line break before the first argument in a
631
- multi-line method call.
632
- Enabled: false
633
- VersionAdded: '0.49'
634
-
635
- Layout/FirstMethodParameterLineBreak:
636
- Description: >-
637
- Checks for a line break before the first parameter in a
638
- multi-line method parameter definition.
639
- Enabled: false
640
- VersionAdded: '0.49'
641
-
642
- Layout/FirstParameterIndentation:
643
- Description: >-
644
- Checks the indentation of the first parameter in a
645
- method definition.
646
- Enabled: true
647
- VersionAdded: '0.49'
648
- VersionChanged: '0.77'
649
- EnforcedStyle: consistent
650
- SupportedStyles:
651
- - consistent
652
- - align_parentheses
653
- # By default, the indentation width from `Layout/IndentationWidth` is used
654
- # But it can be overridden by setting this parameter
655
- IndentationWidth: ~
656
-
657
- Layout/HashAlignment:
658
- Description: >-
659
- Align the elements of a hash literal if they span more than
660
- one line.
661
- Enabled: true
662
- AllowMultipleStyles: true
663
- VersionAdded: '0.49'
664
- VersionChanged: '0.77'
665
- # Alignment of entries using hash rocket as separator. Valid values are:
666
- #
667
- # key - left alignment of keys
668
- # 'a' => 2
669
- # 'bb' => 3
670
- # separator - alignment of hash rockets, keys are right aligned
671
- # 'a' => 2
672
- # 'bb' => 3
673
- # table - left alignment of keys, hash rockets, and values
674
- # 'a' => 2
675
- # 'bb' => 3
676
- EnforcedHashRocketStyle: key
677
- SupportedHashRocketStyles:
678
- - key
679
- - separator
680
- - table
681
- # Alignment of entries using colon as separator. Valid values are:
682
- #
683
- # key - left alignment of keys
684
- # a: 0
685
- # bb: 1
686
- # separator - alignment of colons, keys are right aligned
687
- # a: 0
688
- # bb: 1
689
- # table - left alignment of keys and values
690
- # a: 0
691
- # bb: 1
692
- EnforcedColonStyle: key
693
- SupportedColonStyles:
694
- - key
695
- - separator
696
- - table
697
- # Select whether hashes that are the last argument in a method call should be
698
- # inspected? Valid values are:
699
- #
700
- # always_inspect - Inspect both implicit and explicit hashes.
701
- # Registers an offense for:
702
- # function(a: 1,
703
- # b: 2)
704
- # Registers an offense for:
705
- # function({a: 1,
706
- # b: 2})
707
- # always_ignore - Ignore both implicit and explicit hashes.
708
- # Accepts:
709
- # function(a: 1,
710
- # b: 2)
711
- # Accepts:
712
- # function({a: 1,
713
- # b: 2})
714
- # ignore_implicit - Ignore only implicit hashes.
715
- # Accepts:
716
- # function(a: 1,
717
- # b: 2)
718
- # Registers an offense for:
719
- # function({a: 1,
720
- # b: 2})
721
- # ignore_explicit - Ignore only explicit hashes.
722
- # Accepts:
723
- # function({a: 1,
724
- # b: 2})
725
- # Registers an offense for:
726
- # function(a: 1,
727
- # b: 2)
728
- EnforcedLastArgumentHashStyle: always_inspect
729
- SupportedLastArgumentHashStyles:
730
- - always_inspect
731
- - always_ignore
732
- - ignore_implicit
733
- - ignore_explicit
734
-
735
- Layout/HeredocArgumentClosingParenthesis:
736
- Description: >-
737
- Checks for the placement of the closing parenthesis in a
738
- method call that passes a HEREDOC string as an argument.
739
- Enabled: false
740
- StyleGuide: '#heredoc-argument-closing-parentheses'
741
- VersionAdded: '0.68'
742
-
743
- Layout/HeredocIndentation:
744
- Description: 'This cop checks the indentation of the here document bodies.'
745
- StyleGuide: '#squiggly-heredocs'
746
- Enabled: true
747
- VersionAdded: '0.49'
748
- VersionChanged: '0.77'
749
- EnforcedStyle: squiggly
750
- SupportedStyles:
751
- - squiggly
752
- - active_support
753
- - powerpack
754
- - unindent
755
-
756
- Layout/IndentationConsistency:
757
- Description: 'Keep indentation straight.'
758
- StyleGuide: '#spaces-indentation'
759
- Enabled: true
760
- VersionAdded: '0.49'
761
- # The difference between `indented` and `normal` is that the `indented_internal_methods`
762
- # style prescribes that in classes and modules the `protected` and `private`
763
- # modifier keywords shall be indented the same as public methods and that
764
- # protected and private members shall be indented one step more than the
765
- # modifiers. Other than that, both styles mean that entities on the same
766
- # logical depth shall have the same indentation.
767
- EnforcedStyle: normal
768
- SupportedStyles:
769
- - normal
770
- - indented_internal_methods
771
- Reference:
772
- # A reference to `EnforcedStyle: indented_internal_methods`.
773
- - https://edgeguides.rubyonrails.org/contributing_to_ruby_on_rails.html#follow-the-coding-conventions
774
-
775
- Layout/IndentationWidth:
776
- Description: 'Use 2 spaces for indentation.'
777
- StyleGuide: '#spaces-indentation'
778
- Enabled: true
779
- VersionAdded: '0.49'
780
- # Number of spaces for each indentation level.
781
- Width: 2
782
- IgnoredPatterns: []
783
-
784
- Layout/InitialIndentation:
785
- Description: >-
786
- Checks the indentation of the first non-blank non-comment line in a file.
787
- Enabled: true
788
- VersionAdded: '0.49'
789
-
790
- Layout/LeadingCommentSpace:
791
- Description: 'Comments should start with a space.'
792
- StyleGuide: '#hash-space'
793
- Enabled: true
794
- VersionAdded: '0.49'
795
- VersionChanged: '0.73'
796
- AllowDoxygenCommentStyle: false
797
-
798
- Layout/LeadingEmptyLines:
799
- Description: Check for unnecessary blank lines at the beginning of a file.
800
- Enabled: true
801
- VersionAdded: '0.57'
802
- VersionChanged: '0.77'
803
-
804
- Layout/LineLength:
805
- Description: 'Limit lines to 80 characters.'
806
- StyleGuide: '#80-character-limits'
807
- Enabled: true
808
- VersionAdded: '0.25'
809
- VersionChanged: '0.78'
810
- AutoCorrect: false
811
- Max: 80
812
- # To make it possible to copy or click on URIs in the code, we allow lines
813
- # containing a URI to be longer than Max.
814
- AllowHeredoc: true
815
- AllowURI: true
816
- URISchemes:
817
- - http
818
- - https
819
- # The IgnoreCopDirectives option causes the LineLength rule to ignore cop
820
- # directives like '# rubocop: enable ...' when calculating a line's length.
821
- IgnoreCopDirectives: true
822
- # The IgnoredPatterns option is a list of !ruby/regexp and/or string
823
- # elements. Strings will be converted to Regexp objects. A line that matches
824
- # any regular expression listed in this option will be ignored by LineLength.
825
- IgnoredPatterns: []
826
-
827
- Layout/MultilineArrayBraceLayout:
828
- Description: >-
829
- Checks that the closing brace in an array literal is
830
- either on the same line as the last array element, or
831
- a new line.
832
- Enabled: true
833
- VersionAdded: '0.49'
834
- EnforcedStyle: symmetrical
835
- SupportedStyles:
836
- # symmetrical: closing brace is positioned in same way as opening brace
837
- # new_line: closing brace is always on a new line
838
- # same_line: closing brace is always on the same line as last element
839
- - symmetrical
840
- - new_line
841
- - same_line
842
-
843
- Layout/MultilineArrayLineBreaks:
844
- Description: >-
845
- Checks that each item in a multi-line array literal
846
- starts on a separate line.
847
- Enabled: false
848
- VersionAdded: '0.67'
849
-
850
- Layout/MultilineAssignmentLayout:
851
- Description: 'Check for a newline after the assignment operator in multi-line assignments.'
852
- StyleGuide: '#indent-conditional-assignment'
853
- Enabled: false
854
- VersionAdded: '0.49'
855
- # The types of assignments which are subject to this rule.
856
- SupportedTypes:
857
- - block
858
- - case
859
- - class
860
- - if
861
- - kwbegin
862
- - module
863
- EnforcedStyle: new_line
864
- SupportedStyles:
865
- # Ensures that the assignment operator and the rhs are on the same line for
866
- # the set of supported types.
867
- - same_line
868
- # Ensures that the assignment operator and the rhs are on separate lines
869
- # for the set of supported types.
870
- - new_line
871
-
872
- Layout/MultilineBlockLayout:
873
- Description: 'Ensures newlines after multiline block do statements.'
874
- Enabled: true
875
- VersionAdded: '0.49'
876
-
877
- Layout/MultilineHashBraceLayout:
878
- Description: >-
879
- Checks that the closing brace in a hash literal is
880
- either on the same line as the last hash element, or
881
- a new line.
882
- Enabled: true
883
- VersionAdded: '0.49'
884
- EnforcedStyle: symmetrical
885
- SupportedStyles:
886
- # symmetrical: closing brace is positioned in same way as opening brace
887
- # new_line: closing brace is always on a new line
888
- # same_line: closing brace is always on same line as last element
889
- - symmetrical
890
- - new_line
891
- - same_line
892
-
893
- Layout/MultilineHashKeyLineBreaks:
894
- Description: >-
895
- Checks that each item in a multi-line hash literal
896
- starts on a separate line.
897
- Enabled: false
898
- VersionAdded: '0.67'
899
-
900
- Layout/MultilineMethodArgumentLineBreaks:
901
- Description: >-
902
- Checks that each argument in a multi-line method call
903
- starts on a separate line.
904
- Enabled: false
905
- VersionAdded: '0.67'
906
-
907
- Layout/MultilineMethodCallBraceLayout:
908
- Description: >-
909
- Checks that the closing brace in a method call is
910
- either on the same line as the last method argument, or
911
- a new line.
912
- Enabled: true
913
- VersionAdded: '0.49'
914
- EnforcedStyle: symmetrical
915
- SupportedStyles:
916
- # symmetrical: closing brace is positioned in same way as opening brace
917
- # new_line: closing brace is always on a new line
918
- # same_line: closing brace is always on the same line as last argument
919
- - symmetrical
920
- - new_line
921
- - same_line
922
-
923
- Layout/MultilineMethodCallIndentation:
924
- Description: >-
925
- Checks indentation of method calls with the dot operator
926
- that span more than one line.
927
- Enabled: true
928
- VersionAdded: '0.49'
929
- EnforcedStyle: aligned
930
- SupportedStyles:
931
- - aligned
932
- - indented
933
- - indented_relative_to_receiver
934
- # By default, the indentation width from Layout/IndentationWidth is used
935
- # But it can be overridden by setting this parameter
936
- IndentationWidth: ~
937
-
938
- Layout/MultilineMethodDefinitionBraceLayout:
939
- Description: >-
940
- Checks that the closing brace in a method definition is
941
- either on the same line as the last method parameter, or
942
- a new line.
943
- Enabled: true
944
- VersionAdded: '0.49'
945
- EnforcedStyle: symmetrical
946
- SupportedStyles:
947
- # symmetrical: closing brace is positioned in same way as opening brace
948
- # new_line: closing brace is always on a new line
949
- # same_line: closing brace is always on the same line as last parameter
950
- - symmetrical
951
- - new_line
952
- - same_line
953
-
954
- Layout/MultilineOperationIndentation:
955
- Description: >-
956
- Checks indentation of binary operations that span more than
957
- one line.
958
- Enabled: true
959
- VersionAdded: '0.49'
960
- EnforcedStyle: aligned
961
- SupportedStyles:
962
- - aligned
963
- - indented
964
- # By default, the indentation width from `Layout/IndentationWidth` is used
965
- # But it can be overridden by setting this parameter
966
- IndentationWidth: ~
967
-
968
- Layout/ParameterAlignment:
969
- Description: >-
970
- Align the parameters of a method definition if they span more
971
- than one line.
972
- StyleGuide: '#no-double-indent'
973
- Enabled: true
974
- VersionAdded: '0.49'
975
- VersionChanged: '0.77'
976
- # Alignment of parameters in multi-line method calls.
977
- #
978
- # The `with_first_parameter` style aligns the following lines along the same
979
- # column as the first parameter.
980
- #
981
- # def method_foo(a,
982
- # b)
983
- #
984
- # The `with_fixed_indentation` style aligns the following lines with one
985
- # level of indentation relative to the start of the line with the method call.
986
- #
987
- # def method_foo(a,
988
- # b)
989
- EnforcedStyle: with_first_parameter
990
- SupportedStyles:
991
- - with_first_parameter
992
- - with_fixed_indentation
993
- # By default, the indentation width from Layout/IndentationWidth is used
994
- # But it can be overridden by setting this parameter
995
- IndentationWidth: ~
996
-
997
- Layout/RescueEnsureAlignment:
998
- Description: 'Align rescues and ensures correctly.'
999
- Enabled: true
1000
- VersionAdded: '0.49'
1001
-
1002
- Layout/SpaceAfterColon:
1003
- Description: 'Use spaces after colons.'
1004
- StyleGuide: '#spaces-operators'
1005
- Enabled: true
1006
- VersionAdded: '0.49'
1007
-
1008
- Layout/SpaceAfterComma:
1009
- Description: 'Use spaces after commas.'
1010
- StyleGuide: '#spaces-operators'
1011
- Enabled: true
1012
- VersionAdded: '0.49'
1013
-
1014
- Layout/SpaceAfterMethodName:
1015
- Description: >-
1016
- Do not put a space between a method name and the opening
1017
- parenthesis in a method definition.
1018
- StyleGuide: '#parens-no-spaces'
1019
- Enabled: true
1020
- VersionAdded: '0.49'
1021
-
1022
- Layout/SpaceAfterNot:
1023
- Description: Tracks redundant space after the ! operator.
1024
- StyleGuide: '#no-space-bang'
1025
- Enabled: true
1026
- VersionAdded: '0.49'
1027
-
1028
- Layout/SpaceAfterSemicolon:
1029
- Description: 'Use spaces after semicolons.'
1030
- StyleGuide: '#spaces-operators'
1031
- Enabled: true
1032
- VersionAdded: '0.49'
1033
-
1034
- Layout/SpaceAroundBlockParameters:
1035
- Description: 'Checks the spacing inside and after block parameters pipes.'
1036
- Enabled: true
1037
- VersionAdded: '0.49'
1038
- EnforcedStyleInsidePipes: no_space
1039
- SupportedStylesInsidePipes:
1040
- - space
1041
- - no_space
1042
-
1043
- Layout/SpaceAroundEqualsInParameterDefault:
1044
- Description: >-
1045
- Checks that the equals signs in parameter default assignments
1046
- have or don't have surrounding space depending on
1047
- configuration.
1048
- StyleGuide: '#spaces-around-equals'
1049
- Enabled: true
1050
- VersionAdded: '0.49'
1051
- EnforcedStyle: space
1052
- SupportedStyles:
1053
- - space
1054
- - no_space
1055
-
1056
- Layout/SpaceAroundKeyword:
1057
- Description: 'Use a space around keywords if appropriate.'
1058
- Enabled: true
1059
- VersionAdded: '0.49'
1060
-
1061
- Layout/SpaceAroundOperators:
1062
- Description: 'Use a single space around operators.'
1063
- StyleGuide: '#spaces-operators'
1064
- Enabled: true
1065
- VersionAdded: '0.49'
1066
- # When `true`, allows most uses of extra spacing if the intent is to align
1067
- # with an operator on the previous or next line, not counting empty lines
1068
- # or comment lines.
1069
- AllowForAlignment: true
1070
- EnforcedStyleForExponentOperator: no_space
1071
- SupportedStylesForExponentOperator:
1072
- - space
1073
- - no_space
1074
-
1075
- Layout/SpaceBeforeBlockBraces:
1076
- Description: >-
1077
- Checks that the left block brace has or doesn't have space
1078
- before it.
1079
- Enabled: true
1080
- VersionAdded: '0.49'
1081
- EnforcedStyle: space
1082
- SupportedStyles:
1083
- - space
1084
- - no_space
1085
- EnforcedStyleForEmptyBraces: space
1086
- SupportedStylesForEmptyBraces:
1087
- - space
1088
- - no_space
1089
- VersionChanged: '0.52.1'
1090
-
1091
- Layout/SpaceBeforeComma:
1092
- Description: 'No spaces before commas.'
1093
- Enabled: true
1094
- VersionAdded: '0.49'
1095
-
1096
- Layout/SpaceBeforeComment:
1097
- Description: >-
1098
- Checks for missing space between code and a comment on the
1099
- same line.
1100
- Enabled: true
1101
- VersionAdded: '0.49'
1102
-
1103
- Layout/SpaceBeforeFirstArg:
1104
- Description: >-
1105
- Checks that exactly one space is used between a method name
1106
- and the first argument for method calls without parentheses.
1107
- Enabled: true
1108
- VersionAdded: '0.49'
1109
- # When `true`, allows most uses of extra spacing if the intent is to align
1110
- # things with the previous or next line, not counting empty lines or comment
1111
- # lines.
1112
- AllowForAlignment: true
1113
-
1114
- Layout/SpaceBeforeSemicolon:
1115
- Description: 'No spaces before semicolons.'
1116
- Enabled: true
1117
- VersionAdded: '0.49'
1118
-
1119
- Layout/SpaceInLambdaLiteral:
1120
- Description: 'Checks for spaces in lambda literals.'
1121
- Enabled: true
1122
- VersionAdded: '0.49'
1123
- EnforcedStyle: require_no_space
1124
- SupportedStyles:
1125
- - require_no_space
1126
- - require_space
1127
-
1128
- Layout/SpaceInsideArrayLiteralBrackets:
1129
- Description: 'Checks the spacing inside array literal brackets.'
1130
- Enabled: true
1131
- VersionAdded: '0.52'
1132
- EnforcedStyle: no_space
1133
- SupportedStyles:
1134
- - space
1135
- - no_space
1136
- # 'compact' normally requires a space inside the brackets, with the exception
1137
- # that successive left brackets or right brackets are collapsed together
1138
- - compact
1139
- EnforcedStyleForEmptyBrackets: no_space
1140
- SupportedStylesForEmptyBrackets:
1141
- - space
1142
- - no_space
1143
-
1144
- Layout/SpaceInsideArrayPercentLiteral:
1145
- Description: 'No unnecessary additional spaces between elements in %i/%w literals.'
1146
- Enabled: true
1147
- VersionAdded: '0.49'
1148
-
1149
- Layout/SpaceInsideBlockBraces:
1150
- Description: >-
1151
- Checks that block braces have or don't have surrounding space.
1152
- For blocks taking parameters, checks that the left brace has
1153
- or doesn't have trailing space.
1154
- Enabled: true
1155
- VersionAdded: '0.49'
1156
- EnforcedStyle: space
1157
- SupportedStyles:
1158
- - space
1159
- - no_space
1160
- EnforcedStyleForEmptyBraces: no_space
1161
- SupportedStylesForEmptyBraces:
1162
- - space
1163
- - no_space
1164
- # Space between `{` and `|`. Overrides `EnforcedStyle` if there is a conflict.
1165
- SpaceBeforeBlockParameters: true
1166
-
1167
- Layout/SpaceInsideHashLiteralBraces:
1168
- Description: "Use spaces inside hash literal braces - or don't."
1169
- StyleGuide: '#spaces-operators'
1170
- Enabled: true
1171
- VersionAdded: '0.49'
1172
- EnforcedStyle: space
1173
- SupportedStyles:
1174
- - space
1175
- - no_space
1176
- # 'compact' normally requires a space inside hash braces, with the exception
1177
- # that successive left braces or right braces are collapsed together
1178
- - compact
1179
- EnforcedStyleForEmptyBraces: no_space
1180
- SupportedStylesForEmptyBraces:
1181
- - space
1182
- - no_space
1183
-
1184
-
1185
- Layout/SpaceInsideParens:
1186
- Description: 'No spaces after ( or before ).'
1187
- StyleGuide: '#spaces-braces'
1188
- Enabled: true
1189
- VersionAdded: '0.49'
1190
- VersionChanged: '0.55'
1191
- EnforcedStyle: no_space
1192
- SupportedStyles:
1193
- - space
1194
- - no_space
1195
-
1196
- Layout/SpaceInsidePercentLiteralDelimiters:
1197
- Description: 'No unnecessary spaces inside delimiters of %i/%w/%x literals.'
1198
- Enabled: true
1199
- VersionAdded: '0.49'
1200
-
1201
- Layout/SpaceInsideRangeLiteral:
1202
- Description: 'No spaces inside range literals.'
1203
- StyleGuide: '#no-space-inside-range-literals'
1204
- Enabled: true
1205
- VersionAdded: '0.49'
1206
-
1207
- Layout/SpaceInsideReferenceBrackets:
1208
- Description: 'Checks the spacing inside referential brackets.'
1209
- Enabled: true
1210
- VersionAdded: '0.52'
1211
- VersionChanged: '0.53'
1212
- EnforcedStyle: no_space
1213
- SupportedStyles:
1214
- - space
1215
- - no_space
1216
- EnforcedStyleForEmptyBrackets: no_space
1217
- SupportedStylesForEmptyBrackets:
1218
- - space
1219
- - no_space
1220
-
1221
- Layout/SpaceInsideStringInterpolation:
1222
- Description: 'Checks for padding/surrounding spaces inside string interpolation.'
1223
- StyleGuide: '#string-interpolation'
1224
- Enabled: true
1225
- VersionAdded: '0.49'
1226
- EnforcedStyle: no_space
1227
- SupportedStyles:
1228
- - space
1229
- - no_space
1230
-
1231
- Layout/Tab:
1232
- Description: 'No hard tabs.'
1233
- StyleGuide: '#spaces-indentation'
1234
- Enabled: true
1235
- VersionAdded: '0.49'
1236
- VersionChanged: '0.51'
1237
- # By default, the indentation width from Layout/IndentationWidth is used
1238
- # But it can be overridden by setting this parameter
1239
- # It is used during auto-correction to determine how many spaces should
1240
- # replace each tab.
1241
- IndentationWidth: ~
1242
-
1243
- Layout/TrailingEmptyLines:
1244
- Description: 'Checks trailing blank lines and final newline.'
1245
- StyleGuide: '#newline-eof'
1246
- Enabled: true
1247
- VersionAdded: '0.49'
1248
- VersionChanged: '0.77'
1249
- EnforcedStyle: final_newline
1250
- SupportedStyles:
1251
- - final_newline
1252
- - final_blank_line
1253
-
1254
- Layout/TrailingWhitespace:
1255
- Description: 'Avoid trailing whitespace.'
1256
- StyleGuide: '#no-trailing-whitespace'
1257
- Enabled: true
1258
- VersionAdded: '0.49'
1259
- VersionChanged: '0.55'
1260
- AllowInHeredoc: false
1261
-
1262
- #################### Lint ##################################
1263
- ### Warnings
1264
-
1265
- Lint/AmbiguousBlockAssociation:
1266
- Description: >-
1267
- Checks for ambiguous block association with method when param passed without
1268
- parentheses.
1269
- StyleGuide: '#syntax'
1270
- Enabled: true
1271
- VersionAdded: '0.48'
1272
-
1273
- Lint/AmbiguousOperator:
1274
- Description: >-
1275
- Checks for ambiguous operators in the first argument of a
1276
- method invocation without parentheses.
1277
- StyleGuide: '#method-invocation-parens'
1278
- Enabled: true
1279
- VersionAdded: '0.17'
1280
-
1281
- Lint/AmbiguousRegexpLiteral:
1282
- Description: >-
1283
- Checks for ambiguous regexp literals in the first argument of
1284
- a method invocation without parentheses.
1285
- Enabled: true
1286
- VersionAdded: '0.17'
1287
-
1288
- Lint/AssignmentInCondition:
1289
- Description: "Don't use assignment in conditions."
1290
- StyleGuide: '#safe-assignment-in-condition'
1291
- Enabled: true
1292
- VersionAdded: '0.9'
1293
- AllowSafeAssignment: true
1294
-
1295
- Lint/BigDecimalNew:
1296
- Description: '`BigDecimal.new()` is deprecated. Use `BigDecimal()` instead.'
1297
- Enabled: true
1298
- VersionAdded: '0.53'
1299
-
1300
- Lint/BooleanSymbol:
1301
- Description: 'Check for `:true` and `:false` symbols.'
1302
- Enabled: true
1303
- VersionAdded: '0.50'
1304
-
1305
- Lint/CircularArgumentReference:
1306
- Description: "Default values in optional keyword arguments and optional ordinal arguments should not refer back to the name of the argument."
1307
- Enabled: true
1308
- VersionAdded: '0.33'
1309
-
1310
- Lint/Debugger:
1311
- Description: 'Check for debugger calls.'
1312
- Enabled: true
1313
- VersionAdded: '0.14'
1314
- VersionChanged: '0.49'
1315
-
1316
- Lint/DeprecatedClassMethods:
1317
- Description: 'Check for deprecated class method calls.'
1318
- Enabled: true
1319
- VersionAdded: '0.19'
1320
-
1321
- Lint/DisjunctiveAssignmentInConstructor:
1322
- Description: 'In constructor, plain assignment is preferred over disjunctive.'
1323
- Enabled: true
1324
- Safe: false
1325
- VersionAdded: '0.62'
1326
-
1327
- Lint/DuplicateCaseCondition:
1328
- Description: 'Do not repeat values in case conditionals.'
1329
- Enabled: true
1330
- VersionAdded: '0.45'
1331
-
1332
- Lint/DuplicateHashKey:
1333
- Description: 'Check for duplicate keys in hash literals.'
1334
- Enabled: true
1335
- VersionAdded: '0.34'
1336
- VersionChanged: '0.77'
1337
-
1338
- Lint/DuplicateMethods:
1339
- Description: 'Check for duplicate method definitions.'
1340
- Enabled: true
1341
- VersionAdded: '0.29'
1342
-
1343
- Lint/EachWithObjectArgument:
1344
- Description: 'Check for immutable argument given to each_with_object.'
1345
- Enabled: true
1346
- VersionAdded: '0.31'
1347
-
1348
- Lint/ElseLayout:
1349
- Description: 'Check for odd code arrangement in an else block.'
1350
- Enabled: true
1351
- VersionAdded: '0.17'
1352
-
1353
- Lint/EmptyEnsure:
1354
- Description: 'Checks for empty ensure block.'
1355
- Enabled: true
1356
- VersionAdded: '0.10'
1357
- VersionChanged: '0.48'
1358
- AutoCorrect: false
1359
-
1360
- Lint/EmptyExpression:
1361
- Description: 'Checks for empty expressions.'
1362
- Enabled: true
1363
- VersionAdded: '0.45'
1364
-
1365
- Lint/EmptyInterpolation:
1366
- Description: 'Checks for empty string interpolation.'
1367
- Enabled: true
1368
- VersionAdded: '0.20'
1369
- VersionChanged: '0.45'
1370
-
1371
- Lint/EmptyWhen:
1372
- Description: 'Checks for `when` branches with empty bodies.'
1373
- Enabled: true
1374
- VersionAdded: '0.45'
1375
-
1376
- Lint/EndInMethod:
1377
- Description: 'END blocks should not be placed inside method definitions.'
1378
- Enabled: true
1379
- VersionAdded: '0.9'
1380
-
1381
- Lint/EnsureReturn:
1382
- Description: 'Do not use return in an ensure block.'
1383
- StyleGuide: '#no-return-ensure'
1384
- Enabled: true
1385
- VersionAdded: '0.9'
1386
-
1387
- Lint/ErbNewArguments:
1388
- Description: 'Use `:trim_mode` and `:eoutvar` keyword arguments to `ERB.new`.'
1389
- Enabled: true
1390
- VersionAdded: '0.56'
1391
-
1392
- Lint/FlipFlop:
1393
- Description: 'Checks for flip-flops.'
1394
- StyleGuide: '#no-flip-flops'
1395
- Enabled: true
1396
- VersionAdded: '0.16'
1397
-
1398
- Lint/FloatOutOfRange:
1399
- Description: >-
1400
- Catches floating-point literals too large or small for Ruby to
1401
- represent.
1402
- Enabled: true
1403
- VersionAdded: '0.36'
1404
-
1405
- Lint/FormatParameterMismatch:
1406
- Description: 'The number of parameters to format/sprint must match the fields.'
1407
- Enabled: true
1408
- VersionAdded: '0.33'
1409
-
1410
- Lint/HeredocMethodCallPosition:
1411
- Description: >-
1412
- Checks for the ordering of a method call where
1413
- the receiver of the call is a HEREDOC.
1414
- Enabled: false
1415
- StyleGuide: '#heredoc-method-calls'
1416
- VersionAdded: '0.68'
1417
-
1418
- Lint/ImplicitStringConcatenation:
1419
- Description: >-
1420
- Checks for adjacent string literals on the same line, which
1421
- could better be represented as a single string literal.
1422
- Enabled: true
1423
- VersionAdded: '0.36'
1424
-
1425
- Lint/IneffectiveAccessModifier:
1426
- Description: >-
1427
- Checks for attempts to use `private` or `protected` to set
1428
- the visibility of a class method, which does not work.
1429
- Enabled: true
1430
- VersionAdded: '0.36'
1431
-
1432
- Lint/InheritException:
1433
- Description: 'Avoid inheriting from the `Exception` class.'
1434
- Enabled: true
1435
- VersionAdded: '0.41'
1436
- # The default base class in favour of `Exception`.
1437
- EnforcedStyle: runtime_error
1438
- SupportedStyles:
1439
- - runtime_error
1440
- - standard_error
1441
-
1442
- Lint/InterpolationCheck:
1443
- Description: 'Raise warning for interpolation in single q strs.'
1444
- Enabled: true
1445
- VersionAdded: '0.50'
1446
-
1447
- Lint/LiteralAsCondition:
1448
- Description: 'Checks of literals used in conditions.'
1449
- Enabled: true
1450
- VersionAdded: '0.51'
1451
-
1452
- Lint/LiteralInInterpolation:
1453
- Description: 'Checks for literals used in interpolation.'
1454
- Enabled: true
1455
- VersionAdded: '0.19'
1456
- VersionChanged: '0.32'
1457
-
1458
- Lint/Loop:
1459
- Description: >-
1460
- Use Kernel#loop with break rather than begin/end/until or
1461
- begin/end/while for post-loop tests.
1462
- StyleGuide: '#loop-with-break'
1463
- Enabled: true
1464
- VersionAdded: '0.9'
1465
-
1466
- Lint/MissingCopEnableDirective:
1467
- Description: 'Checks for a `# rubocop:enable` after `# rubocop:disable`.'
1468
- Enabled: true
1469
- VersionAdded: '0.52'
1470
- # Maximum number of consecutive lines the cop can be disabled for.
1471
- # 0 allows only single-line disables
1472
- # 1 would mean the maximum allowed is the following:
1473
- # # rubocop:disable SomeCop
1474
- # a = 1
1475
- # # rubocop:enable SomeCop
1476
- # .inf for any size
1477
- MaximumRangeSize: .inf
1478
-
1479
- Lint/MultipleComparison:
1480
- Description: "Use `&&` operator to compare multiple values."
1481
- Enabled: true
1482
- VersionAdded: '0.47'
1483
- VersionChanged: '0.77'
1484
-
1485
- Lint/NestedMethodDefinition:
1486
- Description: 'Do not use nested method definitions.'
1487
- StyleGuide: '#no-nested-methods'
1488
- Enabled: true
1489
- VersionAdded: '0.32'
1490
-
1491
- Lint/NestedPercentLiteral:
1492
- Description: 'Checks for nested percent literals.'
1493
- Enabled: true
1494
- VersionAdded: '0.52'
1495
-
1496
- Lint/NextWithoutAccumulator:
1497
- Description: >-
1498
- Do not omit the accumulator when calling `next`
1499
- in a `reduce`/`inject` block.
1500
- Enabled: true
1501
- VersionAdded: '0.36'
1502
-
1503
- Lint/NonDeterministicRequireOrder:
1504
- Description: 'Always sort arrays returned by Dir.glob when requiring files.'
1505
- Enabled: true
1506
- VersionAdded: '0.78'
1507
- Safe: false
1508
-
1509
- Lint/NonLocalExitFromIterator:
1510
- Description: 'Do not use return in iterator to cause non-local exit.'
1511
- Enabled: true
1512
- VersionAdded: '0.30'
1513
-
1514
- Lint/NumberConversion:
1515
- Description: 'Checks unsafe usage of number conversion methods.'
1516
- Enabled: false
1517
- VersionAdded: '0.53'
1518
- VersionChanged: '0.70'
1519
- SafeAutoCorrect: false
1520
-
1521
- Lint/OrderedMagicComments:
1522
- Description: 'Checks the proper ordering of magic comments and whether a magic comment is not placed before a shebang.'
1523
- Enabled: true
1524
- VersionAdded: '0.53'
1525
-
1526
- Lint/ParenthesesAsGroupedExpression:
1527
- Description: >-
1528
- Checks for method calls with a space before the opening
1529
- parenthesis.
1530
- StyleGuide: '#parens-no-spaces'
1531
- Enabled: true
1532
- VersionAdded: '0.12'
1533
-
1534
- Lint/PercentStringArray:
1535
- Description: >-
1536
- Checks for unwanted commas and quotes in %w/%W literals.
1537
- Enabled: true
1538
- Safe: false
1539
- VersionAdded: '0.41'
1540
-
1541
- Lint/PercentSymbolArray:
1542
- Description: >-
1543
- Checks for unwanted commas and colons in %i/%I literals.
1544
- Enabled: true
1545
- VersionAdded: '0.41'
1546
-
1547
- Lint/RandOne:
1548
- Description: >-
1549
- Checks for `rand(1)` calls. Such calls always return `0`
1550
- and most likely a mistake.
1551
- Enabled: true
1552
- VersionAdded: '0.36'
1553
-
1554
- Lint/RedundantCopDisableDirective:
1555
- Description: >-
1556
- Checks for rubocop:disable comments that can be removed.
1557
- Note: this cop is not disabled when disabling all cops.
1558
- It must be explicitly disabled.
1559
- Enabled: true
1560
- VersionAdded: '0.76'
1561
-
1562
- Lint/RedundantCopEnableDirective:
1563
- Description: Checks for rubocop:enable comments that can be removed.
1564
- Enabled: true
1565
- VersionAdded: '0.76'
1566
-
1567
- Lint/RedundantRequireStatement:
1568
- Description: 'Checks for unnecessary `require` statement.'
1569
- Enabled: true
1570
- VersionAdded: '0.76'
1571
-
1572
- Lint/RedundantSplatExpansion:
1573
- Description: 'Checks for splat unnecessarily being called on literals.'
1574
- Enabled: true
1575
- VersionChanged: '0.76'
1576
-
1577
- Lint/RedundantStringCoercion:
1578
- Description: 'Checks for Object#to_s usage in string interpolation.'
1579
- StyleGuide: '#no-to-s'
1580
- Enabled: true
1581
- VersionAdded: '0.19'
1582
- VersionChanged: '0.77'
1583
-
1584
- Lint/RedundantWithIndex:
1585
- Description: 'Checks for redundant `with_index`.'
1586
- Enabled: true
1587
- VersionAdded: '0.50'
1588
-
1589
- Lint/RedundantWithObject:
1590
- Description: 'Checks for redundant `with_object`.'
1591
- Enabled: true
1592
- VersionAdded: '0.51'
1593
-
1594
- Lint/RegexpAsCondition:
1595
- Description: >-
1596
- Do not use regexp literal as a condition.
1597
- The regexp literal matches `$_` implicitly.
1598
- Enabled: true
1599
- VersionAdded: '0.51'
1600
-
1601
- Lint/RequireParentheses:
1602
- Description: >-
1603
- Use parentheses in the method call to avoid confusion
1604
- about precedence.
1605
- Enabled: true
1606
- VersionAdded: '0.18'
1607
-
1608
- Lint/RescueException:
1609
- Description: 'Avoid rescuing the Exception class.'
1610
- StyleGuide: '#no-blind-rescues'
1611
- Enabled: true
1612
- VersionAdded: '0.9'
1613
- VersionChanged: '0.27.1'
1614
-
1615
- Lint/RescueType:
1616
- Description: 'Avoid rescuing from non constants that could result in a `TypeError`.'
1617
- Enabled: true
1618
- VersionAdded: '0.49'
1619
-
1620
- Lint/ReturnInVoidContext:
1621
- Description: 'Checks for return in void context.'
1622
- Enabled: true
1623
- VersionAdded: '0.50'
1624
-
1625
- Lint/SafeNavigationChain:
1626
- Description: 'Do not chain ordinary method call after safe navigation operator.'
1627
- Enabled: true
1628
- VersionAdded: '0.47'
1629
- VersionChanged: '0.77'
1630
- AllowedMethods:
1631
- - present?
1632
- - blank?
1633
- - presence
1634
- - try
1635
- - try!
1636
-
1637
- Lint/SafeNavigationConsistency:
1638
- Description: >-
1639
- Check to make sure that if safe navigation is used for a method
1640
- call in an `&&` or `||` condition that safe navigation is used
1641
- for all method calls on that same object.
1642
- Enabled: true
1643
- VersionAdded: '0.55'
1644
- VersionChanged: '0.77'
1645
- AllowedMethods:
1646
- - present?
1647
- - blank?
1648
- - presence
1649
- - try
1650
- - try!
1651
-
1652
- Lint/SafeNavigationWithEmpty:
1653
- Description: 'Avoid `foo&.empty?` in conditionals.'
1654
- Enabled: true
1655
- VersionAdded: '0.62'
1656
-
1657
- Lint/ScriptPermission:
1658
- Description: 'Grant script file execute permission.'
1659
- Enabled: true
1660
- VersionAdded: '0.49'
1661
- VersionChanged: '0.50'
1662
-
1663
- Lint/SendWithMixinArgument:
1664
- Description: 'Checks for `send` method when using mixin.'
1665
- Enabled: true
1666
- VersionAdded: '0.75'
1667
-
1668
- Lint/ShadowedArgument:
1669
- Description: 'Avoid reassigning arguments before they were used.'
1670
- Enabled: true
1671
- VersionAdded: '0.52'
1672
- IgnoreImplicitReferences: false
1673
-
1674
-
1675
- Lint/ShadowedException:
1676
- Description: >-
1677
- Avoid rescuing a higher level exception
1678
- before a lower level exception.
1679
- Enabled: true
1680
- VersionAdded: '0.41'
1681
-
1682
- Lint/ShadowingOuterLocalVariable:
1683
- Description: >-
1684
- Do not use the same name as outer local variable
1685
- for block arguments or block local variables.
1686
- Enabled: true
1687
- VersionAdded: '0.9'
1688
-
1689
- Lint/SuppressedException:
1690
- Description: "Don't suppress exceptions."
1691
- StyleGuide: '#dont-hide-exceptions'
1692
- Enabled: true
1693
- AllowComments: false
1694
- VersionAdded: '0.9'
1695
- VersionChanged: '0.77'
1696
-
1697
- Lint/Syntax:
1698
- Description: 'Checks syntax error.'
1699
- Enabled: true
1700
- VersionAdded: '0.9'
1701
-
1702
-
1703
- Lint/ToJSON:
1704
- Description: 'Ensure #to_json includes an optional argument.'
1705
- Enabled: true
1706
-
1707
- Lint/UnderscorePrefixedVariableName:
1708
- Description: 'Do not use prefix `_` for a variable that is used.'
1709
- Enabled: true
1710
- VersionAdded: '0.21'
1711
- AllowKeywordBlockArguments: false
1712
-
1713
- Lint/UnifiedInteger:
1714
- Description: 'Use Integer instead of Fixnum or Bignum.'
1715
- Enabled: true
1716
- VersionAdded: '0.43'
1717
-
1718
- Lint/UnreachableCode:
1719
- Description: 'Unreachable code.'
1720
- Enabled: true
1721
- VersionAdded: '0.9'
1722
-
1723
- Lint/UnusedBlockArgument:
1724
- Description: 'Checks for unused block arguments.'
1725
- StyleGuide: '#underscore-unused-vars'
1726
- Enabled: true
1727
- VersionAdded: '0.21'
1728
- VersionChanged: '0.22'
1729
- IgnoreEmptyBlocks: true
1730
- AllowUnusedKeywordArguments: false
1731
-
1732
- Lint/UnusedMethodArgument:
1733
- Description: 'Checks for unused method arguments.'
1734
- StyleGuide: '#underscore-unused-vars'
1735
- Enabled: true
1736
- VersionAdded: '0.21'
1737
- VersionChanged: '0.35'
1738
- AllowUnusedKeywordArguments: false
1739
- IgnoreEmptyMethods: true
1740
-
1741
- Lint/UriEscapeUnescape:
1742
- Description: >-
1743
- `URI.escape` method is obsolete and should not be used. Instead, use
1744
- `CGI.escape`, `URI.encode_www_form` or `URI.encode_www_form_component`
1745
- depending on your specific use case.
1746
- Also `URI.unescape` method is obsolete and should not be used. Instead, use
1747
- `CGI.unescape`, `URI.decode_www_form` or `URI.decode_www_form_component`
1748
- depending on your specific use case.
1749
- Enabled: true
1750
- VersionAdded: '0.50'
1751
-
1752
- Lint/UriRegexp:
1753
- Description: 'Use `URI::DEFAULT_PARSER.make_regexp` instead of `URI.regexp`.'
1754
- Enabled: true
1755
- VersionAdded: '0.50'
1756
-
1757
- Lint/UselessAccessModifier:
1758
- Description: 'Checks for useless access modifiers.'
1759
- Enabled: true
1760
- VersionAdded: '0.20'
1761
- VersionChanged: '0.47'
1762
- ContextCreatingMethods: []
1763
- MethodCreatingMethods: []
1764
-
1765
- Lint/UselessAssignment:
1766
- Description: 'Checks for useless assignment to a local variable.'
1767
- StyleGuide: '#underscore-unused-vars'
1768
- Enabled: true
1769
- VersionAdded: '0.11'
1770
-
1771
- Lint/UselessComparison:
1772
- Description: 'Checks for comparison of something with itself.'
1773
- Enabled: true
1774
- VersionAdded: '0.11'
1775
-
1776
- Lint/UselessElseWithoutRescue:
1777
- Description: 'Checks for useless `else` in `begin..end` without `rescue`.'
1778
- Enabled: true
1779
- VersionAdded: '0.17'
1780
-
1781
- Lint/UselessSetterCall:
1782
- Description: 'Checks for useless setter call to a local variable.'
1783
- Enabled: true
1784
- VersionAdded: '0.13'
1785
-
1786
- Lint/Void:
1787
- Description: 'Possible use of operator/literal/variable in void context.'
1788
- Enabled: true
1789
- VersionAdded: '0.9'
1790
- CheckForMethodsWithNoSideEffects: false
1791
-
1792
- #################### Metrics ###############################
1793
-
1794
- Metrics/AbcSize:
1795
- Description: >-
1796
- A calculated magnitude based on number of assignments,
1797
- branches, and conditions.
1798
- Reference:
1799
- - http://c2.com/cgi/wiki?AbcMetric
1800
- - https://en.wikipedia.org/wiki/ABC_Software_Metric
1801
- Enabled: true
1802
- VersionAdded: '0.27'
1803
- VersionChanged: '0.66'
1804
- # The ABC size is a calculated magnitude, so this number can be an Integer or
1805
- # a Float.
1806
- Max: 15
1807
-
1808
- Metrics/BlockLength:
1809
- Description: 'Avoid long blocks with many lines.'
1810
- Enabled: true
1811
- VersionAdded: '0.44'
1812
- VersionChanged: '0.66'
1813
- CountComments: false # count full line comments?
1814
- Max: 25
1815
- ExcludedMethods:
1816
- # By default, exclude the `#refine` method, as it tends to have larger
1817
- # associated blocks.
1818
- - refine
1819
- Exclude:
1820
- - '**/*.gemspec'
1821
-
1822
- Metrics/BlockNesting:
1823
- Description: 'Avoid excessive block nesting.'
1824
- StyleGuide: '#three-is-the-number-thou-shalt-count'
1825
- Enabled: true
1826
- VersionAdded: '0.25'
1827
- VersionChanged: '0.47'
1828
- CountBlocks: false
1829
- Max: 3
1830
-
1831
- Metrics/ClassLength:
1832
- Description: 'Avoid classes longer than 100 lines of code.'
1833
- Enabled: true
1834
- VersionAdded: '0.25'
1835
- CountComments: false # count full line comments?
1836
- Max: 100
1837
-
1838
- # Avoid complex methods.
1839
- Metrics/CyclomaticComplexity:
1840
- Description: >-
1841
- A complexity metric that is strongly correlated to the number
1842
- of test cases needed to validate a method.
1843
- Enabled: true
1844
- VersionAdded: '0.25'
1845
- Max: 6
1846
-
1847
- Metrics/MethodLength:
1848
- Description: 'Avoid methods longer than 10 lines of code.'
1849
- StyleGuide: '#short-methods'
1850
- Enabled: true
1851
- VersionAdded: '0.25'
1852
- VersionChanged: '0.59.2'
1853
- CountComments: false # count full line comments?
1854
- Max: 10
1855
- ExcludedMethods: []
1856
-
1857
- Metrics/ModuleLength:
1858
- Description: 'Avoid modules longer than 100 lines of code.'
1859
- Enabled: true
1860
- VersionAdded: '0.31'
1861
- CountComments: false # count full line comments?
1862
- Max: 100
1863
-
1864
- Metrics/ParameterLists:
1865
- Description: 'Avoid parameter lists longer than three or four parameters.'
1866
- StyleGuide: '#too-many-params'
1867
- Enabled: true
1868
- VersionAdded: '0.25'
1869
- Max: 5
1870
- CountKeywordArgs: true
1871
-
1872
- Metrics/PerceivedComplexity:
1873
- Description: >-
1874
- A complexity metric geared towards measuring complexity for a
1875
- human reader.
1876
- Enabled: true
1877
- VersionAdded: '0.25'
1878
- Max: 7
1879
-
1880
- ################## Migration #############################
1881
-
1882
- Migration/DepartmentName:
1883
- Description: >-
1884
- Check that cop names in rubocop:disable (etc) comments are
1885
- given with department name.
1886
- Enabled: false
1887
-
1888
- #################### Naming ##############################
1889
-
1890
- Naming/AccessorMethodName:
1891
- Description: Check the naming of accessor methods for get_/set_.
1892
- StyleGuide: '#accessor_mutator_method_names'
1893
- Enabled: true
1894
- VersionAdded: '0.50'
1895
-
1896
- Naming/AsciiIdentifiers:
1897
- Description: 'Use only ascii symbols in identifiers.'
1898
- StyleGuide: '#english-identifiers'
1899
- Enabled: true
1900
- VersionAdded: '0.50'
1901
-
1902
- Naming/BinaryOperatorParameterName:
1903
- Description: 'When defining binary operators, name the argument other.'
1904
- StyleGuide: '#other-arg'
1905
- Enabled: true
1906
- VersionAdded: '0.50'
1907
-
1908
- Naming/BlockParameterName:
1909
- Description: >-
1910
- Checks for block parameter names that contain capital letters,
1911
- end in numbers, or do not meet a minimal length.
1912
- Enabled: true
1913
- VersionAdded: '0.53'
1914
- VersionChanged: '0.77'
1915
- # Parameter names may be equal to or greater than this value
1916
- MinNameLength: 1
1917
- AllowNamesEndingInNumbers: true
1918
- # Allowed names that will not register an offense
1919
- AllowedNames: []
1920
- # Forbidden names that will register an offense
1921
- ForbiddenNames: []
1922
-
1923
- Naming/ClassAndModuleCamelCase:
1924
- Description: 'Use CamelCase for classes and modules.'
1925
- StyleGuide: '#camelcase-classes'
1926
- Enabled: true
1927
- VersionAdded: '0.50'
1928
-
1929
- Naming/ConstantName:
1930
- Description: 'Constants should use SCREAMING_SNAKE_CASE.'
1931
- StyleGuide: '#screaming-snake-case'
1932
- Enabled: true
1933
- VersionAdded: '0.50'
1934
-
1935
- Naming/FileName:
1936
- Description: 'Use snake_case for source file names.'
1937
- StyleGuide: '#snake-case-files'
1938
- Enabled: true
1939
- VersionAdded: '0.50'
1940
- # Camel case file names listed in `AllCops:Include` and all file names listed
1941
- # in `AllCops:Exclude` are excluded by default. Add extra excludes here.
1942
- Exclude: []
1943
- # When `true`, requires that each source file should define a class or module
1944
- # with a name which matches the file name (converted to ... case).
1945
- # It further expects it to be nested inside modules which match the names
1946
- # of subdirectories in its path.
1947
- ExpectMatchingDefinition: false
1948
- # If non-`nil`, expect all source file names to match the following regex.
1949
- # Only the file name itself is matched, not the entire file path.
1950
- # Use anchors as necessary if you want to match the entire name rather than
1951
- # just a part of it.
1952
- Regex: ~
1953
- # With `IgnoreExecutableScripts` set to `true`, this cop does not
1954
- # report offending filenames for executable scripts (i.e. source
1955
- # files with a shebang in the first line).
1956
- IgnoreExecutableScripts: true
1957
- AllowedAcronyms:
1958
- - CLI
1959
- - DSL
1960
- - ACL
1961
- - API
1962
- - ASCII
1963
- - CPU
1964
- - CSS
1965
- - DNS
1966
- - EOF
1967
- - GUID
1968
- - HTML
1969
- - HTTP
1970
- - HTTPS
1971
- - ID
1972
- - IP
1973
- - JSON
1974
- - LHS
1975
- - QPS
1976
- - RAM
1977
- - RHS
1978
- - RPC
1979
- - SLA
1980
- - SMTP
1981
- - SQL
1982
- - SSH
1983
- - TCP
1984
- - TLS
1985
- - TTL
1986
- - UDP
1987
- - UI
1988
- - UID
1989
- - UUID
1990
- - URI
1991
- - URL
1992
- - UTF8
1993
- - VM
1994
- - XML
1995
- - XMPP
1996
- - XSRF
1997
- - XSS
1998
-
1999
- Naming/HeredocDelimiterCase:
2000
- Description: 'Use configured case for heredoc delimiters.'
2001
- StyleGuide: '#heredoc-delimiters'
2002
- Enabled: true
2003
- VersionAdded: '0.50'
2004
- EnforcedStyle: uppercase
2005
- SupportedStyles:
2006
- - lowercase
2007
- - uppercase
2008
-
2009
- Naming/HeredocDelimiterNaming:
2010
- Description: 'Use descriptive heredoc delimiters.'
2011
- StyleGuide: '#heredoc-delimiters'
2012
- Enabled: true
2013
- VersionAdded: '0.50'
2014
- ForbiddenDelimiters:
2015
- - !ruby/regexp '/(^|\s)(EO[A-Z]{1}|END)(\s|$)/'
2016
-
2017
- Naming/MemoizedInstanceVariableName:
2018
- Description: >-
2019
- Memoized method name should match memo instance variable name.
2020
- Enabled: true
2021
- VersionAdded: '0.53'
2022
- VersionChanged: '0.58'
2023
- EnforcedStyleForLeadingUnderscores: disallowed
2024
- SupportedStylesForLeadingUnderscores:
2025
- - disallowed
2026
- - required
2027
- - optional
2028
-
2029
- Naming/MethodName:
2030
- Description: 'Use the configured style when naming methods.'
2031
- StyleGuide: '#snake-case-symbols-methods-vars'
2032
- Enabled: true
2033
- VersionAdded: '0.50'
2034
- EnforcedStyle: snake_case
2035
- SupportedStyles:
2036
- - snake_case
2037
- - camelCase
2038
- # Method names matching patterns are always allowed.
2039
- #
2040
- # IgnoredPatterns:
2041
- # - '\A\s*onSelectionBulkChange\s*'
2042
- # - '\A\s*onSelectionCleared\s*'
2043
- #
2044
- IgnoredPatterns: []
2045
-
2046
- Naming/MethodParameterName:
2047
- Description: >-
2048
- Checks for method parameter names that contain capital letters,
2049
- end in numbers, or do not meet a minimal length.
2050
- Enabled: true
2051
- VersionAdded: '0.53'
2052
- VersionChanged: '0.77'
2053
- # Parameter names may be equal to or greater than this value
2054
- MinNameLength: 3
2055
- AllowNamesEndingInNumbers: true
2056
- # Allowed names that will not register an offense
2057
- AllowedNames:
2058
- - io
2059
- - id
2060
- - to
2061
- - by
2062
- - 'on'
2063
- - in
2064
- - at
2065
- - ip
2066
- - db
2067
- - os
2068
- # Forbidden names that will register an offense
2069
- ForbiddenNames: []
2070
-
2071
- Naming/PredicateName:
2072
- Description: 'Check the names of predicate methods.'
2073
- StyleGuide: '#bool-methods-qmark'
2074
- Enabled: true
2075
- VersionAdded: '0.50'
2076
- VersionChanged: '0.77'
2077
- # Predicate name prefixes.
2078
- NamePrefix:
2079
- - is_
2080
- - has_
2081
- - have_
2082
- # Predicate name prefixes that should be removed.
2083
- ForbiddenPrefixes:
2084
- - is_
2085
- - has_
2086
- - have_
2087
- # Predicate names which, despite having a forbidden prefix, or no `?`,
2088
- # should still be accepted
2089
- AllowedMethods:
2090
- - is_a?
2091
- # Method definition macros for dynamically generated methods.
2092
- MethodDefinitionMacros:
2093
- - define_method
2094
- - define_singleton_method
2095
- # Exclude Rspec specs because there is a strong convention to write spec
2096
- # helpers in the form of `have_something` or `be_something`.
2097
- Exclude:
2098
- - 'spec/**/*'
2099
-
2100
- Naming/RescuedExceptionsVariableName:
2101
- Description: 'Use consistent rescued exceptions variables naming.'
2102
- Enabled: true
2103
- VersionAdded: '0.67'
2104
- VersionChanged: '0.68'
2105
- PreferredName: e
2106
-
2107
- Naming/VariableName:
2108
- Description: 'Use the configured style when naming variables.'
2109
- StyleGuide: '#snake-case-symbols-methods-vars'
2110
- Enabled: true
2111
- VersionAdded: '0.50'
2112
- EnforcedStyle: snake_case
2113
- SupportedStyles:
2114
- - snake_case
2115
- - camelCase
2116
-
2117
- Naming/VariableNumber:
2118
- Description: 'Use the configured style when numbering variables.'
2119
- Enabled: true
2120
- VersionAdded: '0.50'
2121
- EnforcedStyle: normalcase
2122
- SupportedStyles:
2123
- - snake_case
2124
- - normalcase
2125
- - non_integer
2126
-
2127
- #################### Security ##############################
2128
-
2129
- Security/Eval:
2130
- Description: 'The use of eval represents a serious security risk.'
2131
- Enabled: true
2132
- VersionAdded: '0.47'
2133
-
2134
- Security/JSONLoad:
2135
- Description: >-
2136
- Prefer usage of `JSON.parse` over `JSON.load` due to potential
2137
- security issues. See reference for more information.
2138
- Reference: 'https://ruby-doc.org/stdlib-2.3.0/libdoc/json/rdoc/JSON.html#method-i-load'
2139
- Enabled: true
2140
- VersionAdded: '0.43'
2141
- VersionChanged: '0.44'
2142
- # Autocorrect here will change to a method that may cause crashes depending
2143
- # on the value of the argument.
2144
- AutoCorrect: false
2145
- SafeAutoCorrect: false
2146
-
2147
- Security/MarshalLoad:
2148
- Description: >-
2149
- Avoid using of `Marshal.load` or `Marshal.restore` due to potential
2150
- security issues. See reference for more information.
2151
- Reference: 'https://ruby-doc.org/core-2.3.3/Marshal.html#module-Marshal-label-Security+considerations'
2152
- Enabled: true
2153
- VersionAdded: '0.47'
2154
-
2155
- Security/Open:
2156
- Description: 'The use of Kernel#open represents a serious security risk.'
2157
- Enabled: true
2158
- VersionAdded: '0.53'
2159
- Safe: false
2160
-
2161
- Security/YAMLLoad:
2162
- Description: >-
2163
- Prefer usage of `YAML.safe_load` over `YAML.load` due to potential
2164
- security issues. See reference for more information.
2165
- Reference: 'https://ruby-doc.org/stdlib-2.3.3/libdoc/yaml/rdoc/YAML.html#module-YAML-label-Security'
2166
- Enabled: true
2167
- VersionAdded: '0.47'
2168
- SafeAutoCorrect: false
2169
-
2170
- #################### Style ###############################
2171
-
2172
- Style/AccessModifierDeclarations:
2173
- Description: 'Checks style of how access modifiers are used.'
2174
- Enabled: true
2175
- VersionAdded: '0.57'
2176
- EnforcedStyle: group
2177
- SupportedStyles:
2178
- - inline
2179
- - group
2180
-
2181
- Style/Alias:
2182
- Description: 'Use alias instead of alias_method.'
2183
- StyleGuide: '#alias-method-lexically'
2184
- Enabled: true
2185
- VersionAdded: '0.9'
2186
- VersionChanged: '0.36'
2187
- EnforcedStyle: prefer_alias
2188
- SupportedStyles:
2189
- - prefer_alias
2190
- - prefer_alias_method
2191
-
2192
- Style/AndOr:
2193
- Description: 'Use &&/|| instead of and/or.'
2194
- StyleGuide: '#no-and-or-or'
2195
- Enabled: true
2196
- VersionAdded: '0.9'
2197
- VersionChanged: '0.25'
2198
- # Whether `and` and `or` are banned only in conditionals (conditionals)
2199
- # or completely (always).
2200
- EnforcedStyle: always
2201
- SupportedStyles:
2202
- - always
2203
- - conditionals
2204
-
2205
- Style/ArrayJoin:
2206
- Description: 'Use Array#join instead of Array#*.'
2207
- StyleGuide: '#array-join'
2208
- Enabled: true
2209
- VersionAdded: '0.20'
2210
- VersionChanged: '0.31'
2211
-
2212
- Style/AsciiComments:
2213
- Description: 'Use only ascii symbols in comments.'
2214
- StyleGuide: '#english-comments'
2215
- Enabled: true
2216
- VersionAdded: '0.9'
2217
- VersionChanged: '0.52'
2218
- AllowedChars: []
2219
-
2220
- Style/Attr:
2221
- Description: 'Checks for uses of Module#attr.'
2222
- StyleGuide: '#attr'
2223
- Enabled: true
2224
- VersionAdded: '0.9'
2225
- VersionChanged: '0.12'
2226
-
2227
- Style/AutoResourceCleanup:
2228
- Description: 'Suggests the usage of an auto resource cleanup version of a method (if available).'
2229
- Enabled: false
2230
- VersionAdded: '0.30'
2231
-
2232
- Style/BarePercentLiterals:
2233
- Description: 'Checks if usage of %() or %Q() matches configuration.'
2234
- StyleGuide: '#percent-q-shorthand'
2235
- Enabled: true
2236
- VersionAdded: '0.25'
2237
- EnforcedStyle: bare_percent
2238
- SupportedStyles:
2239
- - percent_q
2240
- - bare_percent
2241
-
2242
- Style/BeginBlock:
2243
- Description: 'Avoid the use of BEGIN blocks.'
2244
- StyleGuide: '#no-BEGIN-blocks'
2245
- Enabled: true
2246
- VersionAdded: '0.9'
2247
-
2248
- Style/BlockComments:
2249
- Description: 'Do not use block comments.'
2250
- StyleGuide: '#no-block-comments'
2251
- Enabled: true
2252
- VersionAdded: '0.9'
2253
- VersionChanged: '0.23'
2254
-
2255
- Style/BlockDelimiters:
2256
- Description: >-
2257
- Avoid using {...} for multi-line blocks (multiline chaining is
2258
- always ugly).
2259
- Prefer {...} over do...end for single-line blocks.
2260
- StyleGuide: '#single-line-blocks'
2261
- Enabled: true
2262
- VersionAdded: '0.30'
2263
- VersionChanged: '0.35'
2264
- EnforcedStyle: line_count_based
2265
- SupportedStyles:
2266
- # The `line_count_based` style enforces braces around single line blocks and
2267
- # do..end around multi-line blocks.
2268
- - line_count_based
2269
- # The `semantic` style enforces braces around functional blocks, where the
2270
- # primary purpose of the block is to return a value and do..end for
2271
- # multi-line procedural blocks, where the primary purpose of the block is
2272
- # its side-effects. Single-line procedural blocks may only use do-end,
2273
- # unless AllowBracesOnProceduralOneLiners has a truthy value (see below).
2274
- #
2275
- # This looks at the usage of a block's method to determine its type (e.g. is
2276
- # the result of a `map` assigned to a variable or passed to another
2277
- # method) but exceptions are permitted in the `ProceduralMethods`,
2278
- # `FunctionalMethods` and `IgnoredMethods` sections below.
2279
- - semantic
2280
- # The `braces_for_chaining` style enforces braces around single line blocks
2281
- # and do..end around multi-line blocks, except for multi-line blocks whose
2282
- # return value is being chained with another method (in which case braces
2283
- # are enforced).
2284
- - braces_for_chaining
2285
- # The `always_braces` style always enforces braces.
2286
- - always_braces
2287
- ProceduralMethods:
2288
- # Methods that are known to be procedural in nature but look functional from
2289
- # their usage, e.g.
2290
- #
2291
- # time = Benchmark.realtime do
2292
- # foo.bar
2293
- # end
2294
- #
2295
- # Here, the return value of the block is discarded but the return value of
2296
- # `Benchmark.realtime` is used.
2297
- - benchmark
2298
- - bm
2299
- - bmbm
2300
- - create
2301
- - each_with_object
2302
- - measure
2303
- - new
2304
- - realtime
2305
- - tap
2306
- - with_object
2307
- FunctionalMethods:
2308
- # Methods that are known to be functional in nature but look procedural from
2309
- # their usage, e.g.
2310
- #
2311
- # let(:foo) { Foo.new }
2312
- #
2313
- # Here, the return value of `Foo.new` is used to define a `foo` helper but
2314
- # doesn't appear to be used from the return value of `let`.
2315
- - let
2316
- - let!
2317
- - subject
2318
- - watch
2319
- IgnoredMethods:
2320
- # Methods that can be either procedural or functional and cannot be
2321
- # categorised from their usage alone, e.g.
2322
- #
2323
- # foo = lambda do |x|
2324
- # puts "Hello, #{x}"
2325
- # end
2326
- #
2327
- # foo = lambda do |x|
2328
- # x * 100
2329
- # end
2330
- #
2331
- # Here, it is impossible to tell from the return value of `lambda` whether
2332
- # the inner block's return value is significant.
2333
- - lambda
2334
- - proc
2335
- - it
2336
- # The AllowBracesOnProceduralOneLiners option is ignored unless the
2337
- # EnforcedStyle is set to `semantic`. If so:
2338
- #
2339
- # If AllowBracesOnProceduralOneLiners is unspecified, or set to any
2340
- # falsey value, then semantic purity is maintained, so one-line
2341
- # procedural blocks must use do-end, not braces.
2342
- #
2343
- # # bad
2344
- # collection.each { |element| puts element }
2345
- #
2346
- # # good
2347
- # collection.each do |element| puts element end
2348
- #
2349
- # If AllowBracesOnProceduralOneLiners is set to any truthy value,
2350
- # then one-line procedural blocks may use either style.
2351
- #
2352
- # # good
2353
- # collection.each { |element| puts element }
2354
- #
2355
- # # also good
2356
- # collection.each do |element| puts element end
2357
- AllowBracesOnProceduralOneLiners: false
2358
-
2359
- Style/BracesAroundHashParameters:
2360
- Description: 'Enforce braces style around hash parameters.'
2361
- Enabled: true
2362
- VersionAdded: '0.14.1'
2363
- VersionChanged: '0.28'
2364
- EnforcedStyle: no_braces
2365
- SupportedStyles:
2366
- # The `braces` style enforces braces around all method parameters that are
2367
- # hashes.
2368
- - braces
2369
- # The `no_braces` style checks that the last parameter doesn't have braces
2370
- # around it.
2371
- - no_braces
2372
- # The `context_dependent` style checks that the last parameter doesn't have
2373
- # braces around it, but requires braces if the second to last parameter is
2374
- # also a hash literal.
2375
- - context_dependent
2376
-
2377
- Style/CaseEquality:
2378
- Description: 'Avoid explicit use of the case equality operator(===).'
2379
- StyleGuide: '#no-case-equality'
2380
- Enabled: true
2381
- VersionAdded: '0.9'
2382
-
2383
- Style/CharacterLiteral:
2384
- Description: 'Checks for uses of character literals.'
2385
- StyleGuide: '#no-character-literals'
2386
- Enabled: true
2387
- VersionAdded: '0.9'
2388
-
2389
- Style/ClassAndModuleChildren:
2390
- Description: 'Checks style of children classes and modules.'
2391
- StyleGuide: '#namespace-definition'
2392
- # Moving from compact to nested children requires knowledge of whether the
2393
- # outer parent is a module or a class. Moving from nested to compact requires
2394
- # verification that the outer parent is defined elsewhere. Rubocop does not
2395
- # have the knowledge to perform either operation safely and thus requires
2396
- # manual oversight.
2397
- SafeAutoCorrect: false
2398
- AutoCorrect: false
2399
- Enabled: true
2400
- VersionAdded: '0.19'
2401
- #
2402
- # Basically there are two different styles:
2403
- #
2404
- # `nested` - have each child on a separate line
2405
- # class Foo
2406
- # class Bar
2407
- # end
2408
- # end
2409
- #
2410
- # `compact` - combine definitions as much as possible
2411
- # class Foo::Bar
2412
- # end
2413
- #
2414
- # The compact style is only forced, for classes or modules with one child.
2415
- EnforcedStyle: nested
2416
- SupportedStyles:
2417
- - nested
2418
- - compact
2419
-
2420
- Style/ClassCheck:
2421
- Description: 'Enforces consistent use of `Object#is_a?` or `Object#kind_of?`.'
2422
- Enabled: true
2423
- VersionAdded: '0.24'
2424
- EnforcedStyle: is_a?
2425
- SupportedStyles:
2426
- - is_a?
2427
- - kind_of?
2428
-
2429
- Style/ClassMethods:
2430
- Description: 'Use self when defining module/class methods.'
2431
- StyleGuide: '#def-self-class-methods'
2432
- Enabled: true
2433
- VersionAdded: '0.9'
2434
- VersionChanged: '0.20'
2435
-
2436
- Style/ClassVars:
2437
- Description: 'Avoid the use of class variables.'
2438
- StyleGuide: '#no-class-vars'
2439
- Enabled: true
2440
- VersionAdded: '0.13'
2441
-
2442
- # Align with the style guide.
2443
- Style/CollectionMethods:
2444
- Description: 'Preferred collection methods.'
2445
- StyleGuide: '#map-find-select-reduce-size'
2446
- Enabled: false
2447
- VersionAdded: '0.9'
2448
- VersionChanged: '0.27'
2449
- Safe: false
2450
- # Mapping from undesired method to desired method
2451
- # e.g. to use `detect` over `find`:
2452
- #
2453
- # Style/CollectionMethods:
2454
- # PreferredMethods:
2455
- # find: detect
2456
- PreferredMethods:
2457
- collect: 'map'
2458
- collect!: 'map!'
2459
- inject: 'reduce'
2460
- detect: 'find'
2461
- find_all: 'select'
2462
-
2463
- Style/ColonMethodCall:
2464
- Description: 'Do not use :: for method call.'
2465
- StyleGuide: '#double-colons'
2466
- Enabled: true
2467
- VersionAdded: '0.9'
2468
-
2469
- Style/ColonMethodDefinition:
2470
- Description: 'Do not use :: for defining class methods.'
2471
- StyleGuide: '#colon-method-definition'
2472
- Enabled: true
2473
- VersionAdded: '0.52'
2474
-
2475
- Style/CommandLiteral:
2476
- Description: 'Use `` or %x around command literals.'
2477
- StyleGuide: '#percent-x'
2478
- Enabled: true
2479
- VersionAdded: '0.30'
2480
- EnforcedStyle: backticks
2481
- # backticks: Always use backticks.
2482
- # percent_x: Always use `%x`.
2483
- # mixed: Use backticks on single-line commands, and `%x` on multi-line commands.
2484
- SupportedStyles:
2485
- - backticks
2486
- - percent_x
2487
- - mixed
2488
- # If `false`, the cop will always recommend using `%x` if one or more backticks
2489
- # are found in the command string.
2490
- AllowInnerBackticks: false
2491
-
2492
- # Checks formatting of special comments
2493
- Style/CommentAnnotation:
2494
- Description: >-
2495
- Checks formatting of special comments
2496
- (TODO, FIXME, OPTIMIZE, HACK, REVIEW).
2497
- StyleGuide: '#annotate-keywords'
2498
- Enabled: true
2499
- VersionAdded: '0.10'
2500
- VersionChanged: '0.31'
2501
- Keywords:
2502
- - TODO
2503
- - FIXME
2504
- - OPTIMIZE
2505
- - HACK
2506
- - REVIEW
2507
-
2508
- Style/CommentedKeyword:
2509
- Description: 'Do not place comments on the same line as certain keywords.'
2510
- Enabled: true
2511
- VersionAdded: '0.51'
2512
-
2513
- Style/ConditionalAssignment:
2514
- Description: >-
2515
- Use the return value of `if` and `case` statements for
2516
- assignment to a variable and variable comparison instead
2517
- of assigning that variable inside of each branch.
2518
- Enabled: true
2519
- VersionAdded: '0.36'
2520
- VersionChanged: '0.47'
2521
- EnforcedStyle: assign_to_condition
2522
- SupportedStyles:
2523
- - assign_to_condition
2524
- - assign_inside_condition
2525
- # When configured to `assign_to_condition`, `SingleLineConditionsOnly`
2526
- # will only register an offense when all branches of a condition are
2527
- # a single line.
2528
- # When configured to `assign_inside_condition`, `SingleLineConditionsOnly`
2529
- # will only register an offense for assignment to a condition that has
2530
- # at least one multiline branch.
2531
- SingleLineConditionsOnly: true
2532
- IncludeTernaryExpressions: true
2533
-
2534
- Style/ConstantVisibility:
2535
- Description: >-
2536
- Check that class- and module constants have
2537
- visibility declarations.
2538
- Enabled: false
2539
- VersionAdded: '0.66'
2540
-
2541
- # Checks that you have put a copyright in a comment before any code.
2542
- #
2543
- # You can override the default Notice in your .rubocop.yml file.
2544
- #
2545
- # In order to use autocorrect, you must supply a value for the
2546
- # `AutocorrectNotice` key that matches the regexp Notice. A blank
2547
- # `AutocorrectNotice` will cause an error during autocorrect.
2548
- #
2549
- # Autocorrect will add a copyright notice in a comment at the top
2550
- # of the file immediately after any shebang or encoding comments.
2551
- #
2552
- # Example rubocop.yml:
2553
- #
2554
- # Style/Copyright:
2555
- # Enabled: true
2556
- # Notice: 'Copyright (\(c\) )?2015 Yahoo! Inc'
2557
- # AutocorrectNotice: '# Copyright (c) 2015 Yahoo! Inc.'
2558
- #
2559
- Style/Copyright:
2560
- Description: 'Include a copyright notice in each file before any code.'
2561
- Enabled: false
2562
- VersionAdded: '0.30'
2563
- Notice: '^Copyright (\(c\) )?2[0-9]{3} .+'
2564
- AutocorrectNotice: ''
2565
-
2566
- Style/DateTime:
2567
- Description: 'Use Time over DateTime.'
2568
- StyleGuide: '#date--time'
2569
- Enabled: false
2570
- VersionAdded: '0.51'
2571
- VersionChanged: '0.59'
2572
- AllowCoercion: false
2573
-
2574
- Style/DefWithParentheses:
2575
- Description: 'Use def with parentheses when there are arguments.'
2576
- StyleGuide: '#method-parens'
2577
- Enabled: true
2578
- VersionAdded: '0.9'
2579
- VersionChanged: '0.12'
2580
-
2581
- Style/Dir:
2582
- Description: >-
2583
- Use the `__dir__` method to retrieve the canonicalized
2584
- absolute path to the current file.
2585
- Enabled: true
2586
- VersionAdded: '0.50'
2587
-
2588
- Style/Documentation:
2589
- Description: 'Document classes and non-namespace modules.'
2590
- Enabled: true
2591
- VersionAdded: '0.9'
2592
- Exclude:
2593
- - 'spec/**/*'
2594
- - 'test/**/*'
2595
-
2596
- Style/DocumentationMethod:
2597
- Description: 'Checks for missing documentation comment for public methods.'
2598
- Enabled: false
2599
- VersionAdded: '0.43'
2600
- Exclude:
2601
- - 'spec/**/*'
2602
- - 'test/**/*'
2603
- RequireForNonPublicMethods: false
2604
-
2605
- Style/DoubleCopDisableDirective:
2606
- Description: 'Checks for double rubocop:disable comments on a single line.'
2607
- Enabled: true
2608
- VersionAdded: '0.73'
2609
-
2610
- Style/DoubleNegation:
2611
- Description: 'Checks for uses of double negation (!!).'
2612
- StyleGuide: '#no-bang-bang'
2613
- Enabled: true
2614
- VersionAdded: '0.19'
2615
-
2616
- Style/EachForSimpleLoop:
2617
- Description: >-
2618
- Use `Integer#times` for a simple loop which iterates a fixed
2619
- number of times.
2620
- Enabled: true
2621
- VersionAdded: '0.41'
2622
-
2623
- Style/EachWithObject:
2624
- Description: 'Prefer `each_with_object` over `inject` or `reduce`.'
2625
- Enabled: true
2626
- VersionAdded: '0.22'
2627
- VersionChanged: '0.42'
2628
-
2629
- Style/EmptyBlockParameter:
2630
- Description: 'Omit pipes for empty block parameters.'
2631
- Enabled: true
2632
- VersionAdded: '0.52'
2633
-
2634
- Style/EmptyCaseCondition:
2635
- Description: 'Avoid empty condition in case statements.'
2636
- Enabled: true
2637
- VersionAdded: '0.40'
2638
-
2639
- Style/EmptyElse:
2640
- Description: 'Avoid empty else-clauses.'
2641
- Enabled: true
2642
- VersionAdded: '0.28'
2643
- VersionChanged: '0.32'
2644
- EnforcedStyle: both
2645
- # empty - warn only on empty `else`
2646
- # nil - warn on `else` with nil in it
2647
- # both - warn on empty `else` and `else` with `nil` in it
2648
- SupportedStyles:
2649
- - empty
2650
- - nil
2651
- - both
2652
-
2653
- Style/EmptyLambdaParameter:
2654
- Description: 'Omit parens for empty lambda parameters.'
2655
- Enabled: true
2656
- VersionAdded: '0.52'
2657
-
2658
- Style/EmptyLiteral:
2659
- Description: 'Prefer literals to Array.new/Hash.new/String.new.'
2660
- StyleGuide: '#literal-array-hash'
2661
- Enabled: true
2662
- VersionAdded: '0.9'
2663
- VersionChanged: '0.12'
2664
-
2665
- Style/EmptyMethod:
2666
- Description: 'Checks the formatting of empty method definitions.'
2667
- StyleGuide: '#no-single-line-methods'
2668
- Enabled: true
2669
- VersionAdded: '0.46'
2670
- EnforcedStyle: compact
2671
- SupportedStyles:
2672
- - compact
2673
- - expanded
2674
-
2675
- Style/Encoding:
2676
- Description: 'Use UTF-8 as the source file encoding.'
2677
- StyleGuide: '#utf-8'
2678
- Enabled: true
2679
- VersionAdded: '0.9'
2680
- VersionChanged: '0.50'
2681
-
2682
- Style/EndBlock:
2683
- Description: 'Avoid the use of END blocks.'
2684
- StyleGuide: '#no-END-blocks'
2685
- Enabled: true
2686
- VersionAdded: '0.9'
2687
-
2688
- Style/EvalWithLocation:
2689
- Description: 'Pass `__FILE__` and `__LINE__` to `eval` method, as they are used by backtraces.'
2690
- Enabled: true
2691
- VersionAdded: '0.52'
2692
-
2693
- Style/EvenOdd:
2694
- Description: 'Favor the use of `Integer#even?` && `Integer#odd?`.'
2695
- StyleGuide: '#predicate-methods'
2696
- Enabled: true
2697
- VersionAdded: '0.12'
2698
- VersionChanged: '0.29'
2699
-
2700
- Style/ExpandPathArguments:
2701
- Description: "Use `expand_path(__dir__)` instead of `expand_path('..', __FILE__)`."
2702
- Enabled: true
2703
- VersionAdded: '0.53'
2704
-
2705
- Style/FloatDivision:
2706
- Description: 'For performing float division, coerce one side only.'
2707
- StyleGuide: '#float-division'
2708
- Reference: 'https://github.com/rubocop-hq/ruby-style-guide/issues/628'
2709
- Enabled: true
2710
- VersionAdded: '0.72'
2711
- EnforcedStyle: single_coerce
2712
- SupportedStyles:
2713
- - left_coerce
2714
- - right_coerce
2715
- - single_coerce
2716
- - fdiv
2717
-
2718
- Style/For:
2719
- Description: 'Checks use of for or each in multiline loops.'
2720
- StyleGuide: '#no-for-loops'
2721
- Enabled: true
2722
- VersionAdded: '0.13'
2723
- VersionChanged: '0.59'
2724
- EnforcedStyle: each
2725
- SupportedStyles:
2726
- - each
2727
- - for
2728
-
2729
- Style/FormatString:
2730
- Description: 'Enforce the use of Kernel#sprintf, Kernel#format or String#%.'
2731
- StyleGuide: '#sprintf'
2732
- Enabled: true
2733
- VersionAdded: '0.19'
2734
- VersionChanged: '0.49'
2735
- EnforcedStyle: format
2736
- SupportedStyles:
2737
- - format
2738
- - sprintf
2739
- - percent
2740
-
2741
- Style/FormatStringToken:
2742
- Description: 'Use a consistent style for format string tokens.'
2743
- Enabled: true
2744
- EnforcedStyle: annotated
2745
- SupportedStyles:
2746
- # Prefer tokens which contain a sprintf like type annotation like
2747
- # `%<name>s`, `%<age>d`, `%<score>f`
2748
- - annotated
2749
- # Prefer simple looking "template" style tokens like `%{name}`, `%{age}`
2750
- - template
2751
- - unannotated
2752
- VersionAdded: '0.49'
2753
- VersionChanged: '0.75'
2754
-
2755
- Style/FrozenStringLiteralComment:
2756
- Description: >-
2757
- Add the frozen_string_literal comment to the top of files
2758
- to help transition to frozen string literals by default.
2759
- Enabled: true
2760
- VersionAdded: '0.36'
2761
- VersionChanged: '0.69'
2762
- EnforcedStyle: always
2763
- SupportedStyles:
2764
- # `always` will always add the frozen string literal comment to a file
2765
- # regardless of the Ruby version or if `freeze` or `<<` are called on a
2766
- # string literal. If you run code against multiple versions of Ruby, it is
2767
- # possible that this will create errors in Ruby 2.3.0+.
2768
- - always
2769
- # `never` will enforce that the frozen string literal comment does not
2770
- # exist in a file.
2771
- - never
2772
-
2773
- Style/GlobalVars:
2774
- Description: 'Do not introduce global variables.'
2775
- StyleGuide: '#instance-vars'
2776
- Reference: 'https://www.zenspider.com/ruby/quickref.html'
2777
- Enabled: true
2778
- VersionAdded: '0.13'
2779
- # Built-in global variables are allowed by default.
2780
- AllowedVariables: []
2781
-
2782
- Style/GuardClause:
2783
- Description: 'Check for conditionals that can be replaced with guard clauses.'
2784
- StyleGuide: '#no-nested-conditionals'
2785
- Enabled: true
2786
- VersionAdded: '0.20'
2787
- VersionChanged: '0.22'
2788
- # `MinBodyLength` defines the number of lines of the a body of an `if` or `unless`
2789
- # needs to have to trigger this cop
2790
- MinBodyLength: 1
2791
-
2792
- Style/HashSyntax:
2793
- Description: >-
2794
- Prefer Ruby 1.9 hash syntax { a: 1, b: 2 } over 1.8 syntax
2795
- { :a => 1, :b => 2 }.
2796
- StyleGuide: '#hash-literals'
2797
- Enabled: true
2798
- VersionAdded: '0.9'
2799
- VersionChanged: '0.43'
2800
- EnforcedStyle: ruby19
2801
- SupportedStyles:
2802
- # checks for 1.9 syntax (e.g. {a: 1}) for all symbol keys
2803
- - ruby19
2804
- # checks for hash rocket syntax for all hashes
2805
- - hash_rockets
2806
- # forbids mixed key syntaxes (e.g. {a: 1, :b => 2})
2807
- - no_mixed_keys
2808
- # enforces both ruby19 and no_mixed_keys styles
2809
- - ruby19_no_mixed_keys
2810
- # Force hashes that have a symbol value to use hash rockets
2811
- UseHashRocketsWithSymbolValues: false
2812
- # Do not suggest { a?: 1 } over { :a? => 1 } in ruby19 style
2813
- PreferHashRocketsForNonAlnumEndingSymbols: false
2814
-
2815
- Style/IdenticalConditionalBranches:
2816
- Description: >-
2817
- Checks that conditional statements do not have an identical
2818
- line at the end of each branch, which can validly be moved
2819
- out of the conditional.
2820
- Enabled: true
2821
- VersionAdded: '0.36'
2822
-
2823
- Style/IfInsideElse:
2824
- Description: 'Finds if nodes inside else, which can be converted to elsif.'
2825
- Enabled: true
2826
- AllowIfModifier: false
2827
- VersionAdded: '0.36'
2828
-
2829
- Style/IfUnlessModifier:
2830
- Description: >-
2831
- Favor modifier if/unless usage when you have a
2832
- single-line body.
2833
- StyleGuide: '#if-as-a-modifier'
2834
- Enabled: true
2835
- VersionAdded: '0.9'
2836
- VersionChanged: '0.30'
2837
-
2838
- Style/IfUnlessModifierOfIfUnless:
2839
- Description: >-
2840
- Avoid modifier if/unless usage on conditionals.
2841
- Enabled: true
2842
- VersionAdded: '0.39'
2843
-
2844
- Style/IfWithSemicolon:
2845
- Description: 'Do not use if x; .... Use the ternary operator instead.'
2846
- StyleGuide: '#no-semicolon-ifs'
2847
- Enabled: true
2848
- VersionAdded: '0.9'
2849
-
2850
- Style/ImplicitRuntimeError:
2851
- Description: >-
2852
- Use `raise` or `fail` with an explicit exception class and
2853
- message, rather than just a message.
2854
- Enabled: false
2855
- VersionAdded: '0.41'
2856
-
2857
- Style/InfiniteLoop:
2858
- Description: 'Use Kernel#loop for infinite loops.'
2859
- StyleGuide: '#infinite-loop'
2860
- Enabled: true
2861
- VersionAdded: '0.26'
2862
- VersionChanged: '0.61'
2863
- SafeAutoCorrect: true
2864
-
2865
- Style/InlineComment:
2866
- Description: 'Avoid trailing inline comments.'
2867
- Enabled: false
2868
- VersionAdded: '0.23'
2869
-
2870
- Style/InverseMethods:
2871
- Description: >-
2872
- Use the inverse method instead of `!.method`
2873
- if an inverse method is defined.
2874
- Enabled: true
2875
- Safe: false
2876
- VersionAdded: '0.48'
2877
- # `InverseMethods` are methods that can be inverted by a not (`not` or `!`)
2878
- # The relationship of inverse methods only needs to be defined in one direction.
2879
- # Keys and values both need to be defined as symbols.
2880
- InverseMethods:
2881
- :any?: :none?
2882
- :even?: :odd?
2883
- :==: :!=
2884
- :=~: :!~
2885
- :<: :>=
2886
- :>: :<=
2887
- # `ActiveSupport` defines some common inverse methods. They are listed below,
2888
- # and not enabled by default.
2889
- #:present?: :blank?,
2890
- #:include?: :exclude?
2891
- # `InverseBlocks` are methods that are inverted by inverting the return
2892
- # of the block that is passed to the method
2893
- InverseBlocks:
2894
- :select: :reject
2895
- :select!: :reject!
2896
-
2897
- Style/IpAddresses:
2898
- Description: "Don't include literal IP addresses in code."
2899
- Enabled: false
2900
- VersionAdded: '0.58'
2901
- VersionChanged: '0.77'
2902
- # Allow addresses to be permitted
2903
- AllowedAddresses:
2904
- - "::"
2905
- # :: is a valid IPv6 address, but could potentially be legitimately in code
2906
-
2907
- Style/Lambda:
2908
- Description: 'Use the new lambda literal syntax for single-line blocks.'
2909
- StyleGuide: '#lambda-multi-line'
2910
- Enabled: true
2911
- VersionAdded: '0.9'
2912
- VersionChanged: '0.40'
2913
- EnforcedStyle: line_count_dependent
2914
- SupportedStyles:
2915
- - line_count_dependent
2916
- - lambda
2917
- - literal
2918
-
2919
- Style/LambdaCall:
2920
- Description: 'Use lambda.call(...) instead of lambda.(...).'
2921
- StyleGuide: '#proc-call'
2922
- Enabled: true
2923
- VersionAdded: '0.13.1'
2924
- VersionChanged: '0.14'
2925
- EnforcedStyle: call
2926
- SupportedStyles:
2927
- - call
2928
- - braces
2929
-
2930
- Style/LineEndConcatenation:
2931
- Description: >-
2932
- Use \ instead of + or << to concatenate two string literals at
2933
- line end.
2934
- Enabled: true
2935
- SafeAutoCorrect: false
2936
- VersionAdded: '0.18'
2937
- VersionChanged: '0.64'
2938
-
2939
- Style/MethodCallWithArgsParentheses:
2940
- Description: 'Use parentheses for method calls with arguments.'
2941
- StyleGuide: '#method-invocation-parens'
2942
- Enabled: false
2943
- VersionAdded: '0.47'
2944
- VersionChanged: '0.61'
2945
- IgnoreMacros: true
2946
- IgnoredMethods: []
2947
- IgnoredPatterns: []
2948
- IncludedMacros: []
2949
- AllowParenthesesInMultilineCall: false
2950
- AllowParenthesesInChaining: false
2951
- AllowParenthesesInCamelCaseMethod: false
2952
- EnforcedStyle: require_parentheses
2953
- SupportedStyles:
2954
- - require_parentheses
2955
- - omit_parentheses
2956
-
2957
- Style/MethodCallWithoutArgsParentheses:
2958
- Description: 'Do not use parentheses for method calls with no arguments.'
2959
- StyleGuide: '#method-invocation-parens'
2960
- Enabled: true
2961
- IgnoredMethods: []
2962
- VersionAdded: '0.47'
2963
- VersionChanged: '0.55'
2964
-
2965
- Style/MethodCalledOnDoEndBlock:
2966
- Description: 'Avoid chaining a method call on a do...end block.'
2967
- StyleGuide: '#single-line-blocks'
2968
- Enabled: false
2969
- VersionAdded: '0.14'
2970
-
2971
- Style/MethodDefParentheses:
2972
- Description: >-
2973
- Checks if the method definitions have or don't have
2974
- parentheses.
2975
- StyleGuide: '#method-parens'
2976
- Enabled: true
2977
- VersionAdded: '0.16'
2978
- VersionChanged: '0.35'
2979
- EnforcedStyle: require_parentheses
2980
- SupportedStyles:
2981
- - require_parentheses
2982
- - require_no_parentheses
2983
- - require_no_parentheses_except_multiline
2984
-
2985
- Style/MethodMissingSuper:
2986
- Description: Checks for `method_missing` to call `super`.
2987
- StyleGuide: '#no-method-missing'
2988
- Enabled: true
2989
- VersionAdded: '0.56'
2990
-
2991
- Style/MinMax:
2992
- Description: >-
2993
- Use `Enumerable#minmax` instead of `Enumerable#min`
2994
- and `Enumerable#max` in conjunction.
2995
- Enabled: true
2996
- VersionAdded: '0.50'
2997
-
2998
- Style/MissingElse:
2999
- Description: >-
3000
- Require if/case expressions to have an else branches.
3001
- If enabled, it is recommended that
3002
- Style/UnlessElse and Style/EmptyElse be enabled.
3003
- This will conflict with Style/EmptyElse if
3004
- Style/EmptyElse is configured to style "both".
3005
- Enabled: false
3006
- VersionAdded: '0.30'
3007
- VersionChanged: '0.38'
3008
- EnforcedStyle: both
3009
- SupportedStyles:
3010
- # if - warn when an if expression is missing an else branch
3011
- # case - warn when a case expression is missing an else branch
3012
- # both - warn when an if or case expression is missing an else branch
3013
- - if
3014
- - case
3015
- - both
3016
-
3017
- Style/MissingRespondToMissing:
3018
- Description: >-
3019
- Checks if `method_missing` is implemented
3020
- without implementing `respond_to_missing`.
3021
- StyleGuide: '#no-method-missing'
3022
- Enabled: true
3023
- VersionAdded: '0.56'
3024
-
3025
- Style/MixinGrouping:
3026
- Description: 'Checks for grouping of mixins in `class` and `module` bodies.'
3027
- StyleGuide: '#mixin-grouping'
3028
- Enabled: true
3029
- VersionAdded: '0.48'
3030
- VersionChanged: '0.49'
3031
- EnforcedStyle: separated
3032
- SupportedStyles:
3033
- # separated: each mixed in module goes in a separate statement.
3034
- # grouped: mixed in modules are grouped into a single statement.
3035
- - separated
3036
- - grouped
3037
-
3038
- Style/MixinUsage:
3039
- Description: 'Checks that `include`, `extend` and `prepend` exists at the top level.'
3040
- Enabled: true
3041
- VersionAdded: '0.51'
3042
-
3043
- Style/ModuleFunction:
3044
- Description: 'Checks for usage of `extend self` in modules.'
3045
- StyleGuide: '#module-function'
3046
- Enabled: true
3047
- VersionAdded: '0.11'
3048
- VersionChanged: '0.65'
3049
- EnforcedStyle: module_function
3050
- SupportedStyles:
3051
- - module_function
3052
- - extend_self
3053
- Autocorrect: false
3054
- SafeAutoCorrect: false
3055
-
3056
- Style/MultilineBlockChain:
3057
- Description: 'Avoid multi-line chains of blocks.'
3058
- StyleGuide: '#single-line-blocks'
3059
- Enabled: true
3060
- VersionAdded: '0.13'
3061
-
3062
- Style/MultilineIfModifier:
3063
- Description: 'Only use if/unless modifiers on single line statements.'
3064
- StyleGuide: '#no-multiline-if-modifiers'
3065
- Enabled: true
3066
- VersionAdded: '0.45'
3067
-
3068
- Style/MultilineIfThen:
3069
- Description: 'Do not use then for multi-line if/unless.'
3070
- StyleGuide: '#no-then'
3071
- Enabled: true
3072
- VersionAdded: '0.9'
3073
- VersionChanged: '0.26'
3074
-
3075
- Style/MultilineMemoization:
3076
- Description: 'Wrap multiline memoizations in a `begin` and `end` block.'
3077
- Enabled: true
3078
- VersionAdded: '0.44'
3079
- VersionChanged: '0.48'
3080
- EnforcedStyle: keyword
3081
- SupportedStyles:
3082
- - keyword
3083
- - braces
3084
-
3085
- Style/MultilineMethodSignature:
3086
- Description: 'Avoid multi-line method signatures.'
3087
- Enabled: false
3088
- VersionAdded: '0.59'
3089
-
3090
- Style/MultilineTernaryOperator:
3091
- Description: >-
3092
- Avoid multi-line ?: (the ternary operator);
3093
- use if/unless instead.
3094
- StyleGuide: '#no-multiline-ternary'
3095
- Enabled: true
3096
- VersionAdded: '0.9'
3097
-
3098
- Style/MultilineWhenThen:
3099
- Description: 'Do not use then for multi-line when statement.'
3100
- StyleGuide: '#no-then'
3101
- Enabled: true
3102
- VersionAdded: '0.73'
3103
-
3104
- Style/MultipleComparison:
3105
- Description: >-
3106
- Avoid comparing a variable with multiple items in a conditional,
3107
- use Array#include? instead.
3108
- Enabled: true
3109
- VersionAdded: '0.49'
3110
-
3111
- Style/MutableConstant:
3112
- Description: 'Do not assign mutable objects to constants.'
3113
- Enabled: true
3114
- VersionAdded: '0.34'
3115
- VersionChanged: '0.65'
3116
- EnforcedStyle: literals
3117
- SupportedStyles:
3118
- # literals: freeze literals assigned to constants
3119
- # strict: freeze all constants
3120
- # Strict mode is considered an experimental feature. It has not been updated
3121
- # with an exhaustive list of all methods that will produce frozen objects so
3122
- # there is a decent chance of getting some false positives. Luckily, there is
3123
- # no harm in freezing an already frozen object.
3124
- - literals
3125
- - strict
3126
-
3127
- Style/NegatedIf:
3128
- Description: >-
3129
- Favor unless over if for negative conditions
3130
- (or control flow or).
3131
- StyleGuide: '#unless-for-negatives'
3132
- Enabled: true
3133
- VersionAdded: '0.20'
3134
- VersionChanged: '0.48'
3135
- EnforcedStyle: both
3136
- SupportedStyles:
3137
- # both: prefix and postfix negated `if` should both use `unless`
3138
- # prefix: only use `unless` for negated `if` statements positioned before the body of the statement
3139
- # postfix: only use `unless` for negated `if` statements positioned after the body of the statement
3140
- - both
3141
- - prefix
3142
- - postfix
3143
-
3144
- Style/NegatedUnless:
3145
- Description: 'Favor if over unless for negative conditions.'
3146
- StyleGuide: '#if-for-negatives'
3147
- Enabled: true
3148
- VersionAdded: '0.69'
3149
- EnforcedStyle: both
3150
- SupportedStyles:
3151
- # both: prefix and postfix negated `unless` should both use `if`
3152
- # prefix: only use `if` for negated `unless` statements positioned before the body of the statement
3153
- # postfix: only use `if` for negated `unless` statements positioned after the body of the statement
3154
- - both
3155
- - prefix
3156
- - postfix
3157
-
3158
- Style/NegatedWhile:
3159
- Description: 'Favor until over while for negative conditions.'
3160
- StyleGuide: '#until-for-negatives'
3161
- Enabled: true
3162
- VersionAdded: '0.20'
3163
-
3164
- Style/NestedModifier:
3165
- Description: 'Avoid using nested modifiers.'
3166
- StyleGuide: '#no-nested-modifiers'
3167
- Enabled: true
3168
- VersionAdded: '0.35'
3169
-
3170
- Style/NestedParenthesizedCalls:
3171
- Description: >-
3172
- Parenthesize method calls which are nested inside the
3173
- argument list of another parenthesized method call.
3174
- Enabled: true
3175
- VersionAdded: '0.36'
3176
- VersionChanged: '0.77'
3177
- AllowedMethods:
3178
- - be
3179
- - be_a
3180
- - be_an
3181
- - be_between
3182
- - be_falsey
3183
- - be_kind_of
3184
- - be_instance_of
3185
- - be_truthy
3186
- - be_within
3187
- - eq
3188
- - eql
3189
- - end_with
3190
- - include
3191
- - match
3192
- - raise_error
3193
- - respond_to
3194
- - start_with
3195
-
3196
- Style/NestedTernaryOperator:
3197
- Description: 'Use one expression per branch in a ternary operator.'
3198
- StyleGuide: '#no-nested-ternary'
3199
- Enabled: true
3200
- VersionAdded: '0.9'
3201
-
3202
- Style/Next:
3203
- Description: 'Use `next` to skip iteration instead of a condition at the end.'
3204
- StyleGuide: '#no-nested-conditionals'
3205
- Enabled: true
3206
- VersionAdded: '0.22'
3207
- VersionChanged: '0.35'
3208
- # With `always` all conditions at the end of an iteration needs to be
3209
- # replaced by next - with `skip_modifier_ifs` the modifier if like this one
3210
- # are ignored: [1, 2].each { |a| return 'yes' if a == 1 }
3211
- EnforcedStyle: skip_modifier_ifs
3212
- # `MinBodyLength` defines the number of lines of the a body of an `if` or `unless`
3213
- # needs to have to trigger this cop
3214
- MinBodyLength: 3
3215
- SupportedStyles:
3216
- - skip_modifier_ifs
3217
- - always
3218
-
3219
- Style/NilComparison:
3220
- Description: 'Prefer x.nil? to x == nil.'
3221
- StyleGuide: '#predicate-methods'
3222
- Enabled: true
3223
- VersionAdded: '0.12'
3224
- VersionChanged: '0.59'
3225
- EnforcedStyle: predicate
3226
- SupportedStyles:
3227
- - predicate
3228
- - comparison
3229
-
3230
- Style/NonNilCheck:
3231
- Description: 'Checks for redundant nil checks.'
3232
- StyleGuide: '#no-non-nil-checks'
3233
- Enabled: true
3234
- VersionAdded: '0.20'
3235
- VersionChanged: '0.22'
3236
- # With `IncludeSemanticChanges` set to `true`, this cop reports offenses for
3237
- # `!x.nil?` and autocorrects that and `x != nil` to solely `x`, which is
3238
- # **usually** OK, but might change behavior.
3239
- #
3240
- # With `IncludeSemanticChanges` set to `false`, this cop does not report
3241
- # offenses for `!x.nil?` and does no changes that might change behavior.
3242
- IncludeSemanticChanges: false
3243
-
3244
- Style/Not:
3245
- Description: 'Use ! instead of not.'
3246
- StyleGuide: '#bang-not-not'
3247
- Enabled: true
3248
- VersionAdded: '0.9'
3249
- VersionChanged: '0.20'
3250
-
3251
- Style/NumericLiteralPrefix:
3252
- Description: 'Use smallcase prefixes for numeric literals.'
3253
- StyleGuide: '#numeric-literal-prefixes'
3254
- Enabled: true
3255
- VersionAdded: '0.41'
3256
- EnforcedOctalStyle: zero_with_o
3257
- SupportedOctalStyles:
3258
- - zero_with_o
3259
- - zero_only
3260
-
3261
-
3262
- Style/NumericLiterals:
3263
- Description: >-
3264
- Add underscores to large numeric literals to improve their
3265
- readability.
3266
- StyleGuide: '#underscores-in-numerics'
3267
- Enabled: true
3268
- VersionAdded: '0.9'
3269
- VersionChanged: '0.48'
3270
- MinDigits: 5
3271
- Strict: false
3272
-
3273
- Style/NumericPredicate:
3274
- Description: >-
3275
- Checks for the use of predicate- or comparison methods for
3276
- numeric comparisons.
3277
- StyleGuide: '#predicate-methods'
3278
- Safe: false
3279
- # This will change to a new method call which isn't guaranteed to be on the
3280
- # object. Switching these methods has to be done with knowledge of the types
3281
- # of the variables which rubocop doesn't have.
3282
- SafeAutoCorrect: false
3283
- AutoCorrect: false
3284
- Enabled: true
3285
- VersionAdded: '0.42'
3286
- VersionChanged: '0.59'
3287
- EnforcedStyle: predicate
3288
- SupportedStyles:
3289
- - predicate
3290
- - comparison
3291
- IgnoredMethods: []
3292
- # Exclude RSpec specs because assertions like `expect(1).to be > 0` cause
3293
- # false positives.
3294
- Exclude:
3295
- - 'spec/**/*'
3296
-
3297
- Style/OneLineConditional:
3298
- Description: >-
3299
- Favor the ternary operator(?:) over
3300
- if/then/else/end constructs.
3301
- StyleGuide: '#ternary-operator'
3302
- Enabled: true
3303
- VersionAdded: '0.9'
3304
- VersionChanged: '0.38'
3305
-
3306
- Style/OptionHash:
3307
- Description: "Don't use option hashes when you can use keyword arguments."
3308
- Enabled: false
3309
- VersionAdded: '0.33'
3310
- VersionChanged: '0.34'
3311
- # A list of parameter names that will be flagged by this cop.
3312
- SuspiciousParamNames:
3313
- - options
3314
- - opts
3315
- - args
3316
- - params
3317
- - parameters
3318
-
3319
- Style/OptionalArguments:
3320
- Description: >-
3321
- Checks for optional arguments that do not appear at the end
3322
- of the argument list.
3323
- StyleGuide: '#optional-arguments'
3324
- Enabled: true
3325
- VersionAdded: '0.33'
3326
-
3327
- Style/OrAssignment:
3328
- Description: 'Recommend usage of double pipe equals (||=) where applicable.'
3329
- StyleGuide: '#double-pipe-for-uninit'
3330
- Enabled: true
3331
- VersionAdded: '0.50'
3332
-
3333
- Style/ParallelAssignment:
3334
- Description: >-
3335
- Check for simple usages of parallel assignment.
3336
- It will only warn when the number of variables
3337
- matches on both sides of the assignment.
3338
- StyleGuide: '#parallel-assignment'
3339
- Enabled: true
3340
- VersionAdded: '0.32'
3341
-
3342
- Style/ParenthesesAroundCondition:
3343
- Description: >-
3344
- Don't use parentheses around the condition of an
3345
- if/unless/while.
3346
- StyleGuide: '#no-parens-around-condition'
3347
- Enabled: true
3348
- VersionAdded: '0.9'
3349
- VersionChanged: '0.56'
3350
- AllowSafeAssignment: true
3351
- AllowInMultilineConditions: false
3352
-
3353
- Style/PercentLiteralDelimiters:
3354
- Description: 'Use `%`-literal delimiters consistently.'
3355
- StyleGuide: '#percent-literal-braces'
3356
- Enabled: true
3357
- VersionAdded: '0.19'
3358
- # Specify the default preferred delimiter for all types with the 'default' key
3359
- # Override individual delimiters (even with default specified) by specifying
3360
- # an individual key
3361
- PreferredDelimiters:
3362
- default: ()
3363
- '%i': '[]'
3364
- '%I': '[]'
3365
- '%r': '{}'
3366
- '%w': '[]'
3367
- '%W': '[]'
3368
- VersionChanged: '0.48.1'
3369
-
3370
- Style/PercentQLiterals:
3371
- Description: 'Checks if uses of %Q/%q match the configured preference.'
3372
- Enabled: true
3373
- VersionAdded: '0.25'
3374
- EnforcedStyle: lower_case_q
3375
- SupportedStyles:
3376
- - lower_case_q # Use `%q` when possible, `%Q` when necessary
3377
- - upper_case_q # Always use `%Q`
3378
-
3379
- Style/PerlBackrefs:
3380
- Description: 'Avoid Perl-style regex back references.'
3381
- StyleGuide: '#no-perl-regexp-last-matchers'
3382
- Enabled: true
3383
- VersionAdded: '0.13'
3384
-
3385
- Style/PreferredHashMethods:
3386
- Description: 'Checks use of `has_key?` and `has_value?` Hash methods.'
3387
- StyleGuide: '#hash-key'
3388
- Enabled: true
3389
- Safe: false
3390
- VersionAdded: '0.41'
3391
- VersionChanged: '0.70'
3392
- EnforcedStyle: short
3393
- SupportedStyles:
3394
- - short
3395
- - verbose
3396
-
3397
- Style/Proc:
3398
- Description: 'Use proc instead of Proc.new.'
3399
- StyleGuide: '#proc'
3400
- Enabled: true
3401
- VersionAdded: '0.9'
3402
- VersionChanged: '0.18'
3403
-
3404
- Style/RaiseArgs:
3405
- Description: 'Checks the arguments passed to raise/fail.'
3406
- StyleGuide: '#exception-class-messages'
3407
- Enabled: true
3408
- VersionAdded: '0.14'
3409
- VersionChanged: '0.40'
3410
- EnforcedStyle: exploded
3411
- SupportedStyles:
3412
- - compact # raise Exception.new(msg)
3413
- - exploded # raise Exception, msg
3414
-
3415
- Style/RandomWithOffset:
3416
- Description: >-
3417
- Prefer to use ranges when generating random numbers instead of
3418
- integers with offsets.
3419
- StyleGuide: '#random-numbers'
3420
- Enabled: true
3421
- VersionAdded: '0.52'
3422
-
3423
- Style/RedundantBegin:
3424
- Description: "Don't use begin blocks when they are not needed."
3425
- StyleGuide: '#begin-implicit'
3426
- Enabled: true
3427
- VersionAdded: '0.10'
3428
- VersionChanged: '0.21'
3429
-
3430
- Style/RedundantCapitalW:
3431
- Description: 'Checks for %W when interpolation is not needed.'
3432
- Enabled: true
3433
- VersionAdded: '0.76'
3434
-
3435
- Style/RedundantCondition:
3436
- Description: 'Checks for unnecessary conditional expressions.'
3437
- Enabled: true
3438
- VersionAdded: '0.76'
3439
-
3440
- Style/RedundantConditional:
3441
- Description: "Don't return true/false from a conditional."
3442
- Enabled: true
3443
- VersionAdded: '0.50'
3444
-
3445
- Style/RedundantException:
3446
- Description: "Checks for an obsolete RuntimeException argument in raise/fail."
3447
- StyleGuide: '#no-explicit-runtimeerror'
3448
- Enabled: true
3449
- VersionAdded: '0.14'
3450
- VersionChanged: '0.29'
3451
-
3452
- Style/RedundantFreeze:
3453
- Description: "Checks usages of Object#freeze on immutable objects."
3454
- Enabled: true
3455
- VersionAdded: '0.34'
3456
- VersionChanged: '0.66'
3457
-
3458
- Style/RedundantInterpolation:
3459
- Description: 'Checks for strings that are just an interpolated expression.'
3460
- Enabled: true
3461
- VersionAdded: '0.76'
3462
-
3463
- Style/RedundantParentheses:
3464
- Description: "Checks for parentheses that seem not to serve any purpose."
3465
- Enabled: true
3466
- VersionAdded: '0.36'
3467
-
3468
- Style/RedundantPercentQ:
3469
- Description: 'Checks for %q/%Q when single quotes or double quotes would do.'
3470
- StyleGuide: '#percent-q'
3471
- Enabled: true
3472
- VersionAdded: '0.76'
3473
-
3474
- Style/RedundantReturn:
3475
- Description: "Don't use return where it's not required."
3476
- StyleGuide: '#no-explicit-return'
3477
- Enabled: true
3478
- VersionAdded: '0.10'
3479
- VersionChanged: '0.14'
3480
- # When `true` allows code like `return x, y`.
3481
- AllowMultipleReturnValues: false
3482
-
3483
- Style/RedundantSelf:
3484
- Description: "Don't use self where it's not needed."
3485
- StyleGuide: '#no-self-unless-required'
3486
- Enabled: true
3487
- VersionAdded: '0.10'
3488
- VersionChanged: '0.13'
3489
-
3490
- Style/RedundantSort:
3491
- Description: >-
3492
- Use `min` instead of `sort.first`,
3493
- `max_by` instead of `sort_by...last`, etc.
3494
- Enabled: true
3495
- VersionAdded: '0.76'
3496
-
3497
- Style/RedundantSortBy:
3498
- Description: 'Use `sort` instead of `sort_by { |x| x }`.'
3499
- Enabled: true
3500
- VersionAdded: '0.36'
3501
-
3502
- Style/RegexpLiteral:
3503
- Description: 'Use / or %r around regular expressions.'
3504
- StyleGuide: '#percent-r'
3505
- Enabled: true
3506
- VersionAdded: '0.9'
3507
- VersionChanged: '0.30'
3508
- EnforcedStyle: slashes
3509
- # slashes: Always use slashes.
3510
- # percent_r: Always use `%r`.
3511
- # mixed: Use slashes on single-line regexes, and `%r` on multi-line regexes.
3512
- SupportedStyles:
3513
- - slashes
3514
- - percent_r
3515
- - mixed
3516
- # If `false`, the cop will always recommend using `%r` if one or more slashes
3517
- # are found in the regexp string.
3518
- AllowInnerSlashes: false
3519
-
3520
- Style/RescueModifier:
3521
- Description: 'Avoid using rescue in its modifier form.'
3522
- StyleGuide: '#no-rescue-modifiers'
3523
- Enabled: true
3524
- VersionAdded: '0.9'
3525
- VersionChanged: '0.34'
3526
-
3527
- Style/RescueStandardError:
3528
- Description: 'Avoid rescuing without specifying an error class.'
3529
- Enabled: true
3530
- VersionAdded: '0.52'
3531
- EnforcedStyle: explicit
3532
- # implicit: Do not include the error class, `rescue`
3533
- # explicit: Require an error class `rescue StandardError`
3534
- SupportedStyles:
3535
- - implicit
3536
- - explicit
3537
-
3538
- Style/ReturnNil:
3539
- Description: 'Use return instead of return nil.'
3540
- Enabled: false
3541
- EnforcedStyle: return
3542
- SupportedStyles:
3543
- - return
3544
- - return_nil
3545
- VersionAdded: '0.50'
3546
-
3547
- Style/SafeNavigation:
3548
- Description: >-
3549
- This cop transforms usages of a method call safeguarded by
3550
- a check for the existence of the object to
3551
- safe navigation (`&.`).
3552
- Enabled: true
3553
- VersionAdded: '0.43'
3554
- VersionChanged: '0.77'
3555
- # Safe navigation may cause a statement to start returning `nil` in addition
3556
- # to whatever it used to return.
3557
- ConvertCodeThatCanStartToReturnNil: false
3558
- AllowedMethods:
3559
- - present?
3560
- - blank?
3561
- - presence
3562
- - try
3563
- - try!
3564
-
3565
- Style/Sample:
3566
- Description: >-
3567
- Use `sample` instead of `shuffle.first`,
3568
- `shuffle.last`, and `shuffle[Integer]`.
3569
- Reference: 'https://github.com/JuanitoFatas/fast-ruby#arrayshufflefirst-vs-arraysample-code'
3570
- Enabled: true
3571
- VersionAdded: '0.30'
3572
-
3573
- Style/SelfAssignment:
3574
- Description: >-
3575
- Checks for places where self-assignment shorthand should have
3576
- been used.
3577
- StyleGuide: '#self-assignment'
3578
- Enabled: true
3579
- VersionAdded: '0.19'
3580
- VersionChanged: '0.29'
3581
-
3582
- Style/Semicolon:
3583
- Description: "Don't use semicolons to terminate expressions."
3584
- StyleGuide: '#no-semicolon'
3585
- Enabled: true
3586
- VersionAdded: '0.9'
3587
- VersionChanged: '0.19'
3588
- # Allow `;` to separate several expressions on the same line.
3589
- AllowAsExpressionSeparator: false
3590
-
3591
- Style/Send:
3592
- Description: 'Prefer `Object#__send__` or `Object#public_send` to `send`, as `send` may overlap with existing methods.'
3593
- StyleGuide: '#prefer-public-send'
3594
- Enabled: false
3595
- VersionAdded: '0.33'
3596
-
3597
- Style/SignalException:
3598
- Description: 'Checks for proper usage of fail and raise.'
3599
- StyleGuide: '#prefer-raise-over-fail'
3600
- Enabled: true
3601
- VersionAdded: '0.11'
3602
- VersionChanged: '0.37'
3603
- EnforcedStyle: only_raise
3604
- SupportedStyles:
3605
- - only_raise
3606
- - only_fail
3607
- - semantic
3608
-
3609
- Style/SingleLineBlockParams:
3610
- Description: 'Enforces the names of some block params.'
3611
- Enabled: false
3612
- VersionAdded: '0.16'
3613
- VersionChanged: '0.47'
3614
- Methods:
3615
- - reduce:
3616
- - acc
3617
- - elem
3618
- - inject:
3619
- - acc
3620
- - elem
3621
-
3622
- Style/SingleLineMethods:
3623
- Description: 'Avoid single-line methods.'
3624
- StyleGuide: '#no-single-line-methods'
3625
- Enabled: true
3626
- VersionAdded: '0.9'
3627
- VersionChanged: '0.19'
3628
- AllowIfMethodIsEmpty: true
3629
-
3630
- Style/SpecialGlobalVars:
3631
- Description: 'Avoid Perl-style global variables.'
3632
- StyleGuide: '#no-cryptic-perlisms'
3633
- Enabled: true
3634
- VersionAdded: '0.13'
3635
- VersionChanged: '0.36'
3636
- SafeAutoCorrect: false
3637
- EnforcedStyle: use_english_names
3638
- SupportedStyles:
3639
- - use_perl_names
3640
- - use_english_names
3641
-
3642
- Style/StabbyLambdaParentheses:
3643
- Description: 'Check for the usage of parentheses around stabby lambda arguments.'
3644
- StyleGuide: '#stabby-lambda-with-args'
3645
- Enabled: true
3646
- VersionAdded: '0.35'
3647
- EnforcedStyle: require_parentheses
3648
- SupportedStyles:
3649
- - require_parentheses
3650
- - require_no_parentheses
3651
-
3652
- Style/StderrPuts:
3653
- Description: 'Use `warn` instead of `$stderr.puts`.'
3654
- StyleGuide: '#warn'
3655
- Enabled: true
3656
- VersionAdded: '0.51'
3657
-
3658
- Style/StringHashKeys:
3659
- Description: 'Prefer symbols instead of strings as hash keys.'
3660
- StyleGuide: '#symbols-as-keys'
3661
- Enabled: false
3662
- VersionAdded: '0.52'
3663
- VersionChanged: '0.75'
3664
- Safe: false
3665
-
3666
- Style/StringLiterals:
3667
- Description: 'Checks if uses of quotes match the configured preference.'
3668
- StyleGuide: '#consistent-string-literals'
3669
- Enabled: true
3670
- VersionAdded: '0.9'
3671
- VersionChanged: '0.36'
3672
- EnforcedStyle: single_quotes
3673
- SupportedStyles:
3674
- - single_quotes
3675
- - double_quotes
3676
- # If `true`, strings which span multiple lines using `\` for continuation must
3677
- # use the same type of quotes on each line.
3678
- ConsistentQuotesInMultiline: false
3679
-
3680
- Style/StringLiteralsInInterpolation:
3681
- Description: >-
3682
- Checks if uses of quotes inside expressions in interpolated
3683
- strings match the configured preference.
3684
- Enabled: true
3685
- VersionAdded: '0.27'
3686
- EnforcedStyle: single_quotes
3687
- SupportedStyles:
3688
- - single_quotes
3689
- - double_quotes
3690
-
3691
- Style/StringMethods:
3692
- Description: 'Checks if configured preferred methods are used over non-preferred.'
3693
- Enabled: false
3694
- VersionAdded: '0.34'
3695
- VersionChanged: '0.34.2'
3696
- # Mapping from undesired method to desired_method
3697
- # e.g. to use `to_sym` over `intern`:
3698
- #
3699
- # StringMethods:
3700
- # PreferredMethods:
3701
- # intern: to_sym
3702
- PreferredMethods:
3703
- intern: to_sym
3704
-
3705
- Style/Strip:
3706
- Description: 'Use `strip` instead of `lstrip.rstrip`.'
3707
- Enabled: true
3708
- VersionAdded: '0.36'
3709
-
3710
- Style/StructInheritance:
3711
- Description: 'Checks for inheritance from Struct.new.'
3712
- StyleGuide: '#no-extend-struct-new'
3713
- Enabled: true
3714
- VersionAdded: '0.29'
3715
-
3716
- Style/SymbolArray:
3717
- Description: 'Use %i or %I for arrays of symbols.'
3718
- StyleGuide: '#percent-i'
3719
- Enabled: true
3720
- VersionAdded: '0.9'
3721
- VersionChanged: '0.49'
3722
- EnforcedStyle: percent
3723
- MinSize: 2
3724
- SupportedStyles:
3725
- - percent
3726
- - brackets
3727
-
3728
- Style/SymbolLiteral:
3729
- Description: 'Use plain symbols instead of string symbols when possible.'
3730
- Enabled: true
3731
- VersionAdded: '0.30'
3732
-
3733
- Style/SymbolProc:
3734
- Description: 'Use symbols as procs instead of blocks when possible.'
3735
- Enabled: true
3736
- SafeAutoCorrect: false
3737
- VersionAdded: '0.26'
3738
- VersionChanged: '0.64'
3739
- # A list of method names to be ignored by the check.
3740
- # The names should be fairly unique, otherwise you'll end up ignoring lots of code.
3741
- IgnoredMethods:
3742
- - respond_to
3743
- - define_method
3744
-
3745
- Style/TernaryParentheses:
3746
- Description: 'Checks for use of parentheses around ternary conditions.'
3747
- Enabled: true
3748
- VersionAdded: '0.42'
3749
- VersionChanged: '0.46'
3750
- EnforcedStyle: require_no_parentheses
3751
- SupportedStyles:
3752
- - require_parentheses
3753
- - require_no_parentheses
3754
- - require_parentheses_when_complex
3755
- AllowSafeAssignment: true
3756
-
3757
- Style/TrailingBodyOnClass:
3758
- Description: 'Class body goes below class statement.'
3759
- Enabled: true
3760
- VersionAdded: '0.53'
3761
-
3762
- Style/TrailingBodyOnMethodDefinition:
3763
- Description: 'Method body goes below definition.'
3764
- Enabled: true
3765
- VersionAdded: '0.52'
3766
-
3767
- Style/TrailingBodyOnModule:
3768
- Description: 'Module body goes below module statement.'
3769
- Enabled: true
3770
- VersionAdded: '0.53'
3771
-
3772
- Style/TrailingCommaInArguments:
3773
- Description: 'Checks for trailing comma in argument lists.'
3774
- StyleGuide: '#no-trailing-params-comma'
3775
- Enabled: true
3776
- VersionAdded: '0.36'
3777
- # If `comma`, the cop requires a comma after the last argument, but only for
3778
- # parenthesized method calls where each argument is on its own line.
3779
- # If `consistent_comma`, the cop requires a comma after the last argument,
3780
- # for all parenthesized method calls with arguments.
3781
- EnforcedStyleForMultiline: no_comma
3782
- SupportedStylesForMultiline:
3783
- - comma
3784
- - consistent_comma
3785
- - no_comma
3786
-
3787
- Style/TrailingCommaInArrayLiteral:
3788
- Description: 'Checks for trailing comma in array literals.'
3789
- StyleGuide: '#no-trailing-array-commas'
3790
- Enabled: true
3791
- VersionAdded: '0.53'
3792
- # but only when each item is on its own line.
3793
- # If `consistent_comma`, the cop requires a comma after the last item of all
3794
- # non-empty array literals.
3795
- EnforcedStyleForMultiline: no_comma
3796
- SupportedStylesForMultiline:
3797
- - comma
3798
- - consistent_comma
3799
- - no_comma
3800
-
3801
- Style/TrailingCommaInHashLiteral:
3802
- Description: 'Checks for trailing comma in hash literals.'
3803
- Enabled: true
3804
- # If `comma`, the cop requires a comma after the last item in a hash,
3805
- # but only when each item is on its own line.
3806
- # If `consistent_comma`, the cop requires a comma after the last item of all
3807
- # non-empty hash literals.
3808
- EnforcedStyleForMultiline: no_comma
3809
- SupportedStylesForMultiline:
3810
- - comma
3811
- - consistent_comma
3812
- - no_comma
3813
- VersionAdded: '0.53'
3814
-
3815
- Style/TrailingMethodEndStatement:
3816
- Description: 'Checks for trailing end statement on line of method body.'
3817
- Enabled: true
3818
- VersionAdded: '0.52'
3819
-
3820
- Style/TrailingUnderscoreVariable:
3821
- Description: >-
3822
- Checks for the usage of unneeded trailing underscores at the
3823
- end of parallel variable assignment.
3824
- AllowNamedUnderscoreVariables: true
3825
- Enabled: true
3826
- VersionAdded: '0.31'
3827
- VersionChanged: '0.35'
3828
-
3829
- # `TrivialAccessors` requires exact name matches and doesn't allow
3830
- # predicated methods by default.
3831
- Style/TrivialAccessors:
3832
- Description: 'Prefer attr_* methods to trivial readers/writers.'
3833
- StyleGuide: '#attr_family'
3834
- Enabled: true
3835
- VersionAdded: '0.9'
3836
- VersionChanged: '0.77'
3837
- # When set to `false` the cop will suggest the use of accessor methods
3838
- # in situations like:
3839
- #
3840
- # def name
3841
- # @other_name
3842
- # end
3843
- #
3844
- # This way you can uncover "hidden" attributes in your code.
3845
- ExactNameMatch: true
3846
- AllowPredicates: true
3847
- # Allows trivial writers that don't end in an equal sign. e.g.
3848
- #
3849
- # def on_exception(action)
3850
- # @on_exception=action
3851
- # end
3852
- # on_exception :restart
3853
- #
3854
- # Commonly used in DSLs
3855
- AllowDSLWriters: false
3856
- IgnoreClassMethods: false
3857
- AllowedMethods:
3858
- - to_ary
3859
- - to_a
3860
- - to_c
3861
- - to_enum
3862
- - to_h
3863
- - to_hash
3864
- - to_i
3865
- - to_int
3866
- - to_io
3867
- - to_open
3868
- - to_path
3869
- - to_proc
3870
- - to_r
3871
- - to_regexp
3872
- - to_str
3873
- - to_s
3874
- - to_sym
3875
-
3876
- Style/UnlessElse:
3877
- Description: >-
3878
- Do not use unless with else. Rewrite these with the positive
3879
- case first.
3880
- StyleGuide: '#no-else-with-unless'
3881
- Enabled: true
3882
- VersionAdded: '0.9'
3883
-
3884
- Style/UnpackFirst:
3885
- Description: >-
3886
- Checks for accessing the first element of `String#unpack`
3887
- instead of using `unpack1`.
3888
- Enabled: true
3889
- VersionAdded: '0.54'
3890
-
3891
- Style/VariableInterpolation:
3892
- Description: >-
3893
- Don't interpolate global, instance and class variables
3894
- directly in strings.
3895
- StyleGuide: '#curlies-interpolate'
3896
- Enabled: true
3897
- VersionAdded: '0.9'
3898
- VersionChanged: '0.20'
3899
-
3900
- Style/WhenThen:
3901
- Description: 'Use when x then ... for one-line cases.'
3902
- StyleGuide: '#one-line-cases'
3903
- Enabled: true
3904
- VersionAdded: '0.9'
3905
-
3906
- Style/WhileUntilDo:
3907
- Description: 'Checks for redundant do after while or until.'
3908
- StyleGuide: '#no-multiline-while-do'
3909
- Enabled: true
3910
- VersionAdded: '0.9'
3911
-
3912
- Style/WhileUntilModifier:
3913
- Description: >-
3914
- Favor modifier while/until usage when you have a
3915
- single-line body.
3916
- StyleGuide: '#while-as-a-modifier'
3917
- Enabled: true
3918
- VersionAdded: '0.9'
3919
- VersionChanged: '0.30'
3920
-
3921
- Style/WordArray:
3922
- Description: 'Use %w or %W for arrays of words.'
3923
- StyleGuide: '#percent-w'
3924
- Enabled: true
3925
- VersionAdded: '0.9'
3926
- VersionChanged: '0.36'
3927
- EnforcedStyle: percent
3928
- SupportedStyles:
3929
- # percent style: %w(word1 word2)
3930
- - percent
3931
- # bracket style: ['word1', 'word2']
3932
- - brackets
3933
- # The `MinSize` option causes the `WordArray` rule to be ignored for arrays
3934
- # smaller than a certain size. The rule is only applied to arrays
3935
- # whose element count is greater than or equal to `MinSize`.
3936
- MinSize: 2
3937
- # The regular expression `WordRegex` decides what is considered a word.
3938
- WordRegex: !ruby/regexp '/\A(?:\p{Word}|\p{Word}-\p{Word}|\n|\t)+\z/'
3939
-
3940
- Style/YodaCondition:
3941
- Description: 'Forbid or enforce yoda conditions.'
3942
- Reference: 'https://en.wikipedia.org/wiki/Yoda_conditions'
3943
- Enabled: true
3944
- EnforcedStyle: forbid_for_all_comparison_operators
3945
- SupportedStyles:
3946
- # check all comparison operators
3947
- - forbid_for_all_comparison_operators
3948
- # check only equality operators: `!=` and `==`
3949
- - forbid_for_equality_operators_only
3950
- # enforce yoda for all comparison operators
3951
- - require_for_all_comparison_operators
3952
- # enforce yoda only for equality operators: `!=` and `==`
3953
- - require_for_equality_operators_only
3954
- Safe: false
3955
- VersionAdded: '0.49'
3956
- VersionChanged: '0.75'
3957
-
3958
- Style/ZeroLengthPredicate:
3959
- Description: 'Use #empty? when testing for objects of length 0.'
3960
- Enabled: true
3961
- Safe: false
3962
- VersionAdded: '0.37'
3963
- VersionChanged: '0.39'