chefstyle 1.1.1 → 1.3.2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 15d98283fde06a4dc3bc19eda837b8409e6ada67584a4913c45690b33e12c298
4
- data.tar.gz: bd6b312173272d080f5de1488699d77ce97e2eddef6947f80ac068f4149db7ec
3
+ metadata.gz: 53fa6bb2f80dbe12ea389014623ddc52076c9432383e533f21e5c571e069c14d
4
+ data.tar.gz: 064cdbbf2ba18a12b09e5db1d4a508bab1c27e36a91007e0c5e03aeaed14b36f
5
5
  SHA512:
6
- metadata.gz: 78585ac2264d603553124462df2385fb6938d715f6b914445896929e6df20956d42ee9d050d058ccb2e3c0e973781c92187a3e4bc895ffa6f846846783389a7a
7
- data.tar.gz: 72dec6e3839c934634171b7426c6efb57e6fc0847b8eec4587f9fd07efc4cf0fb63b01a6319fc0552a017c2b1f5f828fb53b50240aab74fe2e0a5b44f1071939
6
+ metadata.gz: 7cc1e3008f9624c9868f5d13d4a0010b932c4ce4a41d3b4368405c62b808acf34b712914b580e0334dbdfdb19510da7840866a0a126656ef84eb2a5b829c1f0f
7
+ data.tar.gz: 27707feacf6dcd7e0890d95a07fcab77d44d7bb474f56a5e6f4f1c363161683c48881946b920c660b5fe277bf18a8980cdc67379b458d242406803dd4d0c3be1
@@ -1,6 +1,5 @@
1
1
  #!/usr/bin/env ruby
2
- # -*- encoding: utf-8 -*-
3
-
2
+ # frozen_string_literal: true
4
3
  $LOAD_PATH.unshift File.join(File.dirname(__FILE__), %w{.. lib})
5
4
 
6
5
  require "chefstyle"
@@ -1,4 +1,4 @@
1
- # coding: utf-8
1
+ # frozen_string_literal: true
2
2
  lib = File.expand_path("../lib", __FILE__)
3
3
  $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
4
  require "chefstyle/version"
@@ -18,8 +18,5 @@ Gem::Specification.new do |spec|
18
18
  spec.executables = %w{chefstyle}
19
19
  spec.require_paths = ["lib"]
20
20
 
21
- spec.add_development_dependency "bundler"
22
- spec.add_development_dependency "rake", ">= 12.0"
23
- spec.add_development_dependency "rspec"
24
21
  spec.add_dependency("rubocop", Chefstyle::RUBOCOP_VERSION)
25
22
  end
@@ -482,11 +482,15 @@ Style/WhileUntilModifier:
482
482
  Style/WordArray:
483
483
  Enabled: true
484
484
 
485
+ # we are ruby > 2.0 only so we can remove encoding comments for utf-8
486
+ Style/Encoding:
487
+ Enabled: true
488
+
485
489
  #
486
490
  # Disabled Style
487
491
  #
488
492
 
489
- # FIXME: we need to enable this
493
+ # reduces memory usage, but isn't a simple autocorrect so we need to do this one project at a time
490
494
  Style/FrozenStringLiteralComment:
491
495
  Enabled: false
492
496
 
@@ -529,10 +533,6 @@ Style/FormatString:
529
533
  Style/IfUnlessModifier:
530
534
  Enabled: false
531
535
 
532
- # we are ruby > 2.0 only so can disable the Encoding cop
533
- Style/Encoding:
534
- Enabled: false
535
-
536
536
  # Dan is -1 on this one: https://github.com/chef/chef/pull/4526#issuecomment-179950045
537
537
  Layout/IndentFirstHashElement:
538
538
  Enabled: false
@@ -554,7 +554,7 @@ Style/RescueModifier:
554
554
  Style/AsciiComments:
555
555
  Enabled: false
556
556
 
557
- # Parens around ternaries often make them more readable and reduces cognitive load over operator precidence
557
+ # Parens around ternaries often make them more readable and reduces cognitive load over operator precedence
558
558
  Style/TernaryParentheses:
559
559
  Enabled: false
560
560
 
@@ -631,4 +631,28 @@ Style/CommentedKeyword:
631
631
 
632
632
  # make sure we catch this Ruby 3.0 breaking change now
633
633
  Lint/DeprecatedOpenSSLConstant:
634
- Enabled: true
634
+ Enabled: true
635
+
636
+ ChefRuby/Ruby27KeywordArgumentWarnings:
637
+ Description: Pass options to shell_out helpers without the brackets to avoid Ruby 2.7 deprecation warnings.
638
+ Enabled: true
639
+ VersionAdded: '1.3.0'
640
+
641
+ ChefRuby/UnlessDefinedRequire:
642
+ Description: Workaround RubyGems' slow requires by only running require if the constant isn't already defined
643
+ Enabled: true
644
+ VersionAdded: '1.3.0'
645
+ Include:
646
+ - 'lib/**/*'
647
+
648
+ ChefRuby/GemspecRequireRubygems:
649
+ Description: Rubygems does not need to be required in a Gemspec
650
+ Enabled: true
651
+ VersionAdded: '1.3.0'
652
+ Include:
653
+ - '**/*.gemspec'
654
+
655
+ ChefRuby/RequireNetHttps:
656
+ Description: net/https is deprecated and just includes net/http and openssl. We should include those directly instead
657
+ Enabled: true
658
+ VersionAdded: '1.3.0'
@@ -53,6 +53,8 @@ Layout/EmptyLineAfterGuardClause:
53
53
  Enabled: false
54
54
  Layout/EmptyLineAfterMagicComment:
55
55
  Enabled: false
56
+ Layout/EmptyLineAfterMultilineCondition:
57
+ Enabled: false
56
58
  Layout/EmptyLineBetweenDefs:
57
59
  Enabled: false
58
60
  Layout/EmptyLinesAroundAccessModifier:
@@ -207,10 +209,14 @@ Lint/AssignmentInCondition:
207
209
  Enabled: false
208
210
  Lint/BigDecimalNew:
209
211
  Enabled: false
212
+ Lint/BinaryOperatorWithIdenticalOperands:
213
+ Enabled: false
210
214
  Lint/BooleanSymbol:
211
215
  Enabled: false
212
216
  Lint/CircularArgumentReference:
213
217
  Enabled: false
218
+ Lint/ConstantResolution:
219
+ Enabled: false
214
220
  Lint/Debugger:
215
221
  Enabled: false
216
222
  Lint/DeprecatedClassMethods:
@@ -221,18 +227,28 @@ Lint/DisjunctiveAssignmentInConstructor:
221
227
  Enabled: false
222
228
  Lint/DuplicateCaseCondition:
223
229
  Enabled: false
230
+ Lint/DuplicateElsifCondition:
231
+ Enabled: false
224
232
  Lint/DuplicateHashKey:
225
233
  Enabled: false
