rubomatic 0.0.1.pre.rc.2 → 0.0.1.pre.rc.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
data/configs/style.yml ADDED
@@ -0,0 +1,2503 @@
1
+ Style/AccessModifierDeclarations:
2
+ Description: 'Checks style of how access modifiers are used.'
3
+ Enabled: true
4
+ VersionAdded: '0.57'
5
+ VersionChanged: '0.81'
6
+ EnforcedStyle: group
7
+ SupportedStyles:
8
+ - inline
9
+ - group
10
+ AllowModifiersOnSymbols: true
11
+ SafeAutoCorrect: false
12
+
13
+ Style/AccessorGrouping:
14
+ Description: 'Checks for grouping of accessors in `class` and `module` bodies.'
15
+ Enabled: true
16
+ VersionAdded: '0.87'
17
+ EnforcedStyle: separated
18
+ SupportedStyles:
19
+ # separated: each accessor goes in a separate statement.
20
+ # grouped: accessors are grouped into a single statement.
21
+ - separated
22
+ - grouped
23
+
24
+ Style/Alias:
25
+ Description: 'Use alias instead of alias_method.'
26
+ StyleGuide: '#alias-method-lexically'
27
+ Enabled: true
28
+ VersionAdded: '0.9'
29
+ VersionChanged: '0.36'
30
+ EnforcedStyle: prefer_alias
31
+ SupportedStyles:
32
+ - prefer_alias
33
+ - prefer_alias_method
34
+
35
+ Style/AndOr:
36
+ Description: 'Use &&/|| instead of and/or.'
37
+ StyleGuide: '#no-and-or-or'
38
+ Enabled: true
39
+ SafeAutoCorrect: false
40
+ VersionAdded: '0.9'
41
+ VersionChanged: '1.21'
42
+ # Whether `and` and `or` are banned only in conditionals (conditionals)
43
+ # or completely (always).
44
+ EnforcedStyle: conditionals
45
+ SupportedStyles:
46
+ - always
47
+ - conditionals
48
+
49
+ Style/ArgumentsForwarding:
50
+ Description: 'Use arguments forwarding.'
51
+ StyleGuide: '#arguments-forwarding'
52
+ Enabled: true
53
+ AllowOnlyRestArgument: true
54
+ VersionAdded: '1.1'
55
+
56
+ Style/ArrayCoercion:
57
+ Description: >-
58
+ Use Array() instead of explicit Array check or [*var], when dealing
59
+ with a variable you want to treat as an Array, but you're not certain it's an array.
60
+ StyleGuide: '#array-coercion'
61
+ Safe: false
62
+ Enabled: true
63
+ VersionAdded: '0.88'
64
+
65
+ Style/ArrayIntersect:
66
+ Description: 'Use `array1.intersect?(array2)` instead of `(array1 & array2).any?`.'
67
+ Enabled: true
68
+ VersionAdded: '1.40'
69
+
70
+ Style/ArrayJoin:
71
+ Description: 'Use Array#join instead of Array#*.'
72
+ StyleGuide: '#array-join'
73
+ Enabled: true
74
+ VersionAdded: '0.20'
75
+ VersionChanged: '0.31'
76
+
77
+ Style/AsciiComments:
78
+ Description: 'Use only ascii symbols in comments.'
79
+ StyleGuide: '#english-comments'
80
+ Enabled: true
81
+ VersionAdded: '0.9'
82
+ VersionChanged: '1.21'
83
+ AllowedChars:
84
+ - ©
85
+
86
+ Style/Attr:
87
+ Description: 'Checks for uses of Module#attr.'
88
+ StyleGuide: '#attr'
89
+ Enabled: true
90
+ VersionAdded: '0.9'
91
+ VersionChanged: '0.12'
92
+
93
+ Style/AutoResourceCleanup:
94
+ Description: 'Suggests the usage of an auto resource cleanup version of a method (if available).'
95
+ Enabled: true
96
+ VersionAdded: '0.30'
97
+
98
+ Style/BarePercentLiterals:
99
+ Description: 'Checks if usage of %() or %Q() matches configuration.'
100
+ StyleGuide: '#percent-q-shorthand'
101
+ Enabled: true
102
+ VersionAdded: '0.25'
103
+ EnforcedStyle: bare_percent
104
+ SupportedStyles:
105
+ - percent_q
106
+ - bare_percent
107
+
108
+ Style/BeginBlock:
109
+ Description: 'Avoid the use of BEGIN blocks.'
110
+ StyleGuide: '#no-BEGIN-blocks'
111
+ Enabled: true
112
+ VersionAdded: '0.9'
113
+
114
+ Style/BisectedAttrAccessor:
115
+ Description: >-
116
+ Checks for places where `attr_reader` and `attr_writer`
117
+ for the same method can be combined into single `attr_accessor`.
118
+ Enabled: true
119
+ VersionAdded: '0.87'
120
+
121
+ Style/BlockComments:
122
+ Description: 'Do not use block comments.'
123
+ StyleGuide: '#no-block-comments'
124
+ Enabled: true
125
+ VersionAdded: '0.9'
126
+ VersionChanged: '0.23'
127
+
128
+ Style/BlockDelimiters:
129
+ Description: >-
130
+ Avoid using {...} for multi-line blocks (multiline chaining is
131
+ always ugly).
132
+ Prefer {...} over do...end for single-line blocks.
133
+ StyleGuide: '#single-line-blocks'
134
+ Enabled: true
135
+ VersionAdded: '0.30'
136
+ VersionChanged: '0.35'
137
+ EnforcedStyle: line_count_based
138
+ SupportedStyles:
139
+ # The `line_count_based` style enforces braces around single line blocks and
140
+ # do..end around multi-line blocks.
141
+ - line_count_based
142
+ # The `semantic` style enforces braces around functional blocks, where the
143
+ # primary purpose of the block is to return a value and do..end for
144
+ # multi-line procedural blocks, where the primary purpose of the block is
145
+ # its side-effects. Single-line procedural blocks may only use do-end,
146
+ # unless AllowBracesOnProceduralOneLiners has a truthy value (see below).
147
+ #
148
+ # This looks at the usage of a block's method to determine its type (e.g. is
149
+ # the result of a `map` assigned to a variable or passed to another
150
+ # method) but exceptions are permitted in the `ProceduralMethods`,
151
+ # `FunctionalMethods` and `AllowedMethods` sections below.
152
+ - semantic
153
+ # The `braces_for_chaining` style enforces braces around single line blocks
154
+ # and do..end around multi-line blocks, except for multi-line blocks whose
155
+ # return value is being chained with another method (in which case braces
156
+ # are enforced).
157
+ - braces_for_chaining
158
+ # The `always_braces` style always enforces braces.
159
+ - always_braces
160
+ ProceduralMethods:
161
+ # Methods that are known to be procedural in nature but look functional from
162
+ # their usage, e.g.
163
+ #
164
+ # time = Benchmark.realtime do
165
+ # foo.bar
166
+ # end
167
+ #
168
+ # Here, the return value of the block is discarded but the return value of
169
+ # `Benchmark.realtime` is used.
170
+ - benchmark
171
+ - bm
172
+ - bmbm
173
+ - create
174
+ - each_with_object
175
+ - measure
176
+ - new
177
+ - realtime
178
+ - tap
179
+ - with_object
180
+ FunctionalMethods:
181
+ # Methods that are known to be functional in nature but look procedural from
182
+ # their usage, e.g.
183
+ #
184
+ # let(:foo) { Foo.new }
185
+ #
186
+ # Here, the return value of `Foo.new` is used to define a `foo` helper but
187
+ # doesn't appear to be used from the return value of `let`.
188
+ - let
189
+ - let!
190
+ - subject
191
+ - watch
192
+ AllowedMethods:
193
+ # Methods that can be either procedural or functional and cannot be
194
+ # categorised from their usage alone, e.g.
195
+ #
196
+ # foo = lambda do |x|
197
+ # puts "Hello, #{x}"
198
+ # end
199
+ #
200
+ # foo = lambda do |x|
201
+ # x * 100
202
+ # end
203
+ #
204
+ # Here, it is impossible to tell from the return value of `lambda` whether
205
+ # the inner block's return value is significant.
206
+ - lambda
207
+ - proc
208
+ - it
209
+ AllowedPatterns: [ ]
210
+ # The AllowBracesOnProceduralOneLiners option is ignored unless the
211
+ # EnforcedStyle is set to `semantic`. If so:
212
+ #
213
+ # If AllowBracesOnProceduralOneLiners is unspecified, or set to any
214
+ # falsey value, then semantic purity is maintained, so one-line
215
+ # procedural blocks must use do-end, not braces.
216
+ #
217
+ # # bad
218
+ # collection.each { |element| puts element }
219
+ #
220
+ # # good
221
+ # collection.each do |element| puts element end
222
+ #
223
+ # If AllowBracesOnProceduralOneLiners is set to any truthy value,
224
+ # then one-line procedural blocks may use either style.
225
+ #
226
+ # # good
227
+ # collection.each { |element| puts element }
228
+ #
229
+ # # also good
230
+ # collection.each do |element| puts element end
231
+ AllowBracesOnProceduralOneLiners: false
232
+ # The BracesRequiredMethods overrides all other configurations except
233
+ # IgnoredMethods. It can be used to enforce that all blocks for specific
234
+ # methods use braces. For example, you can use this to enforce Sorbet
235
+ # signatures use braces even when the rest of your codebase enforces
236
+ # the `line_count_based` style.
237
+ BracesRequiredMethods: [ ]
238
+
239
+ Style/CaseEquality:
240
+ Description: 'Avoid explicit use of the case equality operator(===).'
241
+ StyleGuide: '#no-case-equality'
242
+ Enabled: false
243
+ VersionAdded: '0.9'
244
+ VersionChanged: '0.89'
245
+ # If `AllowOnConstant` option is enabled, the cop will ignore violations when the receiver of
246
+ # the case equality operator is a constant.
247
+ #
248
+ # # bad
249
+ # /string/ === "string"
250
+ #
251
+ # # good
252
+ # String === "string"
253
+ AllowOnConstant: false
254
+ # If `AllowOnSelfClass` option is enabled, the cop will ignore violations when the receiver of
255
+ # the case equality operator is `self.class`.
256
+ #
257
+ # # bad
258
+ # some_class === object
259
+ #
260
+ # # good
261
+ # self.class === object
262
+ AllowOnSelfClass: false
263
+
264
+ Style/CaseLikeIf:
265
+ Description: 'Identifies places where `if-elsif` constructions can be replaced with `case-when`.'
266
+ StyleGuide: '#case-vs-if-else'
267
+ Enabled: true
268
+ Safe: false
269
+ VersionAdded: '0.88'
270
+
271
+ Style/CharacterLiteral:
272
+ Description: 'Checks for uses of character literals.'
273
+ StyleGuide: '#no-character-literals'
274
+ Enabled: true
275
+ VersionAdded: '0.9'
276
+
277
+ Style/ClassAndModuleChildren:
278
+ Description: 'Checks style of children classes and modules.'
279
+ StyleGuide: '#namespace-definition'
280
+ # Moving from compact to nested children requires knowledge of whether the
281
+ # outer parent is a module or a class. Moving from nested to compact requires
282
+ # verification that the outer parent is defined elsewhere. Rubocop does not
283
+ # have the knowledge to perform either operation safely and thus requires
284
+ # manual oversight.
285
+ SafeAutoCorrect: false
286
+ Enabled: true
287
+ VersionAdded: '0.19'
288
+ #
289
+ # Basically there are two different styles:
290
+ #
291
+ # `nested` - have each child on a separate line
292
+ # class Foo
293
+ # class Bar
294
+ # end
295
+ # end
296
+ #
297
+ # `compact` - combine definitions as much as possible
298
+ # class Foo::Bar
299
+ # end
300
+ #
301
+ # The compact style is only forced, for classes or modules with one child.
302
+ EnforcedStyle: nested
303
+ SupportedStyles:
304
+ - nested
305
+ - compact
306
+
307
+ Style/ClassCheck:
308
+ Description: 'Enforces consistent use of `Object#is_a?` or `Object#kind_of?`.'
309
+ StyleGuide: '#is-a-vs-kind-of'
310
+ Enabled: true
311
+ VersionAdded: '0.24'
312
+ EnforcedStyle: is_a?
313
+ SupportedStyles:
314
+ - is_a?
315
+ - kind_of?
316
+
317
+ Style/ClassEqualityComparison:
318
+ Description: 'Enforces the use of `Object#instance_of?` instead of class comparison for equality.'
319
+ StyleGuide: '#instance-of-vs-class-comparison'
320
+ Enabled: true
321
+ VersionAdded: '0.93'
322
+ AllowedMethods:
323
+ - ==
324
+ - equal?
325
+ - eql?
326
+ AllowedPatterns: [ ]
327
+
328
+ Style/ClassMethods:
329
+ Description: 'Use self when defining module/class methods.'
330
+ StyleGuide: '#def-self-class-methods'
331
+ Enabled: true
332
+ VersionAdded: '0.9'
333
+ VersionChanged: '0.20'
334
+
335
+ Style/ClassMethodsDefinitions:
336
+ Description: 'Enforces using `def self.method_name` or `class << self` to define class methods.'
337
+ StyleGuide: '#def-self-class-methods'
338
+ Enabled: false
339
+ VersionAdded: '0.89'
340
+ EnforcedStyle: def_self
341
+ SupportedStyles:
342
+ - def_self
343
+ - self_class
344
+
345
+ Style/ClassVars:
346
+ Description: 'Avoid the use of class variables.'
347
+ StyleGuide: '#no-class-vars'
348
+ Enabled: true
349
+ VersionAdded: '0.13'
350
+
351
+ Style/CollectionCompact:
352
+ Description: 'Use `{Array,Hash}#{compact,compact!}` instead of custom logic to reject nils.'
353
+ Enabled: true
354
+ Safe: false
355
+ VersionAdded: '1.2'
356
+ VersionChanged: '1.3'
357
+
358
+ # Align with the style guide.
359
+ Style/CollectionMethods:
360
+ Description: 'Preferred collection methods.'
361
+ StyleGuide: '#map-find-select-reduce-include-size'
362
+ Enabled: true
363
+ VersionAdded: '0.9'
364
+ VersionChanged: '1.7'
365
+ Safe: false
366
+ # Mapping from undesired method to desired method
367
+ # e.g. to use `detect` over `find`:
368
+ #
369
+ # Style/CollectionMethods:
370
+ # PreferredMethods:
371
+ # find: detect
372
+ PreferredMethods:
373
+ collect: 'map'
374
+ collect!: 'map!'
375
+ inject: 'reduce'
376
+ detect: 'find'
377
+ find_all: 'select'
378
+ member?: 'include?'
379
+ length: 'size'
380
+ # Methods in this array accept a final symbol as an implicit block
381
+ # eg. `inject(:+)`
382
+ MethodsAcceptingSymbol:
383
+ - inject
384
+ - reduce
385
+
386
+ Style/ColonMethodCall:
387
+ Description: 'Do not use :: for method call.'
388
+ StyleGuide: '#double-colons'
389
+ Enabled: true
390
+ VersionAdded: '0.9'
391
+
392
+ Style/ColonMethodDefinition:
393
+ Description: 'Do not use :: for defining class methods.'
394
+ StyleGuide: '#colon-method-definition'
395
+ Enabled: true
396
+ VersionAdded: '0.52'
397
+
398
+ Style/CombinableLoops:
399
+ Description: >-
400
+ Checks for places where multiple consecutive loops over the same data
401
+ can be combined into a single loop.
402
+ Enabled: true
403
+ Safe: false
404
+ VersionAdded: '0.90'
405
+
406
+ Style/CommandLiteral:
407
+ Description: 'Use `` or %x around command literals.'
408
+ StyleGuide: '#percent-x'
409
+ Enabled: true
410
+ VersionAdded: '0.30'
411
+ EnforcedStyle: backticks
412
+ # backticks: Always use backticks.
413
+ # percent_x: Always use `%x`.
414
+ # mixed: Use backticks on single-line commands, and `%x` on multi-line commands.
415
+ SupportedStyles:
416
+ - backticks
417
+ - percent_x
418
+ - mixed
419
+ # If `false`, the cop will always recommend using `%x` if one or more backticks
420
+ # are found in the command string.
421
+ AllowInnerBackticks: false
422
+
423
+ # Checks formatting of special comments
424
+ Style/CommentAnnotation:
425
+ Description: >-
426
+ Checks formatting of special comments
427
+ (TODO, FIXME, OPTIMIZE, HACK, REVIEW, NOTE).
428
+ StyleGuide: '#annotate-keywords'
429
+ Enabled: true
430
+ VersionAdded: '0.10'
431
+ VersionChanged: '1.20'
432
+ Keywords:
433
+ - TODO
434
+ - FIXME
435
+ - OPTIMIZE
436
+ - HACK
437
+ - REVIEW
438
+ - NOTE
439
+ RequireColon: true
440
+
441
+ Style/CommentedKeyword:
442
+ Description: 'Do not place comments on the same line as certain keywords.'
443
+ Enabled: true
444
+ SafeAutoCorrect: false
445
+ VersionAdded: '0.51'
446
+ VersionChanged: '1.19'
447
+
448
+ Style/ComparableClamp:
449
+ Description: 'Enforces the use of `Comparable#clamp` instead of comparison by minimum and maximum.'
450
+ Enabled: true
451
+ VersionAdded: '1.44'
452
+
453
+ Style/ConcatArrayLiterals:
454
+ Description: 'Enforces the use of `Array#push(item)` instead of `Array#concat([item])` to avoid redundant array literals.'
455
+ Enabled: true
456
+ Safe: false
457
+ VersionAdded: '1.41'
458
+
459
+ Style/ConditionalAssignment:
460
+ Description: >-
461
+ Use the return value of `if` and `case` statements for
462
+ assignment to a variable and variable comparison instead
463
+ of assigning that variable inside of each branch.
464
+ Enabled: true
465
+ VersionAdded: '0.36'
466
+ VersionChanged: '0.47'
467
+ EnforcedStyle: assign_to_condition
468
+ SupportedStyles:
469
+ - assign_to_condition
470
+ - assign_inside_condition
471
+ # When configured to `assign_to_condition`, `SingleLineConditionsOnly`
472
+ # will only register an offense when all branches of a condition are
473
+ # a single line.
474
+ # When configured to `assign_inside_condition`, `SingleLineConditionsOnly`
475
+ # will only register an offense for assignment to a condition that has
476
+ # at least one multiline branch.
477
+ SingleLineConditionsOnly: true
478
+ IncludeTernaryExpressions: true
479
+
480
+ Style/ConstantVisibility:
481
+ Description: >-
482
+ Check that class- and module constants have
483
+ visibility declarations.
484
+ Enabled: false
485
+ VersionAdded: '0.66'
486
+ VersionChanged: '1.10'
487
+ IgnoreModules: false
488
+
489
+ # Checks that you have put a copyright in a comment before any code.
490
+ #
491
+ # You can override the default Notice in your .rubocop.yml file.
492
+ #
493
+ # In order to use autocorrect, you must supply a value for the
494
+ # `AutocorrectNotice` key that matches the regexp Notice. A blank
495
+ # `AutocorrectNotice` will cause an error during autocorrect.
496
+ #
497
+ # Autocorrect will add a copyright notice in a comment at the top
498
+ # of the file immediately after any shebang or encoding comments.
499
+ #
500
+ # Example rubocop.yml:
501
+ #
502
+ # Style/Copyright:
503
+ # Enabled: true
504
+ # Notice: 'Copyright (\(c\) )?2015 Yahoo! Inc'
505
+ # AutocorrectNotice: '# Copyright (c) 2015 Yahoo! Inc.'
506
+ #
507
+ Style/Copyright:
508
+ Description: 'Include a copyright notice in each file before any code.'
509
+ Enabled: false
510
+ VersionAdded: '0.30'
511
+ Notice: '^Copyright (\(c\) )?2[0-9]{3} .+'
512
+ AutocorrectNotice: ''
513
+
514
+ Style/DateTime:
515
+ Description: 'Use Time over DateTime.'
516
+ StyleGuide: '#date-time'
517
+ Enabled: false
518
+ VersionAdded: '0.51'
519
+ VersionChanged: '0.92'
520
+ SafeAutoCorrect: false
521
+ AllowCoercion: false
522
+
523
+ Style/DefWithParentheses:
524
+ Description: 'Use def with parentheses when there are arguments.'
525
+ StyleGuide: '#method-parens'
526
+ Enabled: true
527
+ VersionAdded: '0.9'
528
+ VersionChanged: '0.12'
529
+
530
+ Style/Dir:
531
+ Description: >-
532
+ Use the `__dir__` method to retrieve the canonicalized
533
+ absolute path to the current file.
534
+ Enabled: true
535
+ VersionAdded: '0.50'
536
+
537
+ Style/DirEmpty:
538
+ Description: >-
539
+ Prefer to use `Dir.empty?('path/to/dir')` when checking if a directory is empty.
540
+ Enabled: true
541
+ VersionAdded: '1.48'
542
+
543
+ Style/DisableCopsWithinSourceCodeDirective:
544
+ Severity: info # Or warning
545
+ Description: >-
546
+ Forbids disabling/enabling cops within source code.
547
+ Enabled: true
548
+ VersionAdded: '0.82'
549
+ VersionChanged: '1.9'
550
+ AllowedCops: # Project specific
551
+
552
+ Style/DocumentDynamicEvalDefinition:
553
+ Description: >-
554
+ When using `class_eval` (or other `eval`) with string interpolation,
555
+ add a comment block showing its appearance if interpolated.
556
+ StyleGuide: '#eval-comment-docs'
557
+ Enabled: true
558
+ VersionAdded: '1.1'
559
+ VersionChanged: '1.3'
560
+
561
+ Style/Documentation:
562
+ Description: 'Document classes and non-namespace modules.'
563
+ Enabled: false
564
+ VersionAdded: '0.9'
565
+ AllowedConstants: [ ]
566
+ Exclude:
567
+ - 'spec/**/*'
568
+ - 'test/**/*'
569
+
570
+ Style/DocumentationMethod:
571
+ Description: 'Checks for missing documentation comment for public methods.'
572
+ Enabled: true
573
+ VersionAdded: '0.43'
574
+ RequireForNonPublicMethods: true
575
+ Exclude:
576
+ - 'db/migrate/*'
577
+ - 'spec/**/*'
578
+ - 'test/**/*'
579
+
580
+ Style/DoubleCopDisableDirective:
581
+ Description: 'Checks for double rubocop:disable comments on a single line.'
582
+ Enabled: true
583
+ VersionAdded: '0.73'
584
+
585
+ Style/DoubleNegation:
586
+ Description: 'Checks for uses of double negation (!!).'
587
+ StyleGuide: '#no-bang-bang'
588
+ Enabled: true
589
+ VersionAdded: '0.19'
590
+ VersionChanged: '1.2'
591
+ EnforcedStyle: allowed_in_returns
592
+ SafeAutoCorrect: false
593
+ SupportedStyles:
594
+ - allowed_in_returns
595
+ - forbidden
596
+
597
+ Style/EachForSimpleLoop:
598
+ Description: >-
599
+ Use `Integer#times` for a simple loop which iterates a fixed
600
+ number of times.
601
+ Enabled: true
602
+ VersionAdded: '0.41'
603
+
604
+ Style/EachWithObject:
605
+ Description: 'Prefer `each_with_object` over `inject` or `reduce`.'
606
+ Enabled: true
607
+ VersionAdded: '0.22'
608
+ VersionChanged: '0.42'
609
+
610
+ Style/EmptyBlockParameter:
611
+ Description: 'Omit pipes for empty block parameters.'
612
+ Enabled: true
613
+ VersionAdded: '0.52'
614
+
615
+ Style/EmptyCaseCondition:
616
+ Description: 'Avoid empty condition in case statements.'
617
+ Enabled: true
618
+ VersionAdded: '0.40'
619
+
620
+ Style/EmptyElse:
621
+ Description: 'Avoid empty else-clauses.'
622
+ Enabled: true
623
+ VersionAdded: '0.28'
624
+ VersionChanged: '0.32'
625
+ EnforcedStyle: both
626
+ # empty - warn only on empty `else`
627
+ # nil - warn on `else` with nil in it
628
+ # both - warn on empty `else` and `else` with `nil` in it
629
+ SupportedStyles:
630
+ - empty
631
+ - nil
632
+ - both
633
+ AllowComments: false
634
+
635
+ Style/EmptyHeredoc:
636
+ Description: 'Checks for using empty heredoc to reduce redundancy.'
637
+ Enabled: true
638
+ VersionAdded: '1.32'
639
+
640
+ Style/EmptyLambdaParameter:
641
+ Description: 'Omit parens for empty lambda parameters.'
642
+ Enabled: true
643
+ VersionAdded: '0.52'
644
+
645
+ Style/EmptyLiteral:
646
+ Description: 'Prefer literals to Array.new/Hash.new/String.new.'
647
+ StyleGuide: '#literal-array-hash'
648
+ Enabled: true
649
+ VersionAdded: '0.9'
650
+ VersionChanged: '0.12'
651
+
652
+ Style/EmptyMethod:
653
+ Description: 'Checks the formatting of empty method definitions.'
654
+ StyleGuide: '#no-single-line-methods'
655
+ Enabled: true
656
+ VersionAdded: '0.46'
657
+ EnforcedStyle: expanded
658
+ SupportedStyles:
659
+ - compact
660
+ - expanded
661
+
662
+ Style/Encoding:
663
+ Description: 'Use UTF-8 as the source file encoding.'
664
+ StyleGuide: '#utf-8'
665
+ Enabled: true
666
+ VersionAdded: '0.9'
667
+ VersionChanged: '0.50'
668
+
669
+ Style/EndBlock:
670
+ Description: 'Avoid the use of END blocks.'
671
+ StyleGuide: '#no-END-blocks'
672
+ Enabled: true
673
+ VersionAdded: '0.9'
674
+ VersionChanged: '0.81'
675
+
676
+ Style/EndlessMethod:
677
+ Description: 'Avoid the use of multi-lined endless method definitions.'
678
+ StyleGuide: '#endless-methods'
679
+ Enabled: true
680
+ VersionAdded: '1.8'
681
+ EnforcedStyle: disallow
682
+ SupportedStyles:
683
+ - allow_single_line
684
+ - allow_always
685
+ - disallow
686
+
687
+ Style/EnvHome:
688
+ Description: "Checks for consistent usage of `ENV['HOME']`."
689
+ Enabled: true
690
+ Safe: false
691
+ VersionAdded: '1.29'
692
+
693
+ Style/EvalWithLocation:
694
+ Description: 'Pass `__FILE__` and `__LINE__` to `eval` method, as they are used by backtraces.'
695
+ Enabled: true
696
+ VersionAdded: '0.52'
697
+
698
+ Style/EvenOdd:
699
+ Description: 'Favor the use of `Integer#even?` && `Integer#odd?`.'
700
+ StyleGuide: '#predicate-methods'
701
+ Enabled: true
702
+ VersionAdded: '0.12'
703
+ VersionChanged: '0.29'
704
+
705
+ Style/ExpandPathArguments:
706
+ Description: "Use `expand_path(__dir__)` instead of `expand_path('..', __FILE__)`."
707
+ Enabled: true
708
+ VersionAdded: '0.53'
709
+
710
+ Style/ExplicitBlockArgument:
711
+ Description: >-
712
+ Consider using explicit block argument to avoid writing block literal
713
+ that just passes its arguments to another block.
714
+ StyleGuide: '#block-argument'
715
+ Enabled: true
716
+ VersionAdded: '0.89'
717
+ VersionChanged: '1.8'
718
+
719
+ Style/ExponentialNotation:
720
+ Description: 'When using exponential notation, favor a mantissa between 1 (inclusive) and 10 (exclusive).'
721
+ StyleGuide: '#exponential-notation'
722
+ Enabled: true
723
+ VersionAdded: '0.82'
724
+ EnforcedStyle: scientific
725
+ SupportedStyles:
726
+ - scientific
727
+ - engineering
728
+ - integral
729
+
730
+ Style/FetchEnvVar:
731
+ Description: >-
732
+ Suggests `ENV.fetch` for the replacement of `ENV[]`.
733
+ Reference:
734
+ - https://rubystyle.guide/#hash-fetch-defaults
735
+ Enabled: true
736
+ VersionAdded: '1.28'
737
+ # Environment variables to be excluded from the inspection.
738
+ AllowedVars: [ ]
739
+
740
+ Style/FileEmpty:
741
+ Description: >-
742
+ Prefer to use `File.empty?('path/to/file')` when checking if a file is empty.
743
+ Enabled: true
744
+ VersionAdded: '1.48'
745
+
746
+ Style/FileRead:
747
+ Description: 'Favor `File.(bin)read` convenience methods.'
748
+ StyleGuide: '#file-read'
749
+ Enabled: true
750
+ VersionAdded: '1.24'
751
+
752
+ Style/FileWrite:
753
+ Description: 'Favor `File.(bin)write` convenience methods.'
754
+ StyleGuide: '#file-write'
755
+ Enabled: true
756
+ VersionAdded: '1.24'
757
+
758
+ Style/FloatDivision:
759
+ Description: 'For performing float division, coerce one side only.'
760
+ StyleGuide: '#float-division'
761
+ Reference: 'https://blog.rubystyle.guide/ruby/2019/06/21/float-division.html'
762
+ Enabled: true
763
+ VersionAdded: '0.72'
764
+ VersionChanged: '1.9'
765
+ Safe: false
766
+ EnforcedStyle: single_coerce
767
+ SupportedStyles:
768
+ - left_coerce
769
+ - right_coerce
770
+ - single_coerce
771
+ - fdiv
772
+
773
+ Style/For:
774
+ Description: 'Checks use of for or each in multiline loops.'
775
+ StyleGuide: '#no-for-loops'
776
+ Enabled: true
777
+ SafeAutoCorrect: false
778
+ VersionAdded: '0.13'
779
+ VersionChanged: '1.26'
780
+ EnforcedStyle: each
781
+ SupportedStyles:
782
+ - each
783
+ - for
784
+
785
+ Style/FormatString:
786
+ Description: 'Enforce the use of Kernel#sprintf, Kernel#format or String#%.'
787
+ StyleGuide: '#sprintf'
788
+ Enabled: true
789
+ VersionAdded: '0.19'
790
+ VersionChanged: '0.49'
791
+ EnforcedStyle: format
792
+ SupportedStyles:
793
+ - format
794
+ - sprintf
795
+ - percent
796
+
797
+ Style/FormatStringToken:
798
+ Description: 'Use a consistent style for format string tokens.'
799
+ Enabled: true
800
+ EnforcedStyle: template
801
+ SupportedStyles:
802
+ # Prefer tokens which contain a sprintf like type annotation like
803
+ # `%<name>s`, `%<age>d`, `%<score>f`
804
+ - annotated
805
+ # Prefer simple looking "template" style tokens like `%{name}`, `%{age}`
806
+ - template
807
+ - unannotated
808
+ # `MaxUnannotatedPlaceholdersAllowed` defines the number of `unannotated`
809
+ # style token in a format string to be allowed when enforced style is not
810
+ # `unannotated`.
811
+ MaxUnannotatedPlaceholdersAllowed: 0
812
+ VersionAdded: '0.49'
813
+ VersionChanged: '1.0'
814
+ AllowedMethods: [ ]
815
+ AllowedPatterns: [ ]
816
+
817
+ Style/FrozenStringLiteralComment:
818
+ Description: >-
819
+ Add the frozen_string_literal comment to the top of files
820
+ to help transition to frozen string literals by default.
821
+ Enabled: true
822
+ VersionAdded: '0.36'
823
+ VersionChanged: '0.79'
824
+ EnforcedStyle: always
825
+ SupportedStyles:
826
+ # `always` will always add the frozen string literal comment to a file
827
+ # regardless of the Ruby version or if `freeze` or `<<` are called on a
828
+ # string literal. It is possible that this will create errors.
829
+ - always
830
+ # `always_true` will add the frozen string literal comment to a file,
831
+ # similarly to the `always` style, but will also change any disabled
832
+ # comments (e.g. `# frozen_string_literal: false`) to be enabled.
833
+ - always_true
834
+ # `never` will enforce that the frozen string literal comment does not
835
+ # exist in a file.
836
+ - never
837
+ SafeAutoCorrect: false
838
+ Exclude:
839
+ - 'db/migrate/*'
840
+ - './**/*.json.jbuilder'
841
+
842
+ Style/GlobalStdStream:
843
+ Description: 'Enforces the use of `$stdout/$stderr/$stdin` instead of `STDOUT/STDERR/STDIN`.'
844
+ StyleGuide: '#global-stdout'
845
+ Enabled: true
846
+ VersionAdded: '0.89'
847
+ SafeAutoCorrect: false
848
+
849
+ Style/GlobalVars:
850
+ Description: 'Do not introduce global variables.'
851
+ StyleGuide: '#instance-vars'
852
+ Reference: 'https://www.zenspider.com/ruby/quickref.html'
853
+ Enabled: true
854
+ VersionAdded: '0.13'
855
+ # Built-in global variables are allowed by default.
856
+ AllowedVariables: [ ]
857
+
858
+ Style/GuardClause:
859
+ Description: 'Check for conditionals that can be replaced with guard clauses.'
860
+ StyleGuide: '#no-nested-conditionals'
861
+ Enabled: true
862
+ VersionAdded: '0.20'
863
+ VersionChanged: '1.31'
864
+ # `MinBodyLength` defines the number of lines of the a body of an `if` or `unless`
865
+ # needs to have to trigger this cop
866
+ MinBodyLength: 1
867
+ AllowConsecutiveConditionals: false
868
+
869
+ Style/HashAsLastArrayItem:
870
+ Description: >-
871
+ Checks for presence or absence of braces around hash literal as a last
872
+ array item depending on configuration.
873
+ StyleGuide: '#hash-literal-as-last-array-item'
874
+ Enabled: true
875
+ VersionAdded: '0.88'
876
+ EnforcedStyle: braces
877
+ SupportedStyles:
878
+ - braces
879
+ - no_braces
880
+
881
+ Style/HashConversion:
882
+ Description: 'Avoid Hash[] in favor of ary.to_h or literal hashes.'
883
+ StyleGuide: '#avoid-hash-constructor'
884
+ Enabled: true
885
+ VersionAdded: '1.10'
886
+ VersionChanged: '1.11'
887
+ AllowSplatArgument: false
888
+
889
+ Style/HashEachMethods:
890
+ Description: 'Use Hash#each_key and Hash#each_value.'
891
+ StyleGuide: '#hash-each'
892
+ Enabled: true
893
+ Safe: false
894
+ VersionAdded: '0.80'
895
+ VersionChanged: '1.16'
896
+ AllowedReceivers: [ ]
897
+
898
+ Style/HashExcept:
899
+ Description: >-
900
+ Checks for usages of `Hash#reject`, `Hash#select`, and `Hash#filter` methods
901
+ that can be replaced with `Hash#except` method.
902
+ Enabled: true
903
+ Safe: false
904
+ VersionAdded: '1.7'
905
+ VersionChanged: '1.39'
906
+
907
+ Style/HashLikeCase:
908
+ Description: >-
909
+ Checks for places where `case-when` represents a simple 1:1
910
+ mapping and can be replaced with a hash lookup.
911
+ Enabled: true
912
+ VersionAdded: '0.88'
913
+ # `MinBranchesCount` defines the number of branches `case` needs to have
914
+ # to trigger this cop
915
+ MinBranchesCount: 3
916
+
917
+ Style/HashSyntax:
918
+ Description: >-
919
+ Prefer Ruby 1.9 hash syntax { a: 1, b: 2 } over 1.8 syntax
920
+ { :a => 1, :b => 2 }.
921
+ StyleGuide: '#hash-literals'
922
+ Enabled: true
923
+ VersionAdded: '0.9'
924
+ VersionChanged: '1.24'
925
+ EnforcedStyle: ruby19_no_mixed_keys
926
+ SupportedStyles:
927
+ # checks for 1.9 syntax (e.g. {a: 1}) for all symbol keys
928
+ - ruby19
929
+ # checks for hash rocket syntax for all hashes
930
+ - hash_rockets
931
+ # forbids mixed key syntaxes (e.g. {a: 1, :b => 2})
932
+ - no_mixed_keys
933
+ # enforces both ruby19 and no_mixed_keys styles
934
+ - ruby19_no_mixed_keys
935
+ # Force hashes that have a hash value omission
936
+ EnforcedShorthandSyntax: never
937
+ SupportedShorthandSyntax:
938
+ # forces use of the 3.1 syntax (e.g. {foo:}) when the hash key and value are the same.
939
+ - always
940
+ # forces use of explicit hash literal value.
941
+ - never
942
+ # accepts both shorthand and explicit use of hash literal value.
943
+ - either
944
+ # like "either", but will avoid mixing styles in a single hash
945
+ - consistent
946
+ # Force hashes that have a symbol value to use hash rockets
947
+ UseHashRocketsWithSymbolValues: false
948
+ # Do not suggest { a?: 1 } over { :a? => 1 } in ruby19 style
949
+ PreferHashRocketsForNonAlnumEndingSymbols: false
950
+
951
+ Style/HashTransformKeys:
952
+ Description: 'Prefer `transform_keys` over `each_with_object`, `map`, or `to_h`.'
953
+ Enabled: true
954
+ VersionAdded: '0.80'
955
+ VersionChanged: '0.90'
956
+ Safe: false
957
+
958
+ Style/HashTransformValues:
959
+ Description: 'Prefer `transform_values` over `each_with_object`, `map`, or `to_h`.'
960
+ Enabled: true
961
+ VersionAdded: '0.80'
962
+ VersionChanged: '0.90'
963
+ Safe: false
964
+
965
+ Style/IdenticalConditionalBranches:
966
+ Description: >-
967
+ Checks that conditional statements do not have an identical
968
+ line at the end of each branch, which can validly be moved
969
+ out of the conditional.
970
+ Enabled: true
971
+ SafeAutoCorrect: false
972
+ VersionAdded: '0.36'
973
+ VersionChanged: '1.19'
974
+
975
+ Style/IfInsideElse:
976
+ Description: 'Finds if nodes inside else, which can be converted to elsif.'
977
+ Enabled: true
978
+ AllowIfModifier: true
979
+ VersionAdded: '0.36'
980
+ VersionChanged: '1.3'
981
+
982
+ Style/IfUnlessModifier:
983
+ Description: >-
984
+ Favor modifier if/unless usage when you have a
985
+ single-line body.
986
+ StyleGuide: '#if-as-a-modifier'
987
+ Enabled: false
988
+ VersionAdded: '0.9'
989
+ VersionChanged: '0.30'
990
+
991
+ Style/IfUnlessModifierOfIfUnless:
992
+ Description: >-
993
+ Avoid modifier if/unless usage on conditionals.
994
+ Enabled: true
995
+ VersionAdded: '0.39'
996
+ VersionChanged: '0.87'
997
+
998
+ Style/IfWithBooleanLiteralBranches:
999
+ Description: 'Checks for redundant `if` with boolean literal branches.'
1000
+ Enabled: true
1001
+ VersionAdded: '1.9'
1002
+ SafeAutoCorrect: false
1003
+ AllowedMethods:
1004
+ - nonzero?
1005
+
1006
+ Style/IfWithSemicolon:
1007
+ Description: 'Do not use if x; .... Use the ternary operator instead.'
1008
+ StyleGuide: '#no-semicolon-ifs'
1009
+ Enabled: true
1010
+ VersionAdded: '0.9'
1011
+ VersionChanged: '0.83'
1012
+
1013
+ Style/ImplicitRuntimeError:
1014
+ Description: >-
1015
+ Use `raise` or `fail` with an explicit exception class and
1016
+ message, rather than just a message.
1017
+ Enabled: false
1018
+ VersionAdded: '0.41'
1019
+
1020
+ Style/InPatternThen:
1021
+ Description: 'Checks for `in;` uses in `case` expressions.'
1022
+ StyleGuide: '#no-in-pattern-semicolons'
1023
+ Enabled: true
1024
+ VersionAdded: '1.16'
1025
+
1026
+ Style/InfiniteLoop:
1027
+ Description: >-
1028
+ Use Kernel#loop for infinite loops.
1029
+ This cop is unsafe if the body may raise a `StopIteration` exception.
1030
+ Safe: false
1031
+ StyleGuide: '#infinite-loop'
1032
+ Enabled: true
1033
+ VersionAdded: '0.26'
1034
+ VersionChanged: '0.61'
1035
+
1036
+ Style/InlineComment:
1037
+ Description: 'Avoid trailing inline comments.'
1038
+ Enabled: true
1039
+ VersionAdded: '0.23'
1040
+
1041
+ Style/InverseMethods:
1042
+ Description: >-
1043
+ Use the inverse method instead of `!.method`
1044
+ if an inverse method is defined.
1045
+ Enabled: true
1046
+ Safe: false
1047
+ VersionAdded: '0.48'
1048
+ # `InverseMethods` are methods that can be inverted by a not (`not` or `!`)
1049
+ # The relationship of inverse methods only needs to be defined in one direction.
1050
+ # Keys and values both need to be defined as symbols.
1051
+ InverseMethods:
1052
+ :any?: :none?
1053
+ :even?: :odd?
1054
+ :==: :!=
1055
+ :=~: :!~
1056
+ :<: :>=
1057
+ :>: :<=
1058
+ # `ActiveSupport` defines some common inverse methods. They are listed below,
1059
+ # and not enabled by default.
1060
+ # :present?: :blank?,
1061
+ # :include?: :exclude?
1062
+ # `InverseBlocks` are methods that are inverted by inverting the return
1063
+ # of the block that is passed to the method
1064
+ InverseBlocks:
1065
+ :select: :reject
1066
+ :select!: :reject!
1067
+
1068
+ Style/InvertibleUnlessCondition:
1069
+ Description: 'Favor `if` with inverted condition over `unless`.'
1070
+ Enabled: true
1071
+ VersionAdded: '1.44'
1072
+ # `InverseMethods` are methods that can be inverted in a `unless` condition.
1073
+ # The relationship of inverse methods needs to be defined in both directions.
1074
+ # Keys and values both need to be defined as symbols.
1075
+ InverseMethods:
1076
+ :!=: :==
1077
+ :>: :<=
1078
+ :<=: :>
1079
+ :<: :>=
1080
+ :>=: :<
1081
+ :!~: :=~
1082
+ :zero?: :nonzero?
1083
+ :nonzero?: :zero?
1084
+ :any?: :none?
1085
+ :none?: :any?
1086
+ :even?: :odd?
1087
+ :odd?: :even?
1088
+ :present?: :blank?
1089
+ :blank?: :present?
1090
+ :include?: :exclude?
1091
+ :exclude?: :include?
1092
+ # :one?: :many?
1093
+ # :many?: :one?
1094
+
1095
+ Style/IpAddresses:
1096
+ Description: "Don't include literal IP addresses in code."
1097
+ Enabled: true
1098
+ VersionAdded: '0.58'
1099
+ VersionChanged: '0.91'
1100
+ # Allow addresses to be permitted
1101
+ AllowedAddresses:
1102
+ - "::"
1103
+ # :: is a valid IPv6 address, but could potentially be legitimately in code
1104
+ Exclude:
1105
+ - '**/*.gemfile'
1106
+ - '**/Gemfile'
1107
+ - '**/gems.rb'
1108
+ - '**/*.gemspec'
1109
+
1110
+ Style/KeywordParametersOrder:
1111
+ Description: 'Enforces that optional keyword parameters are placed at the end of the parameters list.'
1112
+ StyleGuide: '#keyword-parameters-order'
1113
+ Enabled: true
1114
+ VersionAdded: '0.90'
1115
+ VersionChanged: '1.7'
1116
+
1117
+ Style/Lambda:
1118
+ Description: 'Use the new lambda literal syntax for single-line blocks.'
1119
+ StyleGuide: '#lambda-multi-line'
1120
+ Enabled: true
1121
+ VersionAdded: '0.9'
1122
+ VersionChanged: '0.40'
1123
+ EnforcedStyle: literal
1124
+ SupportedStyles:
1125
+ - line_count_dependent
1126
+ - lambda
1127
+ - literal
1128
+
1129
+ Style/LambdaCall:
1130
+ Description: 'Use lambda.call(...) instead of lambda.(...).'
1131
+ StyleGuide: '#proc-call'
1132
+ Enabled: true
1133
+ VersionAdded: '0.13'
1134
+ VersionChanged: '0.14'
1135
+ EnforcedStyle: call
1136
+ SupportedStyles:
1137
+ - call
1138
+ - braces
1139
+
1140
+ Style/LineEndConcatenation:
1141
+ Description: >-
1142
+ Use \ instead of + or << to concatenate two string literals at
1143
+ line end.
1144
+ Enabled: true
1145
+ SafeAutoCorrect: false
1146
+ VersionAdded: '0.18'
1147
+ VersionChanged: '0.64'
1148
+
1149
+ Style/MagicCommentFormat:
1150
+ Description: 'Use a consistent style for magic comments.'
1151
+ Enabled: true
1152
+ VersionAdded: '1.35'
1153
+ EnforcedStyle: snake_case
1154
+ SupportedStyles:
1155
+ # `snake` will enforce the magic comment is written
1156
+ # in snake case (words separated by underscores).
1157
+ # Eg: froze_string_literal: true
1158
+ - snake_case
1159
+ # `kebab` will enforce the magic comment is written
1160
+ # in kebab case (words separated by hyphens).
1161
+ # Eg: froze-string-literal: true
1162
+ - kebab_case
1163
+ DirectiveCapitalization: lowercase
1164
+ ValueCapitalization: lowercase
1165
+ SupportedCapitalizations:
1166
+ - lowercase
1167
+ - uppercase
1168
+
1169
+ Style/MapCompactWithConditionalBlock:
1170
+ Description: 'Prefer `select` or `reject` over `map { ... }.compact`.'
1171
+ Enabled: true
1172
+ VersionAdded: '1.30'
1173
+
1174
+ Style/MapToHash:
1175
+ Description: 'Prefer `to_h` with a block over `map.to_h`.'
1176
+ Enabled: true
1177
+ VersionAdded: '1.24'
1178
+ Safe: false
1179
+
1180
+ Style/MethodCallWithArgsParentheses:
1181
+ Description: 'Use parentheses for method calls with arguments.'
1182
+ StyleGuide: '#method-invocation-parens'
1183
+ Enabled: true
1184
+ VersionAdded: '0.47'
1185
+ VersionChanged: '1.7'
1186
+ IgnoreMacros: true
1187
+ AllowedMethods: [ ]
1188
+ AllowedPatterns: [ ]
1189
+ IncludedMacros: [ ]
1190
+ AllowParenthesesInMultilineCall: false
1191
+ AllowParenthesesInChaining: false
1192
+ AllowParenthesesInCamelCaseMethod: false
1193
+ AllowParenthesesInStringInterpolation: false
1194
+ EnforcedStyle: require_parentheses
1195
+ SupportedStyles:
1196
+ - require_parentheses
1197
+ - omit_parentheses
1198
+ Exclude:
1199
+ - 'db/migrate/*'
1200
+
1201
+ Style/MethodCallWithoutArgsParentheses:
1202
+ Description: 'Do not use parentheses for method calls with no arguments.'
1203
+ StyleGuide: '#method-invocation-parens'
1204
+ Enabled: true
1205
+ AllowedMethods: [ ]
1206
+ AllowedPatterns: [ ]
1207
+ VersionAdded: '0.47'
1208
+ VersionChanged: '0.55'
1209
+
1210
+ Style/MethodCalledOnDoEndBlock:
1211
+ Description: 'Avoid chaining a method call on a do...end block.'
1212
+ StyleGuide: '#single-line-blocks'
1213
+ Enabled: true
1214
+ VersionAdded: '0.14'
1215
+
1216
+ Style/MethodDefParentheses:
1217
+ Description: >-
1218
+ Checks if the method definitions have or don't have
1219
+ parentheses.
1220
+ StyleGuide: '#method-parens'
1221
+ Enabled: true
1222
+ VersionAdded: '0.16'
1223
+ VersionChanged: '1.7'
1224
+ EnforcedStyle: require_parentheses
1225
+ SupportedStyles:
1226
+ - require_parentheses
1227
+ - require_no_parentheses
1228
+ - require_no_parentheses_except_multiline
1229
+
1230
+ Style/MinMax:
1231
+ Description: >-
1232
+ Use `Enumerable#minmax` instead of `Enumerable#min`
1233
+ and `Enumerable#max` in conjunction.
1234
+ Enabled: true
1235
+ VersionAdded: '0.50'
1236
+
1237
+ Style/MissingElse:
1238
+ Description: >-
1239
+ Require if/case expressions to have an else branches.
1240
+ If enabled, it is recommended that
1241
+ Style/UnlessElse and Style/EmptyElse be enabled.
1242
+ This will conflict with Style/EmptyElse if
1243
+ Style/EmptyElse is configured to style "both".
1244
+ Enabled: false
1245
+ VersionAdded: '0.30'
1246
+ VersionChanged: '0.38'
1247
+ EnforcedStyle: both
1248
+ SupportedStyles:
1249
+ # if - warn when an if expression is missing an else branch
1250
+ # case - warn when a case expression is missing an else branch
1251
+ # both - warn when an if or case expression is missing an else branch
1252
+ - if
1253
+ - case
1254
+ - both
1255
+
1256
+ Style/MissingRespondToMissing:
1257
+ Description: >-
1258
+ Checks if `method_missing` is implemented
1259
+ without implementing `respond_to_missing`.
1260
+ StyleGuide: '#no-method-missing'
1261
+ Enabled: true
1262
+ VersionAdded: '0.56'
1263
+
1264
+ Style/MixinGrouping:
1265
+ Description: 'Checks for grouping of mixins in `class` and `module` bodies.'
1266
+ StyleGuide: '#mixin-grouping'
1267
+ Enabled: true
1268
+ VersionAdded: '0.48'
1269
+ VersionChanged: '0.49'
1270
+ EnforcedStyle: separated
1271
+ SupportedStyles:
1272
+ # separated: each mixed in module goes in a separate statement.
1273
+ # grouped: mixed in modules are grouped into a single statement.
1274
+ - separated
1275
+ - grouped
1276
+
1277
+ Style/MixinUsage:
1278
+ Description: 'Checks that `include`, `extend` and `prepend` exists at the top level.'
1279
+ Enabled: true
1280
+ VersionAdded: '0.51'
1281
+ Exclude:
1282
+ - './**/*.rake'
1283
+
1284
+ Style/ModuleFunction:
1285
+ Description: 'Checks for usage of `extend self` in modules.'
1286
+ StyleGuide: '#module-function'
1287
+ Enabled: true
1288
+ VersionAdded: '0.11'
1289
+ VersionChanged: '0.65'
1290
+ EnforcedStyle: module_function
1291
+ SupportedStyles:
1292
+ - module_function
1293
+ - extend_self
1294
+ - forbidden
1295
+ Autocorrect: false
1296
+ SafeAutoCorrect: false
1297
+
1298
+ Style/MultilineBlockChain:
1299
+ Description: 'Avoid multi-line chains of blocks.'
1300
+ StyleGuide: '#single-line-blocks'
1301
+ Enabled: true
1302
+ VersionAdded: '0.13'
1303
+
1304
+ Style/MultilineIfModifier:
1305
+ Description: 'Only use if/unless modifiers on single line statements.'
1306
+ StyleGuide: '#no-multiline-if-modifiers'
1307
+ Enabled: true
1308
+ VersionAdded: '0.45'
1309
+
1310
+ Style/MultilineIfThen:
1311
+ Description: 'Do not use then for multi-line if/unless.'
1312
+ StyleGuide: '#no-then'
1313
+ Enabled: true
1314
+ VersionAdded: '0.9'
1315
+ VersionChanged: '0.26'
1316
+
1317
+ Style/MultilineInPatternThen:
1318
+ Description: 'Do not use `then` for multi-line `in` statement.'
1319
+ StyleGuide: '#no-then'
1320
+ Enabled: true
1321
+ VersionAdded: '1.16'
1322
+
1323
+ Style/MultilineMemoization:
1324
+ Description: 'Wrap multiline memoizations in a `begin` and `end` block.'
1325
+ Enabled: true
1326
+ VersionAdded: '0.44'
1327
+ VersionChanged: '0.48'
1328
+ EnforcedStyle: keyword
1329
+ SupportedStyles:
1330
+ - keyword
1331
+ - braces
1332
+
1333
+ Style/MultilineMethodSignature:
1334
+ Description: 'Avoid multi-line method signatures.'
1335
+ Enabled: false
1336
+ VersionAdded: '0.59'
1337
+ VersionChanged: '1.7'
1338
+
1339
+ Style/MultilineTernaryOperator:
1340
+ Description: >-
1341
+ Avoid multi-line ?: (the ternary operator);
1342
+ use if/unless instead.
1343
+ StyleGuide: '#no-multiline-ternary'
1344
+ Enabled: true
1345
+ VersionAdded: '0.9'
1346
+ VersionChanged: '0.86'
1347
+
1348
+ Style/MultilineWhenThen:
1349
+ Description: 'Do not use then for multi-line when statement.'
1350
+ StyleGuide: '#no-then'
1351
+ Enabled: true
1352
+ VersionAdded: '0.73'
1353
+
1354
+ Style/MultipleComparison:
1355
+ Description: >-
1356
+ Avoid comparing a variable with multiple items in a conditional,
1357
+ use Array#include? instead.
1358
+ Enabled: true
1359
+ VersionAdded: '0.49'
1360
+ VersionChanged: '1.1'
1361
+ AllowMethodComparison: true
1362
+
1363
+ Style/MutableConstant:
1364
+ Description: 'Do not assign mutable objects to constants.'
1365
+ Enabled: true
1366
+ VersionAdded: '0.34'
1367
+ VersionChanged: '1.8'
1368
+ SafeAutoCorrect: false
1369
+ EnforcedStyle: literals
1370
+ SupportedStyles:
1371
+ # literals: freeze literals assigned to constants
1372
+ # strict: freeze all constants
1373
+ # Strict mode is considered an experimental feature. It has not been updated
1374
+ # with an exhaustive list of all methods that will produce frozen objects so
1375
+ # there is a decent chance of getting some false positives. Luckily, there is
1376
+ # no harm in freezing an already frozen object.
1377
+ - literals
1378
+ - strict
1379
+
1380
+ Style/NegatedIf:
1381
+ Description: >-
1382
+ Favor unless over if for negative conditions
1383
+ (or control flow or).
1384
+ StyleGuide: '#unless-for-negatives'
1385
+ Enabled: true
1386
+ VersionAdded: '0.20'
1387
+ VersionChanged: '0.48'
1388
+ EnforcedStyle: both
1389
+ SupportedStyles:
1390
+ # both: prefix and postfix negated `if` should both use `unless`
1391
+ # prefix: only use `unless` for negated `if` statements positioned before the body of the statement
1392
+ # postfix: only use `unless` for negated `if` statements positioned after the body of the statement
1393
+ - both
1394
+ - prefix
1395
+ - postfix
1396
+
1397
+ Style/NegatedIfElseCondition:
1398
+ Description: >-
1399
+ Checks for uses of `if-else` and ternary operators with a negated condition
1400
+ which can be simplified by inverting condition and swapping branches.
1401
+ Enabled: true
1402
+ VersionAdded: '1.2'
1403
+
1404
+ Style/NegatedUnless:
1405
+ Description: 'Favor if over unless for negative conditions.'
1406
+ StyleGuide: '#if-for-negatives'
1407
+ Enabled: true
1408
+ VersionAdded: '0.69'
1409
+ EnforcedStyle: both
1410
+ SupportedStyles:
1411
+ # both: prefix and postfix negated `unless` should both use `if`
1412
+ # prefix: only use `if` for negated `unless` statements positioned before the body of the statement
1413
+ # postfix: only use `if` for negated `unless` statements positioned after the body of the statement
1414
+ - both
1415
+ - prefix
1416
+ - postfix
1417
+
1418
+ Style/NegatedWhile:
1419
+ Description: 'Favor until over while for negative conditions.'
1420
+ StyleGuide: '#until-for-negatives'
1421
+ Enabled: true
1422
+ VersionAdded: '0.20'
1423
+
1424
+ Style/NestedFileDirname:
1425
+ Description: 'Checks for nested `File.dirname`.'
1426
+ Enabled: true
1427
+ VersionAdded: '1.26'
1428
+
1429
+ Style/NestedModifier:
1430
+ Description: 'Avoid using nested modifiers.'
1431
+ StyleGuide: '#no-nested-modifiers'
1432
+ Enabled: true
1433
+ VersionAdded: '0.35'
1434
+
1435
+ Style/NestedParenthesizedCalls:
1436
+ Description: >-
1437
+ Parenthesize method calls which are nested inside the
1438
+ argument list of another parenthesized method call.
1439
+ Enabled: true
1440
+ VersionAdded: '0.36'
1441
+ VersionChanged: '0.77'
1442
+ AllowedMethods:
1443
+ - be
1444
+ - be_a
1445
+ - be_an
1446
+ - be_between
1447
+ - be_falsey
1448
+ - be_kind_of
1449
+ - be_instance_of
1450
+ - be_truthy
1451
+ - be_within
1452
+ - eq
1453
+ - eql
1454
+ - end_with
1455
+ - include
1456
+ - match
1457
+ - raise_error
1458
+ - respond_to
1459
+ - start_with
1460
+
1461
+ Style/NestedTernaryOperator:
1462
+ Description: 'Use one expression per branch in a ternary operator.'
1463
+ StyleGuide: '#no-nested-ternary'
1464
+ Enabled: true
1465
+ VersionAdded: '0.9'
1466
+ VersionChanged: '0.86'
1467
+
1468
+ Style/Next:
1469
+ Description: 'Use `next` to skip iteration instead of a condition at the end.'
1470
+ StyleGuide: '#no-nested-conditionals'
1471
+ Enabled: true
1472
+ VersionAdded: '0.22'
1473
+ VersionChanged: '0.35'
1474
+ # With `always` all conditions at the end of an iteration needs to be
1475
+ # replaced by next - with `skip_modifier_ifs` the modifier if like this one
1476
+ # are ignored: [1, 2].each { |a| return 'yes' if a == 1 }
1477
+ EnforcedStyle: skip_modifier_ifs
1478
+ # `MinBodyLength` defines the number of lines of the a body of an `if` or `unless`
1479
+ # needs to have to trigger this cop
1480
+ MinBodyLength: 3
1481
+ SupportedStyles:
1482
+ - skip_modifier_ifs
1483
+ - always
1484
+
1485
+ Style/NilComparison:
1486
+ Description: 'Prefer x.nil? to x == nil.'
1487
+ StyleGuide: '#predicate-methods'
1488
+ Enabled: true
1489
+ VersionAdded: '0.12'
1490
+ VersionChanged: '0.59'
1491
+ EnforcedStyle: predicate
1492
+ SupportedStyles:
1493
+ - predicate
1494
+ - comparison
1495
+
1496
+ Style/NilLambda:
1497
+ Description: 'Prefer `-> {}` to `-> { nil }`.'
1498
+ Enabled: true
1499
+ VersionAdded: '1.3'
1500
+ VersionChanged: '1.15'
1501
+
1502
+ Style/NonNilCheck:
1503
+ Description: 'Checks for redundant nil checks.'
1504
+ StyleGuide: '#no-non-nil-checks'
1505
+ Enabled: true
1506
+ VersionAdded: '0.20'
1507
+ VersionChanged: '0.22'
1508
+ # With `IncludeSemanticChanges` set to `true`, this cop reports offenses for
1509
+ # `!x.nil?` and autocorrects that and `x != nil` to solely `x`, which is
1510
+ # **usually** OK, but might change behavior.
1511
+ #
1512
+ # With `IncludeSemanticChanges` set to `false`, this cop does not report
1513
+ # offenses for `!x.nil?` and does no changes that might change behavior.
1514
+ IncludeSemanticChanges: false
1515
+
1516
+ Style/Not:
1517
+ Description: 'Use ! instead of not.'
1518
+ StyleGuide: '#bang-not-not'
1519
+ Enabled: true
1520
+ VersionAdded: '0.9'
1521
+ VersionChanged: '0.20'
1522
+
1523
+ Style/NumberedParameters:
1524
+ Description: 'Restrict the usage of numbered parameters.'
1525
+ Enabled: true
1526
+ VersionAdded: '1.22'
1527
+ EnforcedStyle: disallow
1528
+ SupportedStyles:
1529
+ - allow_single_line
1530
+ - disallow
1531
+
1532
+ Style/NumberedParametersLimit:
1533
+ Description: 'Avoid excessive numbered params in a single block.'
1534
+ Enabled: true
1535
+ VersionAdded: '1.22'
1536
+ Max: 0
1537
+
1538
+ Style/NumericLiteralPrefix:
1539
+ Description: 'Use smallcase prefixes for numeric literals.'
1540
+ StyleGuide: '#numeric-literal-prefixes'
1541
+ Enabled: true
1542
+ VersionAdded: '0.41'
1543
+ EnforcedOctalStyle: zero_with_o
1544
+ SupportedOctalStyles:
1545
+ - zero_with_o
1546
+ - zero_only
1547
+
1548
+ Style/NumericLiterals:
1549
+ Description: >-
1550
+ Add underscores to large numeric literals to improve their
1551
+ readability.
1552
+ StyleGuide: '#underscores-in-numerics'
1553
+ Enabled: true
1554
+ VersionAdded: '0.9'
1555
+ VersionChanged: '0.48'
1556
+ Strict: true
1557
+ MinDigits: 4
1558
+ # You can specify allowed numbers. (e.g. port number 3000, 8080, and etc)
1559
+ AllowedNumbers:
1560
+ - 3000
1561
+ - 3306
1562
+ - 3035
1563
+ - 5432
1564
+ - 6379
1565
+ - 8080
1566
+ - 11211
1567
+ AllowedPatterns: [ ]
1568
+
1569
+ Style/NumericPredicate:
1570
+ Description: >-
1571
+ Checks for the use of predicate- or comparison methods for
1572
+ numeric comparisons.
1573
+ StyleGuide: '#predicate-methods'
1574
+ Safe: false
1575
+ # This will change to a new method call which isn't guaranteed to be on the
1576
+ # object. Switching these methods has to be done with knowledge of the types
1577
+ # of the variables which rubocop doesn't have.
1578
+ SafeAutoCorrect: false
1579
+ Enabled: false
1580
+ VersionAdded: '0.42'
1581
+ VersionChanged: '0.59'
1582
+ EnforcedStyle: predicate
1583
+ SupportedStyles:
1584
+ - predicate
1585
+ - comparison
1586
+ AllowedMethods: [ ]
1587
+ AllowedPatterns: [ ]
1588
+ # Exclude RSpec specs because assertions like `expect(1).to be > 0` cause
1589
+ # false positives.
1590
+ Exclude:
1591
+ - 'spec/**/*'
1592
+
1593
+ Style/ObjectThen:
1594
+ Description: 'Enforces the use of consistent method names `Object#yield_self` or `Object#then`.'
1595
+ StyleGuide: '#object-yield-self-vs-object-then'
1596
+ Enabled: true
1597
+ VersionAdded: '1.28'
1598
+ # Use `Object#yield_self` or `Object#then`?
1599
+ # Prefer `Object#yield_self` to `Object#then` (yield_self)
1600
+ # Prefer `Object#then` to `Object#yield_self` (then)
1601
+ EnforcedStyle: yield_self
1602
+ SupportedStyles:
1603
+ - then
1604
+ - yield_self
1605
+
1606
+ Style/OneLineConditional:
1607
+ Description: >-
1608
+ Favor the ternary operator (?:) or multi-line constructs over
1609
+ single-line if/then/else/end constructs.
1610
+ StyleGuide: '#ternary-operator'
1611
+ Enabled: true
1612
+ AlwaysCorrectToMultiline: false
1613
+ VersionAdded: '0.9'
1614
+ VersionChanged: '0.90'
1615
+
1616
+ Style/OpenStructUse:
1617
+ Description: >-
1618
+ Avoid using OpenStruct. As of Ruby 3.0, use is officially discouraged due to performance,
1619
+ version compatibility, and potential security issues.
1620
+ Reference:
1621
+ - https://docs.ruby-lang.org/en/3.0.0/OpenStruct.html#class-OpenStruct-label-Caveats
1622
+ Enabled: true
1623
+ VersionAdded: '1.23'
1624
+
1625
+ Style/OperatorMethodCall:
1626
+ Description: 'Checks for redundant dot before operator method call.'
1627
+ StyleGuide: '#operator-method-call'
1628
+ Enabled: true
1629
+ VersionAdded: '1.37'
1630
+
1631
+ Style/OptionHash:
1632
+ Description: "Don't use option hashes when you can use keyword arguments."
1633
+ Enabled: false
1634
+ VersionAdded: '0.33'
1635
+ VersionChanged: '0.34'
1636
+ # A list of parameter names that will be flagged by this cop.
1637
+ SuspiciousParamNames:
1638
+ - options
1639
+ - opts
1640
+ - args
1641
+ - params
1642
+ - parameters
1643
+ Allowlist: [ ]
1644
+
1645
+ Style/OptionalArguments:
1646
+ Description: >-
1647
+ Checks for optional arguments that do not appear at the end
1648
+ of the argument list.
1649
+ StyleGuide: '#optional-arguments'
1650
+ Enabled: true
1651
+ Safe: false
1652
+ VersionAdded: '0.33'
1653
+ VersionChanged: '0.83'
1654
+
1655
+ Style/OptionalBooleanParameter:
1656
+ Description: 'Use keyword arguments when defining method with boolean argument.'
1657
+ StyleGuide: '#boolean-keyword-arguments'
1658
+ Enabled: false
1659
+ Safe: false
1660
+ VersionAdded: '0.89'
1661
+ AllowedMethods:
1662
+ - respond_to_missing?
1663
+
1664
+ Style/OrAssignment:
1665
+ Description: 'Recommend usage of double pipe equals (||=) where applicable.'
1666
+ StyleGuide: '#double-pipe-for-uninit'
1667
+ Enabled: true
1668
+ VersionAdded: '0.50'
1669
+
1670
+ Style/ParallelAssignment:
1671
+ Description: >-
1672
+ Check for simple usages of parallel assignment.
1673
+ It will only warn when the number of variables
1674
+ matches on both sides of the assignment.
1675
+ StyleGuide: '#parallel-assignment'
1676
+ Enabled: true
1677
+ VersionAdded: '0.32'
1678
+
1679
+ Style/ParenthesesAroundCondition:
1680
+ Description: >-
1681
+ Don't use parentheses around the condition of an
1682
+ if/unless/while.
1683
+ StyleGuide: '#no-parens-around-condition'
1684
+ Enabled: true
1685
+ VersionAdded: '0.9'
1686
+ VersionChanged: '0.56'
1687
+ AllowSafeAssignment: true
1688
+ AllowInMultilineConditions: false
1689
+
1690
+ Style/PercentLiteralDelimiters:
1691
+ Description: 'Use `%`-literal delimiters consistently.'
1692
+ StyleGuide: '#percent-literal-braces'
1693
+ Enabled: true
1694
+ VersionAdded: '0.19'
1695
+ # Specify the default preferred delimiter for all types with the 'default' key
1696
+ # Override individual delimiters (even with default specified) by specifying
1697
+ # an individual key
1698
+ PreferredDelimiters:
1699
+ default: '[]'
1700
+ VersionChanged: '0.48'
1701
+
1702
+ Style/PercentQLiterals:
1703
+ Description: 'Checks if uses of %Q/%q match the configured preference.'
1704
+ Enabled: true
1705
+ VersionAdded: '0.25'
1706
+ EnforcedStyle: lower_case_q
1707
+ SupportedStyles:
1708
+ - lower_case_q # Use `%q` when possible, `%Q` when necessary
1709
+ - upper_case_q # Always use `%Q`
1710
+
1711
+ Style/PerlBackrefs:
1712
+ Description: 'Avoid Perl-style regex back references.'
1713
+ StyleGuide: '#no-perl-regexp-last-matchers'
1714
+ Enabled: true
1715
+ VersionAdded: '0.13'
1716
+
1717
+ Style/PreferredHashMethods:
1718
+ Description: 'Checks use of `has_key?` and `has_value?` Hash methods.'
1719
+ StyleGuide: '#hash-key'
1720
+ Enabled: false
1721
+ Safe: false
1722
+ VersionAdded: '0.41'
1723
+ VersionChanged: '0.70'
1724
+ EnforcedStyle: short
1725
+ SupportedStyles:
1726
+ - short
1727
+ - verbose
1728
+
1729
+ Style/Proc:
1730
+ Description: 'Use proc instead of Proc.new.'
1731
+ StyleGuide: '#proc'
1732
+ Enabled: true
1733
+ VersionAdded: '0.9'
1734
+ VersionChanged: '0.18'
1735
+
1736
+ Style/QuotedSymbols:
1737
+ Description: 'Use a consistent style for quoted symbols.'
1738
+ Enabled: true
1739
+ VersionAdded: '1.16'
1740
+ EnforcedStyle: same_as_string_literals
1741
+ SupportedStyles:
1742
+ - same_as_string_literals
1743
+ - single_quotes
1744
+ - double_quotes
1745
+
1746
+ Style/RaiseArgs:
1747
+ Description: 'Checks the arguments passed to raise/fail.'
1748
+ StyleGuide: '#exception-class-messages'
1749
+ Enabled: true
1750
+ VersionAdded: '0.14'
1751
+ VersionChanged: '1.2'
1752
+ EnforcedStyle: exploded
1753
+ SupportedStyles:
1754
+ - compact # raise Exception.new(msg)
1755
+ - exploded # raise Exception, msg
1756
+ AllowedCompactTypes: [ ]
1757
+
1758
+ Style/RandomWithOffset:
1759
+ Description: >-
1760
+ Prefer to use ranges when generating random numbers instead of
1761
+ integers with offsets.
1762
+ StyleGuide: '#random-numbers'
1763
+ Enabled: true
1764
+ VersionAdded: '0.52'
1765
+
1766
+ Style/RedundantArgument:
1767
+ Description: 'Check for a redundant argument passed to certain methods.'
1768
+ Enabled: true
1769
+ Safe: false
1770
+ VersionAdded: '1.4'
1771
+ VersionChanged: '1.40'
1772
+ Methods:
1773
+ # Array#sum
1774
+ sum: 0
1775
+ join:
1776
+ split:
1777
+ chomp:
1778
+ chomp!:
1779
+
1780
+ Style/RedundantAssignment:
1781
+ Description: 'Checks for redundant assignment before returning.'
1782
+ Enabled: true
1783
+ VersionAdded: '0.87'
1784
+
1785
+ Style/RedundantBegin:
1786
+ Description: "Don't use begin blocks when they are not needed."
1787
+ StyleGuide: '#begin-implicit'
1788
+ Enabled: true
1789
+ VersionAdded: '0.10'
1790
+ VersionChanged: '0.21'
1791
+
1792
+ Style/RedundantCapitalW:
1793
+ Description: 'Checks for %W when interpolation is not needed.'
1794
+ Enabled: true
1795
+ VersionAdded: '0.76'
1796
+
1797
+ Style/RedundantCondition:
1798
+ Description: 'Checks for unnecessary conditional expressions.'
1799
+ Enabled: true
1800
+ VersionAdded: '0.76'
1801
+
1802
+ Style/RedundantConditional:
1803
+ Description: "Don't return true/false from a conditional."
1804
+ Enabled: true
1805
+ VersionAdded: '0.50'
1806
+
1807
+ Style/RedundantConstantBase:
1808
+ Description: Avoid redundant `::` prefix on constant.
1809
+ Enabled: true
1810
+ VersionAdded: '1.40'
1811
+
1812
+ Style/RedundantDoubleSplatHashBraces:
1813
+ Description: 'Checks for redundant uses of double splat hash braces.'
1814
+ Enabled: true
1815
+ VersionAdded: '1.41'
1816
+
1817
+ Style/RedundantEach:
1818
+ Description: 'Checks for redundant `each`.'
1819
+ Enabled: true
1820
+ Safe: false
1821
+ VersionAdded: '1.38'
1822
+
1823
+ Style/RedundantException:
1824
+ Description: "Checks for an obsolete RuntimeException argument in raise/fail."
1825
+ StyleGuide: '#no-explicit-runtimeerror'
1826
+ Enabled: true
1827
+ VersionAdded: '0.14'
1828
+ VersionChanged: '0.29'
1829
+
1830
+ Style/RedundantFetchBlock:
1831
+ Description: >-
1832
+ Use `fetch(key, value)` instead of `fetch(key) { value }`
1833
+ when value has Numeric, Rational, Complex, Symbol or String type, `false`, `true`, `nil` or is a constant.
1834
+ Reference: 'https://github.com/JuanitoFatas/fast-ruby#hashfetch-with-argument-vs-hashfetch--block-code'
1835
+ Enabled: true
1836
+ Safe: false
1837
+ # If enabled, this cop will autocorrect usages of
1838
+ # `fetch` being called with block returning a constant.
1839
+ # This can be dangerous since constants will not be defined at that moment.
1840
+ SafeForConstants: false
1841
+ VersionAdded: '0.86'
1842
+
1843
+ Style/RedundantFileExtensionInRequire:
1844
+ Description: >-
1845
+ Checks for the presence of superfluous `.rb` extension in
1846
+ the filename provided to `require` and `require_relative`.
1847
+ StyleGuide: '#no-explicit-rb-to-require'
1848
+ Enabled: true
1849
+ VersionAdded: '0.88'
1850
+
1851
+ Style/RedundantFreeze:
1852
+ Description: "Checks usages of Object#freeze on immutable objects."
1853
+ Enabled: true
1854
+ VersionAdded: '0.34'
1855
+ VersionChanged: '0.66'
1856
+
1857
+ Style/RedundantHeredocDelimiterQuotes:
1858
+ Description: 'Checks for redundant heredoc delimiter quotes.'
1859
+ Enabled: true
1860
+ VersionAdded: '1.45'
1861
+
1862
+ Style/RedundantInitialize:
1863
+ Description: 'Checks for redundant `initialize` methods.'
1864
+ Enabled: true
1865
+ Safe: false
1866
+ AllowComments: true
1867
+ VersionAdded: '1.27'
1868
+ VersionChanged: '1.28'
1869
+
1870
+ Style/RedundantInterpolation:
1871
+ Description: 'Checks for strings that are just an interpolated expression.'
1872
+ Enabled: true
1873
+ SafeAutoCorrect: false
1874
+ VersionAdded: '0.76'
1875
+ VersionChanged: '1.30'
1876
+
1877
+ Style/RedundantParentheses:
1878
+ Description: "Checks for parentheses that seem not to serve any purpose."
1879
+ Enabled: true
1880
+ VersionAdded: '0.36'
1881
+
1882
+ Style/RedundantPercentQ:
1883
+ Description: 'Checks for %q/%Q when single quotes or double quotes would do.'
1884
+ StyleGuide: '#percent-q'
1885
+ Enabled: true
1886
+ VersionAdded: '0.76'
1887
+
1888
+ Style/RedundantRegexpCharacterClass:
1889
+ Description: 'Checks for unnecessary single-element Regexp character classes.'
1890
+ Enabled: true
1891
+ VersionAdded: '0.85'
1892
+
1893
+ Style/RedundantRegexpEscape:
1894
+ Description: 'Checks for redundant escapes in Regexps.'
1895
+ Enabled: true
1896
+ VersionAdded: '0.85'
1897
+
1898
+ Style/RedundantReturn:
1899
+ Description: "Don't use return where it's not required."
1900
+ StyleGuide: '#no-explicit-return'
1901
+ Enabled: false
1902
+ VersionAdded: '0.10'
1903
+ VersionChanged: '0.14'
1904
+ # When `true` allows code like `return x, y`.
1905
+ AllowMultipleReturnValues: false
1906
+
1907
+ Style/RedundantSelf:
1908
+ Description: "Don't use self where it's not needed."
1909
+ StyleGuide: '#no-self-unless-required'
1910
+ Enabled: true
1911
+ VersionAdded: '0.10'
1912
+ VersionChanged: '0.13'
1913
+
1914
+ Style/RedundantSelfAssignment:
1915
+ Description: 'Checks for places where redundant assignments are made for in place modification methods.'
1916
+ Enabled: true
1917
+ Safe: false
1918
+ VersionAdded: '0.90'
1919
+
1920
+ Style/RedundantSelfAssignmentBranch:
1921
+ Description: 'Checks for places where conditional branch makes redundant self-assignment.'
1922
+ Enabled: true
1923
+ VersionAdded: '1.19'
1924
+
1925
+ Style/RedundantSort:
1926
+ Description: >-
1927
+ Use `min` instead of `sort.first`,
1928
+ `max_by` instead of `sort_by...last`, etc.
1929
+ Enabled: true
1930
+ VersionAdded: '0.76'
1931
+ VersionChanged: '1.22'
1932
+ Safe: false
1933
+
1934
+ Style/RedundantSortBy:
1935
+ Description: 'Use `sort` instead of `sort_by { |x| x }`.'
1936
+ Enabled: true
1937
+ VersionAdded: '0.36'
1938
+
1939
+ Style/RedundantStringEscape:
1940
+ Description: 'Checks for redundant escapes in string literals.'
1941
+ Enabled: true
1942
+ VersionAdded: '1.37'
1943
+
1944
+ Style/RegexpLiteral:
1945
+ Description: 'Use / or %r around regular expressions.'
1946
+ StyleGuide: '#percent-r'
1947
+ Enabled: true
1948
+ VersionAdded: '0.9'
1949
+ VersionChanged: '0.30'
1950
+ EnforcedStyle: slashes
1951
+ # slashes: Always use slashes.
1952
+ # percent_r: Always use `%r`.
1953
+ # mixed: Use slashes on single-line regexes, and `%r` on multi-line regexes.
1954
+ SupportedStyles:
1955
+ - slashes
1956
+ - percent_r
1957
+ - mixed
1958
+ # If `false`, the cop will always recommend using `%r` if one or more slashes
1959
+ # are found in the regexp string.
1960
+ AllowInnerSlashes: false
1961
+
1962
+ Style/RequireOrder:
1963
+ Description: Sort `require` and `require_relative` in alphabetical order.
1964
+ Enabled: true
1965
+ SafeAutoCorrect: false
1966
+ VersionAdded: '1.40'
1967
+
1968
+ Style/RescueModifier:
1969
+ Description: 'Avoid using rescue in its modifier form.'
1970
+ StyleGuide: '#no-rescue-modifiers'
1971
+ Enabled: true
1972
+ VersionAdded: '0.9'
1973
+ VersionChanged: '0.34'
1974
+
1975
+ Style/RescueStandardError:
1976
+ Description: 'Avoid rescuing without specifying an error class.'
1977
+ Enabled: true
1978
+ VersionAdded: '0.52'
1979
+ EnforcedStyle: implicit
1980
+ # implicit: Do not include the error class, `rescue`
1981
+ # explicit: Require an error class `rescue StandardError`
1982
+ SupportedStyles:
1983
+ - implicit
1984
+ - explicit
1985
+
1986
+ Style/ReturnNil:
1987
+ Description: 'Use return instead of return nil.'
1988
+ Enabled: false
1989
+ EnforcedStyle: return
1990
+ SupportedStyles:
1991
+ - return
1992
+ - return_nil
1993
+ VersionAdded: '0.50'
1994
+
1995
+ Style/SafeNavigation:
1996
+ Description: >-
1997
+ Transforms usages of a method call safeguarded by
1998
+ a check for the existence of the object to
1999
+ safe navigation (`&.`).
2000
+ Autocorrection is unsafe as it assumes the object will
2001
+ be `nil` or truthy, but never `false`.
2002
+ Enabled: true
2003
+ VersionAdded: '0.43'
2004
+ VersionChanged: '1.27'
2005
+ # Safe navigation may cause a statement to start returning `nil` in addition
2006
+ # to whatever it used to return.
2007
+ ConvertCodeThatCanStartToReturnNil: false
2008
+ AllowedMethods:
2009
+ - present?
2010
+ - blank?
2011
+ - presence
2012
+ - try
2013
+ - try!
2014
+ SafeAutoCorrect: false
2015
+ # Maximum length of method chains for register an offense.
2016
+ MaxChainLength: 2
2017
+
2018
+ Style/Sample:
2019
+ Description: >-
2020
+ Use `sample` instead of `shuffle.first`,
2021
+ `shuffle.last`, and `shuffle[Integer]`.
2022
+ Reference: 'https://github.com/JuanitoFatas/fast-ruby#arrayshufflefirst-vs-arraysample-code'
2023
+ Enabled: true
2024
+ VersionAdded: '0.30'
2025
+
2026
+ Style/SelectByRegexp:
2027
+ Description: 'Prefer grep/grep_v to select/reject with a regexp match.'
2028
+ Enabled: true
2029
+ SafeAutoCorrect: false
2030
+ VersionAdded: '1.22'
2031
+
2032
+ Style/SelfAssignment:
2033
+ Description: >-
2034
+ Checks for places where self-assignment shorthand should have
2035
+ been used.
2036
+ StyleGuide: '#self-assignment'
2037
+ Enabled: true
2038
+ VersionAdded: '0.19'
2039
+ VersionChanged: '0.29'
2040
+
2041
+ Style/Semicolon:
2042
+ Description: "Don't use semicolons to terminate expressions."
2043
+ StyleGuide: '#no-semicolon'
2044
+ Enabled: true
2045
+ VersionAdded: '0.9'
2046
+ VersionChanged: '0.19'
2047
+ # Allow `;` to separate several expressions on the same line.
2048
+ AllowAsExpressionSeparator: false
2049
+
2050
+ Style/Send:
2051
+ Description: 'Prefer `Object#__send__` or `Object#public_send` to `send`, as `send` may overlap with existing methods.'
2052
+ StyleGuide: '#prefer-public-send'
2053
+ Enabled: true
2054
+ VersionAdded: '0.33'
2055
+
2056
+ Style/SignalException:
2057
+ Description: 'Checks for proper usage of fail and raise.'
2058
+ StyleGuide: '#prefer-raise-over-fail'
2059
+ Enabled: true
2060
+ VersionAdded: '0.11'
2061
+ VersionChanged: '0.37'
2062
+ EnforcedStyle: only_raise
2063
+ SupportedStyles:
2064
+ - only_raise
2065
+ - only_fail
2066
+ - semantic
2067
+
2068
+ Style/SingleArgumentDig:
2069
+ Description: 'Avoid using single argument dig method.'
2070
+ Enabled: false
2071
+ VersionAdded: '0.89'
2072
+ Safe: false
2073
+
2074
+ Style/SingleLineBlockParams:
2075
+ Description: 'Enforces the names of some block params.'
2076
+ Enabled: false
2077
+ VersionAdded: '0.16'
2078
+ VersionChanged: '1.6'
2079
+ Methods:
2080
+ - reduce:
2081
+ - acc
2082
+ - elem
2083
+ - inject:
2084
+ - acc
2085
+ - elem
2086
+
2087
+ Style/SingleLineMethods:
2088
+ Description: 'Avoid single-line methods.'
2089
+ StyleGuide: '#no-single-line-methods'
2090
+ Enabled: true
2091
+ VersionAdded: '0.9'
2092
+ VersionChanged: '1.8'
2093
+ AllowIfMethodIsEmpty: true
2094
+
2095
+ Style/SlicingWithRange:
2096
+ Description: 'Checks array slicing is done with endless ranges when suitable.'
2097
+ Enabled: true
2098
+ VersionAdded: '0.83'
2099
+ Safe: false
2100
+
2101
+ Style/SoleNestedConditional:
2102
+ Description: >-
2103
+ Finds sole nested conditional nodes
2104
+ which can be merged into outer conditional node.
2105
+ Enabled: true
2106
+ VersionAdded: '0.89'
2107
+ VersionChanged: '1.5'
2108
+ AllowModifier: true
2109
+
2110
+ Style/SpecialGlobalVars:
2111
+ Description: 'Avoid Perl-style global variables.'
2112
+ StyleGuide: '#no-cryptic-perlisms'
2113
+ Enabled: true
2114
+ VersionAdded: '0.13'
2115
+ VersionChanged: '0.36'
2116
+ SafeAutoCorrect: false
2117
+ RequireEnglish: true
2118
+ EnforcedStyle: use_english_names
2119
+ SupportedStyles:
2120
+ - use_perl_names
2121
+ - use_english_names
2122
+ - use_builtin_english_names
2123
+
2124
+ Style/StabbyLambdaParentheses:
2125
+ Description: 'Check for the usage of parentheses around stabby lambda arguments.'
2126
+ StyleGuide: '#stabby-lambda-with-args'
2127
+ Enabled: true
2128
+ VersionAdded: '0.35'
2129
+ EnforcedStyle: require_parentheses
2130
+ SupportedStyles:
2131
+ - require_parentheses
2132
+ - require_no_parentheses
2133
+
2134
+ Style/StaticClass:
2135
+ Description: 'Prefer modules to classes with only class methods.'
2136
+ StyleGuide: '#modules-vs-classes'
2137
+ Enabled: true
2138
+ Safe: false
2139
+ VersionAdded: '1.3'
2140
+
2141
+ Style/StderrPuts:
2142
+ Description: 'Use `warn` instead of `$stderr.puts`.'
2143
+ StyleGuide: '#warn'
2144
+ Enabled: true
2145
+ VersionAdded: '0.51'
2146
+
2147
+ Style/StringChars:
2148
+ Description: 'Checks for uses of `String#split` with empty string or regexp literal argument.'
2149
+ StyleGuide: '#string-chars'
2150
+ Enabled: true
2151
+ Safe: false
2152
+ VersionAdded: '1.12'
2153
+
2154
+ Style/StringConcatenation:
2155
+ Description: 'Checks for places where string concatenation can be replaced with string interpolation.'
2156
+ StyleGuide: '#string-interpolation'
2157
+ Enabled: true
2158
+ Safe: false
2159
+ VersionAdded: '0.89'
2160
+ VersionChanged: '1.18'
2161
+ Mode: aggressive
2162
+
2163
+ Style/StringHashKeys:
2164
+ Description: 'Prefer symbols instead of strings as hash keys.'
2165
+ StyleGuide: '#symbols-as-keys'
2166
+ Enabled: false
2167
+ VersionAdded: '0.52'
2168
+ VersionChanged: '0.75'
2169
+ Safe: false
2170
+
2171
+ Style/StringLiterals:
2172
+ Description: 'Checks if uses of quotes match the configured preference.'
2173
+ StyleGuide: '#consistent-string-literals'
2174
+ Enabled: true
2175
+ VersionAdded: '0.9'
2176
+ VersionChanged: '0.36'
2177
+ EnforcedStyle: single_quotes
2178
+ SupportedStyles:
2179
+ - single_quotes
2180
+ - double_quotes
2181
+ # If `true`, strings which span multiple lines using `\` for continuation must
2182
+ # use the same type of quotes on each line.
2183
+ ConsistentQuotesInMultiline: false
2184
+
2185
+ Style/StringLiteralsInInterpolation:
2186
+ Description: >-
2187
+ Checks if uses of quotes inside expressions in interpolated
2188
+ strings match the configured preference.
2189
+ Enabled: true
2190
+ VersionAdded: '0.27'
2191
+ EnforcedStyle: single_quotes
2192
+ SupportedStyles:
2193
+ - single_quotes
2194
+ - double_quotes
2195
+
2196
+ Style/StringMethods:
2197
+ Description: 'Checks if configured preferred methods are used over non-preferred.'
2198
+ Enabled: true
2199
+ VersionAdded: '0.34'
2200
+ VersionChanged: '0.34'
2201
+ # Mapping from undesired method to desired_method
2202
+ # e.g. to use `to_sym` over `intern`:
2203
+ #
2204
+ # StringMethods:
2205
+ # PreferredMethods:
2206
+ # intern: to_sym
2207
+ PreferredMethods:
2208
+ intern: to_sym
2209
+
2210
+ Style/Strip:
2211
+ Description: 'Use `strip` instead of `lstrip.rstrip`.'
2212
+ Enabled: true
2213
+ VersionAdded: '0.36'
2214
+
2215
+ Style/StructInheritance:
2216
+ Description: 'Checks for inheritance from Struct.new.'
2217
+ StyleGuide: '#no-extend-struct-new'
2218
+ Enabled: true
2219
+ SafeAutoCorrect: false
2220
+ VersionAdded: '0.29'
2221
+ VersionChanged: '1.20'
2222
+
2223
+ Style/SwapValues:
2224
+ Description: 'Enforces the use of shorthand-style swapping of 2 variables.'
2225
+ StyleGuide: '#values-swapping'
2226
+ Enabled: true
2227
+ VersionAdded: '1.1'
2228
+ SafeAutoCorrect: false
2229
+
2230
+ Style/SymbolArray:
2231
+ Description: 'Use %i or %I for arrays of symbols.'
2232
+ StyleGuide: '#percent-i'
2233
+ Enabled: true
2234
+ VersionAdded: '0.9'
2235
+ VersionChanged: '0.49'
2236
+ EnforcedStyle: percent
2237
+ MinSize: 2
2238
+ SupportedStyles:
2239
+ - percent
2240
+ - brackets
2241
+
2242
+ Style/SymbolLiteral:
2243
+ Description: 'Use plain symbols instead of string symbols when possible.'
2244
+ Enabled: true
2245
+ VersionAdded: '0.30'
2246
+
2247
+ Style/SymbolProc:
2248
+ Description: 'Use symbols as procs instead of blocks when possible.'
2249
+ Enabled: true
2250
+ Safe: false
2251
+ VersionAdded: '0.26'
2252
+ VersionChanged: '1.40'
2253
+ AllowMethodsWithArguments: false
2254
+ # A list of method names to be always allowed by the check.
2255
+ # The names should be fairly unique, otherwise you'll end up ignoring lots of code.
2256
+ AllowedMethods:
2257
+ - define_method
2258
+ AllowedPatterns: [ ]
2259
+ IgnoredMethods: [ ] # deprecated
2260
+ AllowComments: false
2261
+
2262
+ Style/TernaryParentheses:
2263
+ Description: 'Checks for use of parentheses around ternary conditions.'
2264
+ Enabled: true
2265
+ VersionAdded: '0.42'
2266
+ VersionChanged: '0.46'
2267
+ EnforcedStyle: require_parentheses_when_complex
2268
+ SupportedStyles:
2269
+ - require_parentheses
2270
+ - require_no_parentheses
2271
+ - require_parentheses_when_complex
2272
+ AllowSafeAssignment: false
2273
+
2274
+ Style/TopLevelMethodDefinition:
2275
+ Description: 'Looks for top-level method definitions.'
2276
+ StyleGuide: '#top-level-methods'
2277
+ Enabled: false
2278
+ VersionAdded: '1.15'
2279
+
2280
+ Style/TrailingBodyOnClass:
2281
+ Description: 'Class body goes below class statement.'
2282
+ Enabled: true
2283
+ VersionAdded: '0.53'
2284
+
2285
+ Style/TrailingBodyOnMethodDefinition:
2286
+ Description: 'Method body goes below definition.'
2287
+ Enabled: true
2288
+ VersionAdded: '0.52'
2289
+
2290
+ Style/TrailingBodyOnModule:
2291
+ Description: 'Module body goes below module statement.'
2292
+ Enabled: true
2293
+ VersionAdded: '0.53'
2294
+
2295
+ Style/TrailingCommaInArguments:
2296
+ Description: 'Checks for trailing comma in argument lists.'
2297
+ StyleGuide: '#no-trailing-params-comma'
2298
+ Enabled: true
2299
+ VersionAdded: '0.36'
2300
+ # If `comma`, the cop requires a comma after the last argument, but only for
2301
+ # parenthesized method calls where each argument is on its own line.
2302
+ # If `consistent_comma`, the cop requires a comma after the last argument,
2303
+ # for all parenthesized method calls with arguments.
2304
+ EnforcedStyleForMultiline: no_comma
2305
+ SupportedStylesForMultiline:
2306
+ - comma
2307
+ - consistent_comma
2308
+ - no_comma
2309
+
2310
+ Style/TrailingCommaInArrayLiteral:
2311
+ Description: 'Checks for trailing comma in array literals.'
2312
+ StyleGuide: '#no-trailing-array-commas'
2313
+ Enabled: true
2314
+ VersionAdded: '0.53'
2315
+ # If `comma`, the cop requires a comma after the last item in an array,
2316
+ # but only when each item is on its own line.
2317
+ # If `consistent_comma`, the cop requires a comma after the last item of all
2318
+ # non-empty, multiline array literals.
2319
+ EnforcedStyleForMultiline: no_comma
2320
+ SupportedStylesForMultiline:
2321
+ - comma
2322
+ - consistent_comma
2323
+ - no_comma
2324
+
2325
+ Style/TrailingCommaInBlockArgs:
2326
+ Description: 'Checks for useless trailing commas in block arguments.'
2327
+ Enabled: true
2328
+ Safe: false
2329
+ VersionAdded: '0.81'
2330
+
2331
+ Style/TrailingCommaInHashLiteral:
2332
+ Description: 'Checks for trailing comma in hash literals.'
2333
+ Enabled: true
2334
+ # If `comma`, the cop requires a comma after the last item in a hash,
2335
+ # but only when each item is on its own line.
2336
+ # If `consistent_comma`, the cop requires a comma after the last item of all
2337
+ # non-empty, multiline hash literals.
2338
+ EnforcedStyleForMultiline: no_comma
2339
+ SupportedStylesForMultiline:
2340
+ - comma
2341
+ - consistent_comma
2342
+ - no_comma
2343
+ VersionAdded: '0.53'
2344
+
2345
+ Style/TrailingMethodEndStatement:
2346
+ Description: 'Checks for trailing end statement on line of method body.'
2347
+ Enabled: true
2348
+ VersionAdded: '0.52'
2349
+
2350
+ Style/TrailingUnderscoreVariable:
2351
+ Description: >-
2352
+ Checks for the usage of unneeded trailing underscores at the
2353
+ end of parallel variable assignment.
2354
+ AllowNamedUnderscoreVariables: true
2355
+ Enabled: true
2356
+ VersionAdded: '0.31'
2357
+ VersionChanged: '0.35'
2358
+
2359
+ # `TrivialAccessors` requires exact name matches and doesn't allow
2360
+ # predicated methods by default.
2361
+ Style/TrivialAccessors:
2362
+ Description: 'Prefer attr_* methods to trivial readers/writers.'
2363
+ StyleGuide: '#attr_family'
2364
+ Enabled: true
2365
+ VersionAdded: '0.9'
2366
+ VersionChanged: '1.15'
2367
+ # When set to `false` the cop will suggest the use of accessor methods
2368
+ # in situations like:
2369
+ #
2370
+ # def name
2371
+ # @other_name
2372
+ # end
2373
+ #
2374
+ # This way you can uncover "hidden" attributes in your code.
2375
+ ExactNameMatch: true
2376
+ AllowPredicates: true
2377
+ # Allows trivial writers that don't end in an equal sign. e.g.
2378
+ #
2379
+ # def on_exception(action)
2380
+ # @on_exception=action
2381
+ # end
2382
+ # on_exception :restart
2383
+ #
2384
+ # Commonly used in DSLs
2385
+ AllowDSLWriters: true
2386
+ IgnoreClassMethods: false
2387
+ AllowedMethods:
2388
+ - to_ary
2389
+ - to_a
2390
+ - to_c
2391
+ - to_enum
2392
+ - to_h
2393
+ - to_hash
2394
+ - to_i
2395
+ - to_int
2396
+ - to_io
2397
+ - to_open
2398
+ - to_path
2399
+ - to_proc
2400
+ - to_r
2401
+ - to_regexp
2402
+ - to_str
2403
+ - to_s
2404
+ - to_sym
2405
+
2406
+ Style/UnlessElse:
2407
+ Description: >-
2408
+ Do not use unless with else. Rewrite these with the positive
2409
+ case first.
2410
+ StyleGuide: '#no-else-with-unless'
2411
+ Enabled: true
2412
+ VersionAdded: '0.9'
2413
+
2414
+ Style/UnlessLogicalOperators:
2415
+ Description: >-
2416
+ Checks for use of logical operators in an unless condition.
2417
+ Enabled: true
2418
+ VersionAdded: '1.11'
2419
+ EnforcedStyle: forbid_logical_operators
2420
+ SupportedStyles:
2421
+ - forbid_mixed_logical_operators
2422
+ - forbid_logical_operators
2423
+
2424
+ Style/UnpackFirst:
2425
+ Description: >-
2426
+ Checks for accessing the first element of `String#unpack`
2427
+ instead of using `unpack1`.
2428
+ Enabled: true
2429
+ VersionAdded: '0.54'
2430
+
2431
+ Style/VariableInterpolation:
2432
+ Description: >-
2433
+ Don't interpolate global, instance and class variables
2434
+ directly in strings.
2435
+ StyleGuide: '#curlies-interpolate'
2436
+ Enabled: true
2437
+ VersionAdded: '0.9'
2438
+ VersionChanged: '0.20'
2439
+
2440
+ Style/WhenThen:
2441
+ Description: 'Use when x then ... for one-line cases.'
2442
+ StyleGuide: '#no-when-semicolons'
2443
+ Enabled: true
2444
+ VersionAdded: '0.9'
2445
+
2446
+ Style/WhileUntilDo:
2447
+ Description: 'Checks for redundant do after while or until.'
2448
+ StyleGuide: '#no-multiline-while-do'
2449
+ Enabled: true
2450
+ VersionAdded: '0.9'
2451
+
2452
+ Style/WhileUntilModifier:
2453
+ Description: >-
2454
+ Favor modifier while/until usage when you have a
2455
+ single-line body.
2456
+ StyleGuide: '#while-as-a-modifier'
2457
+ Enabled: false
2458
+ VersionAdded: '0.9'
2459
+ VersionChanged: '0.30'
2460
+
2461
+ Style/WordArray:
2462
+ Description: 'Use %w or %W for arrays of words.'
2463
+ StyleGuide: '#percent-w'
2464
+ Enabled: true
2465
+ VersionAdded: '0.9'
2466
+ VersionChanged: '1.19'
2467
+ EnforcedStyle: percent
2468
+ SupportedStyles:
2469
+ # percent style: %w(word1 word2)
2470
+ - percent
2471
+ # bracket style: ['word1', 'word2']
2472
+ - brackets
2473
+ # The `MinSize` option causes the `WordArray` rule to be ignored for arrays
2474
+ # smaller than a certain size. The rule is only applied to arrays
2475
+ # whose element count is greater than or equal to `MinSize`.
2476
+ MinSize: 2
2477
+ # The regular expression `WordRegex` decides what is considered a word.
2478
+ WordRegex: !ruby/regexp '/\A(?:\p{Word}|\p{Word}-\p{Word}|\n|\t)+\z/'
2479
+
2480
+ Style/YodaCondition:
2481
+ Description: 'Forbid or enforce yoda conditions.'
2482
+ Reference: 'https://en.wikipedia.org/wiki/Yoda_conditions'
2483
+ Enabled: false
2484
+ EnforcedStyle: forbid_for_all_comparison_operators
2485
+ SupportedStyles:
2486
+ # check all comparison operators
2487
+ - forbid_for_all_comparison_operators
2488
+ # check only equality operators: `!=` and `==`
2489
+ - forbid_for_equality_operators_only
2490
+ # enforce yoda for all comparison operators
2491
+ - require_for_all_comparison_operators
2492
+ # enforce yoda only for equality operators: `!=` and `==`
2493
+ - require_for_equality_operators_only
2494
+ Safe: false
2495
+ VersionAdded: '0.49'
2496
+ VersionChanged: '0.75'
2497
+
2498
+ Style/ZeroLengthPredicate:
2499
+ Description: 'Use #empty? when testing for objects of length 0.'
2500
+ Enabled: true
2501
+ Safe: false
2502
+ VersionAdded: '0.37'
2503
+ VersionChanged: '0.39'