rubocop 0.92.0 → 1.2.0

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.
Files changed (130) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +21 -7
  3. data/config/default.yml +169 -59
  4. data/exe/rubocop +1 -1
  5. data/lib/rubocop.rb +15 -3
  6. data/lib/rubocop/cached_data.rb +2 -1
  7. data/lib/rubocop/cli/command/auto_genenerate_config.rb +1 -1
  8. data/lib/rubocop/cli/command/version.rb +1 -1
  9. data/lib/rubocop/comment_config.rb +1 -1
  10. data/lib/rubocop/config.rb +4 -0
  11. data/lib/rubocop/config_loader.rb +19 -2
  12. data/lib/rubocop/config_loader_resolver.rb +7 -5
  13. data/lib/rubocop/config_validator.rb +7 -6
  14. data/lib/rubocop/cop/badge.rb +9 -24
  15. data/lib/rubocop/cop/base.rb +16 -1
  16. data/lib/rubocop/cop/bundler/duplicated_gem.rb +23 -3
  17. data/lib/rubocop/cop/commissioner.rb +36 -22
  18. data/lib/rubocop/cop/corrector.rb +3 -1
  19. data/lib/rubocop/cop/correctors/line_break_corrector.rb +2 -2
  20. data/lib/rubocop/cop/correctors/percent_literal_corrector.rb +1 -1
  21. data/lib/rubocop/cop/force.rb +1 -1
  22. data/lib/rubocop/cop/gemspec/required_ruby_version.rb +10 -10
  23. data/lib/rubocop/cop/layout/class_structure.rb +7 -0
  24. data/lib/rubocop/cop/layout/def_end_alignment.rb +1 -1
  25. data/lib/rubocop/cop/layout/dot_position.rb +6 -9
  26. data/lib/rubocop/cop/layout/else_alignment.rb +15 -2
  27. data/lib/rubocop/cop/layout/empty_lines_around_access_modifier.rb +7 -7
  28. data/lib/rubocop/cop/layout/empty_lines_around_attribute_accessor.rb +1 -1
  29. data/lib/rubocop/cop/layout/end_alignment.rb +3 -3
  30. data/lib/rubocop/cop/layout/extra_spacing.rb +1 -2
  31. data/lib/rubocop/cop/layout/hash_alignment.rb +4 -4
  32. data/lib/rubocop/cop/layout/space_around_block_parameters.rb +24 -18
  33. data/lib/rubocop/cop/layout/space_around_equals_in_parameter_default.rb +2 -11
  34. data/lib/rubocop/cop/layout/space_around_operators.rb +4 -1
  35. data/lib/rubocop/cop/layout/space_inside_block_braces.rb +0 -4
  36. data/lib/rubocop/cop/layout/space_inside_parens.rb +35 -13
  37. data/lib/rubocop/cop/layout/trailing_whitespace.rb +37 -13
  38. data/lib/rubocop/cop/lint/ambiguous_block_association.rb +2 -0
  39. data/lib/rubocop/cop/lint/ambiguous_regexp_literal.rb +18 -1
  40. data/lib/rubocop/cop/lint/boolean_symbol.rb +3 -0
  41. data/lib/rubocop/cop/lint/debugger.rb +2 -3
  42. data/lib/rubocop/cop/lint/duplicate_regexp_character_class_element.rb +77 -0
  43. data/lib/rubocop/cop/lint/else_layout.rb +29 -3
  44. data/lib/rubocop/cop/lint/empty_block.rb +59 -0
  45. data/lib/rubocop/cop/lint/flip_flop.rb +8 -2
  46. data/lib/rubocop/cop/lint/hash_compare_by_identity.rb +37 -0
  47. data/lib/rubocop/cop/lint/literal_in_interpolation.rb +17 -3
  48. data/lib/rubocop/cop/lint/loop.rb +0 -4
  49. data/lib/rubocop/cop/lint/mixed_regexp_capture_types.rb +1 -0
  50. data/lib/rubocop/cop/lint/nested_percent_literal.rb +14 -0
  51. data/lib/rubocop/cop/lint/no_return_in_begin_end_blocks.rb +58 -0
  52. data/lib/rubocop/cop/lint/number_conversion.rb +46 -13
  53. data/lib/rubocop/cop/lint/out_of_range_regexp_ref.rb +27 -8
  54. data/lib/rubocop/cop/lint/parentheses_as_grouped_expression.rb +1 -1
  55. data/lib/rubocop/cop/lint/redundant_safe_navigation.rb +78 -0
  56. data/lib/rubocop/cop/lint/to_enum_arguments.rb +95 -0
  57. data/lib/rubocop/cop/lint/to_json.rb +1 -1
  58. data/lib/rubocop/cop/lint/unmodified_reduce_accumulator.rb +185 -0
  59. data/lib/rubocop/cop/lint/useless_access_modifier.rb +2 -2
  60. data/lib/rubocop/cop/lint/useless_setter_call.rb +6 -1
  61. data/lib/rubocop/cop/metrics/block_length.rb +3 -1
  62. data/lib/rubocop/cop/metrics/class_length.rb +14 -6
  63. data/lib/rubocop/cop/metrics/parameter_lists.rb +4 -1
  64. data/lib/rubocop/cop/mixin/configurable_numbering.rb +3 -3
  65. data/lib/rubocop/cop/mixin/hash_transform_method.rb +1 -1
  66. data/lib/rubocop/cop/mixin/line_length_help.rb +1 -1
  67. data/lib/rubocop/cop/naming/binary_operator_parameter_name.rb +12 -2
  68. data/lib/rubocop/cop/naming/heredoc_delimiter_case.rb +11 -5
  69. data/lib/rubocop/cop/naming/memoized_instance_variable_name.rb +67 -18
  70. data/lib/rubocop/cop/naming/predicate_name.rb +2 -1
  71. data/lib/rubocop/cop/naming/variable_number.rb +82 -8
  72. data/lib/rubocop/cop/offense.rb +18 -5
  73. data/lib/rubocop/cop/security/open.rb +12 -10
  74. data/lib/rubocop/cop/style/access_modifier_declarations.rb +6 -2
  75. data/lib/rubocop/cop/style/accessor_grouping.rb +3 -0
  76. data/lib/rubocop/cop/style/arguments_forwarding.rb +142 -0
  77. data/lib/rubocop/cop/style/bisected_attr_accessor.rb +0 -4
  78. data/lib/rubocop/cop/style/case_like_if.rb +18 -6
  79. data/lib/rubocop/cop/style/class_equality_comparison.rb +64 -0
  80. data/lib/rubocop/cop/style/collection_compact.rb +85 -0
  81. data/lib/rubocop/cop/style/combinable_loops.rb +8 -1
  82. data/lib/rubocop/cop/style/comment_annotation.rb +6 -0
  83. data/lib/rubocop/cop/style/document_dynamic_eval_definition.rb +67 -0
  84. data/lib/rubocop/cop/style/double_negation.rb +6 -1
  85. data/lib/rubocop/cop/style/explicit_block_argument.rb +6 -2
  86. data/lib/rubocop/cop/style/for.rb +0 -4
  87. data/lib/rubocop/cop/style/format_string_token.rb +48 -3
  88. data/lib/rubocop/cop/style/hash_syntax.rb +3 -3
  89. data/lib/rubocop/cop/style/keyword_parameters_order.rb +12 -0
  90. data/lib/rubocop/cop/style/method_call_with_args_parentheses.rb +10 -13
  91. data/lib/rubocop/cop/style/method_call_with_args_parentheses/omit_parentheses.rb +6 -11
  92. data/lib/rubocop/cop/style/method_call_with_args_parentheses/require_parentheses.rb +7 -11
  93. data/lib/rubocop/cop/style/method_def_parentheses.rb +0 -4
  94. data/lib/rubocop/cop/style/mixin_grouping.rb +0 -4
  95. data/lib/rubocop/cop/style/multiple_comparison.rb +54 -7
  96. data/lib/rubocop/cop/style/negated_if_else_condition.rb +99 -0
  97. data/lib/rubocop/cop/style/nested_ternary_operator.rb +2 -0
  98. data/lib/rubocop/cop/style/raise_args.rb +21 -9
  99. data/lib/rubocop/cop/style/redundant_begin.rb +36 -8
  100. data/lib/rubocop/cop/style/redundant_condition.rb +5 -1
  101. data/lib/rubocop/cop/style/redundant_interpolation.rb +6 -1
  102. data/lib/rubocop/cop/style/redundant_parentheses.rb +4 -0
  103. data/lib/rubocop/cop/style/redundant_regexp_character_class.rb +45 -24
  104. data/lib/rubocop/cop/style/redundant_regexp_escape.rb +8 -15
  105. data/lib/rubocop/cop/style/redundant_self.rb +3 -0
  106. data/lib/rubocop/cop/style/safe_navigation.rb +16 -4
  107. data/lib/rubocop/cop/style/semicolon.rb +3 -0
  108. data/lib/rubocop/cop/style/string_concatenation.rb +14 -2
  109. data/lib/rubocop/cop/style/swap_values.rb +108 -0
  110. data/lib/rubocop/cop/style/ternary_parentheses.rb +1 -1
  111. data/lib/rubocop/cop/style/trailing_underscore_variable.rb +3 -1
  112. data/lib/rubocop/cop/team.rb +6 -1
  113. data/lib/rubocop/cop/util.rb +5 -1
  114. data/lib/rubocop/cop/variable_force/branch.rb +0 -4
  115. data/lib/rubocop/ext/regexp_node.rb +35 -11
  116. data/lib/rubocop/ext/regexp_parser.rb +84 -0
  117. data/lib/rubocop/formatter/formatter_set.rb +2 -1
  118. data/lib/rubocop/formatter/git_hub_actions_formatter.rb +47 -0
  119. data/lib/rubocop/formatter/offense_count_formatter.rb +1 -1
  120. data/lib/rubocop/formatter/worst_offenders_formatter.rb +1 -1
  121. data/lib/rubocop/magic_comment.rb +2 -2
  122. data/lib/rubocop/options.rb +6 -1
  123. data/lib/rubocop/result_cache.rb +8 -2
  124. data/lib/rubocop/rspec/cop_helper.rb +1 -1
  125. data/lib/rubocop/rspec/shared_contexts.rb +4 -0
  126. data/lib/rubocop/runner.rb +4 -4
  127. data/lib/rubocop/target_finder.rb +23 -25
  128. data/lib/rubocop/version.rb +56 -6
  129. metadata +22 -8
  130. data/lib/rubocop/cop/mixin/regexp_literal_help.rb +0 -43
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 682e17739f5c067f13eb30a3e84b365533bb0e075da92a40529c943e5a67e3b0
4
- data.tar.gz: 2c7e59ef470ad45515bed37249c97419181add1f451379d00b31ff45b21ddd36
3
+ metadata.gz: 9139e9c7213e73e6f44db7e88265254dc4b4e11ab0fa38b0fa88268070ff0a6a
4
+ data.tar.gz: 5590d626e845237529e7e21dbc162b2704fdbe5f37a39f0e29d3e164b550a03e
5
5
  SHA512:
6
- metadata.gz: 0bc3d0c3238795b8563b974c99c20d3cfb34dff97bc33f5231d6ef7497f53ce6f4753923bce17954fe30e69b0a8d4146a3b1377d0489e7f10bc97a0b3c69ae7b
7
- data.tar.gz: 4131b9c8a874e09d8c0581a04e91b44acc76855afa565cd52a324055a0bd7e1a40d37bc532b8b3781c9af9847335c6596ca8ed17fe9bff03d13283171d77c168
6
+ metadata.gz: 04ce9f16ffe193e6a048a2fe2b5c0015a148becdfc25bcd67efdd5cf207727eed3ab3440bbf5f8f2473868d9f697fb88b2c2f810bfe217fb23153d010318bde8
7
+ data.tar.gz: bd33137303ca551db1a8e67ad96bb14b376207caf88ba0c82efb3202c2373b94f22bd9e19f3a8b9cfd475bc6955078c13a87b8236e6703e8ad48c2b14a2cb271
data/README.md CHANGED
@@ -43,15 +43,18 @@ If you'd rather install RuboCop using `bundler`, add a line for it in your `Gemf
43
43
  gem 'rubocop', require: false
44
44
  ```
45
45
 
46
- RuboCop's development is moving at a very rapid pace and there are
47
- often backward-incompatible changes between minor releases (since we
48
- haven't reached version 1.0 yet). To prevent an unwanted RuboCop update you
49
- might want to use a conservative version lock in your `Gemfile`:
46
+ RuboCop is stable between major versions, both in terms of API and cop configuration.
47
+ We aim the ease the maintenance of RuboCop extensions and the upgrades between RuboCop
48
+ releases. All big changes are reserved for major releases.
49
+ To prevent an unwanted RuboCop update you might want to use a conservative version lock
50
+ in your `Gemfile`:
50
51
 
51
52
  ```rb