226
234
  Lint/DuplicateMethods:
227
235
  Enabled: false
236
+ Lint/DuplicateRequire:
237
+ Enabled: false
238
+ Lint/DuplicateRescueException:
239
+ Enabled: false
228
240
  Lint/EachWithObjectArgument:
229
241
  Enabled: false
230
242
  Lint/ElseLayout:
231
243
  Enabled: false
244
+ Lint/EmptyConditionalBody:
245
+ Enabled: false
232
246
  Lint/EmptyEnsure:
233
247
  Enabled: false
234
248
  Lint/EmptyExpression:
235
249
  Enabled: false
250
+ Lint/EmptyFile:
251
+ Enabled: false
236
252
  Lint/EmptyInterpolation:
237
253
  Enabled: false
238
254
  Lint/EmptyWhen:
@@ -243,6 +259,8 @@ Lint/ErbNewArguments:
243
259
  Enabled: false
244
260
  Lint/FlipFlop:
245
261
  Enabled: false
262
+ Lint/FloatComparison:
263
+ Enabled: false
246
264
  Lint/FloatOutOfRange:
247
265
  Enabled: false
248
266
  Lint/FormatParameterMismatch:
@@ -265,6 +283,8 @@ Lint/Loop:
265
283
  Enabled: false
266
284
  Lint/MissingCopEnableDirective:
267
285
  Enabled: false
286
+ Lint/MissingSuper:
287
+ Enabled: false
268
288
  Lint/MixedRegexpCaptureTypes:
269
289
  Enabled: false
270
290
  Lint/MultipleComparison:
@@ -283,6 +303,8 @@ Lint/NumberConversion:
283
303
  Enabled: false
284
304
  Lint/OrderedMagicComments:
285
305
  Enabled: false
306
+ Lint/OutOfRangeRegexpRef:
307
+ Enabled: false
286
308
  Lint/ParenthesesAsGroupedExpression:
287
309
  Enabled: false
288
310
  Lint/PercentStringArray:
@@ -325,6 +347,8 @@ Lint/SafeNavigationWithEmpty:
325
347
  Enabled: false
326
348
  Lint/ScriptPermission:
327
349
  Enabled: false
350
+ Lint/SelfAssignment:
351
+ Enabled: false
328
352
  Lint/SendWithMixinArgument:
329
353
  Enabled: false
330
354
  Lint/ShadowedArgument:
@@ -341,12 +365,18 @@ Lint/Syntax:
341
365
  Enabled: false
342
366
  Lint/ToJSON:
343
367
  Enabled: false
368
+ Lint/TopLevelReturnWithArgument:
369
+ Enabled: false
370
+ Lint/TrailingCommaInAttributeDeclaration:
371
+ Enabled: false
344
372
  Lint/UnderscorePrefixedVariableName:
345
373
  Enabled: false
346
374
  Lint/UnifiedInteger:
347
375
  Enabled: false
348
376
  Lint/UnreachableCode:
349
377
  Enabled: false
378
+ Lint/UnreachableLoop:
379
+ Enabled: false
350
380
  Lint/UnusedBlockArgument:
351
381
  Enabled: false
352
382
  Lint/UnusedMethodArgument:
@@ -359,10 +389,10 @@ Lint/UselessAccessModifier:
359
389
  Enabled: false
360
390
  Lint/UselessAssignment:
361
391
  Enabled: false
362
- Lint/UselessComparison:
363
- Enabled: false
364
392
  Lint/UselessElseWithoutRescue:
365
393
  Enabled: false
394
+ Lint/UselessMethodDefinition:
395
+ Enabled: false
366
396
  Lint/UselessSetterCall:
367
397
  Enabled: false
368
398
  Lint/Void:
@@ -419,10 +449,14 @@ Naming/VariableNumber:
419
449
  Enabled: false
420
450
  Style/AccessModifierDeclarations:
421
451
  Enabled: false
452
+ Style/AccessorGrouping:
453
+ Enabled: false
422
454
  Style/Alias:
423
455
  Enabled: false
424
456
  Style/AndOr:
425
457
  Enabled: false
458
+ Style/ArrayCoercion:
459
+ Enabled: false
426
460
  Style/ArrayJoin:
427
461
  Enabled: false
428
462
  Style/AsciiComments:
@@ -435,12 +469,16 @@ Style/BarePercentLiterals:
435
469
  Enabled: false
436
470
  Style/BeginBlock:
437
471
  Enabled: false
472
+ Style/BisectedAttrAccessor:
473
+ Enabled: false
438
474
  Style/BlockComments:
439
475
  Enabled: false
440
476
  Style/BlockDelimiters:
441
477
  Enabled: false
442
478
  Style/CaseEquality:
443
479
  Enabled: false
480
+ Style/CaseLikeIf:
481
+ Enabled: false
444
482
  Style/CharacterLiteral:
445
483
  Enabled: false
446
484
  Style/ClassAndModuleChildren:
@@ -449,6 +487,8 @@ Style/ClassCheck:
449
487
  Enabled: false
450
488
  Style/ClassMethods:
451
489
  Enabled: false
490
+ Style/ClassMethodsDefinitions:
491
+ Enabled: false
452
492
  Style/ClassVars:
453
493
  Enabled: false
454
494
  Style/CollectionMethods:
@@ -457,6 +497,8 @@ Style/ColonMethodCall:
457
497
  Enabled: false
458
498
  Style/ColonMethodDefinition:
459
499
  Enabled: false
500
+ Style/CombinableLoops:
501
+ Enabled: false
460
502
  Style/CommandLiteral:
461
503
  Enabled: false
462
504
  Style/CommentAnnotation:
@@ -511,6 +553,8 @@ Style/EvenOdd:
511
553
  Enabled: false
512
554
  Style/ExpandPathArguments:
513
555
  Enabled: false
556
+ Style/ExplicitBlockArgument:
557
+ Enabled: false
514
558
  Style/ExponentialNotation:
515
559
  Enabled: false
516
560
  Style/FloatDivision:
@@ -523,12 +567,18 @@ Style/FormatStringToken:
523
567
  Enabled: false
524
568
  Style/FrozenStringLiteralComment:
525
569
  Enabled: false
570
+ Style/GlobalStdStream:
571
+ Enabled: false
526
572
  Style/GlobalVars:
527
573
  Enabled: false
528
574
  Style/GuardClause:
529
575
  Enabled: false
576
+ Style/HashAsLastArrayItem:
577
+ Enabled: false
530
578
  Style/HashEachMethods:
531
579
  Enabled: false
580
+ Style/HashLikeCase:
581
+ Enabled: false
532
582
  Style/HashSyntax:
533
583
  Enabled: false
534
584
  Style/HashTransformKeys:
@@ -555,6 +605,8 @@ Style/InlineComment:
555
605
  Enabled: false
556
606
  Style/IpAddresses:
557
607
  Enabled: false
