rubocop 0.93.1 → 1.3.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (122) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +36 -16
  3. data/config/default.yml +207 -72
  4. data/exe/rubocop +1 -1
  5. data/lib/rubocop.rb +16 -2
  6. data/lib/rubocop/cli/command/auto_genenerate_config.rb +1 -1
  7. data/lib/rubocop/cli/command/version.rb +1 -1
  8. data/lib/rubocop/comment_config.rb +1 -1
  9. data/lib/rubocop/config.rb +4 -0
  10. data/lib/rubocop/config_loader.rb +33 -7
  11. data/lib/rubocop/config_loader_resolver.rb +7 -5
  12. data/lib/rubocop/config_validator.rb +7 -6
  13. data/lib/rubocop/cop/badge.rb +9 -24
  14. data/lib/rubocop/cop/base.rb +16 -1
  15. data/lib/rubocop/cop/bundler/duplicated_gem.rb +26 -6
  16. data/lib/rubocop/cop/bundler/gem_comment.rb +1 -1
  17. data/lib/rubocop/cop/commissioner.rb +37 -23
  18. data/lib/rubocop/cop/corrector.rb +3 -1
  19. data/lib/rubocop/cop/correctors/percent_literal_corrector.rb +1 -1
  20. data/lib/rubocop/cop/force.rb +1 -1
  21. data/lib/rubocop/cop/gemspec/duplicated_assignment.rb +3 -3
  22. data/lib/rubocop/cop/gemspec/required_ruby_version.rb +4 -5
  23. data/lib/rubocop/cop/gemspec/ruby_version_globals_usage.rb +1 -1
  24. data/lib/rubocop/cop/generator.rb +2 -9
  25. data/lib/rubocop/cop/generator/configuration_injector.rb +1 -1
  26. data/lib/rubocop/cop/layout/block_alignment.rb +3 -4
  27. data/lib/rubocop/cop/layout/class_structure.rb +22 -3
  28. data/lib/rubocop/cop/layout/def_end_alignment.rb +1 -1
  29. data/lib/rubocop/cop/layout/else_alignment.rb +15 -2
  30. data/lib/rubocop/cop/layout/empty_lines_around_access_modifier.rb +1 -0
  31. data/lib/rubocop/cop/layout/end_alignment.rb +3 -3
  32. data/lib/rubocop/cop/layout/extra_spacing.rb +1 -2
  33. data/lib/rubocop/cop/layout/hash_alignment.rb +4 -4
  34. data/lib/rubocop/cop/layout/line_length.rb +8 -1
  35. data/lib/rubocop/cop/layout/space_around_block_parameters.rb +24 -18
  36. data/lib/rubocop/cop/layout/space_around_operators.rb +4 -1
  37. data/lib/rubocop/cop/layout/space_inside_parens.rb +35 -13
  38. data/lib/rubocop/cop/layout/trailing_whitespace.rb +37 -13
  39. data/lib/rubocop/cop/lint/constant_definition_in_block.rb +26 -2
  40. data/lib/rubocop/cop/lint/debugger.rb +17 -28
  41. data/lib/rubocop/cop/lint/duplicate_branch.rb +93 -0
  42. data/lib/rubocop/cop/lint/duplicate_case_condition.rb +2 -12
  43. data/lib/rubocop/cop/lint/duplicate_regexp_character_class_element.rb +77 -0
  44. data/lib/rubocop/cop/lint/else_layout.rb +29 -3
  45. data/lib/rubocop/cop/lint/empty_block.rb +82 -0
  46. data/lib/rubocop/cop/lint/empty_class.rb +93 -0
  47. data/lib/rubocop/cop/lint/flip_flop.rb +8 -2
  48. data/lib/rubocop/cop/lint/literal_in_interpolation.rb +38 -6
  49. data/lib/rubocop/cop/lint/loop.rb +4 -4
  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/redundant_cop_enable_directive.rb +19 -16
  55. data/lib/rubocop/cop/lint/shadowed_exception.rb +4 -5
  56. data/lib/rubocop/cop/lint/to_enum_arguments.rb +86 -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_method_definition.rb +2 -4
  61. data/lib/rubocop/cop/lint/useless_setter_call.rb +6 -1
  62. data/lib/rubocop/cop/metrics/parameter_lists.rb +4 -1
  63. data/lib/rubocop/cop/mixin/check_line_breakable.rb +1 -1
  64. data/lib/rubocop/cop/mixin/configurable_numbering.rb +3 -3
  65. data/lib/rubocop/cop/mixin/line_length_help.rb +1 -1
  66. data/lib/rubocop/cop/mixin/statement_modifier.rb +9 -4
  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 +98 -8
  72. data/lib/rubocop/cop/offense.rb +3 -3
  73. data/lib/rubocop/cop/security/open.rb +12 -10
  74. data/lib/rubocop/cop/style/accessor_grouping.rb +1 -1
  75. data/lib/rubocop/cop/style/and_or.rb +1 -3
  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 +0 -4
  79. data/lib/rubocop/cop/style/collection_compact.rb +91 -0
  80. data/lib/rubocop/cop/style/document_dynamic_eval_definition.rb +169 -0
  81. data/lib/rubocop/cop/style/double_negation.rb +6 -1
  82. data/lib/rubocop/cop/style/format_string_token.rb +47 -2
  83. data/lib/rubocop/cop/style/hash_syntax.rb +3 -3
  84. data/lib/rubocop/cop/style/identical_conditional_branches.rb +7 -2
  85. data/lib/rubocop/cop/style/if_inside_else.rb +37 -1
  86. data/lib/rubocop/cop/style/if_unless_modifier.rb +7 -3
  87. data/lib/rubocop/cop/style/infinite_loop.rb +4 -0
  88. data/lib/rubocop/cop/style/keyword_parameters_order.rb +12 -0
  89. data/lib/rubocop/cop/style/method_call_with_args_parentheses.rb +10 -13
  90. data/lib/rubocop/cop/style/method_call_with_args_parentheses/omit_parentheses.rb +6 -11
  91. data/lib/rubocop/cop/style/method_call_with_args_parentheses/require_parentheses.rb +7 -11
  92. data/lib/rubocop/cop/style/mixin_grouping.rb +0 -4
  93. data/lib/rubocop/cop/style/multiple_comparison.rb +55 -7
  94. data/lib/rubocop/cop/style/negated_if_else_condition.rb +106 -0
  95. data/lib/rubocop/cop/style/nil_lambda.rb +52 -0
  96. data/lib/rubocop/cop/style/raise_args.rb +21 -6
  97. data/lib/rubocop/cop/style/redundant_parentheses.rb +4 -0
  98. data/lib/rubocop/cop/style/redundant_regexp_character_class.rb +7 -1
  99. data/lib/rubocop/cop/style/redundant_regexp_escape.rb +1 -1
  100. data/lib/rubocop/cop/style/redundant_self.rb +3 -0
  101. data/lib/rubocop/cop/style/safe_navigation.rb +16 -4
  102. data/lib/rubocop/cop/style/semicolon.rb +3 -0
  103. data/lib/rubocop/cop/style/static_class.rb +97 -0
  104. data/lib/rubocop/cop/style/string_concatenation.rb +13 -1
  105. data/lib/rubocop/cop/style/swap_values.rb +108 -0
  106. data/lib/rubocop/cop/style/trailing_underscore_variable.rb +3 -1
  107. data/lib/rubocop/cop/style/while_until_modifier.rb +9 -0
  108. data/lib/rubocop/cop/team.rb +6 -1
  109. data/lib/rubocop/cop/util.rb +5 -1
  110. data/lib/rubocop/ext/regexp_node.rb +17 -9
  111. data/lib/rubocop/ext/regexp_parser.rb +84 -0
  112. data/lib/rubocop/formatter/formatter_set.rb +2 -1
  113. data/lib/rubocop/formatter/git_hub_actions_formatter.rb +47 -0
  114. data/lib/rubocop/formatter/offense_count_formatter.rb +1 -1
  115. data/lib/rubocop/formatter/worst_offenders_formatter.rb +1 -1
  116. data/lib/rubocop/magic_comment.rb +2 -2
  117. data/lib/rubocop/options.rb +6 -1
  118. data/lib/rubocop/rspec/shared_contexts.rb +4 -0
  119. data/lib/rubocop/target_finder.rb +1 -1
  120. data/lib/rubocop/target_ruby.rb +65 -1
  121. data/lib/rubocop/version.rb +56 -6
  122. metadata +22 -6
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: b8ce11205d6a6bb518654cbe498544aa799fbb8d9c9057afd2f551edfc35bbb8
4
- data.tar.gz: a1f79001991b28508ca7c9a79d75ed58f39ae0dcf2bad419d6a75919b3a3d539
3
+ metadata.gz: 4238df3546a63ce2c279ced4bba228a61c137b083a3fad76b45365954555f690
4
+ data.tar.gz: bf3bd7a2409203b911212906d013aec7219f1a21825352bc92e0b897faafbd66
5
5
  SHA512:
6
- metadata.gz: a32001a91575c41b5ca71b6a148af79f45b2a7b8cbc3909a0dcbb7a652f5e62b6a79a84c14189eda64fd3d2a9e8c40d207c37c0f5a78a156e1f636c5191b995e
7
- data.tar.gz: 9ac5df57938099031807a96bd87a7fb9c5f7f40c314528b4c3254edb45b1386ce199fa9c394c9e7531655d117df9d3d5215bd66e4a927b9b2b0878e0eac2a1f6
6
+ metadata.gz: a87bd4426855a7278963b8c3e4373b7c995994b5685318aad04bc2b0832c0db44e705d50d4ea21d81eb47074137fde56665f8317121caae8a81e208e044ce4a7
7
+ data.tar.gz: 3bb4cb7794129ac95c70876bc009a4ed07425a7a346acaf77279c4e0fc8b1c20f31e82e9590e1d880fa011ddddc08c93bb3851f6f815718b9de8ff7a0dd78c6f
data/README.md CHANGED
@@ -11,11 +11,6 @@
11
11
  [![Maintainability](https://api.codeclimate.com/v1/badges/d2d67f728e88ea84ac69/maintainability)](https://codeclimate.com/github/rubocop-hq/rubocop/maintainability)
12
12
  [![SemVer](https://api.dependabot.com/badges/compatibility_score?dependency-name=rubocop&package-manager=bundler&version-scheme=semver)](https://dependabot.com/compatibility-score.html?dependency-name=rubocop&package-manager=bundler&version-scheme=semver)
13
13
 
14
- [![Patreon](https://img.shields.io/badge/patreon-donate-orange.svg)](https://www.patreon.com/bbatsov)
15
- [![OpenCollective](https://opencollective.com/rubocop/backers/badge.svg)](#open-collective-backers)
16
- [![OpenCollective](https://opencollective.com/rubocop/sponsors/badge.svg)](#open-collective-sponsors)
17
- [![Tidelift](https://tidelift.com/badges/package/rubygems/rubocop)](https://tidelift.com/subscription/pkg/rubygems-rubocop?utm_source=rubygems-rubocop&utm_medium=referral&utm_campaign=readme)
18
-
19
14
  > Role models are important. <br/>
20
15
  > -- Officer Alex J. Murphy / RoboCop
21
16
 
@@ -27,6 +22,12 @@ RuboCop can also automatically fix many of them for you.
27
22
  RuboCop is extremely flexible and most aspects of its behavior can be tweaked via various
28
23
  [configuration options](https://github.com/rubocop-hq/rubocop/blob/master/config/default.yml).
29
24
 
25
+ ----------
26
+ [![Patreon](https://img.shields.io/badge/patreon-donate-orange.svg)](https://www.patreon.com/bbatsov)
27
+ [![OpenCollective](https://opencollective.com/rubocop/backers/badge.svg)](#open-collective-backers)
28
+ [![OpenCollective](https://opencollective.com/rubocop/sponsors/badge.svg)](#open-collective-sponsors)
29
+ [![Tidelift](https://tidelift.com/badges/package/rubygems/rubocop)](https://tidelift.com/subscription/pkg/rubygems-rubocop?utm_source=rubygems-rubocop&utm_medium=referral&utm_campaign=readme)
30
+
30
31
  **Please consider [financially supporting its ongoing development](#funding).**
31
32
 
32
33
  ## Installation
@@ -43,15 +44,18 @@ If you'd rather install RuboCop using `bundler`, add a line for it in your `Gemf
43
44
  gem 'rubocop', require: false
44
45
  ```
45
46
 
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`:
47
+ RuboCop is stable between major versions, both in terms of API and cop configuration.
48
+ We aim the ease the maintenance of RuboCop extensions and the upgrades between RuboCop
49
+ releases. All big changes are reserved for major releases.
50
+ To prevent an unwanted RuboCop update you might want to use a conservative version lock
51
+ in your `Gemfile`:
50
52
 
51
53
  ```rb
52
- gem 'rubocop', '~> 0.93.1', require: false
54
+ gem 'rubocop', '~> 1.3', require: false
53
55
  ```
54
56
 
57
+ See [versioning](https://docs.rubocop.org/rubocop/1.0/versioning.html) for further details.
58
+
55
59
  ## Quickstart
56
60
 
57
61
  Just type `rubocop` in a Ruby project's folder and watch the magic happen.
@@ -67,12 +71,12 @@ You can read a lot more about RuboCop in its [official docs](https://docs.ruboco
67
71
 
68
72
  ## Compatibility
69
73
 
70
- RuboCop supports the following Ruby implementations:
74
+ RuboCop officially supports the following Ruby implementations:
71
75
 
72
76
  * MRI 2.4+
73
77
  * JRuby 9.2+
74
78
 
75
- See [compatibility](https://docs.rubocop.org/rubocop/compatibility.html) for further details.
79
+ See the [compatibility documentation](https://docs.rubocop.org/rubocop/compatibility.html) for further details.
76
80
 
77
81
  ## Readme Badge
78
82
 
@@ -82,6 +86,15 @@ If you use RuboCop in your project, you can include one of these badges in your
82
86
 
83
87
  [![Ruby Style Guide](https://img.shields.io/badge/code_style-community-brightgreen.svg)](https://rubystyle.guide)
84
88
 
89
+
90
+ Here are the Markdown snippets for the two badges:
91
+
92
+ ``` markdown
93
+ [![Ruby Style Guide](https://img.shields.io/badge/code_style-rubocop-brightgreen.svg)](https://github.com/rubocop-hq/rubocop)
94
+
95
+ [![Ruby Style Guide](https://img.shields.io/badge/code_style-community-brightgreen.svg)](https://rubystyle.guide)
96
+ ```
97
+
85
98
  ## Team
86
99
 
87
100
  Here's a list of RuboCop's core developers:
@@ -97,6 +110,8 @@ Here's a list of RuboCop's core developers:
97
110
  * [Benjamin Quorning](https://github.com/bquorning)
98
111
  * [Marc-André Lafortune](https://github.com/marcandre)
99
112
 
113
+ See the [team page](https://docs.rubocop.org/rubocop/about/team.html) for more details.
114
+
100
115
  ## Logo
101
116
 
102
117
  RuboCop's logo was created by [Dimiter Petrov](https://www.chadomoto.com/). You can find the logo in various
@@ -136,14 +151,19 @@ wide array of funding channels to account for your preferences
136
151
  currently [Open Collective](https://opencollective.com/rubocop) is our
137
152
  preferred funding platform).
138
153
 
139
- If you're working in a company that's making significant use of RuboCop we'd appreciate it if you suggest to your company
140
- to become a RuboCop sponsor.
154
+ **If you're working in a company that's making significant use of RuboCop we'd appreciate it if you suggest to your company
155
+ to become a RuboCop sponsor.**
141
156
 
142
157
  You can support the development of RuboCop via
143
158
  [GitHub Sponsors](https://github.com/sponsors/bbatsov),
144
159
  [Patreon](https://www.patreon.com/bbatsov),
145
- [PayPal](https://paypal.me/bbatsov)
146
- and [Open Collective](https://opencollective.com/rubocop).
160
+ [PayPal](https://paypal.me/bbatsov),
161
+ [Open Collective](https://opencollective.com/rubocop)
162
+ and [Tidelift](https://tidelift.com/subscription/pkg/rubygems-rubocop?utm_source=rubygems-rubocop&utm_medium=referral&utm_campaign=readme)
163
+ .
164
+
165
+ **Note:** If doing a sponsorship in the form of donation is problematic for your company from an accounting standpoint, we'd recommend
166
+ the use of Tidelift, where you can get a support-like subscription instead.
147
167
 
148
168
  ### Open Collective Backers
149
169
 
@@ -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
@@ -891,7 +891,7 @@ Layout/LineLength:
891
891
  StyleGuide: '#max-line-length'
892
892
  Enabled: true
893
893
  VersionAdded: '0.25'
894
- VersionChanged: '0.84'
894
+ VersionChanged: '1.3'
895
895
  AutoCorrect: false
896
896
  Max: 120
897
897
  # To make it possible to copy or click on URIs in the code, we allow lines
@@ -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:
@@ -1176,7 +1176,7 @@ Layout/SpaceBeforeBlockBraces:
1176
1176
  SupportedStylesForEmptyBraces:
1177
1177
  - space
1178
1178
  - no_space
1179
- VersionChanged: '0.52.1'
1179
+ VersionChanged: '0.52'
1180
1180
 
1181
1181
  Layout/SpaceBeforeComma:
1182
1182
  Description: 'No spaces before commas.'
@@ -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,8 +1398,13 @@ 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
+ VersionChanged: '1.3'
1404
+ # `enums` for Typed Enums via T::Enum in Sorbet.
1405
+ # https://sorbet.org/docs/tenum
1406
+ AllowedMethods:
1407
+ - enums
1403
1408
 
1404
1409
  Lint/ConstantResolution:
1405
1410
  Description: 'Check that constants are fully qualified with `::`.'
@@ -1415,6 +1420,22 @@ Lint/Debugger:
1415
1420
  Enabled: true
1416
1421
  VersionAdded: '0.14'
1417
1422
  VersionChanged: '0.49'
1423
+ DebuggerReceivers:
1424
+ - binding
1425
+ - Kernel
1426
+ - Pry
1427
+ DebuggerMethods:
1428
+ - debugger
1429
+ - byebug
1430
+ - remote_byebug
1431
+ - pry
1432
+ - remote_pry
1433
+ - pry_remote
1434
+ - console
1435
+ - rescue
1436
+ - save_and_open_page
1437
+ - save_and_open_screenshot
1438
+ - irb
1418
1439
 
1419
1440
  Lint/DeprecatedClassMethods:
1420
1441
  Description: 'Check for deprecated class method calls.'
@@ -1423,7 +1444,7 @@ Lint/DeprecatedClassMethods:
1423
1444
 
1424
1445
  Lint/DeprecatedOpenSSLConstant:
1425
1446
  Description: "Don't use algorithm constants for `OpenSSL::Cipher` and `OpenSSL::Digest`."
1426
- Enabled: pending
1447
+ Enabled: true
1427
1448
  VersionAdded: '0.84'
1428
1449
 
1429
1450
  Lint/DisjunctiveAssignmentInConstructor:
@@ -1433,6 +1454,11 @@ Lint/DisjunctiveAssignmentInConstructor:
1433
1454
  VersionAdded: '0.62'
1434
1455
  VersionChanged: '0.88'
1435
1456
 
1457
+ Lint/DuplicateBranch:
1458
+ Description: Checks that there are no repeated bodies within `if/unless`, `case-when` and `rescue` constructs.
1459
+ Enabled: pending
1460
+ VersionAdded: '1.3'
1461
+
1436
1462
  Lint/DuplicateCaseCondition:
1437
1463
  Description: 'Do not repeat values in case conditionals.'
1438
1464
  Enabled: true
@@ -1440,7 +1466,7 @@ Lint/DuplicateCaseCondition:
1440
1466
 
1441
1467
  Lint/DuplicateElsifCondition:
1442
1468
  Description: 'Do not repeat conditions used in if `elsif`.'
1443
- Enabled: 'pending'
1469
+ Enabled: true
1444
1470
  VersionAdded: '0.88'
1445
1471
 
1446
1472
  Lint/DuplicateHashKey:
@@ -1454,14 +1480,19 @@ Lint/DuplicateMethods:
1454
1480
  Enabled: true
1455
1481
  VersionAdded: '0.29'
1456
1482
 
1483
+ Lint/DuplicateRegexpCharacterClassElement:
1484
+ Description: 'Checks for duplicate elements in Regexp character classes.'
1485
+ Enabled: pending
1486
+ VersionAdded: '1.1'
1487
+
1457
1488
  Lint/DuplicateRequire:
1458
1489
  Description: 'Check for duplicate `require`s and `require_relative`s.'
1459
- Enabled: pending
1490
+ Enabled: true
1460
1491
  VersionAdded: '0.90'
1461
1492
 
1462
1493
  Lint/DuplicateRescueException:
1463
1494
  Description: 'Checks that there are no repeated exceptions used in `rescue` expressions.'
1464
- Enabled: pending
1495
+ Enabled: true
1465
1496
  VersionAdded: '0.89'
1466
1497
 
1467
1498
  Lint/EachWithObjectArgument:
@@ -1473,10 +1504,25 @@ Lint/ElseLayout:
1473
1504
  Description: 'Check for odd code arrangement in an else block.'
1474
1505
  Enabled: true
1475
1506
  VersionAdded: '0.17'
1507
+ VersionChanged: '1.2'
1508
+
1509
+ Lint/EmptyBlock:
1510
+ Description: 'This cop checks for blocks without a body.'
1511
+ Enabled: pending
1512
+ VersionAdded: '1.1'
1513
+ VersionChanged: '1.3'
1514
+ AllowComments: true
1515
+ AllowEmptyLambdas: true
1516
+
1517
+ Lint/EmptyClass:
1518
+ Description: 'Checks for classes and metaclasses without a body.'
1519
+ Enabled: pending
1520
+ VersionAdded: '1.3'
1521
+ AllowComments: false
1476
1522
 
1477
1523
  Lint/EmptyConditionalBody:
1478
1524
  Description: 'This cop checks for the presence of `if`, `elsif` and `unless` branches without a body.'
1479
- Enabled: 'pending'
1525
+ Enabled: true
1480
1526
  AllowComments: true
1481
1527
  VersionAdded: '0.89'
1482
1528
 
@@ -1493,7 +1539,7 @@ Lint/EmptyExpression:
1493
1539
 
1494
1540
  Lint/EmptyFile:
1495
1541
  Description: 'Enforces that Ruby source files are not empty.'
1496
- Enabled: pending
1542
+ Enabled: true
1497
1543
  AllowComments: true
1498
1544
  VersionAdded: '0.90'
1499
1545
 
@@ -1531,7 +1577,7 @@ Lint/FlipFlop:
1531
1577
  Lint/FloatComparison:
1532
1578
  Description: 'Checks for the presence of precise comparison of floating point numbers.'
1533
1579
  StyleGuide: '#float-comparison'
1534
- Enabled: pending
1580
+ Enabled: true
1535
1581
  VersionAdded: '0.89'
1536
1582
 
1537
1583
  Lint/FloatOutOfRange:
@@ -1549,7 +1595,7 @@ Lint/FormatParameterMismatch:
1549
1595
  Lint/HashCompareByIdentity:
1550
1596
  Description: 'Prefer using `Hash#compare_by_identity` than using `object_id` for keys.'
1551
1597
  StyleGuide: '#identity-comparison'
1552
- Enabled: pending
1598
+ Enabled: true
1553
1599
  Safe: false
1554
1600
  VersionAdded: '0.93'
1555
1601
 
@@ -1563,7 +1609,7 @@ Lint/HeredocMethodCallPosition:
1563
1609
 
1564
1610
  Lint/IdentityComparison:
1565
1611
  Description: 'Prefer `equal?` over `==` when comparing `object_id`.'
1566
- Enabled: pending
1612
+ Enabled: true
1567
1613
  StyleGuide: '#identity-comparison'
1568
1614
  VersionAdded: '0.91'
1569
1615
 
@@ -1616,7 +1662,8 @@ Lint/Loop:
1616
1662
  StyleGuide: '#loop-with-break'
1617
1663
  Enabled: true
1618
1664
  VersionAdded: '0.9'
1619
- VersionChanged: '0.89'
1665
+ VersionChanged: '1.3'
1666
+ Safe: false
1620
1667
 
1621
1668
  Lint/MissingCopEnableDirective:
1622
1669
  Description: 'Checks for a `# rubocop:enable` after `# rubocop:disable`.'
@@ -1635,19 +1682,20 @@ Lint/MissingSuper:
1635
1682
  Description: >-
1636
1683
  This cop checks for the presence of constructors and lifecycle callbacks
1637
1684
  without calls to `super`'.
1638
- Enabled: pending
1685
+ Enabled: true
1639
1686
  VersionAdded: '0.89'
1640
1687
 
1641
1688
  Lint/MixedRegexpCaptureTypes:
1642
1689
  Description: 'Do not mix named captures and numbered captures in a Regexp literal.'
1643
- Enabled: pending
1690
+ Enabled: true
1644
1691
  VersionAdded: '0.85'
1645
1692
 
1646
1693
  Lint/MultipleComparison:
1647
1694
  Description: "Use `&&` operator to compare multiple values."
1648
1695
  Enabled: true
1649
1696
  VersionAdded: '0.47'
1650
- VersionChanged: '0.77'
1697
+ VersionChanged: '1.1'
1698
+ AllowMethodComparison: true
1651
1699
 
1652
1700
  Lint/NestedMethodDefinition:
1653
1701
  Description: 'Do not use nested method definitions.'
@@ -1667,6 +1715,11 @@ Lint/NextWithoutAccumulator:
1667
1715
  Enabled: true
1668
1716
  VersionAdded: '0.36'
1669
1717
 
1718
+ Lint/NoReturnInBeginEndBlocks:
1719
+ Description: 'Do not `return` inside `begin..end` blocks in assignment contexts.'
1720
+ Enabled: pending
1721
+ VersionAdded: '1.2'
1722
+
1670
1723
  Lint/NonDeterministicRequireOrder:
1671
1724
  Description: 'Always sort arrays returned by Dir.glob when requiring files.'
1672
1725
  Enabled: true
@@ -1682,8 +1735,12 @@ Lint/NumberConversion:
1682
1735
  Description: 'Checks unsafe usage of number conversion methods.'
1683
1736
  Enabled: false
1684
1737
  VersionAdded: '0.53'
1685
- VersionChanged: '0.70'
1738
+ VersionChanged: '1.1'
1686
1739
  SafeAutoCorrect: false
1740
+ IgnoredMethods: []
1741
+ IgnoredClasses:
1742
+ - Time
1743
+ - DateTime
1687
1744
 
1688
1745
  Lint/OrderedMagicComments:
1689
1746
  Description: 'Checks the proper ordering of magic comments and whether a magic comment is not placed before a shebang.'
@@ -1692,7 +1749,7 @@ Lint/OrderedMagicComments:
1692
1749
 
1693
1750
  Lint/OutOfRangeRegexpRef:
1694
1751
  Description: 'Checks for out of range reference for Regexp because it always returns nil.'
1695
- Enabled: pending
1752
+ Enabled: true
1696
1753
  Safe: false
1697
1754
  VersionAdded: '0.89'
1698
1755
 
@@ -1721,7 +1778,7 @@ Lint/PercentSymbolArray:
1721
1778
  Lint/RaiseException:
1722
1779
  Description: Checks for `raise` or `fail` statements which are raising `Exception` class.
1723
1780
  StyleGuide: '#raise-exception'
1724
- Enabled: pending
1781
+ Enabled: true
1725
1782
  Safe: false
1726
1783
  VersionAdded: '0.81'
1727
1784
  VersionChanged: '0.86'
@@ -1755,7 +1812,7 @@ Lint/RedundantRequireStatement:
1755
1812
 
1756
1813
  Lint/RedundantSafeNavigation:
1757
1814
  Description: 'Checks for redundant safe navigation calls.'
1758
- Enabled: pending
1815
+ Enabled: true
1759
1816
  VersionAdded: '0.93'
1760
1817
  AllowedMethods:
1761
1818
  - instance_of?
@@ -1808,7 +1865,7 @@ Lint/RescueException:
1808
1865
  StyleGuide: '#no-blind-rescues'
1809
1866
  Enabled: true
1810
1867
  VersionAdded: '0.9'
1811
- VersionChanged: '0.27.1'
1868
+ VersionChanged: '0.27'
1812
1869
 
1813
1870
  Lint/RescueType:
1814
1871
  Description: 'Avoid rescuing from non constants that could result in a `TypeError`.'
@@ -1862,7 +1919,7 @@ Lint/ScriptPermission:
1862
1919
 
1863
1920
  Lint/SelfAssignment:
1864
1921
  Description: 'Checks for self-assignments.'
1865
- Enabled: pending
1922
+ Enabled: true
1866
1923
  VersionAdded: '0.89'
1867
1924
 
1868
1925
  Lint/SendWithMixinArgument:
@@ -1893,7 +1950,7 @@ Lint/ShadowingOuterLocalVariable:
1893
1950
 
1894
1951
  Lint/StructNewOverride:
1895
1952
  Description: 'Disallow overriding the `Struct` built-in methods via `Struct.new`.'
1896
- Enabled: pending
1953
+ Enabled: true
1897
1954
  VersionAdded: '0.81'
1898
1955
 
1899
1956
  Lint/SuppressedException:
@@ -1910,6 +1967,11 @@ Lint/Syntax:
1910
1967
  VersionAdded: '0.9'
1911
1968
 
1912
1969
 
1970
+ Lint/ToEnumArguments:
1971
+ Description: 'This cop ensures that `to_enum`/`enum_for`, called for the current method, has correct arguments.'
1972
+ Enabled: pending
1973
+ VersionAdded: '1.1'
1974
+
1913
1975
  Lint/ToJSON:
1914
1976
  Description: 'Ensure #to_json includes an optional argument.'
1915
1977
  Enabled: true
@@ -1917,12 +1979,12 @@ Lint/ToJSON:
1917
1979
 
1918
1980
  Lint/TopLevelReturnWithArgument:
1919
1981
  Description: 'This cop detects top level return statements with argument.'
1920
- Enabled: 'pending'
1982
+ Enabled: true
1921
1983
  VersionAdded: '0.89'
1922
1984
 
1923
1985
  Lint/TrailingCommaInAttributeDeclaration:
1924
1986
  Description: 'This cop checks for trailing commas in attribute declarations.'
1925
- Enabled: pending
1987
+ Enabled: true
1926
1988
  VersionAdded: '0.90'
1927
1989
 
1928
1990
  Lint/UnderscorePrefixedVariableName:
@@ -1936,6 +1998,11 @@ Lint/UnifiedInteger:
1936
1998
  Enabled: true
1937
1999
  VersionAdded: '0.43'
1938
2000
 
2001
+ Lint/UnmodifiedReduceAccumulator:
2002
+ Description: Checks for `reduce` or `inject` blocks that do not update the accumulator each iteration.
2003
+ Enabled: pending
2004
+ VersionAdded: '1.1'
2005
+
1939
2006
  Lint/UnreachableCode:
1940
2007
  Description: 'Unreachable code.'
1941
2008
  Enabled: true
@@ -1943,7 +2010,7 @@ Lint/UnreachableCode:
1943
2010
 
1944
2011
  Lint/UnreachableLoop:
1945
2012
  Description: 'This cop checks for loops that will have at most one iteration.'
1946
- Enabled: pending
2013
+ Enabled: true
1947
2014
  VersionAdded: '0.89'
1948
2015
 
1949
2016
  Lint/UnusedBlockArgument:
@@ -2002,7 +2069,7 @@ Lint/UselessElseWithoutRescue:
2002
2069
 
2003
2070
  Lint/UselessMethodDefinition:
2004
2071
  Description: 'Checks for useless method definitions.'
2005
- Enabled: pending
2072
+ Enabled: true
2006
2073
  VersionAdded: '0.90'
2007
2074
  Safe: false
2008
2075
  AllowComments: true
@@ -2010,13 +2077,14 @@ Lint/UselessMethodDefinition:
2010
2077
  Lint/UselessSetterCall:
2011
2078
  Description: 'Checks for useless setter call to a local variable.'
2012
2079
  Enabled: true
2080
+ SafeAutoCorrect: false
2013
2081
  VersionAdded: '0.13'
2014
- VersionChanged: '0.80'
2082
+ VersionChanged: '1.2'
2015
2083
  Safe: false
2016
2084
 
2017
2085
  Lint/UselessTimes:
2018
2086
  Description: 'Checks for useless `Integer#times` calls.'
2019
- Enabled: pending
2087
+ Enabled: true
2020
2088
  VersionAdded: '0.91'
2021
2089
  Safe: false
2022
2090
 
@@ -2155,6 +2223,7 @@ Naming/BinaryOperatorParameterName:
2155
2223
  StyleGuide: '#other-arg'
2156
2224
  Enabled: true
2157
2225
  VersionAdded: '0.50'
2226
+ VersionChanged: '1.2'
2158
2227
 
2159
2228
  Naming/BlockParameterName:
2160
2229
  Description: >-
@@ -2261,6 +2330,7 @@ Naming/HeredocDelimiterCase:
2261
2330
  StyleGuide: '#heredoc-delimiters'
2262
2331
  Enabled: true
2263
2332
  VersionAdded: '0.50'
2333
+ VersionChanged: '1.2'
2264
2334
  EnforcedStyle: uppercase
2265
2335
  SupportedStyles:
2266
2336
  - lowercase
@@ -2279,7 +2349,7 @@ Naming/MemoizedInstanceVariableName:
2279
2349
  Memoized method name should match memo instance variable name.
2280
2350
  Enabled: true
2281
2351
  VersionAdded: '0.53'
2282
- VersionChanged: '0.58'
2352
+ VersionChanged: '1.2'
2283
2353
  EnforcedStyleForLeadingUnderscores: disallowed
2284
2354
  SupportedStylesForLeadingUnderscores:
2285
2355
  - disallowed
@@ -2377,14 +2447,19 @@ Naming/VariableName:
2377
2447
  - camelCase
2378
2448
 
2379
2449
  Naming/VariableNumber:
2380
- Description: 'Use the configured style when numbering variables.'
2450
+ Description: 'Use the configured style when numbering symbols, methods and variables.'
2451
+ StyleGuide: '#snake-case-symbols-methods-vars-with-numbers'
2381
2452
  Enabled: true
2382
2453
  VersionAdded: '0.50'
2454
+ VersionChanged: '1.3'
2383
2455
  EnforcedStyle: normalcase
2384
2456
  SupportedStyles:
2385
2457
  - snake_case
2386
2458
  - normalcase
2387
2459
  - non_integer
2460
+ CheckMethodNames: true
2461
+ CheckSymbols: true
2462
+ AllowedIdentifiers: []
2388
2463
 
2389
2464
  #################### Security ##############################
2390
2465
 
@@ -2415,9 +2490,10 @@ Security/MarshalLoad:
2415
2490
  VersionAdded: '0.47'
2416
2491
 
2417
2492
  Security/Open:
2418
- Description: 'The use of Kernel#open represents a serious security risk.'
2493
+ Description: 'The use of `Kernel#open` and `URI.open` represent a serious security risk.'
2419
2494
  Enabled: true
2420
2495
  VersionAdded: '0.53'
2496
+ VersionChanged: '1.0'
2421
2497
  Safe: false
2422
2498
 
2423
2499
  Security/YAMLLoad:
@@ -2444,7 +2520,7 @@ Style/AccessModifierDeclarations:
2444
2520
 
2445
2521
  Style/AccessorGrouping:
2446
2522
  Description: 'Checks for grouping of accessors in `class` and `module` bodies.'
2447
- Enabled: 'pending'
2523
+ Enabled: true
2448
2524
  VersionAdded: '0.87'
2449
2525
  EnforcedStyle: grouped
2450
2526
  SupportedStyles:
@@ -2477,6 +2553,13 @@ Style/AndOr:
2477
2553
  - always
2478
2554
  - conditionals
2479
2555
 
2556
+ Style/ArgumentsForwarding:
2557
+ Description: 'Use arguments forwarding.'
2558
+ StyleGuide: '#arguments-forwarding'
2559
+ Enabled: pending
2560
+ AllowOnlyRestArgument: true
2561
+ VersionAdded: '1.1'
2562
+
2480
2563
  Style/ArrayCoercion:
2481
2564
  Description: >-
2482
2565
  Use Array() instead of explicit Array check or [*var], when dealing
@@ -2533,7 +2616,7 @@ Style/BisectedAttrAccessor:
2533
2616
  Description: >-
2534
2617
  Checks for places where `attr_reader` and `attr_writer`
2535
2618
  for the same method can be combined into single `attr_accessor`.
2536
- Enabled: 'pending'
2619
+ Enabled: true
2537
2620
  VersionAdded: '0.87'
2538
2621
 
2539
2622
  Style/BlockComments:
@@ -2672,7 +2755,7 @@ Style/CaseEquality:
2672
2755
  Style/CaseLikeIf:
2673
2756
  Description: 'This cop identifies places where `if-elsif` constructions can be replaced with `case-when`.'
2674
2757
  StyleGuide: '#case-vs-if-else'
2675
- Enabled: 'pending'
2758
+ Enabled: true
2676
2759
  Safe: false
2677
2760
  VersionAdded: '0.88'
2678
2761
 
@@ -2725,7 +2808,7 @@ Style/ClassCheck:
2725
2808
  Style/ClassEqualityComparison:
2726
2809
  Description: 'Enforces the use of `Object#instance_of?` instead of class comparison for equality.'
2727
2810
  StyleGuide: '#instance-of-vs-class-comparison'
2728
- Enabled: pending
2811
+ Enabled: true
2729
2812
  VersionAdded: '0.93'
2730
2813
  IgnoredMethods:
2731
2814
  - ==
@@ -2755,6 +2838,13 @@ Style/ClassVars:
2755
2838
  Enabled: true
2756
2839
  VersionAdded: '0.13'
2757
2840
 
2841
+ Style/CollectionCompact:
2842
+ Description: 'Use `{Array,Hash}#{compact,compact!}` instead of custom logic to reject nils.'
2843
+ Enabled: pending
2844
+ Safe: false
2845
+ VersionAdded: '1.2'
2846
+ VersionChanged: '1.3'
2847
+
2758
2848
  # Align with the style guide.
2759
2849
  Style/CollectionMethods:
2760
2850
  Description: 'Preferred collection methods.'
@@ -2793,7 +2883,7 @@ Style/CombinableLoops:
2793
2883
  Description: >-
2794
2884
  Checks for places where multiple consecutive loops over the same data
2795
2885
  can be combined into a single loop.
2796
- Enabled: pending
2886
+ Enabled: true
2797
2887
  Safe: false
2798
2888
  VersionAdded: '0.90'
2799
2889
 
@@ -2818,17 +2908,18 @@ Style/CommandLiteral:
2818
2908
  Style/CommentAnnotation:
2819
2909
  Description: >-
2820
2910
  Checks formatting of special comments
2821
- (TODO, FIXME, OPTIMIZE, HACK, REVIEW).
2911
+ (TODO, FIXME, OPTIMIZE, HACK, REVIEW, NOTE).
2822
2912
  StyleGuide: '#annotate-keywords'
2823
2913
  Enabled: true
2824
2914
  VersionAdded: '0.10'
2825
- VersionChanged: '0.31'
2915
+ VersionChanged: '1.3'
2826
2916
  Keywords:
2827
2917
  - TODO
2828
2918
  - FIXME
2829
2919
  - OPTIMIZE
2830
2920
  - HACK
2831
2921
  - REVIEW
2922
+ - NOTE
2832
2923
 
2833
2924
  Style/CommentedKeyword:
2834
2925
  Description: 'Do not place comments on the same line as certain keywords.'
@@ -2917,6 +3008,15 @@ Style/DisableCopsWithinSourceCodeDirective:
2917
3008
  Enabled: false
2918
3009
  VersionAdded: '0.82'
2919
3010
 
3011
+ Style/DocumentDynamicEvalDefinition:
3012
+ Description: >-
3013
+ When using `class_eval` (or other `eval`) with string interpolation,
3014
+ add a comment block showing its appearance if interpolated.
3015
+ StyleGuide: '#eval-comment-docs'
3016
+ Enabled: pending
3017
+ VersionAdded: '1.1'
3018
+ VersionChanged: '1.3'
3019
+
2920
3020
  Style/Documentation:
2921
3021
  Description: 'Document classes and non-namespace modules.'
2922
3022
  Enabled: true
@@ -2944,7 +3044,7 @@ Style/DoubleNegation:
2944
3044
  StyleGuide: '#no-bang-bang'
2945
3045
  Enabled: true
2946
3046
  VersionAdded: '0.19'
2947
- VersionChanged: '0.84'
3047
+ VersionChanged: '1.2'
2948
3048
  EnforcedStyle: allowed_in_returns
2949
3049
  SafeAutoCorrect: false
2950
3050
  SupportedStyles:
@@ -3046,7 +3146,7 @@ Style/ExplicitBlockArgument:
3046
3146
  Consider using explicit block argument to avoid writing block literal
3047
3147
  that just passes its arguments to another block.
3048
3148
  StyleGuide: '#block-argument'
3049
- Enabled: pending
3149
+ Enabled: true
3050
3150
  # May change the yielding arity.
3051
3151
  Safe: false
3052
3152
  VersionAdded: '0.89'
@@ -3054,7 +3154,7 @@ Style/ExplicitBlockArgument:
3054
3154
  Style/ExponentialNotation:
3055
3155
  Description: 'When using exponential notation, favor a mantissa between 1 (inclusive) and 10 (exclusive).'
3056
3156
  StyleGuide: '#exponential-notation'
3057
- Enabled: pending
3157
+ Enabled: true
3058
3158
  VersionAdded: '0.82'
3059
3159
  EnforcedStyle: scientific
3060
3160
  SupportedStyles:
@@ -3109,8 +3209,12 @@ Style/FormatStringToken:
3109
3209
  # Prefer simple looking "template" style tokens like `%{name}`, `%{age}`
3110
3210
  - template
3111
3211
  - unannotated
3212
+ # `MaxUnannotatedPlaceholdersAllowed` defines the number of `unannotated`
3213
+ # style token in a format string to be allowed when enforced style is not
3214
+ # `unannotated`.
3215
+ MaxUnannotatedPlaceholdersAllowed: 1
3112
3216
  VersionAdded: '0.49'
3113
- VersionChanged: '0.75'
3217
+ VersionChanged: '1.0'
3114
3218
 
3115
3219
  Style/FrozenStringLiteralComment:
3116
3220
  Description: >-
@@ -3137,7 +3241,7 @@ Style/FrozenStringLiteralComment:
3137
3241
  Style/GlobalStdStream:
3138
3242
  Description: 'Enforces the use of `$stdout/$stderr/$stdin` instead of `STDOUT/STDERR/STDIN`.'
3139
3243
  StyleGuide: '#global-stdout'
3140
- Enabled: pending
3244
+ Enabled: true
3141
3245
  VersionAdded: '0.89'
3142
3246
  SafeAutoCorrect: false
3143
3247
 
@@ -3165,7 +3269,7 @@ Style/HashAsLastArrayItem:
3165
3269
  Checks for presence or absence of braces around hash literal as a last
3166
3270
  array item depending on configuration.
3167
3271
  StyleGuide: '#hash-literal-as-last-array-item'
3168
- Enabled: 'pending'
3272
+ Enabled: true
3169
3273
  VersionAdded: '0.88'
3170
3274
  EnforcedStyle: braces
3171
3275
  SupportedStyles:
@@ -3175,7 +3279,7 @@ Style/HashAsLastArrayItem:
3175
3279
  Style/HashEachMethods:
3176
3280
  Description: 'Use Hash#each_key and Hash#each_value.'
3177
3281
  StyleGuide: '#hash-each'
3178
- Enabled: pending
3282
+ Enabled: true
3179
3283
  VersionAdded: '0.80'
3180
3284
  Safe: false
3181
3285
 
@@ -3183,7 +3287,7 @@ Style/HashLikeCase:
3183
3287
  Description: >-
3184
3288
  Checks for places where `case-when` represents a simple 1:1
3185
3289
  mapping and can be replaced with a hash lookup.
3186
- Enabled: 'pending'
3290
+ Enabled: true
3187
3291
  VersionAdded: '0.88'
3188
3292
  # `MinBranchesCount` defines the number of branches `case` needs to have
3189
3293
  # to trigger this cop
@@ -3214,14 +3318,14 @@ Style/HashSyntax:
3214
3318
 
3215
3319
  Style/HashTransformKeys:
3216
3320
  Description: 'Prefer `transform_keys` over `each_with_object`, `map`, or `to_h`.'
3217
- Enabled: 'pending'
3321
+ Enabled: true
3218
3322
  VersionAdded: '0.80'
3219
3323
  VersionChanged: '0.90'
3220
3324
  Safe: false
3221
3325
 
3222
3326
  Style/HashTransformValues:
3223
3327
  Description: 'Prefer `transform_values` over `each_with_object`, `map`, or `to_h`.'
3224
- Enabled: 'pending'
3328
+ Enabled: true
3225
3329
  VersionAdded: '0.80'
3226
3330
  VersionChanged: '0.90'
3227
3331
  Safe: false
@@ -3239,6 +3343,7 @@ Style/IfInsideElse:
3239
3343
  Enabled: true
3240
3344
  AllowIfModifier: false
3241
3345
  VersionAdded: '0.36'
3346
+ VersionChanged: '1.3'
3242
3347
 
3243
3348
  Style/IfUnlessModifier:
3244
3349
  Description: >-
@@ -3271,12 +3376,14 @@ Style/ImplicitRuntimeError:
3271
3376
  VersionAdded: '0.41'
3272
3377
 
3273
3378
  Style/InfiniteLoop:
3274
- Description: 'Use Kernel#loop for infinite loops.'
3379
+ Description: >-
3380
+ Use Kernel#loop for infinite loops.
3381
+ This cop is unsafe in the body may raise a `StopIteration` exception.
3382
+ Safe: false
3275
3383
  StyleGuide: '#infinite-loop'
3276
3384
  Enabled: true
3277
3385
  VersionAdded: '0.26'
3278
3386
  VersionChanged: '0.61'
3279
- SafeAutoCorrect: true
3280
3387
 
3281
3388
  Style/InlineComment:
3282
3389
  Description: 'Avoid trailing inline comments.'
@@ -3328,7 +3435,7 @@ Style/IpAddresses:
3328
3435
  Style/KeywordParametersOrder:
3329
3436
  Description: 'Enforces that optional keyword parameters are placed at the end of the parameters list.'
3330
3437
  StyleGuide: '#keyword-parameters-order'
3331
- Enabled: pending
3438
+ Enabled: true
3332
3439
  VersionAdded: '0.90'
3333
3440
 
3334
3441
  Style/Lambda:
@@ -3530,6 +3637,7 @@ Style/MultipleComparison:
3530
3637
  use Array#include? instead.
3531
3638
  Enabled: true
3532
3639
  VersionAdded: '0.49'
3640
+ VersionChanged: '1.1'
3533
3641
 
3534
3642
  Style/MutableConstant:
3535
3643
  Description: 'Do not assign mutable objects to constants.'
@@ -3564,6 +3672,13 @@ Style/NegatedIf:
3564
3672
  - prefix
3565
3673
  - postfix
3566
3674
 
3675
+ Style/NegatedIfElseCondition:
3676
+ Description: >-
3677
+ This cop checks for uses of `if-else` and ternary operators with a negated condition
3678
+ which can be simplified by inverting condition and swapping branches.
3679
+ Enabled: pending
3680
+ VersionAdded: '1.2'
3681
+
3567
3682
  Style/NegatedUnless:
3568
3683
  Description: 'Favor if over unless for negative conditions.'
3569
3684
  StyleGuide: '#if-for-negatives'
@@ -3651,6 +3766,11 @@ Style/NilComparison:
3651
3766
  - predicate
3652
3767
  - comparison
3653
3768
 
3769
+ Style/NilLambda:
3770
+ Description: 'Prefer `-> {}` to `-> { nil }`.'
3771
+ Enabled: pending
3772
+ VersionAdded: '1.3'
3773
+
3654
3774
  Style/NonNilCheck:
3655
3775
  Description: 'Checks for redundant nil checks.'
3656
3776
  StyleGuide: '#no-non-nil-checks'
@@ -3753,7 +3873,7 @@ Style/OptionalArguments:
3753
3873
  Style/OptionalBooleanParameter:
3754
3874
  Description: 'Use keyword arguments when defining method with boolean argument.'
3755
3875
  StyleGuide: '#boolean-keyword-arguments'
3756
- Enabled: pending
3876
+ Enabled: true
3757
3877
  Safe: false
3758
3878
  VersionAdded: '0.89'
3759
3879
  AllowedMethods:
@@ -3800,7 +3920,7 @@ Style/PercentLiteralDelimiters:
3800
3920
  '%r': '{}'
3801
3921
  '%w': '[]'
3802
3922
  '%W': '[]'
3803
- VersionChanged: '0.48.1'
3923
+ VersionChanged: '0.48'
3804
3924
 
3805
3925
  Style/PercentQLiterals:
3806
3926
  Description: 'Checks if uses of %Q/%q match the configured preference.'
@@ -3841,11 +3961,12 @@ Style/RaiseArgs:
3841
3961
  StyleGuide: '#exception-class-messages'
3842
3962
  Enabled: true
3843
3963
  VersionAdded: '0.14'
3844
- VersionChanged: '0.40'
3964
+ VersionChanged: '1.2'
3845
3965
  EnforcedStyle: exploded
3846
3966
  SupportedStyles:
3847
3967
  - compact # raise Exception.new(msg)
3848
3968
  - exploded # raise Exception, msg
3969
+ AllowedCompactTypes: []
3849
3970
 
3850
3971
  Style/RandomWithOffset:
3851
3972
  Description: >-
@@ -3857,7 +3978,7 @@ Style/RandomWithOffset:
3857
3978
 
3858
3979
  Style/RedundantAssignment:
3859
3980
  Description: 'Checks for redundant assignment before returning.'
3860
- Enabled: 'pending'
3981
+ Enabled: true
3861
3982
  VersionAdded: '0.87'
3862
3983
 
3863
3984
  Style/RedundantBegin:
@@ -3894,7 +4015,7 @@ Style/RedundantFetchBlock:
3894
4015
  Use `fetch(key, value)` instead of `fetch(key) { value }`
3895
4016
  when value has Numeric, Rational, Complex, Symbol or String type, `false`, `true`, `nil` or is a constant.
3896
4017
  Reference: 'https://github.com/JuanitoFatas/fast-ruby#hashfetch-with-argument-vs-hashfetch--block-code'
3897
- Enabled: 'pending'
4018
+ Enabled: true
3898
4019
  Safe: false
3899
4020
  # If enabled, this cop will autocorrect usages of
3900
4021
  # `fetch` being called with block returning a constant.
@@ -3907,7 +4028,7 @@ Style/RedundantFileExtensionInRequire:
3907
4028
  Checks for the presence of superfluous `.rb` extension in
3908
4029
  the filename provided to `require` and `require_relative`.
3909
4030
  StyleGuide: '#no-explicit-rb-to-require'
3910
- Enabled: 'pending'
4031
+ Enabled: true
3911
4032
  VersionAdded: '0.88'
3912
4033
 
3913
4034
  Style/RedundantFreeze:
@@ -3934,12 +4055,12 @@ Style/RedundantPercentQ:
3934
4055
 
3935
4056
  Style/RedundantRegexpCharacterClass:
3936
4057
  Description: 'Checks for unnecessary single-element Regexp character classes.'
3937
- Enabled: pending
4058
+ Enabled: true
3938
4059
  VersionAdded: '0.85'
3939
4060
 
3940
4061
  Style/RedundantRegexpEscape:
3941
4062
  Description: 'Checks for redundant escapes in Regexps.'
3942
- Enabled: pending
4063
+ Enabled: true
3943
4064
  VersionAdded: '0.85'
3944
4065
 
3945
4066
  Style/RedundantReturn:
@@ -3960,7 +4081,7 @@ Style/RedundantSelf:
3960
4081
 
3961
4082
  Style/RedundantSelfAssignment:
3962
4083
  Description: 'Checks for places where redundant assignments are made for in place modification methods.'
3963
- Enabled: pending
4084
+ Enabled: true
3964
4085
  Safe: false
3965
4086
  VersionAdded: '0.90'
3966
4087
 
@@ -4088,7 +4209,7 @@ Style/SignalException:
4088
4209
 
4089
4210
  Style/SingleArgumentDig:
4090
4211
  Description: 'Avoid using single argument dig method.'
4091
- Enabled: pending
4212
+ Enabled: true
4092
4213
  VersionAdded: '0.89'
4093
4214
  Safe: false
4094
4215
 
@@ -4115,7 +4236,7 @@ Style/SingleLineMethods:
4115
4236
 
4116
4237
  Style/SlicingWithRange:
4117
4238
  Description: 'Checks array slicing is done with endless ranges when suitable.'
4118
- Enabled: pending
4239
+ Enabled: true
4119
4240
  VersionAdded: '0.83'
4120
4241
  Safe: false
4121
4242
 
@@ -4123,7 +4244,7 @@ Style/SoleNestedConditional:
4123
4244
  Description: >-
4124
4245
  Finds sole nested conditional nodes
4125
4246
  which can be merged into outer conditional node.
4126
- Enabled: pending
4247
+ Enabled: true
4127
4248
  VersionAdded: '0.89'
4128
4249
  AllowModifier: false
4129
4250
 
@@ -4149,6 +4270,13 @@ Style/StabbyLambdaParentheses:
4149
4270
  - require_parentheses
4150
4271
  - require_no_parentheses
4151
4272
 
4273
+ Style/StaticClass:
4274
+ Description: 'Prefer modules to classes with only class methods.'
4275
+ StyleGuide: '#modules-vs-classes'
4276
+ Enabled: false
4277
+ Safe: false
4278
+ VersionAdded: '1.3'
4279
+
4152
4280
  Style/StderrPuts:
4153
4281
  Description: 'Use `warn` instead of `$stderr.puts`.'
4154
4282
  StyleGuide: '#warn'
@@ -4158,7 +4286,7 @@ Style/StderrPuts:
4158
4286
  Style/StringConcatenation:
4159
4287
  Description: 'Checks for places where string concatenation can be replaced with string interpolation.'
4160
4288
  StyleGuide: '#string-interpolation'
4161
- Enabled: pending
4289
+ Enabled: true
4162
4290
  Safe: false
4163
4291
  VersionAdded: '0.89'
4164
4292
 
@@ -4199,7 +4327,7 @@ Style/StringMethods:
4199
4327
  Description: 'Checks if configured preferred methods are used over non-preferred.'
4200
4328
  Enabled: false
4201
4329
  VersionAdded: '0.34'
4202
- VersionChanged: '0.34.2'
4330
+ VersionChanged: '0.34'
4203
4331
  # Mapping from undesired method to desired_method
4204
4332
  # e.g. to use `to_sym` over `intern`:
4205
4333
  #
@@ -4221,6 +4349,13 @@ Style/StructInheritance:
4221
4349
  VersionAdded: '0.29'
4222
4350
  VersionChanged: '0.86'
4223
4351
 
4352
+ Style/SwapValues:
4353
+ Description: 'This cop enforces the use of shorthand-style swapping of 2 variables.'
4354
+ StyleGuide: '#values-swapping'
4355
+ Enabled: pending
4356
+ VersionAdded: '1.1'
4357
+ SafeAutoCorrect: false
4358
+
4224
4359
  Style/SymbolArray:
4225
4360
  Description: 'Use %i or %I for arrays of symbols.'
4226
4361
  StyleGuide: '#percent-i'