52
- gem 'rubocop', '~> 0.92.0', require: false
53
+ gem 'rubocop', '~> 1.2', require: false
53
54
  ```
54
55
 
56
+ See [versioning](https://docs.rubocop.org/rubocop/1.0/versioning.html) for further details.
57
+
55
58
  ## Quickstart
56
59
 
57
60
  Just type `rubocop` in a Ruby project's folder and watch the magic happen.
@@ -67,12 +70,12 @@ You can read a lot more about RuboCop in its [official docs](https://docs.ruboco
67
70
 
68
71
  ## Compatibility
69
72
 
70
- RuboCop supports the following Ruby implementations:
73
+ RuboCop officially supports the following Ruby implementations:
71
74
 
72
75
  * MRI 2.4+
73
76
  * JRuby 9.2+
74
77
 
75
- See [compatibility](https://docs.rubocop.org/rubocop/compatibility.html) for further details.
78
+ See the [compatibility documentation](https://docs.rubocop.org/rubocop/compatibility.html) for further details.
76
79
 
77
80
  ## Readme Badge
78
81
 
@@ -82,6 +85,15 @@ If you use RuboCop in your project, you can include one of these badges in your
82
85
 
83
86
  [![Ruby Style Guide](https://img.shields.io/badge/code_style-community-brightgreen.svg)](https://rubystyle.guide)
84
87
 
88
+
89
+ Here are the Markdown snippets for the two badges:
90
+
91
+ ``` markdown
92
+ [![Ruby Style Guide](https://img.shields.io/badge/code_style-rubocop-brightgreen.svg)](https://github.com/rubocop-hq/rubocop)
93
+
94
+ [![Ruby Style Guide](https://img.shields.io/badge/code_style-community-brightgreen.svg)](https://rubystyle.guide)
95
+ ```
96
+
85
97
  ## Team
86
98
 
87
99
  Here's a list of RuboCop's core developers:
@@ -97,6 +109,8 @@ Here's a list of RuboCop's core developers:
97
109
  * [Benjamin Quorning](https://github.com/bquorning)
98
110
  * [Marc-André Lafortune](https://github.com/marcandre)
99
111
 
112
+ See the [team page](https://docs.rubocop.org/rubocop/about/team.html) for more details.
113
+
100
114
  ## Logo
101
115
 
102
116
  RuboCop's logo was created by [Dimiter Petrov](https://www.chadomoto.com/). You can find the logo in various
@@ -313,7 +313,7 @@ Layout/AssignmentIndentation:
313
313
 
314
314
  Layout/BeginEndAlignment:
315
315
  Description: 'Align ends corresponding to begins correctly.'
316
- Enabled: pending
316
+ Enabled: true
317
317
  VersionAdded: '0.91'
318
318
  # The value `start_of_line` means that `end` should be aligned the start of the line
319
319
  # where the `begin` keyword is.
@@ -496,7 +496,7 @@ Layout/EmptyLinesAroundArguments:
496
496
  Layout/EmptyLinesAroundAttributeAccessor:
497
497
  Description: "Keep blank lines around attribute accessors."
498
498
  StyleGuide: '#empty-lines-around-attribute-accessor'
499
- Enabled: pending
499
+ Enabled: true
500
500
  VersionAdded: '0.83'
501
501
  VersionChanged: '0.84'
502
502
  AllowAliasSyntax: true
@@ -1145,7 +1145,7 @@ Layout/SpaceAroundKeyword:
1145
1145
 
1146
1146
  Layout/SpaceAroundMethodCallOperator:
1147
1147
  Description: 'Checks method call operators to not have spaces around them.'
1148
- Enabled: pending
1148
+ Enabled: true
1149
1149
  VersionAdded: '0.82'
1150
1150
 
1151
1151
  Layout/SpaceAroundOperators:
@@ -1334,8 +1334,8 @@ Layout/TrailingWhitespace:
1334
1334
  StyleGuide: '#no-trailing-whitespace'
1335
1335
  Enabled: true
1336
1336
  VersionAdded: '0.49'
1337
- VersionChanged: '0.83'
1338
- AllowInHeredoc: true
1337
+ VersionChanged: '1.0'
1338
+ AllowInHeredoc: false
1339
1339
 
1340
1340
  #################### Lint ##################################
1341
1341
  ### Warnings
@@ -1379,7 +1379,7 @@ Lint/BigDecimalNew:
1379
1379
 
1380
1380
  Lint/BinaryOperatorWithIdenticalOperands:
1381
1381
  Description: 'This cop checks for places where binary operator has identical operands.'
1382
- Enabled: pending
1382
+ Enabled: true
1383
1383
  Safe: false
1384
1384
  VersionAdded: '0.89'
1385
1385
 
@@ -1398,7 +1398,7 @@ Lint/CircularArgumentReference:
1398
1398
  Lint/ConstantDefinitionInBlock:
1399
1399
  Description: 'Do not define constants within a block.'
1400
1400
  StyleGuide: '#no-constant-definition-in-block'
1401
- Enabled: pending
1401
+ Enabled: true
1402
1402
  VersionAdded: '0.91'
1403
1403
 
1404
1404
  Lint/ConstantResolution:
@@ -1423,7 +1423,7 @@ Lint/DeprecatedClassMethods:
1423
1423
 
1424
1424
  Lint/DeprecatedOpenSSLConstant:
1425
1425
  Description: "Don't use algorithm constants for `OpenSSL::Cipher` and `OpenSSL::Digest`."
1426
- Enabled: pending
1426
+ Enabled: true
1427
1427
  VersionAdded: '0.84'
1428
1428
 
1429
1429
  Lint/DisjunctiveAssignmentInConstructor:
@@ -1440,7 +1440,7 @@ Lint/DuplicateCaseCondition:
1440
1440
 
1441
1441
  Lint/DuplicateElsifCondition:
1442
1442
  Description: 'Do not repeat conditions used in if `elsif`.'
1443
- Enabled: 'pending'
1443
+ Enabled: true
1444
1444
  VersionAdded: '0.88'
1445
1445
 
1446
1446
  Lint/DuplicateHashKey:
@@ -1454,14 +1454,19 @@ Lint/DuplicateMethods:
1454
1454
  Enabled: true
1455
1455
  VersionAdded: '0.29'
1456
1456
 
1457
+ Lint/DuplicateRegexpCharacterClassElement:
1458
+ Description: 'Checks for duplicate elements in Regexp character classes.'
1459
+ Enabled: pending
1460
+ VersionAdded: '1.1'
1461
+
1457
1462
  Lint/DuplicateRequire:
1458
1463
  Description: 'Check for duplicate `require`s and `require_relative`s.'
1459
- Enabled: pending
1464
+ Enabled: true
1460
1465
  VersionAdded: '0.90'
1461
1466
 
1462
1467
  Lint/DuplicateRescueException:
1463
1468
  Description: 'Checks that there are no repeated exceptions used in `rescue` expressions.'
1464
- Enabled: pending
1469
+ Enabled: true
1465
1470
  VersionAdded: '0.89'
1466
1471
 
1467
1472
  Lint/EachWithObjectArgument:
@@ -1473,10 +1478,17 @@ Lint/ElseLayout:
1473
1478
  Description: 'Check for odd code arrangement in an else block.'
1474
1479
  Enabled: true
1475
1480
  VersionAdded: '0.17'
1481
+ VersionChanged: '1.2'
1482
+
1483
+ Lint/EmptyBlock:
1484
+ Description: 'This cop checks for blocks without a body.'
1485
+ Enabled: pending
1486
+ VersionAdded: '1.1'
1487
+ AllowComments: true
1476
1488
 
1477
1489
  Lint/EmptyConditionalBody:
1478
1490
  Description: 'This cop checks for the presence of `if`, `elsif` and `unless` branches without a body.'
1479
- Enabled: 'pending'
1491
+ Enabled: true
1480
1492
  AllowComments: true
1481
1493
  VersionAdded: '0.89'
1482
1494
 
@@ -1493,7 +1505,7 @@ Lint/EmptyExpression:
1493
1505
 
1494
1506
  Lint/EmptyFile:
1495
1507
  Description: 'Enforces that Ruby source files are not empty.'
1496
- Enabled: pending
1508
+ Enabled: true
1497
1509
  AllowComments: true
1498
1510
  VersionAdded: '0.90'
1499
1511
 
@@ -1531,7 +1543,7 @@ Lint/FlipFlop:
1531
1543
  Lint/FloatComparison:
1532
1544
  Description: 'Checks for the presence of precise comparison of floating point numbers.'
1533
1545
  StyleGuide: '#float-comparison'
1534
- Enabled: pending
1546
+ Enabled: true
1535
1547
  VersionAdded: '0.89'
1536
1548
 
1537
1549
  Lint/FloatOutOfRange:
@@ -1546,6 +1558,13 @@ Lint/FormatParameterMismatch:
1546
1558
  Enabled: true
1547
1559
  VersionAdded: '0.33'
1548
1560
 
1561
+ Lint/HashCompareByIdentity:
1562
+ Description: 'Prefer using `Hash#compare_by_identity` than using `object_id` for keys.'
1563
+ StyleGuide: '#identity-comparison'
1564
+ Enabled: true
1565
+ Safe: false
1566
+ VersionAdded: '0.93'
1567
+
1549
1568
  Lint/HeredocMethodCallPosition:
1550
1569
  Description: >-
1551
1570
  Checks for the ordering of a method call where
@@ -1556,7 +1575,7 @@ Lint/HeredocMethodCallPosition:
1556
1575
 
1557
1576
  Lint/IdentityComparison:
1558
1577
  Description: 'Prefer `equal?` over `==` when comparing `object_id`.'
1559
- Enabled: pending
1578
+ Enabled: true
1560
1579
  StyleGuide: '#identity-comparison'
1561
1580
  VersionAdded: '0.91'
1562
1581
 
@@ -1628,19 +1647,20 @@ Lint/MissingSuper:
1628
1647
  Description: >-
1629
1648
  This cop checks for the presence of constructors and lifecycle callbacks
1630
1649
  without calls to `super`'.
1631
- Enabled: pending
1650
+ Enabled: true
1632
1651
  VersionAdded: '0.89'
1633
1652
 
1634
1653
  Lint/MixedRegexpCaptureTypes:
1635
1654
  Description: 'Do not mix named captures and numbered captures in a Regexp literal.'
1636
- Enabled: pending
1655
+ Enabled: true
1637
1656
  VersionAdded: '0.85'
1638
1657
 
1639
1658
  Lint/MultipleComparison:
1640
1659
  Description: "Use `&&` operator to compare multiple values."
1641
1660
  Enabled: true
1642
1661
  VersionAdded: '0.47'
1643
- VersionChanged: '0.77'
1662
+ VersionChanged: '1.1'
1663
+ AllowMethodComparison: true
1644
1664
 
1645
1665
  Lint/NestedMethodDefinition:
1646
1666
  Description: 'Do not use nested method definitions.'
@@ -1660,6 +1680,11 @@ Lint/NextWithoutAccumulator:
1660
1680
  Enabled: true
1661
1681
  VersionAdded: '0.36'
1662
1682
 
1683
+ Lint/NoReturnInBeginEndBlocks:
1684
+ Description: 'Do not `return` inside `begin..end` blocks in assignment contexts.'
1685
+ Enabled: pending
1686
+ VersionAdded: '1.2'
1687
+
1663
1688
  Lint/NonDeterministicRequireOrder:
1664
1689
  Description: 'Always sort arrays returned by Dir.glob when requiring files.'
1665
1690
  Enabled: true
@@ -1675,8 +1700,12 @@ Lint/NumberConversion:
1675
1700
  Description: 'Checks unsafe usage of number conversion methods.'
1676
1701
  Enabled: false
1677
1702
  VersionAdded: '0.53'
1678
- VersionChanged: '0.70'
1703
+ VersionChanged: '1.1'
1679
1704
  SafeAutoCorrect: false
1705
+ IgnoredMethods: []
1706
+ IgnoredClasses:
1707
+ - Time
1708
+ - DateTime
1680
1709
 
1681
1710
  Lint/OrderedMagicComments:
1682
1711
  Description: 'Checks the proper ordering of magic comments and whether a magic comment is not placed before a shebang.'
@@ -1685,7 +1714,7 @@ Lint/OrderedMagicComments:
1685
1714
 
1686
1715
  Lint/OutOfRangeRegexpRef:
1687
1716
  Description: 'Checks for out of range reference for Regexp because it always returns nil.'
1688
- Enabled: pending
1717
+ Enabled: true
1689
1718
  Safe: false
1690
1719
  VersionAdded: '0.89'
1691
1720
 
@@ -1714,7 +1743,7 @@ Lint/PercentSymbolArray:
1714
1743
  Lint/RaiseException:
1715
1744
  Description: Checks for `raise` or `fail` statements which are raising `Exception` class.
1716
1745
  StyleGuide: '#raise-exception'
1717
- Enabled: pending
1746
+ Enabled: true
1718
1747
  Safe: false
1719
1748
  VersionAdded: '0.81'
1720
1749
  VersionChanged: '0.86'
@@ -1746,6 +1775,19 @@ Lint/RedundantRequireStatement:
1746
1775
  Enabled: true
1747
1776
  VersionAdded: '0.76'
1748
1777
 
1778
+ Lint/RedundantSafeNavigation:
1779
+ Description: 'Checks for redundant safe navigation calls.'
1780
+ Enabled: true
1781
+ VersionAdded: '0.93'
1782
+ AllowedMethods:
1783
+ - instance_of?
1784
+ - kind_of?
1785
+ - is_a?
1786
+ - eql?
1787
+ - respond_to?
1788
+ - equal?
1789
+ Safe: false
1790
+
1749
1791
  Lint/RedundantSplatExpansion:
1750
1792
  Description: 'Checks for splat unnecessarily being called on literals.'
1751
1793
  Enabled: true
@@ -1842,7 +1884,7 @@ Lint/ScriptPermission:
1842
1884
 
1843
1885
  Lint/SelfAssignment:
1844
1886
  Description: 'Checks for self-assignments.'
1845
- Enabled: pending
1887
+ Enabled: true
1846
1888
  VersionAdded: '0.89'
1847
1889
 
1848
1890
  Lint/SendWithMixinArgument:
@@ -1873,7 +1915,7 @@ Lint/ShadowingOuterLocalVariable:
1873
1915
 
1874
1916
  Lint/StructNewOverride:
1875
1917
  Description: 'Disallow overriding the `Struct` built-in methods via `Struct.new`.'
1876
- Enabled: pending
1918
+ Enabled: true
1877
1919
  VersionAdded: '0.81'
1878
1920
 
1879
1921
  Lint/SuppressedException:
@@ -1890,6 +1932,11 @@ Lint/Syntax:
1890
1932
  VersionAdded: '0.9'
1891
1933
 
1892
1934
 
1935
+ Lint/ToEnumArguments:
1936
+ Description: 'This cop ensures that `to_enum`/`enum_for`, called for the current method, has correct arguments.'
1937
+ Enabled: pending
1938
+ VersionAdded: '1.1'
1939
+
1893
1940
  Lint/ToJSON:
1894
1941
  Description: 'Ensure #to_json includes an optional argument.'
1895
1942
  Enabled: true
@@ -1897,12 +1944,12 @@ Lint/ToJSON:
1897
1944
 
1898
1945
  Lint/TopLevelReturnWithArgument:
1899
1946
  Description: 'This cop detects top level return statements with argument.'
1900
- Enabled: 'pending'
1947
+ Enabled: true
1901
1948
  VersionAdded: '0.89'
1902
1949
 
1903
1950
  Lint/TrailingCommaInAttributeDeclaration:
1904
1951
  Description: 'This cop checks for trailing commas in attribute declarations.'
1905
- Enabled: pending
1952
+ Enabled: true
1906
1953
  VersionAdded: '0.90'
1907
1954
 
1908
1955
  Lint/UnderscorePrefixedVariableName:
@@ -1916,6 +1963,11 @@ Lint/UnifiedInteger:
1916
1963
  Enabled: true
1917
1964
  VersionAdded: '0.43'
1918
1965
 
1966
+ Lint/UnmodifiedReduceAccumulator:
1967
+ Description: Checks for `reduce` or `inject` blocks that do not update the accumulator each iteration.
1968
+ Enabled: pending
1969
+ VersionAdded: '1.1'
1970
+
1919
1971
  Lint/UnreachableCode:
1920
1972
  Description: 'Unreachable code.'
1921
1973
  Enabled: true
@@ -1923,7 +1975,7 @@ Lint/UnreachableCode:
1923
1975
 
1924
1976
  Lint/UnreachableLoop:
1925
1977
  Description: 'This cop checks for loops that will have at most one iteration.'
1926
- Enabled: pending
1978
+ Enabled: true
1927
1979
  VersionAdded: '0.89'
1928
1980
 
1929
1981
  Lint/UnusedBlockArgument:
@@ -1982,7 +2034,7 @@ Lint/UselessElseWithoutRescue:
1982
2034
 
1983
2035
  Lint/UselessMethodDefinition:
1984
2036
  Description: 'Checks for useless method definitions.'
1985
- Enabled: pending
2037
+ Enabled: true
1986
2038
  VersionAdded: '0.90'
1987
2039
  Safe: false
1988
2040
  AllowComments: true
@@ -1990,13 +2042,14 @@ Lint/UselessMethodDefinition:
1990
2042
  Lint/UselessSetterCall:
1991
2043
  Description: 'Checks for useless setter call to a local variable.'
1992
2044
  Enabled: true
2045
+ SafeAutoCorrect: false
1993
2046
  VersionAdded: '0.13'
1994
- VersionChanged: '0.80'
2047
+ VersionChanged: '1.2'
1995
2048
  Safe: false
1996
2049
 
1997
2050
  Lint/UselessTimes:
1998
2051
  Description: 'Checks for useless `Integer#times` calls.'
1999
- Enabled: pending
2052
+ Enabled: true
2000
2053
  VersionAdded: '0.91'
2001
2054
  Safe: false
2002
2055
 
@@ -2135,6 +2188,7 @@ Naming/BinaryOperatorParameterName:
2135
2188
  StyleGuide: '#other-arg'
2136
2189
  Enabled: true
2137
2190
  VersionAdded: '0.50'
2191
+ VersionChanged: '1.2'
2138
2192
 
2139
2193
  Naming/BlockParameterName:
2140
2194
  Description: >-
@@ -2241,6 +2295,7 @@ Naming/HeredocDelimiterCase:
2241
2295
  StyleGuide: '#heredoc-delimiters'
2242
2296
  Enabled: true
2243
2297
  VersionAdded: '0.50'
2298
+ VersionChanged: '1.2'
2244
2299
  EnforcedStyle: uppercase
2245
2300
  SupportedStyles:
2246
2301
  - lowercase
@@ -2259,7 +2314,7 @@ Naming/MemoizedInstanceVariableName:
2259
2314
  Memoized method name should match memo instance variable name.
2260
2315
  Enabled: true
2261
2316
  VersionAdded: '0.53'
2262
- VersionChanged: '0.58'
2317
+ VersionChanged: '1.2'
2263
2318
  EnforcedStyleForLeadingUnderscores: disallowed
2264
2319
  SupportedStylesForLeadingUnderscores:
2265
2320
  - disallowed
@@ -2357,14 +2412,18 @@ Naming/VariableName:
2357
2412
  - camelCase
2358
2413
 
2359
2414
  Naming/VariableNumber:
2360
- Description: 'Use the configured style when numbering variables.'
2415
+ Description: 'Use the configured style when numbering symbols, methods and variables.'
2416
+ StyleGuide: '#snake-case-symbols-methods-vars-with-numbers'
2361
2417
  Enabled: true
2362
2418
  VersionAdded: '0.50'
2419
+ VersionChanged: '1.2'
2363
2420
  EnforcedStyle: normalcase
2364
2421
  SupportedStyles:
2365
2422
  - snake_case
2366
2423
  - normalcase
2367
2424
  - non_integer
2425
+ CheckMethodNames: true
2426
+ CheckSymbols: true
2368
2427
 
2369
2428
  #################### Security ##############################
2370
2429
 
@@ -2395,9 +2454,10 @@ Security/MarshalLoad:
2395
2454
  VersionAdded: '0.47'
2396
2455
 
2397
2456
  Security/Open:
2398
- Description: 'The use of Kernel#open represents a serious security risk.'
2457
+ Description: 'The use of `Kernel#open` and `URI.open` represent a serious security risk.'
2399
2458
  Enabled: true
2400
2459
  VersionAdded: '0.53'
2460
+ VersionChanged: '1.0'
2401
2461
  Safe: false
2402
2462
 
2403
2463
  Security/YAMLLoad:
@@ -2424,7 +2484,7 @@ Style/AccessModifierDeclarations:
2424
2484
 
2425
2485
  Style/AccessorGrouping:
2426
2486
  Description: 'Checks for grouping of accessors in `class` and `module` bodies.'
2427
- Enabled: 'pending'
2487
+ Enabled: true
2428
2488
  VersionAdded: '0.87'
2429
2489
  EnforcedStyle: grouped
2430
2490
  SupportedStyles:
@@ -2457,6 +2517,13 @@ Style/AndOr:
2457
2517
  - always
2458
2518
  - conditionals
2459
2519
 
2520
+ Style/ArgumentsForwarding:
2521
+ Description: 'Use arguments forwarding.'
2522
+ StyleGuide: '#arguments-forwarding'
2523
+ Enabled: pending
2524
+ AllowOnlyRestArgument: true
2525
+ VersionAdded: '1.1'
2526
+
2460
2527
  Style/ArrayCoercion:
2461
2528
  Description: >-
2462
2529
  Use Array() instead of explicit Array check or [*var], when dealing
@@ -2513,7 +2580,7 @@ Style/BisectedAttrAccessor:
2513
2580
  Description: >-
2514
2581
  Checks for places where `attr_reader` and `attr_writer`
2515
2582
  for the same method can be combined into single `attr_accessor`.
2516
- Enabled: 'pending'
2583
+ Enabled: true
2517
2584
  VersionAdded: '0.87'
2518
2585
 
2519
2586
  Style/BlockComments:
@@ -2652,7 +2719,7 @@ Style/CaseEquality:
2652
2719
  Style/CaseLikeIf:
2653
2720
  Description: 'This cop identifies places where `if-elsif` constructions can be replaced with `case-when`.'
2654
2721
  StyleGuide: '#case-vs-if-else'
2655
- Enabled: 'pending'
2722
+ Enabled: true
2656
2723
  Safe: false
2657
2724
  VersionAdded: '0.88'
2658
2725
 
@@ -2702,6 +2769,16 @@ Style/ClassCheck:
2702
2769
  - is_a?
2703
2770
  - kind_of?
2704
2771
 
2772
+ Style/ClassEqualityComparison:
2773
+ Description: 'Enforces the use of `Object#instance_of?` instead of class comparison for equality.'
2774
+ StyleGuide: '#instance-of-vs-class-comparison'
2775
+ Enabled: true
2776
+ VersionAdded: '0.93'
2777
+ IgnoredMethods:
2778
+ - ==
2779
+ - equal?
2780
+ - eql?
2781
+
2705
2782
  Style/ClassMethods:
2706
2783
  Description: 'Use self when defining module/class methods.'
2707
2784
  StyleGuide: '#def-self-class-methods'
@@ -2725,6 +2802,11 @@ Style/ClassVars:
2725
2802
  Enabled: true
2726
2803
  VersionAdded: '0.13'
2727
2804
 
2805
+ Style/CollectionCompact:
2806
+ Description: 'Use `{Array,Hash}#{compact,compact!}` instead of custom logic to reject nils.'
2807
+ Enabled: pending
2808
+ VersionAdded: '1.2'
2809
+
2728
2810
  # Align with the style guide.
2729
2811
  Style/CollectionMethods:
2730
2812
  Description: 'Preferred collection methods.'
@@ -2763,7 +2845,7 @@ Style/CombinableLoops:
2763
2845
  Description: >-
2764
2846
  Checks for places where multiple consecutive loops over the same data
2765
2847
  can be combined into a single loop.
2766
- Enabled: pending
2848
+ Enabled: true
2767
2849
  Safe: false
2768
2850
  VersionAdded: '0.90'
2769
2851
 
@@ -2887,6 +2969,14 @@ Style/DisableCopsWithinSourceCodeDirective:
2887
2969
  Enabled: false
2888
2970
  VersionAdded: '0.82'
2889
2971
 
2972
+ Style/DocumentDynamicEvalDefinition:
2973
+ Description: >-
2974
+ When using `class_eval` (or other `eval`) with string interpolation,
2975
+ add a comment block showing its appearance if interpolated.
2976
+ StyleGuide: '#eval-comment-docs'
2977
+ Enabled: pending
2978
+ VersionAdded: '1.1'
2979
+
2890
2980
  Style/Documentation:
2891
2981
  Description: 'Document classes and non-namespace modules.'
2892
2982
  Enabled: true
@@ -2914,7 +3004,7 @@ Style/DoubleNegation:
2914
3004
  StyleGuide: '#no-bang-bang'
2915
3005
  Enabled: true
2916
3006
  VersionAdded: '0.19'
2917
- VersionChanged: '0.84'
3007
+ VersionChanged: '1.2'
2918
3008
  EnforcedStyle: allowed_in_returns
2919
3009
  SafeAutoCorrect: false
2920
3010
  SupportedStyles:
@@ -3016,7 +3106,7 @@ Style/ExplicitBlockArgument:
3016
3106
  Consider using explicit block argument to avoid writing block literal
3017
3107
  that just passes its arguments to another block.
3018
3108
  StyleGuide: '#block-argument'
3019
- Enabled: pending
3109
+ Enabled: true
3020
3110
  # May change the yielding arity.
3021
3111
  Safe: false
3022
3112
  VersionAdded: '0.89'
@@ -3024,7 +3114,7 @@ Style/ExplicitBlockArgument:
3024
3114
  Style/ExponentialNotation:
3025
3115
  Description: 'When using exponential notation, favor a mantissa between 1 (inclusive) and 10 (exclusive).'
3026
3116
  StyleGuide: '#exponential-notation'
3027
- Enabled: pending
3117
+ Enabled: true
3028
3118
  VersionAdded: '0.82'
3029
3119
  EnforcedStyle: scientific
3030
3120
  SupportedStyles:
@@ -3079,8 +3169,12 @@ Style/FormatStringToken:
3079
3169
  # Prefer simple looking "template" style tokens like `%{name}`, `%{age}`
3080
3170
  - template
3081
3171
  - unannotated
3172
+ # `MaxUnannotatedPlaceholdersAllowed` defines the number of `unannotated`
3173
+ # style token in a format string to be allowed when enforced style is not
3174
+ # `unannotated`.
3175
+ MaxUnannotatedPlaceholdersAllowed: 1
3082
3176
  VersionAdded: '0.49'
3083
- VersionChanged: '0.75'
3177
+ VersionChanged: '1.0'
3084
3178
 
3085
3179
  Style/FrozenStringLiteralComment:
3086
3180
  Description: >-
@@ -3107,7 +3201,7 @@ Style/FrozenStringLiteralComment:
3107
3201
  Style/GlobalStdStream:
3108
3202
  Description: 'Enforces the use of `$stdout/$stderr/$stdin` instead of `STDOUT/STDERR/STDIN`.'
3109
3203
  StyleGuide: '#global-stdout'
3110
- Enabled: pending
3204
+ Enabled: true
3111
3205
  VersionAdded: '0.89'
3112
3206
  SafeAutoCorrect: false
3113
3207
 
@@ -3135,7 +3229,7 @@ Style/HashAsLastArrayItem:
3135
3229
  Checks for presence or absence of braces around hash literal as a last
3136
3230
  array item depending on configuration.
3137
3231
  StyleGuide: '#hash-literal-as-last-array-item'
3138
- Enabled: 'pending'
3232
+ Enabled: true
3139
3233
  VersionAdded: '0.88'
3140
3234
  EnforcedStyle: braces
3141
3235
  SupportedStyles:
@@ -3145,7 +3239,7 @@ Style/HashAsLastArrayItem:
3145
3239
  Style/HashEachMethods:
3146
3240
  Description: 'Use Hash#each_key and Hash#each_value.'
3147
3241
  StyleGuide: '#hash-each'
3148
- Enabled: pending
3242
+ Enabled: true
3149
3243
  VersionAdded: '0.80'
3150
3244
  Safe: false
3151
3245
 
@@ -3153,7 +3247,7 @@ Style/HashLikeCase:
3153
3247
  Description: >-
3154
3248
  Checks for places where `case-when` represents a simple 1:1
3155
3249
  mapping and can be replaced with a hash lookup.
3156
- Enabled: 'pending'
3250
+ Enabled: true
3157
3251
  VersionAdded: '0.88'
3158
3252
  # `MinBranchesCount` defines the number of branches `case` needs to have
3159
3253
  # to trigger this cop
@@ -3184,14 +3278,14 @@ Style/HashSyntax:
3184
3278
 
3185
3279
  Style/HashTransformKeys:
3186
3280
  Description: 'Prefer `transform_keys` over `each_with_object`, `map`, or `to_h`.'
3187
- Enabled: 'pending'
3281
+ Enabled: true
3188
3282
  VersionAdded: '0.80'
3189
3283
  VersionChanged: '0.90'
3190
3284
  Safe: false
3191
3285
 
3192
3286
  Style/HashTransformValues:
3193
3287
  Description: 'Prefer `transform_values` over `each_with_object`, `map`, or `to_h`.'
3194
- Enabled: 'pending'
3288
+ Enabled: true
3195
3289
  VersionAdded: '0.80'
3196
3290
  VersionChanged: '0.90'
3197
3291
  Safe: false
@@ -3298,7 +3392,7 @@ Style/IpAddresses:
3298
3392
  Style/KeywordParametersOrder:
3299
3393
  Description: 'Enforces that optional keyword parameters are placed at the end of the parameters list.'
3300
3394
  StyleGuide: '#keyword-parameters-order'
3301
- Enabled: pending
3395
+ Enabled: true
3302
3396
  VersionAdded: '0.90'
3303
3397
 
3304
3398
  Style/Lambda:
@@ -3500,6 +3594,7 @@ Style/MultipleComparison:
3500
3594
  use Array#include? instead.
3501
3595
  Enabled: true
3502
3596
  VersionAdded: '0.49'
3597
+ VersionChanged: '1.1'
3503
3598
 
3504
3599
  Style/MutableConstant:
3505
3600
  Description: 'Do not assign mutable objects to constants.'
@@ -3534,6 +3629,13 @@ Style/NegatedIf:
3534
3629
  - prefix
3535
3630
  - postfix
3536
3631
 
3632
+ Style/NegatedIfElseCondition:
3633
+ Description: >-
3634
+ This cop checks for uses of `if-else` and ternary operators with a negated condition
3635
+ which can be simplified by inverting condition and swapping branches.
3636
+ Enabled: pending
3637
+ VersionAdded: '1.2'
3638
+
3537
3639
  Style/NegatedUnless:
3538
3640
  Description: 'Favor if over unless for negative conditions.'
3539
3641
  StyleGuide: '#if-for-negatives'
@@ -3723,7 +3825,7 @@ Style/OptionalArguments:
3723
3825
  Style/OptionalBooleanParameter:
3724
3826
  Description: 'Use keyword arguments when defining method with boolean argument.'
3725
3827
  StyleGuide: '#boolean-keyword-arguments'
3726
- Enabled: pending
3828
+ Enabled: true
3727
3829
  Safe: false
3728
3830
  VersionAdded: '0.89'
3729
3831
  AllowedMethods:
@@ -3811,11 +3913,12 @@ Style/RaiseArgs:
3811
3913
  StyleGuide: '#exception-class-messages'
3812
3914
  Enabled: true
3813
3915
  VersionAdded: '0.14'
3814
- VersionChanged: '0.40'
3916
+ VersionChanged: '1.2'
3815
3917
  EnforcedStyle: exploded
3816
3918
  SupportedStyles:
3817
3919
  - compact # raise Exception.new(msg)
3818
3920
  - exploded # raise Exception, msg
3921
+ AllowedCompactTypes: []
3819
3922
 
3820
3923
  Style/RandomWithOffset:
3821
3924
  Description: >-
@@ -3827,7 +3930,7 @@ Style/RandomWithOffset:
3827
3930
 
3828
3931
  Style/RedundantAssignment:
3829
3932
  Description: 'Checks for redundant assignment before returning.'
3830
- Enabled: 'pending'
3933
+ Enabled: true
3831
3934
  VersionAdded: '0.87'
3832
3935
 
3833
3936
  Style/RedundantBegin:
@@ -3864,7 +3967,7 @@ Style/RedundantFetchBlock:
3864
3967
  Use `fetch(key, value)` instead of `fetch(key) { value }`
3865
3968
  when value has Numeric, Rational, Complex, Symbol or String type, `false`, `true`, `nil` or is a constant.
3866
3969
  Reference: 'https://github.com/JuanitoFatas/fast-ruby#hashfetch-with-argument-vs-hashfetch--block-code'
3867
- Enabled: 'pending'
3970
+ Enabled: true
3868
3971
  Safe: false
3869
3972
  # If enabled, this cop will autocorrect usages of
3870
3973
  # `fetch` being called with block returning a constant.
@@ -3877,7 +3980,7 @@ Style/RedundantFileExtensionInRequire:
3877
3980
  Checks for the presence of superfluous `.rb` extension in
3878
3981
  the filename provided to `require` and `require_relative`.
3879
3982
  StyleGuide: '#no-explicit-rb-to-require'
3880
- Enabled: 'pending'
3983
+ Enabled: true
3881
3984
  VersionAdded: '0.88'
3882
3985
 
3883
3986
  Style/RedundantFreeze:
@@ -3904,12 +4007,12 @@ Style/RedundantPercentQ:
3904
4007
 
3905
4008
  Style/RedundantRegexpCharacterClass:
3906
4009
  Description: 'Checks for unnecessary single-element Regexp character classes.'
3907
- Enabled: pending
4010
+ Enabled: true
3908
4011
  VersionAdded: '0.85'
3909
4012
 
3910
4013
  Style/RedundantRegexpEscape:
3911
4014
  Description: 'Checks for redundant escapes in Regexps.'
3912
- Enabled: pending
4015
+ Enabled: true
3913
4016
  VersionAdded: '0.85'
3914
4017
 
3915
4018
  Style/RedundantReturn:
@@ -3930,7 +4033,7 @@ Style/RedundantSelf:
3930
4033
 
3931
4034
  Style/RedundantSelfAssignment:
3932
4035
  Description: 'Checks for places where redundant assignments are made for in place modification methods.'
3933
- Enabled: pending
4036
+ Enabled: true
3934
4037
  Safe: false
3935
4038
  VersionAdded: '0.90'
3936
4039
 
@@ -4058,7 +4161,7 @@ Style/SignalException:
4058
4161
 
4059
4162
  Style/SingleArgumentDig:
4060
4163
  Description: 'Avoid using single argument dig method.'
4061
- Enabled: pending
4164
+ Enabled: true
4062
4165
  VersionAdded: '0.89'
4063
4166
  Safe: false
4064
4167
 
@@ -4085,7 +4188,7 @@ Style/SingleLineMethods:
4085
4188
 
4086
4189
  Style/SlicingWithRange:
4087
4190
  Description: 'Checks array slicing is done with endless ranges when suitable.'
4088
- Enabled: pending
4191
+ Enabled: true
4089
4192
  VersionAdded: '0.83'
4090
4193
  Safe: false
4091
4194
 
@@ -4093,7 +4196,7 @@ Style/SoleNestedConditional:
4093
4196
  Description: >-
4094
4197
  Finds sole nested conditional nodes
4095
4198
  which can be merged into outer conditional node.
4096
- Enabled: pending
4199
+ Enabled: true
4097
4200
  VersionAdded: '0.89'
4098
4201
  AllowModifier: false
4099
4202
 
@@ -4128,7 +4231,7 @@ Style/StderrPuts:
4128
4231
  Style/StringConcatenation:
4129
4232
  Description: 'Checks for places where string concatenation can be replaced with string interpolation.'
4130
4233
  StyleGuide: '#string-interpolation'
4131
- Enabled: pending
4234
+ Enabled: true
4132
4235
  Safe: false
4133
4236
  VersionAdded: '0.89'
4134
4237
 
@@ -4191,6 +4294,13 @@ Style/StructInheritance:
4191
4294
  VersionAdded: '0.29'
4192
4295
  VersionChanged: '0.86'
4193
4296
 
4297
+ Style/SwapValues:
4298
+ Description: 'This cop enforces the use of shorthand-style swapping of 2 variables.'
4299
+ StyleGuide: '#values-swapping'
4300
+ Enabled: pending
4301
+ VersionAdded: '1.1'
4302
+ SafeAutoCorrect: false
4303
+
4194
4304
  Style/SymbolArray:
4195
4305
  Description: 'Use %i or %I for arrays of symbols.'
4196
4306
  StyleGuide: '#percent-i'