608
+ Style/KeywordParametersOrder:
609
+ Enabled: false
558
610
  Style/Lambda:
559
611
  Enabled: false
560
612
  Style/LambdaCall:
@@ -565,12 +617,20 @@ Style/MethodCallWithoutArgsParentheses:
565
617
  Enabled: false
566
618
  Style/MethodCallWithArgsParentheses:
567
619
  Enabled: false
620
+ Style/RedundantAssignment:
621
+ Enabled: false
622
+ Style/RedundantFetchBlock:
623
+ Enabled: false
624
+ Style/RedundantFileExtensionInRequire:
625
+ Enabled: false
626
+ Style/RedundantSelfAssignment:
627
+ Enabled: false
628
+ Style/SoleNestedConditional:
629
+ Enabled: false
568
630
  Style/MethodCalledOnDoEndBlock:
569
631
  Enabled: false
570
632
  Style/MethodDefParentheses:
571
633
  Enabled: false
572
- Style/MethodMissingSuper:
573
- Enabled: false
574
634
  Style/MinMax:
575
635
  Enabled: false
576
636
  Style/MissingElse:
@@ -635,6 +695,8 @@ Style/OptionHash:
635
695
  Enabled: false
636
696
  Style/OptionalArguments:
637
697
  Enabled: false
698
+ Style/OptionalBooleanParameter:
699
+ Enabled: false
638
700
  Style/ParallelAssignment:
639
701
  Enabled: false
640
702
  Style/ParenthesesAroundCondition:
@@ -703,6 +765,8 @@ Style/Send:
703
765
  Enabled: false
704
766
  Style/SignalException:
705
767
  Enabled: false
768
+ Style/SingleArgumentDig:
769
+ Enabled: false
706
770
  Style/SingleLineBlockParams:
707
771
  Enabled: false
708
772
  Style/SingleLineMethods:
@@ -715,6 +779,8 @@ Style/StabbyLambdaParentheses:
715
779
  Enabled: false
716
780
  Style/StderrPuts:
717
781
  Enabled: false
782
+ Style/StringConcatenation:
783
+ Enabled: false
718
784
  Style/StringHashKeys:
719
785
  Enabled: false
720
786
  Style/StringLiterals:
@@ -782,4 +848,4 @@ Security/MarshalLoad:
782
848
  Security/Open:
783
849
  Enabled: false
784
850
  Security/YAMLLoad:
785
- Enabled: false
851
+ Enabled: false
@@ -180,6 +180,9 @@ Bundler/OrderedGems:
180
180
  VersionAdded: '0.46'
181
181
  VersionChanged: '0.47'
182
182
  TreatCommentsAsGroupSeparators: true
183
+ # By default, "-" and "_" are ignored for order purposes.
184
+ # This can be overridden by setting this parameter to true.
185
+ ConsiderPunctuation: false
183
186
  Include:
184
187
  - '**/*.gemfile'
185
188
  - '**/Gemfile'
@@ -200,13 +203,17 @@ Gemspec/OrderedDependencies:
200
203
  Enabled: true
201
204
  VersionAdded: '0.51'
202
205
  TreatCommentsAsGroupSeparators: true
206
+ # By default, "-" and "_" are ignored for order purposes.
207
+ # This can be overridden by setting this parameter to true.
208
+ ConsiderPunctuation: false
203
209
  Include:
204
210
  - '**/*.gemspec'
205
211
 
206
212
  Gemspec/RequiredRubyVersion:
207
- Description: 'Checks that `required_ruby_version` of gemspec and `TargetRubyVersion` of .rubocop.yml are equal.'
213
+ Description: 'Checks that `required_ruby_version` of gemspec is specified and equal to `TargetRubyVersion` of .rubocop.yml.'
208
214
  Enabled: true
209
215
  VersionAdded: '0.52'
216
+ VersionChanged: '0.89'
210
217
  Include:
211
218
  - '**/*.gemspec'
212
219
 
@@ -392,7 +399,6 @@ Layout/DefEndAlignment:
392
399
  SupportedStylesAlignWith:
393
400
  - start_of_line
394
401
  - def
395
- AutoCorrect: false
396
402
  Severity: warning
397
403
 
398
404
  Layout/DotPosition:
@@ -429,6 +435,14 @@ Layout/EmptyLineAfterMagicComment:
429
435
  Enabled: true
430
436
  VersionAdded: '0.49'
431
437
 
438
+ Layout/EmptyLineAfterMultilineCondition:
439
+ Description: 'Enforces empty line after multiline condition.'
440
+ # This is disabled, because this style is not very common in practice.
441
+ Enabled: false
442
+ VersionAdded: '0.90'
443
+ Reference:
444
+ - https://github.com/airbnb/ruby#multiline-if-newline
445
+
432
446
  Layout/EmptyLineBetweenDefs:
433
447
  Description: 'Use empty lines between defs.'
434
448
  StyleGuide: '#empty-lines-between-methods'
@@ -548,7 +562,6 @@ Layout/EndAlignment:
548
562
  - keyword
549
563
  - variable
550
564
  - start_of_line
551
- AutoCorrect: false
552
565
  Severity: warning
553
566
 
554
567
  Layout/EndOfLine:
@@ -1228,7 +1241,7 @@ Layout/SpaceInsideBlockBraces:
1228
1241
 
1229
1242
  Layout/SpaceInsideHashLiteralBraces:
1230
1243
  Description: "Use spaces inside hash literal braces - or don't."
1231
- StyleGuide: '#spaces-operators'
1244
+ StyleGuide: '#spaces-braces'
1232
1245
  Enabled: true
1233
1246
  VersionAdded: '0.49'
1234
1247
  EnforcedStyle: space
@@ -1349,6 +1362,12 @@ Lint/BigDecimalNew:
1349
1362
  Enabled: true
1350
1363
  VersionAdded: '0.53'
1351
1364
 
1365
+ Lint/BinaryOperatorWithIdenticalOperands:
1366
+ Description: 'This cop checks for places where binary operator has identical operands.'
1367
+ Enabled: pending
1368
+ Safe: false
1369
+ VersionAdded: '0.89'
1370
+
1352
1371
  Lint/BooleanSymbol:
1353
1372
  Description: 'Check for `:true` and `:false` symbols.'
1354
1373
  Enabled: true
@@ -1361,6 +1380,15 @@ Lint/CircularArgumentReference:
1361
1380
  Enabled: true
1362
1381
  VersionAdded: '0.33'
1363
1382
 
1383
+ Lint/ConstantResolution:
1384
+ Description: 'Check that constants are fully qualified with `::`.'
1385
+ Enabled: false
1386
+ VersionAdded: '0.86'
1387
+ # Restrict this cop to only looking at certain names
1388
+ Only: []
1389
+ # Restrict this cop from only looking at certain names
1390
+ Ignore: []
1391
+
1364
1392
  Lint/Debugger:
1365
1393
  Description: 'Check for debugger calls.'
1366
1394
  Enabled: true
@@ -1382,12 +1410,18 @@ Lint/DisjunctiveAssignmentInConstructor:
1382
1410
  Enabled: true
1383
1411
  Safe: false
1384
1412
  VersionAdded: '0.62'
1413
+ VersionChanged: '0.88'
1385
1414
 
1386
1415
  Lint/DuplicateCaseCondition:
1387
1416
  Description: 'Do not repeat values in case conditionals.'
1388
1417
  Enabled: true
1389
1418
  VersionAdded: '0.45'
1390
1419
 
1420
+ Lint/DuplicateElsifCondition:
1421
+ Description: 'Do not repeat conditions used in if `elsif`.'
1422
+ Enabled: 'pending'
1423
+ VersionAdded: '0.88'
1424
+
1391
1425
  Lint/DuplicateHashKey:
1392
1426
  Description: 'Check for duplicate keys in hash literals.'
1393
1427
  Enabled: true
@@ -1399,6 +1433,16 @@ Lint/DuplicateMethods:
1399
1433
  Enabled: true
1400
1434
  VersionAdded: '0.29'
1401
1435
 
1436
+ Lint/DuplicateRequire:
1437
+ Description: 'Check for duplicate `require`s and `require_relative`s.'
1438
+ Enabled: pending
1439
+ VersionAdded: '0.90'
1440
+
1441
+ Lint/DuplicateRescueException:
1442
+ Description: 'Checks that there are no repeated exceptions used in `rescue` expressions.'
1443
+ Enabled: pending
1444
+ VersionAdded: '0.89'
1445
+
1402
1446
  Lint/EachWithObjectArgument:
1403
1447
  Description: 'Check for immutable argument given to each_with_object.'
1404
1448
  Enabled: true
@@ -1409,18 +1453,29 @@ Lint/ElseLayout:
1409
1453
  Enabled: true
1410
1454
  VersionAdded: '0.17'
1411
1455
 
1456
+ Lint/EmptyConditionalBody:
1457
+ Description: 'This cop checks for the presence of `if`, `elsif` and `unless` branches without a body.'
1458
+ Enabled: 'pending'
1459
+ AllowComments: true
1460
+ VersionAdded: '0.89'
1461
+
1412
1462
  Lint/EmptyEnsure:
1413
1463
  Description: 'Checks for empty ensure block.'
1414
1464
  Enabled: true
1415
1465
  VersionAdded: '0.10'
1416
1466
  VersionChanged: '0.48'
1417
- AutoCorrect: false
1418
1467
 
1419
1468
  Lint/EmptyExpression:
1420
1469
  Description: 'Checks for empty expressions.'
1421
1470
  Enabled: true
1422
1471
  VersionAdded: '0.45'
1423
1472
 
1473
+ Lint/EmptyFile:
1474
+ Description: 'Enforces that Ruby source files are not empty.'
1475
+ Enabled: pending
1476
+ AllowComments: true
1477
+ VersionAdded: '0.90'
1478
+
1424
1479
  Lint/EmptyInterpolation:
1425
1480
  Description: 'Checks for empty string interpolation.'
1426
1481
  Enabled: true
@@ -1452,6 +1507,12 @@ Lint/FlipFlop:
1452
1507
  Enabled: true
1453
1508
  VersionAdded: '0.16'
1454
1509
 
1510
+ Lint/FloatComparison:
1511
+ Description: 'Checks for the presence of precise comparison of floating point numbers.'
1512
+ StyleGuide: '#float-comparison'
1513
+ Enabled: pending
1514
+ VersionAdded: '0.89'
1515
+
1455
1516
  Lint/FloatOutOfRange:
1456
1517
  Description: >-
1457
1518
  Catches floating-point literals too large or small for Ruby to
@@ -1499,7 +1560,9 @@ Lint/InheritException:
1499
1560
  Lint/InterpolationCheck:
1500
1561
  Description: 'Raise warning for interpolation in single q strs.'
1501
1562
  Enabled: true
1563
+ Safe: false
1502
1564
  VersionAdded: '0.50'
1565
+ VersionChanged: '0.87'
1503
1566
 
1504
1567
  Lint/LiteralAsCondition:
1505
1568
  Description: 'Checks of literals used in conditions.'
@@ -1519,6 +1582,7 @@ Lint/Loop:
1519
1582
  StyleGuide: '#loop-with-break'
1520
1583
  Enabled: true
1521
1584
  VersionAdded: '0.9'
1585
+ VersionChanged: '0.89'
1522
1586
 
1523
1587
  Lint/MissingCopEnableDirective:
1524
1588
  Description: 'Checks for a `# rubocop:enable` after `# rubocop:disable`.'
@@ -1533,6 +1597,13 @@ Lint/MissingCopEnableDirective:
1533
1597
  # .inf for any size
1534
1598
  MaximumRangeSize: .inf
1535
1599
 
1600
+ Lint/MissingSuper:
1601
+ Description: >-
1602
+ This cop checks for the presence of constructors and lifecycle callbacks
1603
+ without calls to `super`'.
1604
+ Enabled: pending
1605
+ VersionAdded: '0.89'
1606
+
1536
1607
  Lint/MixedRegexpCaptureTypes:
1537
1608
  Description: 'Do not mix named captures and numbered captures in a Regexp literal.'
1538
1609
  Enabled: pending
@@ -1585,6 +1656,12 @@ Lint/OrderedMagicComments:
1585
1656
  Enabled: true
1586
1657
  VersionAdded: '0.53'
1587
1658
 
1659
+ Lint/OutOfRangeRegexpRef:
1660
+ Description: 'Checks for out of range reference for Regexp because it always returns nil.'
1661
+ Enabled: pending
1662
+ Safe: false
1663
+ VersionAdded: '0.89'
1664
+
1588
1665
  Lint/ParenthesesAsGroupedExpression:
1589
1666
  Description: >-
1590
1667
  Checks for method calls with a space before the opening
@@ -1611,7 +1688,9 @@ Lint/RaiseException:
1611
1688
  Description: Checks for `raise` or `fail` statements which are raising `Exception` class.
1612
1689
  StyleGuide: '#raise-exception'
1613
1690
  Enabled: pending
1691
+ Safe: false
1614
1692
  VersionAdded: '0.81'
1693
+ VersionChanged: '0.86'
1615
1694
  AllowedImplicitNamespaces:
1616
1695
  - 'Gem'
1617
1696
 
@@ -1668,6 +1747,7 @@ Lint/RegexpAsCondition:
1668
1747
  The regexp literal matches `$_` implicitly.
1669
1748
  Enabled: true
1670
1749
  VersionAdded: '0.51'
1750
+ VersionChanged: '0.86'
1671
1751
 
1672
1752
  Lint/RequireParentheses:
1673
1753
  Description: >-
@@ -1724,6 +1804,7 @@ Lint/SafeNavigationWithEmpty:
1724
1804
  Description: 'Avoid `foo&.empty?` in conditionals.'
1725
1805
  Enabled: true
1726
1806
  VersionAdded: '0.62'
1807
+ VersionChanged: '0.87'
1727
1808
 
1728
1809
  Lint/ScriptPermission:
1729
1810
  Description: 'Grant script file execute permission.'
@@ -1731,6 +1812,11 @@ Lint/ScriptPermission:
1731
1812
  VersionAdded: '0.49'
1732
1813
  VersionChanged: '0.50'
1733
1814
 
1815
+ Lint/SelfAssignment:
1816
+ Description: 'Checks for self-assignments.'
1817
+ Enabled: pending
1818
+ VersionAdded: '0.89'
1819
+
1734
1820
  Lint/SendWithMixinArgument:
1735
1821
  Description: 'Checks for `send` method when using mixin.'
1736
1822
  Enabled: true
@@ -1781,6 +1867,16 @@ Lint/ToJSON:
1781
1867
  Enabled: true
1782
1868
  VersionAdded: '0.66'
1783
1869
 
1870
+ Lint/TopLevelReturnWithArgument:
1871
+ Description: 'This cop detects top level return statements with argument.'
1872
+ Enabled: 'pending'
1873
+ VersionAdded: '0.89'
1874
+
1875
+ Lint/TrailingCommaInAttributeDeclaration:
1876
+ Description: 'This cop checks for trailing commas in attribute declarations.'
1877
+ Enabled: pending
1878
+ VersionAdded: '0.90'
1879
+
1784
1880
  Lint/UnderscorePrefixedVariableName:
1785
1881
  Description: 'Do not use prefix `_` for a variable that is used.'
1786
1882
  Enabled: true
@@ -1797,6 +1893,11 @@ Lint/UnreachableCode:
1797
1893
  Enabled: true
1798
1894
  VersionAdded: '0.9'
1799
1895
 
1896
+ Lint/UnreachableLoop:
1897
+ Description: 'This cop checks for loops that will have at most one iteration.'
1898
+ Enabled: pending
1899
+ VersionAdded: '0.89'
1900
+
1800
1901
  Lint/UnusedBlockArgument:
1801
1902
  Description: 'Checks for unused block arguments.'
1802
1903
  StyleGuide: '#underscore-unused-vars'
@@ -1846,16 +1947,18 @@ Lint/UselessAssignment:
1846
1947
  Enabled: true
1847
1948
  VersionAdded: '0.11'
1848
1949
 
1849
- Lint/UselessComparison:
1850
- Description: 'Checks for comparison of something with itself.'
1851
- Enabled: true
1852
- VersionAdded: '0.11'
1853
-
1854
1950
  Lint/UselessElseWithoutRescue:
1855
1951
  Description: 'Checks for useless `else` in `begin..end` without `rescue`.'
1856
1952
  Enabled: true
1857
1953
  VersionAdded: '0.17'
1858
1954
 
1955
+ Lint/UselessMethodDefinition:
1956
+ Description: 'Checks for useless method definitions.'
1957
+ Enabled: pending
1958
+ VersionAdded: '0.90'
1959
+ Safe: false
1960
+ AllowComments: true
1961
+
1859
1962
  Lint/UselessSetterCall:
1860
1963
  Description: 'Checks for useless setter call to a local variable.'
1861
1964
  Enabled: true
@@ -1884,15 +1987,16 @@ Metrics/AbcSize:
1884
1987
  # The ABC size is a calculated magnitude, so this number can be an Integer or
1885
1988
  # a Float.
1886
1989
  IgnoredMethods: []
1887
- Max: 15
1990
+ Max: 17
1888
1991
 
1889
1992
  Metrics/BlockLength:
1890
1993
  Description: 'Avoid long blocks with many lines.'
1891
1994
  Enabled: true
1892
1995
  VersionAdded: '0.44'
1893
- VersionChanged: '0.66'
1996
+ VersionChanged: '0.87'
1894
1997
  CountComments: false # count full line comments?
1895
1998
  Max: 25
1999
+ CountAsOne: []
1896
2000
  ExcludedMethods:
1897
2001
  # By default, exclude the `#refine` method, as it tends to have larger
1898
2002
  # associated blocks.
@@ -1913,8 +2017,10 @@ Metrics/ClassLength:
1913
2017
  Description: 'Avoid classes longer than 100 lines of code.'
1914
2018
  Enabled: true
1915
2019
  VersionAdded: '0.25'
2020
+ VersionChanged: '0.87'
1916
2021
  CountComments: false # count full line comments?
1917
2022
  Max: 100
2023
+ CountAsOne: []
1918
2024
 
1919
2025
  # Avoid complex methods.
1920
2026
  Metrics/CyclomaticComplexity:
@@ -1925,24 +2031,27 @@ Metrics/CyclomaticComplexity:
1925
2031
  VersionAdded: '0.25'
1926
2032
  VersionChanged: '0.81'
1927
2033
  IgnoredMethods: []
1928
- Max: 6
2034
+ Max: 7
1929
2035
 
1930
2036
  Metrics/MethodLength:
1931
2037
  Description: 'Avoid methods longer than 10 lines of code.'
1932
2038
  StyleGuide: '#short-methods'
1933
2039
  Enabled: true
1934
2040
  VersionAdded: '0.25'
1935
- VersionChanged: '0.59.2'
2041
+ VersionChanged: '0.87'
1936
2042
  CountComments: false # count full line comments?
1937
2043
  Max: 10
2044
+ CountAsOne: []
1938
2045
  ExcludedMethods: []
1939
2046
 
1940
2047
  Metrics/ModuleLength:
1941
2048
  Description: 'Avoid modules longer than 100 lines of code.'
1942
2049
  Enabled: true
1943
2050
  VersionAdded: '0.31'
2051
+ VersionChanged: '0.87'
1944
2052
  CountComments: false # count full line comments?
1945
2053
  Max: 100
2054
+ CountAsOne: []
1946
2055
 
1947
2056
  Metrics/ParameterLists:
1948
2057
  Description: 'Avoid parameter lists longer than three or four parameters.'
@@ -1960,7 +2069,7 @@ Metrics/PerceivedComplexity:
1960
2069
  VersionAdded: '0.25'
1961
2070
  VersionChanged: '0.81'
1962
2071
  IgnoredMethods: []
1963
- Max: 7
2072
+ Max: 8
1964
2073
 
1965
2074
  ################## Migration #############################
1966
2075
 
@@ -1980,10 +2089,12 @@ Naming/AccessorMethodName:
1980
2089
  VersionAdded: '0.50'
1981
2090
 
1982
2091
  Naming/AsciiIdentifiers:
1983
- Description: 'Use only ascii symbols in identifiers.'
2092
+ Description: 'Use only ascii symbols in identifiers and constants.'
1984
2093
  StyleGuide: '#english-identifiers'
1985
2094
  Enabled: true
1986
2095
  VersionAdded: '0.50'
2096
+ VersionChanged: '0.87'
2097
+ AsciiConstants: true
1987
2098
 
1988
2099
  Naming/BinaryOperatorParameterName:
1989
2100
  Description: 'When defining binary operators, name the argument other.'
@@ -2150,17 +2261,18 @@ Naming/MethodParameterName:
2150
2261
  AllowNamesEndingInNumbers: true
2151
2262
  # Allowed names that will not register an offense
2152
2263
  AllowedNames:
2153
- - io
2154
- - id
2155
- - to
2264
+ - at
2156
2265
  - by
2157
- - 'on'
2266
+ - db
2267
+ - id
2158
2268
  - in
2159
- - at
2269
+ - io
2160
2270
  - ip
2161
- - db
2271
+ - of
2272
+ - 'on'
2162
2273
  - os
2163
2274
  - pp
2275
+ - to
2164
2276
  # Forbidden names that will register an offense
2165
2277
  ForbiddenNames: []
2166
2278
 
@@ -2276,6 +2388,17 @@ Style/AccessModifierDeclarations:
2276
2388
  - group
2277
2389
  AllowModifiersOnSymbols: true
2278
2390
 
2391
+ Style/AccessorGrouping:
2392
+ Description: 'Checks for grouping of accessors in `class` and `module` bodies.'
2393
+ Enabled: 'pending'
2394
+ VersionAdded: '0.87'
2395
+ EnforcedStyle: grouped
2396
+ SupportedStyles:
2397
+ # separated: each accessor goes in a separate statement.
2398
+ # grouped: accessors are grouped into a single statement.
2399
+ - separated
2400
+ - grouped
2401
+
2279
2402
  Style/Alias:
2280
2403
  Description: 'Use alias instead of alias_method.'
2281
2404
  StyleGuide: '#alias-method-lexically'
@@ -2300,6 +2423,15 @@ Style/AndOr:
2300
2423
  - always
2301
2424
  - conditionals
2302
2425
 
2426
+ Style/ArrayCoercion:
2427
+ Description: >-
2428
+ Use Array() instead of explicit Array check or [*var], when dealing
2429
+ with a variable you want to treat as an Array, but you're not certain it's an array.
2430
+ StyleGuide: '#array-coercion'
2431
+ Safe: false
2432
+ Enabled: 'pending'
2433
+ VersionAdded: '0.88'
2434
+
2303
2435
  Style/ArrayJoin:
2304
2436
  Description: 'Use Array#join instead of Array#*.'
2305
2437
  StyleGuide: '#array-join'
@@ -2343,6 +2475,13 @@ Style/BeginBlock:
2343
2475
  Enabled: true
2344
2476
  VersionAdded: '0.9'
2345
2477
 
2478
+ Style/BisectedAttrAccessor:
2479
+ Description: >-
2480
+ Checks for places where `attr_reader` and `attr_writer`
2481
+ for the same method can be combined into single `attr_accessor`.
2482
+ Enabled: 'pending'
2483
+ VersionAdded: '0.87'
2484
+
2346
2485
  Style/BlockComments:
2347
2486
  Description: 'Do not use block comments.'
2348
2487
  StyleGuide: '#no-block-comments'
@@ -2465,6 +2604,7 @@ Style/CaseEquality:
2465
2604
  StyleGuide: '#no-case-equality'
2466
2605
  Enabled: true
2467
2606
  VersionAdded: '0.9'
2607
+ VersionChanged: '0.89'
2468
2608
  # If AllowOnConstant is enabled, the cop will ignore violations when the receiver of
2469
2609
  # the case equality operator is a constant.
2470
2610
  #
@@ -2475,6 +2615,13 @@ Style/CaseEquality:
2475
2615
  # String === "string"
2476
2616
  AllowOnConstant: false
2477
2617
 
2618
+ Style/CaseLikeIf:
2619
+ Description: 'This cop identifies places where `if-elsif` constructions can be replaced with `case-when`.'
2620
+ StyleGuide: '#case-vs-if-else'
2621
+ Enabled: 'pending'
2622
+ Safe: false
2623
+ VersionAdded: '0.88'
2624
+
2478
2625
  Style/CharacterLiteral:
2479
2626
  Description: 'Checks for uses of character literals.'
2480
2627
  StyleGuide: '#no-character-literals'
@@ -2490,7 +2637,6 @@ Style/ClassAndModuleChildren:
2490
2637
  # have the knowledge to perform either operation safely and thus requires
2491
2638
  # manual oversight.
2492
2639
  SafeAutoCorrect: false
2493
- AutoCorrect: false
2494
2640
  Enabled: true
2495
2641
  VersionAdded: '0.19'
2496
2642
  #
@@ -2529,6 +2675,16 @@ Style/ClassMethods:
2529
2675
  VersionAdded: '0.9'
2530
2676
  VersionChanged: '0.20'
2531
2677
 
2678
+ Style/ClassMethodsDefinitions:
2679
+ Description: 'Enforces using `def self.method_name` or `class << self` to define class methods.'
2680
+ StyleGuide: '#def-self-class-methods'
2681
+ Enabled: false
2682
+ VersionAdded: '0.89'
2683
+ EnforcedStyle: def_self
2684
+ SupportedStyles:
2685
+ - def_self
2686
+ - self_class
2687
+
2532
2688
  Style/ClassVars:
2533
2689
  Description: 'Avoid the use of class variables.'
2534
2690
  StyleGuide: '#no-class-vars'
@@ -2569,6 +2725,14 @@ Style/ColonMethodDefinition:
2569
2725
  Enabled: true
2570
2726
  VersionAdded: '0.52'
2571
2727
 
2728
+ Style/CombinableLoops:
2729
+ Description: >-
2730
+ Checks for places where multiple consecutive loops over the same data
2731
+ can be combined into a single loop.
2732
+ Enabled: pending
2733
+ Safe: false
2734
+ VersionAdded: '0.90'
2735
+
2572
2736
  Style/CommandLiteral:
2573
2737
  Description: 'Use `` or %x around command literals.'
2574
2738
  StyleGuide: '#percent-x'
@@ -2717,6 +2881,7 @@ Style/DoubleNegation:
2717
2881
  VersionAdded: '0.19'
2718
2882
  VersionChanged: '0.84'
2719
2883
  EnforcedStyle: allowed_in_returns
2884
+ SafeAutoCorrect: false
2720
2885
  SupportedStyles:
2721
2886
  - allowed_in_returns
2722
2887
  - forbidden
@@ -2811,6 +2976,16 @@ Style/ExpandPathArguments:
2811
2976
  Enabled: true
2812
2977
  VersionAdded: '0.53'
2813
2978
 
2979
+ Style/ExplicitBlockArgument:
2980
+ Description: >-
2981
+ Consider using explicit block argument to avoid writing block literal
2982
+ that just passes its arguments to another block.
2983
+ StyleGuide: '#block-argument'
2984
+ Enabled: pending
2985
+ # May change the yielding arity.
2986
+ Safe: false
2987
+ VersionAdded: '0.89'
2988
+
2814
2989
  Style/ExponentialNotation:
2815
2990
  Description: 'When using exponential notation, favor a mantissa between 1 (inclusive) and 10 (exclusive).'
2816
2991
  StyleGuide: '#exponential-notation'
@@ -2892,7 +3067,13 @@ Style/FrozenStringLiteralComment:
2892
3067
  # `never` will enforce that the frozen string literal comment does not
2893
3068
  # exist in a file.
2894
3069
  - never
2895
- Safe: false
3070
+ SafeAutoCorrect: false
3071
+
3072
+ Style/GlobalStdStream:
3073
+ Description: 'Enforces the use of `$stdout/$stderr/$stdin` instead of `STDOUT/STDERR/STDIN`.'
3074
+ StyleGuide: '#global-stdout'
3075
+ Enabled: pending
3076
+ VersionAdded: '0.89'
2896
3077
 
2897
3078
  Style/GlobalVars:
2898
3079
  Description: 'Do not introduce global variables.'
@@ -2913,6 +3094,18 @@ Style/GuardClause:
2913
3094
  # needs to have to trigger this cop
2914
3095
  MinBodyLength: 1
2915
3096
 
3097
+ Style/HashAsLastArrayItem:
3098
+ Description: >-
3099
+ Checks for presence or absence of braces around hash literal as a last
3100
+ array item depending on configuration.
3101
+ StyleGuide: '#hash-literal-as-last-array-item'
3102
+ Enabled: 'pending'
3103
+ VersionAdded: '0.88'
3104
+ EnforcedStyle: braces
3105
+ SupportedStyles:
3106
+ - braces
3107
+ - no_braces
3108
+
2916
3109
  Style/HashEachMethods:
2917
3110
  Description: 'Use Hash#each_key and Hash#each_value.'
2918
3111
  StyleGuide: '#hash-each'
@@ -2920,6 +3113,16 @@ Style/HashEachMethods:
2920
3113
  VersionAdded: '0.80'
2921
3114
  Safe: false
2922
3115
 
3116
+ Style/HashLikeCase:
3117
+ Description: >-
3118
+ Checks for places where `case-when` represents a simple 1:1
3119
+ mapping and can be replaced with a hash lookup.
3120
+ Enabled: 'pending'
3121
+ VersionAdded: '0.88'
3122
+ # `MinBranchesCount` defines the number of branches `case` needs to have
3123
+ # to trigger this cop
3124
+ MinBranchesCount: 3
3125
+
2923
3126
  Style/HashSyntax:
2924
3127
  Description: >-
2925
3128
  Prefer Ruby 1.9 hash syntax { a: 1, b: 2 } over 1.8 syntax
@@ -2944,15 +3147,17 @@ Style/HashSyntax:
2944
3147
  PreferHashRocketsForNonAlnumEndingSymbols: false
2945
3148
 
2946
3149
  Style/HashTransformKeys:
2947
- Description: 'Prefer `transform_keys` over `each_with_object` and `map`.'
3150
+ Description: 'Prefer `transform_keys` over `each_with_object`, `map`, or `to_h`.'
2948
3151
  Enabled: 'pending'
2949
3152
  VersionAdded: '0.80'
3153
+ VersionChanged: '0.90'
2950
3154
  Safe: false
2951
3155
 
2952
3156
  Style/HashTransformValues:
2953
- Description: 'Prefer `transform_values` over `each_with_object` and `map`.'
3157
+ Description: 'Prefer `transform_values` over `each_with_object`, `map`, or `to_h`.'
2954
3158
  Enabled: 'pending'
2955
3159
  VersionAdded: '0.80'
3160
+ VersionChanged: '0.90'
2956
3161
  Safe: false
2957
3162
 
2958
3163
  Style/IdenticalConditionalBranches:
@@ -2983,6 +3188,7 @@ Style/IfUnlessModifierOfIfUnless:
2983
3188
  Avoid modifier if/unless usage on conditionals.
2984
3189
  Enabled: true
2985
3190
  VersionAdded: '0.39'
3191
+ VersionChanged: '0.87'
2986
3192
 
2987
3193
  Style/IfWithSemicolon:
2988
3194
  Description: 'Do not use if x; .... Use the ternary operator instead.'
@@ -3048,6 +3254,12 @@ Style/IpAddresses:
3048
3254
  - "::"
3049
3255
  # :: is a valid IPv6 address, but could potentially be legitimately in code
3050
3256
 
3257
+ Style/KeywordParametersOrder:
3258
+ Description: 'Enforces that optional keyword parameters are placed at the end of the parameters list.'
3259
+ StyleGuide: '#keyword-parameters-order'
3260
+ Enabled: pending
3261
+ VersionAdded: '0.90'
3262
+
3051
3263
  Style/Lambda:
3052
3264
  Description: 'Use the new lambda literal syntax for single-line blocks.'
3053
3265
  StyleGuide: '#lambda-multi-line'
@@ -3126,12 +3338,6 @@ Style/MethodDefParentheses:
3126
3338
  - require_no_parentheses
3127
3339
  - require_no_parentheses_except_multiline
3128
3340
 
3129
- Style/MethodMissingSuper:
3130
- Description: Checks for `method_missing` to call `super`.
3131
- StyleGuide: '#no-method-missing'
3132
- Enabled: true
3133
- VersionAdded: '0.56'
3134
-
3135
3341
  Style/MinMax:
3136
3342
  Description: >-
3137
3343
  Use `Enumerable#minmax` instead of `Enumerable#min`
@@ -3239,6 +3445,7 @@ Style/MultilineTernaryOperator:
3239
3445
  StyleGuide: '#no-multiline-ternary'
3240
3446
  Enabled: true
3241
3447
  VersionAdded: '0.9'
3448
+ VersionChanged: '0.86'
3242
3449
 
3243
3450
  Style/MultilineWhenThen:
3244
3451
  Description: 'Do not use then for multi-line when statement.'
@@ -3343,6 +3550,7 @@ Style/NestedTernaryOperator:
3343
3550
  StyleGuide: '#no-nested-ternary'
3344
3551
  Enabled: true
3345
3552
  VersionAdded: '0.9'
3553
+ VersionChanged: '0.86'
3346
3554
 
3347
3555
  Style/Next:
3348
3556
  Description: 'Use `next` to skip iteration instead of a condition at the end.'
@@ -3425,7 +3633,6 @@ Style/NumericPredicate:
3425
3633
  # object. Switching these methods has to be done with knowledge of the types
3426
3634
  # of the variables which rubocop doesn't have.
3427
3635
  SafeAutoCorrect: false
3428
- AutoCorrect: false
3429
3636
  Enabled: true
3430
3637
  VersionAdded: '0.42'
3431
3638
  VersionChanged: '0.59'
@@ -3441,12 +3648,13 @@ Style/NumericPredicate:
3441
3648
 
3442
3649
  Style/OneLineConditional:
3443
3650
  Description: >-
3444
- Favor the ternary operator(?:) over
3445
- if/then/else/end constructs.
3651
+ Favor the ternary operator (?:) or multi-line constructs over
3652
+ single-line if/then/else/end constructs.
3446
3653
  StyleGuide: '#ternary-operator'
3447
3654
  Enabled: true
3655
+ AlwaysCorrectToMultiline: false
3448
3656
  VersionAdded: '0.9'
3449
- VersionChanged: '0.38'
3657
+ VersionChanged: '0.90'
3450
3658
 
3451
3659
  Style/OptionHash:
3452
3660
  Description: "Don't use option hashes when you can use keyword arguments."
@@ -3471,6 +3679,13 @@ Style/OptionalArguments:
3471
3679
  VersionAdded: '0.33'
3472
3680
  VersionChanged: '0.83'
3473
3681
 
3682
+ Style/OptionalBooleanParameter:
3683
+ Description: 'Use keyword arguments when defining method with boolean argument.'
3684
+ StyleGuide: '#boolean-keyword-arguments'
3685
+ Enabled: pending
3686
+ Safe: false
3687
+ VersionAdded: '0.89'
3688
+
3474
3689
  Style/OrAssignment:
3475
3690
  Description: 'Recommend usage of double pipe equals (||=) where applicable.'
3476
3691
  StyleGuide: '#double-pipe-for-uninit'
@@ -3567,6 +3782,11 @@ Style/RandomWithOffset:
3567
3782
  Enabled: true
3568
3783
  VersionAdded: '0.52'
3569
3784
 
3785
+ Style/RedundantAssignment:
3786
+ Description: 'Checks for redundant assignment before returning.'
3787
+ Enabled: 'pending'
3788
+ VersionAdded: '0.87'
3789
+
3570
3790
  Style/RedundantBegin:
3571
3791
  Description: "Don't use begin blocks when they are not needed."
3572
3792
  StyleGuide: '#begin-implicit'
@@ -3596,6 +3816,27 @@ Style/RedundantException:
3596
3816
  VersionAdded: '0.14'
3597
3817
  VersionChanged: '0.29'
3598
3818
 
3819
+ Style/RedundantFetchBlock:
3820
+ Description: >-
3821
+ Use `fetch(key, value)` instead of `fetch(key) { value }`
3822
+ when value has Numeric, Rational, Complex, Symbol or String type, `false`, `true`, `nil` or is a constant.
3823
+ Reference: 'https://github.com/JuanitoFatas/fast-ruby#hashfetch-with-argument-vs-hashfetch--block-code'
3824
+ Enabled: 'pending'
3825
+ Safe: false
3826
+ # If enabled, this cop will autocorrect usages of
3827
+ # `fetch` being called with block returning a constant.
3828
+ # This can be dangerous since constants will not be defined at that moment.
3829
+ SafeForConstants: false
3830
+ VersionAdded: '0.86'
3831
+
3832
+ Style/RedundantFileExtensionInRequire:
3833
+ Description: >-
3834
+ Checks for the presence of superfluous `.rb` extension in
3835
+ the filename provided to `require` and `require_relative`.
3836
+ StyleGuide: '#no-explicit-rb-to-require'
3837
+ Enabled: 'pending'
3838
+ VersionAdded: '0.88'
3839
+
3599
3840
  Style/RedundantFreeze:
3600
3841
  Description: "Checks usages of Object#freeze on immutable objects."
3601
3842
  Enabled: true
@@ -3644,6 +3885,12 @@ Style/RedundantSelf:
3644
3885
  VersionAdded: '0.10'
3645
3886
  VersionChanged: '0.13'
3646
3887
 
3888
+ Style/RedundantSelfAssignment:
3889
+ Description: 'Checks for places where redundant assignments are made for in place modification methods.'
3890
+ Enabled: pending
3891
+ Safe: false
3892
+ VersionAdded: '0.90'
3893
+
3647
3894
  Style/RedundantSort:
3648
3895
  Description: >-
3649
3896
  Use `min` instead of `sort.first`,
@@ -3763,6 +4010,12 @@ Style/SignalException:
3763
4010
  - only_fail
3764
4011
  - semantic
3765
4012
 
4013
+ Style/SingleArgumentDig:
4014
+ Description: 'Avoid using single argument dig method.'
4015
+ Enabled: pending
4016
+ VersionAdded: '0.89'
4017
+ Safe: false
4018
+
3766
4019
  Style/SingleLineBlockParams:
3767
4020
  Description: 'Enforces the names of some block params.'
3768
4021
  Enabled: false
@@ -3790,6 +4043,14 @@ Style/SlicingWithRange:
3790
4043
  VersionAdded: '0.83'
3791
4044
  Safe: false
3792
4045
 
4046
+ Style/SoleNestedConditional:
4047
+ Description: >-
4048
+ Finds sole nested conditional nodes
4049
+ which can be merged into outer conditional node.
4050
+ Enabled: pending
4051
+ VersionAdded: '0.89'
4052
+ AllowModifier: false
4053
+
3793
4054
  Style/SpecialGlobalVars:
3794
4055
  Description: 'Avoid Perl-style global variables.'
3795
4056
  StyleGuide: '#no-cryptic-perlisms'
@@ -3818,6 +4079,13 @@ Style/StderrPuts:
3818
4079
  Enabled: true
3819
4080
  VersionAdded: '0.51'
3820
4081
 
4082
+ Style/StringConcatenation:
4083
+ Description: 'Checks for places where string concatenation can be replaced with string interpolation.'
4084
+ StyleGuide: '#string-interpolation'
4085
+ Enabled: pending
4086
+ Safe: false
4087
+ VersionAdded: '0.89'
4088
+
3821
4089
  Style/StringHashKeys:
3822
4090
  Description: 'Prefer symbols instead of strings as hash keys.'
3823
4091
  StyleGuide: '#symbols-as-keys'
@@ -3875,6 +4143,7 @@ Style/StructInheritance:
3875
4143
  StyleGuide: '#no-extend-struct-new'
3876
4144
  Enabled: true
3877
4145
  VersionAdded: '0.29'
4146
+ VersionChanged: '0.86'
3878
4147
 
3879
4148
  Style/SymbolArray:
3880
4149
  Description: 'Use %i or %I for arrays of symbols.'
@@ -3896,7 +4165,7 @@ Style/SymbolLiteral:
3896
4165
  Style/SymbolProc:
3897
4166
  Description: 'Use symbols as procs instead of blocks when possible.'
3898
4167
  Enabled: true
3899
- SafeAutoCorrect: false
4168
+ Safe: false
3900
4169
  VersionAdded: '0.26'
3901
4170
  VersionChanged: '0.64'
3902
4171
  # A list of method names to be ignored by the check.