rubocop 0.93.0 → 1.3.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (126) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +36 -16
  3. data/config/default.yml +207 -77
  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 +26 -8
  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 +1 -1
  25. data/lib/rubocop/cop/layout/block_alignment.rb +3 -4
  26. data/lib/rubocop/cop/layout/class_structure.rb +7 -0
  27. data/lib/rubocop/cop/layout/def_end_alignment.rb +1 -1
  28. data/lib/rubocop/cop/layout/else_alignment.rb +15 -2
  29. data/lib/rubocop/cop/layout/empty_lines_around_access_modifier.rb +1 -0
  30. data/lib/rubocop/cop/layout/end_alignment.rb +3 -3
  31. data/lib/rubocop/cop/layout/extra_spacing.rb +1 -2
  32. data/lib/rubocop/cop/layout/hash_alignment.rb +4 -4
  33. data/lib/rubocop/cop/layout/line_length.rb +8 -1
  34. data/lib/rubocop/cop/layout/space_around_block_parameters.rb +24 -18
  35. data/lib/rubocop/cop/layout/space_around_operators.rb +4 -1
  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_regexp_literal.rb +6 -3
  39. data/lib/rubocop/cop/lint/constant_definition_in_block.rb +23 -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/redundant_safe_navigation.rb +44 -11
  56. data/lib/rubocop/cop/lint/shadowed_exception.rb +4 -5
  57. data/lib/rubocop/cop/lint/to_enum_arguments.rb +95 -0
  58. data/lib/rubocop/cop/lint/to_json.rb +1 -1
  59. data/lib/rubocop/cop/lint/unmodified_reduce_accumulator.rb +185 -0
  60. data/lib/rubocop/cop/lint/useless_access_modifier.rb +2 -2
  61. data/lib/rubocop/cop/lint/useless_method_definition.rb +2 -4
  62. data/lib/rubocop/cop/lint/useless_setter_call.rb +6 -1
  63. data/lib/rubocop/cop/metrics/class_length.rb +9 -3
  64. data/lib/rubocop/cop/metrics/parameter_lists.rb +4 -1
  65. data/lib/rubocop/cop/mixin/check_line_breakable.rb +1 -1
  66. data/lib/rubocop/cop/mixin/configurable_numbering.rb +3 -3
  67. data/lib/rubocop/cop/mixin/line_length_help.rb +1 -1
  68. data/lib/rubocop/cop/mixin/statement_modifier.rb +9 -4
  69. data/lib/rubocop/cop/naming/binary_operator_parameter_name.rb +12 -2
  70. data/lib/rubocop/cop/naming/heredoc_delimiter_case.rb +11 -5
  71. data/lib/rubocop/cop/naming/memoized_instance_variable_name.rb +67 -18
  72. data/lib/rubocop/cop/naming/predicate_name.rb +2 -1
  73. data/lib/rubocop/cop/naming/variable_number.rb +98 -8
  74. data/lib/rubocop/cop/offense.rb +3 -3
  75. data/lib/rubocop/cop/security/open.rb +12 -10
  76. data/lib/rubocop/cop/style/accessor_grouping.rb +1 -1
  77. data/lib/rubocop/cop/style/and_or.rb +1 -3
  78. data/lib/rubocop/cop/style/arguments_forwarding.rb +142 -0
  79. data/lib/rubocop/cop/style/bisected_attr_accessor.rb +0 -4
  80. data/lib/rubocop/cop/style/case_like_if.rb +0 -4
  81. data/lib/rubocop/cop/style/class_equality_comparison.rb +19 -4
  82. data/lib/rubocop/cop/style/collection_compact.rb +91 -0
  83. data/lib/rubocop/cop/style/document_dynamic_eval_definition.rb +162 -0
  84. data/lib/rubocop/cop/style/double_negation.rb +6 -1
  85. data/lib/rubocop/cop/style/format_string_token.rb +47 -2
  86. data/lib/rubocop/cop/style/hash_syntax.rb +3 -3
  87. data/lib/rubocop/cop/style/identical_conditional_branches.rb +7 -2
  88. data/lib/rubocop/cop/style/if_inside_else.rb +37 -1
  89. data/lib/rubocop/cop/style/if_unless_modifier.rb +7 -3
  90. data/lib/rubocop/cop/style/infinite_loop.rb +4 -0
  91. data/lib/rubocop/cop/style/keyword_parameters_order.rb +12 -0
  92. data/lib/rubocop/cop/style/method_call_with_args_parentheses.rb +10 -13
  93. data/lib/rubocop/cop/style/method_call_with_args_parentheses/omit_parentheses.rb +6 -11
  94. data/lib/rubocop/cop/style/method_call_with_args_parentheses/require_parentheses.rb +7 -11
  95. data/lib/rubocop/cop/style/mixin_grouping.rb +0 -4
  96. data/lib/rubocop/cop/style/multiple_comparison.rb +55 -7
  97. data/lib/rubocop/cop/style/negated_if_else_condition.rb +104 -0
  98. data/lib/rubocop/cop/style/nil_lambda.rb +52 -0
  99. data/lib/rubocop/cop/style/raise_args.rb +21 -6
  100. data/lib/rubocop/cop/style/redundant_begin.rb +14 -4
  101. data/lib/rubocop/cop/style/redundant_parentheses.rb +4 -0
  102. data/lib/rubocop/cop/style/redundant_regexp_character_class.rb +7 -1
  103. data/lib/rubocop/cop/style/redundant_regexp_escape.rb +1 -1
  104. data/lib/rubocop/cop/style/redundant_self.rb +3 -0
  105. data/lib/rubocop/cop/style/safe_navigation.rb +16 -4
  106. data/lib/rubocop/cop/style/semicolon.rb +3 -0
  107. data/lib/rubocop/cop/style/static_class.rb +97 -0
  108. data/lib/rubocop/cop/style/string_concatenation.rb +13 -1
  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/style/while_until_modifier.rb +9 -0
  113. data/lib/rubocop/cop/team.rb +6 -1
  114. data/lib/rubocop/cop/util.rb +5 -1
  115. data/lib/rubocop/ext/regexp_node.rb +17 -9
  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/rspec/shared_contexts.rb +4 -0
  124. data/lib/rubocop/target_ruby.rb +57 -1
  125. data/lib/rubocop/version.rb +56 -6
  126. metadata +21 -5
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 4d381604ba6395ffc42db74e3f57245307935ec7a56d365e10b8d07207d432a1
4
- data.tar.gz: 2b290525226f487d860b5a1201266d1b20e403a05ed8a704c1270b7edaca5e2f
3
+ metadata.gz: 5013f1930869ad961d7fe1cf2cd8bad7a36a15bc37f6cf42e1663fbdb61f2cc2
4
+ data.tar.gz: 1ac4e658406f0f6e22a068f28fab225a8e9f53c59a79f89f0e52157cdc076efc
5
5
  SHA512:
6
- metadata.gz: 8639a2098ab1fb1e50fe6993e0a2d9f305998b7cc0215ab6bdd615506a4f8271de1fe78dbe1592b1ade597b40b79acfe4c5bc0503d8ee72940ff1732fd25a19d
7
- data.tar.gz: 11278958d9183ba56561ffc1f6b3cc69ac0b2f7d883cf5192cb31ab3ace1eacce21a23a13f998f4f2917d14574a6c27309be8f48085fc7abf940eab2ba0d1cce
6
+ metadata.gz: 555adab63cf768a150f37d2ca84e08f2322e84182528949e09bd5eda4c79348e4c41dc17d23737785ea044a78f54f99d99d512047446d7437efdeaf306147f32
7
+ data.tar.gz: 3fe186c044fd8733f4edef4055c036106d739e485dbfdcdbffe7882961175695edb79aafe27c1b11a8bbe9791f0754f26e7bd7534571dd09955bd5caf6aa6afe
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.0', 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:
@@ -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,10 @@ 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
+ AllowedMethods: []
1403
1405
 
1404
1406
  Lint/ConstantResolution:
1405
1407
  Description: 'Check that constants are fully qualified with `::`.'
@@ -1415,6 +1417,22 @@ Lint/Debugger:
1415
1417
  Enabled: true
1416
1418
  VersionAdded: '0.14'
1417
1419
  VersionChanged: '0.49'
1420
+ DebuggerReceivers:
1421
+ - binding
1422
+ - Kernel
1423
+ - Pry
1424
+ DebuggerMethods:
1425
+ - debugger
1426
+ - byebug
1427
+ - remote_byebug
1428
+ - pry
1429
+ - remote_pry
1430
+ - pry_remote
1431
+ - console
1432
+ - rescue
1433
+ - save_and_open_page
1434
+ - save_and_open_screenshot
1435
+ - irb
1418
1436
 
1419
1437
  Lint/DeprecatedClassMethods:
1420
1438
  Description: 'Check for deprecated class method calls.'
@@ -1423,7 +1441,7 @@ Lint/DeprecatedClassMethods:
1423
1441
 
1424
1442
  Lint/DeprecatedOpenSSLConstant:
1425
1443
  Description: "Don't use algorithm constants for `OpenSSL::Cipher` and `OpenSSL::Digest`."
1426
- Enabled: pending
1444
+ Enabled: true
1427
1445
  VersionAdded: '0.84'
1428
1446
 
1429
1447
  Lint/DisjunctiveAssignmentInConstructor:
@@ -1433,6 +1451,11 @@ Lint/DisjunctiveAssignmentInConstructor:
1433
1451
  VersionAdded: '0.62'
1434
1452
  VersionChanged: '0.88'
1435
1453
 
1454
+ Lint/DuplicateBranch:
1455
+ Description: Checks that there are no repeated bodies within `if/unless`, `case-when` and `rescue` constructs.
1456
+ Enabled: pending
1457
+ VersionAdded: '1.3'
1458
+
1436
1459
  Lint/DuplicateCaseCondition:
1437
1460
  Description: 'Do not repeat values in case conditionals.'
1438
1461
  Enabled: true
@@ -1440,7 +1463,7 @@ Lint/DuplicateCaseCondition:
1440
1463
 
1441
1464
  Lint/DuplicateElsifCondition:
1442
1465
  Description: 'Do not repeat conditions used in if `elsif`.'
1443
- Enabled: 'pending'
1466
+ Enabled: true
1444
1467
  VersionAdded: '0.88'
1445
1468
 
1446
1469
  Lint/DuplicateHashKey:
@@ -1454,14 +1477,19 @@ Lint/DuplicateMethods:
1454
1477
  Enabled: true
1455
1478
  VersionAdded: '0.29'
1456
1479
 
1480
+ Lint/DuplicateRegexpCharacterClassElement:
1481
+ Description: 'Checks for duplicate elements in Regexp character classes.'
1482
+ Enabled: pending
1483
+ VersionAdded: '1.1'
1484
+
1457
1485
  Lint/DuplicateRequire:
1458
1486
  Description: 'Check for duplicate `require`s and `require_relative`s.'
1459
- Enabled: pending
1487
+ Enabled: true
1460
1488
  VersionAdded: '0.90'
1461
1489
 
1462
1490
  Lint/DuplicateRescueException:
1463
1491
  Description: 'Checks that there are no repeated exceptions used in `rescue` expressions.'
1464
- Enabled: pending
1492
+ Enabled: true
1465
1493
  VersionAdded: '0.89'
1466
1494
 
1467
1495
  Lint/EachWithObjectArgument:
@@ -1473,10 +1501,25 @@ Lint/ElseLayout:
1473
1501
  Description: 'Check for odd code arrangement in an else block.'
1474
1502
  Enabled: true
1475
1503
  VersionAdded: '0.17'
1504
+ VersionChanged: '1.2'
1505
+
1506
+ Lint/EmptyBlock:
1507
+ Description: 'This cop checks for blocks without a body.'
1508
+ Enabled: pending
1509
+ VersionAdded: '1.1'
1510
+ VersionChanged: '1.3'
1511
+ AllowComments: true
1512
+ AllowEmptyLambdas: true
1513
+
1514
+ Lint/EmptyClass:
1515
+ Description: 'Checks for classes and metaclasses without a body.'
1516
+ Enabled: pending
1517
+ VersionAdded: '1.3'
1518
+ AllowComments: false
1476
1519
 
1477
1520
  Lint/EmptyConditionalBody:
1478
1521
  Description: 'This cop checks for the presence of `if`, `elsif` and `unless` branches without a body.'
1479
- Enabled: 'pending'
1522
+ Enabled: true
1480
1523
  AllowComments: true
1481
1524
  VersionAdded: '0.89'
1482
1525
 
@@ -1493,7 +1536,7 @@ Lint/EmptyExpression:
1493
1536
 
1494
1537
  Lint/EmptyFile:
1495
1538
  Description: 'Enforces that Ruby source files are not empty.'
1496
- Enabled: pending
1539
+ Enabled: true
1497
1540
  AllowComments: true
1498
1541
  VersionAdded: '0.90'
1499
1542
 
@@ -1531,7 +1574,7 @@ Lint/FlipFlop:
1531
1574
  Lint/FloatComparison:
1532
1575
  Description: 'Checks for the presence of precise comparison of floating point numbers.'
1533
1576
  StyleGuide: '#float-comparison'
1534
- Enabled: pending
1577
+ Enabled: true
1535
1578
  VersionAdded: '0.89'
1536
1579
 
1537
1580
  Lint/FloatOutOfRange:
@@ -1549,7 +1592,7 @@ Lint/FormatParameterMismatch:
1549
1592
  Lint/HashCompareByIdentity:
1550
1593
  Description: 'Prefer using `Hash#compare_by_identity` than using `object_id` for keys.'
1551
1594
  StyleGuide: '#identity-comparison'
1552
- Enabled: pending
1595
+ Enabled: true
1553
1596
  Safe: false
1554
1597
  VersionAdded: '0.93'
1555
1598
 
@@ -1563,7 +1606,7 @@ Lint/HeredocMethodCallPosition:
1563
1606
 
1564
1607
  Lint/IdentityComparison:
1565
1608
  Description: 'Prefer `equal?` over `==` when comparing `object_id`.'
1566
- Enabled: pending
1609
+ Enabled: true
1567
1610
  StyleGuide: '#identity-comparison'
1568
1611
  VersionAdded: '0.91'
1569
1612
 
@@ -1616,7 +1659,8 @@ Lint/Loop:
1616
1659
  StyleGuide: '#loop-with-break'
1617
1660
  Enabled: true
1618
1661
  VersionAdded: '0.9'
1619
- VersionChanged: '0.89'
1662
+ VersionChanged: '1.3'
1663
+ Safe: false
1620
1664
 
1621
1665
  Lint/MissingCopEnableDirective:
1622
1666
  Description: 'Checks for a `# rubocop:enable` after `# rubocop:disable`.'
@@ -1635,19 +1679,20 @@ Lint/MissingSuper:
1635
1679
  Description: >-
1636
1680
  This cop checks for the presence of constructors and lifecycle callbacks
1637
1681
  without calls to `super`'.
1638
- Enabled: pending
1682
+ Enabled: true
1639
1683
  VersionAdded: '0.89'
1640
1684
 
1641
1685
  Lint/MixedRegexpCaptureTypes:
1642
1686
  Description: 'Do not mix named captures and numbered captures in a Regexp literal.'
1643
- Enabled: pending
1687
+ Enabled: true
1644
1688
  VersionAdded: '0.85'
1645
1689
 
1646
1690
  Lint/MultipleComparison:
1647
1691
  Description: "Use `&&` operator to compare multiple values."
1648
1692
  Enabled: true
1649
1693
  VersionAdded: '0.47'
1650
- VersionChanged: '0.77'
1694
+ VersionChanged: '1.1'
1695
+ AllowMethodComparison: true
1651
1696
 
1652
1697
  Lint/NestedMethodDefinition:
1653
1698
  Description: 'Do not use nested method definitions.'
@@ -1667,6 +1712,11 @@ Lint/NextWithoutAccumulator:
1667
1712
  Enabled: true
1668
1713
  VersionAdded: '0.36'
1669
1714
 
1715
+ Lint/NoReturnInBeginEndBlocks:
1716
+ Description: 'Do not `return` inside `begin..end` blocks in assignment contexts.'
1717
+ Enabled: pending
1718
+ VersionAdded: '1.2'
1719
+
1670
1720
  Lint/NonDeterministicRequireOrder:
1671
1721
  Description: 'Always sort arrays returned by Dir.glob when requiring files.'
1672
1722
  Enabled: true
@@ -1682,8 +1732,12 @@ Lint/NumberConversion:
1682
1732
  Description: 'Checks unsafe usage of number conversion methods.'
1683
1733
  Enabled: false
1684
1734
  VersionAdded: '0.53'
1685
- VersionChanged: '0.70'
1735
+ VersionChanged: '1.1'
1686
1736
  SafeAutoCorrect: false
1737
+ IgnoredMethods: []
1738
+ IgnoredClasses:
1739
+ - Time
1740
+ - DateTime
1687
1741
 
1688
1742
  Lint/OrderedMagicComments:
1689
1743
  Description: 'Checks the proper ordering of magic comments and whether a magic comment is not placed before a shebang.'
@@ -1692,7 +1746,7 @@ Lint/OrderedMagicComments:
1692
1746
 
1693
1747
  Lint/OutOfRangeRegexpRef:
1694
1748
  Description: 'Checks for out of range reference for Regexp because it always returns nil.'
1695
- Enabled: pending
1749
+ Enabled: true
1696
1750
  Safe: false
1697
1751
  VersionAdded: '0.89'
1698
1752
 
@@ -1721,7 +1775,7 @@ Lint/PercentSymbolArray:
1721
1775
  Lint/RaiseException:
1722
1776
  Description: Checks for `raise` or `fail` statements which are raising `Exception` class.
1723
1777
  StyleGuide: '#raise-exception'
1724
- Enabled: pending
1778
+ Enabled: true
1725
1779
  Safe: false
1726
1780
  VersionAdded: '0.81'
1727
1781
  VersionChanged: '0.86'
@@ -1755,18 +1809,16 @@ Lint/RedundantRequireStatement:
1755
1809
 
1756
1810
  Lint/RedundantSafeNavigation:
1757
1811
  Description: 'Checks for redundant safe navigation calls.'
1758
- Enabled: pending
1812
+ Enabled: true
1759
1813
  VersionAdded: '0.93'
1814
+ AllowedMethods:
1815
+ - instance_of?
1816
+ - kind_of?
1817
+ - is_a?
1818
+ - eql?
1819
+ - respond_to?
1820
+ - equal?
1760
1821
  Safe: false
1761
- IgnoredMethods:
1762
- - to_c
1763
- - to_f
1764
- - to_i
1765
- - to_r
1766
- - rationalize
1767
- - public_send
1768
- - send
1769
- - __send__
1770
1822
 
1771
1823
  Lint/RedundantSplatExpansion:
1772
1824
  Description: 'Checks for splat unnecessarily being called on literals.'
@@ -1864,7 +1916,7 @@ Lint/ScriptPermission:
1864
1916
 
1865
1917
  Lint/SelfAssignment:
1866
1918
  Description: 'Checks for self-assignments.'
1867
- Enabled: pending
1919
+ Enabled: true
1868
1920
  VersionAdded: '0.89'
1869
1921
 
1870
1922
  Lint/SendWithMixinArgument:
@@ -1895,7 +1947,7 @@ Lint/ShadowingOuterLocalVariable:
1895
1947
 
1896
1948
  Lint/StructNewOverride:
1897
1949
  Description: 'Disallow overriding the `Struct` built-in methods via `Struct.new`.'
1898
- Enabled: pending
1950
+ Enabled: true
1899
1951
  VersionAdded: '0.81'
1900
1952
 
1901
1953
  Lint/SuppressedException:
@@ -1912,6 +1964,11 @@ Lint/Syntax:
1912
1964
  VersionAdded: '0.9'
1913
1965
 
1914
1966
 
1967
+ Lint/ToEnumArguments:
1968
+ Description: 'This cop ensures that `to_enum`/`enum_for`, called for the current method, has correct arguments.'
1969
+ Enabled: pending
1970
+ VersionAdded: '1.1'
1971
+
1915
1972
  Lint/ToJSON:
1916
1973
  Description: 'Ensure #to_json includes an optional argument.'
1917
1974
  Enabled: true
@@ -1919,12 +1976,12 @@ Lint/ToJSON:
1919
1976
 
1920
1977
  Lint/TopLevelReturnWithArgument:
1921
1978
  Description: 'This cop detects top level return statements with argument.'
1922
- Enabled: 'pending'
1979
+ Enabled: true
1923
1980
  VersionAdded: '0.89'
1924
1981
 
1925
1982
  Lint/TrailingCommaInAttributeDeclaration:
1926
1983
  Description: 'This cop checks for trailing commas in attribute declarations.'
1927
- Enabled: pending
1984
+ Enabled: true
1928
1985
  VersionAdded: '0.90'
1929
1986
 
1930
1987
  Lint/UnderscorePrefixedVariableName:
@@ -1938,6 +1995,11 @@ Lint/UnifiedInteger:
1938
1995
  Enabled: true
1939
1996
  VersionAdded: '0.43'
1940
1997
 
1998
+ Lint/UnmodifiedReduceAccumulator:
1999
+ Description: Checks for `reduce` or `inject` blocks that do not update the accumulator each iteration.
2000
+ Enabled: pending
2001
+ VersionAdded: '1.1'
2002
+
1941
2003
  Lint/UnreachableCode:
1942
2004
  Description: 'Unreachable code.'
1943
2005
  Enabled: true
@@ -1945,7 +2007,7 @@ Lint/UnreachableCode:
1945
2007
 
1946
2008
  Lint/UnreachableLoop:
1947
2009
  Description: 'This cop checks for loops that will have at most one iteration.'
1948
- Enabled: pending
2010
+ Enabled: true
1949
2011
  VersionAdded: '0.89'
1950
2012
 
1951
2013
  Lint/UnusedBlockArgument:
@@ -2004,7 +2066,7 @@ Lint/UselessElseWithoutRescue:
2004
2066
 
2005
2067
  Lint/UselessMethodDefinition:
2006
2068
  Description: 'Checks for useless method definitions.'
2007
- Enabled: pending
2069
+ Enabled: true
2008
2070
  VersionAdded: '0.90'
2009
2071
  Safe: false
2010
2072
  AllowComments: true
@@ -2012,13 +2074,14 @@ Lint/UselessMethodDefinition:
2012
2074
  Lint/UselessSetterCall:
2013
2075
  Description: 'Checks for useless setter call to a local variable.'
2014
2076
  Enabled: true
2077
+ SafeAutoCorrect: false
2015
2078
  VersionAdded: '0.13'
2016
- VersionChanged: '0.80'
2079
+ VersionChanged: '1.2'
2017
2080
  Safe: false
2018
2081
 
2019
2082
  Lint/UselessTimes:
2020
2083
  Description: 'Checks for useless `Integer#times` calls.'
2021
- Enabled: pending
2084
+ Enabled: true
2022
2085
  VersionAdded: '0.91'
2023
2086
  Safe: false
2024
2087
 
@@ -2157,6 +2220,7 @@ Naming/BinaryOperatorParameterName:
2157
2220
  StyleGuide: '#other-arg'
2158
2221
  Enabled: true
2159
2222
  VersionAdded: '0.50'
2223
+ VersionChanged: '1.2'
2160
2224
 
2161
2225
  Naming/BlockParameterName:
2162
2226
  Description: >-
@@ -2263,6 +2327,7 @@ Naming/HeredocDelimiterCase:
2263
2327
  StyleGuide: '#heredoc-delimiters'
2264
2328
  Enabled: true
2265
2329
  VersionAdded: '0.50'
2330
+ VersionChanged: '1.2'
2266
2331
  EnforcedStyle: uppercase
2267
2332
  SupportedStyles:
2268
2333
  - lowercase
@@ -2281,7 +2346,7 @@ Naming/MemoizedInstanceVariableName:
2281
2346
  Memoized method name should match memo instance variable name.
2282
2347
  Enabled: true
2283
2348
  VersionAdded: '0.53'
2284
- VersionChanged: '0.58'
2349
+ VersionChanged: '1.2'
2285
2350
  EnforcedStyleForLeadingUnderscores: disallowed
2286
2351
  SupportedStylesForLeadingUnderscores:
2287
2352
  - disallowed
@@ -2379,14 +2444,19 @@ Naming/VariableName:
2379
2444
  - camelCase
2380
2445
 
2381
2446
  Naming/VariableNumber:
2382
- Description: 'Use the configured style when numbering variables.'
2447
+ Description: 'Use the configured style when numbering symbols, methods and variables.'
2448
+ StyleGuide: '#snake-case-symbols-methods-vars-with-numbers'
2383
2449
  Enabled: true
2384
2450
  VersionAdded: '0.50'
2451
+ VersionChanged: '1.3'
2385
2452
  EnforcedStyle: normalcase
2386
2453
  SupportedStyles:
2387
2454
  - snake_case
2388
2455
  - normalcase
2389
2456
  - non_integer
2457
+ CheckMethodNames: true
2458
+ CheckSymbols: true
2459
+ AllowedIdentifiers: []
2390
2460
 
2391
2461
  #################### Security ##############################
2392
2462
 
@@ -2417,9 +2487,10 @@ Security/MarshalLoad:
2417
2487
  VersionAdded: '0.47'
2418
2488
 
2419
2489
  Security/Open:
2420
- Description: 'The use of Kernel#open represents a serious security risk.'
2490
+ Description: 'The use of `Kernel#open` and `URI.open` represent a serious security risk.'
2421
2491
  Enabled: true
2422
2492
  VersionAdded: '0.53'
2493
+ VersionChanged: '1.0'
2423
2494
  Safe: false
2424
2495
 
2425
2496
  Security/YAMLLoad:
@@ -2446,7 +2517,7 @@ Style/AccessModifierDeclarations:
2446
2517
 
2447
2518
  Style/AccessorGrouping:
2448
2519
  Description: 'Checks for grouping of accessors in `class` and `module` bodies.'
2449
- Enabled: 'pending'
2520
+ Enabled: true
2450
2521
  VersionAdded: '0.87'
2451
2522
  EnforcedStyle: grouped
2452
2523
  SupportedStyles:
@@ -2479,6 +2550,13 @@ Style/AndOr:
2479
2550
  - always
2480
2551
  - conditionals
2481
2552
 
2553
+ Style/ArgumentsForwarding:
2554
+ Description: 'Use arguments forwarding.'
2555
+ StyleGuide: '#arguments-forwarding'
2556
+ Enabled: pending
2557
+ AllowOnlyRestArgument: true
2558
+ VersionAdded: '1.1'
2559
+
2482
2560
  Style/ArrayCoercion:
2483
2561
  Description: >-
2484
2562
  Use Array() instead of explicit Array check or [*var], when dealing
@@ -2535,7 +2613,7 @@ Style/BisectedAttrAccessor:
2535
2613
  Description: >-
2536
2614
  Checks for places where `attr_reader` and `attr_writer`
2537
2615
  for the same method can be combined into single `attr_accessor`.
2538
- Enabled: 'pending'
2616
+ Enabled: true
2539
2617
  VersionAdded: '0.87'
2540
2618
 
2541
2619
  Style/BlockComments:
@@ -2674,7 +2752,7 @@ Style/CaseEquality:
2674
2752
  Style/CaseLikeIf:
2675
2753
  Description: 'This cop identifies places where `if-elsif` constructions can be replaced with `case-when`.'
2676
2754
  StyleGuide: '#case-vs-if-else'
2677
- Enabled: 'pending'
2755
+ Enabled: true
2678
2756
  Safe: false
2679
2757
  VersionAdded: '0.88'
2680
2758
 
@@ -2727,7 +2805,7 @@ Style/ClassCheck:
2727
2805
  Style/ClassEqualityComparison:
2728
2806
  Description: 'Enforces the use of `Object#instance_of?` instead of class comparison for equality.'
2729
2807
  StyleGuide: '#instance-of-vs-class-comparison'
2730
- Enabled: pending
2808
+ Enabled: true
2731
2809
  VersionAdded: '0.93'
2732
2810
  IgnoredMethods:
2733
2811
  - ==
@@ -2757,6 +2835,13 @@ Style/ClassVars:
2757
2835
  Enabled: true
2758
2836
  VersionAdded: '0.13'
2759
2837
 
2838
+ Style/CollectionCompact:
2839
+ Description: 'Use `{Array,Hash}#{compact,compact!}` instead of custom logic to reject nils.'
2840
+ Enabled: pending
2841
+ Safe: false
2842
+ VersionAdded: '1.2'
2843
+ VersionChanged: '1.3'
2844
+
2760
2845
  # Align with the style guide.
2761
2846
  Style/CollectionMethods:
2762
2847
  Description: 'Preferred collection methods.'
@@ -2795,7 +2880,7 @@ Style/CombinableLoops:
2795
2880
  Description: >-
2796
2881
  Checks for places where multiple consecutive loops over the same data
2797
2882
  can be combined into a single loop.
2798
- Enabled: pending
2883
+ Enabled: true
2799
2884
  Safe: false
2800
2885
  VersionAdded: '0.90'
2801
2886
 
@@ -2820,17 +2905,18 @@ Style/CommandLiteral:
2820
2905
  Style/CommentAnnotation:
2821
2906
  Description: >-
2822
2907
  Checks formatting of special comments
2823
- (TODO, FIXME, OPTIMIZE, HACK, REVIEW).
2908
+ (TODO, FIXME, OPTIMIZE, HACK, REVIEW, NOTE).
2824
2909
  StyleGuide: '#annotate-keywords'
2825
2910
  Enabled: true
2826
2911
  VersionAdded: '0.10'
2827
- VersionChanged: '0.31'
2912
+ VersionChanged: '1.3'
2828
2913
  Keywords:
2829
2914
  - TODO
2830
2915
  - FIXME
2831
2916
  - OPTIMIZE
2832
2917
  - HACK
2833
2918
  - REVIEW
2919
+ - NOTE
2834
2920
 
2835
2921
  Style/CommentedKeyword:
2836
2922
  Description: 'Do not place comments on the same line as certain keywords.'
@@ -2919,6 +3005,15 @@ Style/DisableCopsWithinSourceCodeDirective:
2919
3005
  Enabled: false
2920
3006
  VersionAdded: '0.82'
2921
3007
 
3008
+ Style/DocumentDynamicEvalDefinition:
3009
+ Description: >-
3010
+ When using `class_eval` (or other `eval`) with string interpolation,
3011
+ add a comment block showing its appearance if interpolated.
3012
+ StyleGuide: '#eval-comment-docs'
3013
+ Enabled: pending
3014
+ VersionAdded: '1.1'
3015
+ VersionChanged: '1.3'
3016
+
2922
3017
  Style/Documentation:
2923
3018
  Description: 'Document classes and non-namespace modules.'
2924
3019
  Enabled: true
@@ -2946,7 +3041,7 @@ Style/DoubleNegation:
2946
3041
  StyleGuide: '#no-bang-bang'
2947
3042
  Enabled: true
2948
3043
  VersionAdded: '0.19'
2949
- VersionChanged: '0.84'
3044
+ VersionChanged: '1.2'
2950
3045
  EnforcedStyle: allowed_in_returns
2951
3046
  SafeAutoCorrect: false
2952
3047
  SupportedStyles:
@@ -3048,7 +3143,7 @@ Style/ExplicitBlockArgument:
3048
3143
  Consider using explicit block argument to avoid writing block literal
3049
3144
  that just passes its arguments to another block.
3050
3145
  StyleGuide: '#block-argument'
3051
- Enabled: pending
3146
+ Enabled: true
3052
3147
  # May change the yielding arity.
3053
3148
  Safe: false
3054
3149
  VersionAdded: '0.89'
@@ -3056,7 +3151,7 @@ Style/ExplicitBlockArgument:
3056
3151
  Style/ExponentialNotation:
3057
3152
  Description: 'When using exponential notation, favor a mantissa between 1 (inclusive) and 10 (exclusive).'
3058
3153
  StyleGuide: '#exponential-notation'
3059
- Enabled: pending
3154
+ Enabled: true
3060
3155
  VersionAdded: '0.82'
3061
3156
  EnforcedStyle: scientific
3062
3157
  SupportedStyles:
@@ -3111,8 +3206,12 @@ Style/FormatStringToken:
3111
3206
  # Prefer simple looking "template" style tokens like `%{name}`, `%{age}`
3112
3207
  - template
3113
3208
  - unannotated
3209
+ # `MaxUnannotatedPlaceholdersAllowed` defines the number of `unannotated`
3210
+ # style token in a format string to be allowed when enforced style is not
3211
+ # `unannotated`.
3212
+ MaxUnannotatedPlaceholdersAllowed: 1
3114
3213
  VersionAdded: '0.49'
3115
- VersionChanged: '0.75'
3214
+ VersionChanged: '1.0'
3116
3215
 
3117
3216
  Style/FrozenStringLiteralComment:
3118
3217
  Description: >-
@@ -3139,7 +3238,7 @@ Style/FrozenStringLiteralComment:
3139
3238
  Style/GlobalStdStream:
3140
3239
  Description: 'Enforces the use of `$stdout/$stderr/$stdin` instead of `STDOUT/STDERR/STDIN`.'
3141
3240
  StyleGuide: '#global-stdout'
3142
- Enabled: pending
3241
+ Enabled: true
3143
3242
  VersionAdded: '0.89'
3144
3243
  SafeAutoCorrect: false
3145
3244
 
@@ -3167,7 +3266,7 @@ Style/HashAsLastArrayItem:
3167
3266
  Checks for presence or absence of braces around hash literal as a last
3168
3267
  array item depending on configuration.
3169
3268
  StyleGuide: '#hash-literal-as-last-array-item'
3170
- Enabled: 'pending'
3269
+ Enabled: true
3171
3270
  VersionAdded: '0.88'
3172
3271
  EnforcedStyle: braces
3173
3272
  SupportedStyles:
@@ -3177,7 +3276,7 @@ Style/HashAsLastArrayItem:
3177
3276
  Style/HashEachMethods:
3178
3277
  Description: 'Use Hash#each_key and Hash#each_value.'
3179
3278
  StyleGuide: '#hash-each'
3180
- Enabled: pending
3279
+ Enabled: true
3181
3280
  VersionAdded: '0.80'
3182
3281
  Safe: false
3183
3282
 
@@ -3185,7 +3284,7 @@ Style/HashLikeCase:
3185
3284
  Description: >-
3186
3285
  Checks for places where `case-when` represents a simple 1:1
3187
3286
  mapping and can be replaced with a hash lookup.
3188
- Enabled: 'pending'
3287
+ Enabled: true
3189
3288
  VersionAdded: '0.88'
3190
3289
  # `MinBranchesCount` defines the number of branches `case` needs to have
3191
3290
  # to trigger this cop
@@ -3216,14 +3315,14 @@ Style/HashSyntax:
3216
3315
 
3217
3316
  Style/HashTransformKeys:
3218
3317
  Description: 'Prefer `transform_keys` over `each_with_object`, `map`, or `to_h`.'
3219
- Enabled: 'pending'
3318
+ Enabled: true
3220
3319
  VersionAdded: '0.80'
3221
3320
  VersionChanged: '0.90'
3222
3321
  Safe: false
3223
3322
 
3224
3323
  Style/HashTransformValues:
3225
3324
  Description: 'Prefer `transform_values` over `each_with_object`, `map`, or `to_h`.'
3226
- Enabled: 'pending'
3325
+ Enabled: true
3227
3326
  VersionAdded: '0.80'
3228
3327
  VersionChanged: '0.90'
3229
3328
  Safe: false
@@ -3241,6 +3340,7 @@ Style/IfInsideElse:
3241
3340
  Enabled: true
3242
3341
  AllowIfModifier: false
3243
3342
  VersionAdded: '0.36'
3343
+ VersionChanged: '1.3'
3244
3344
 
3245
3345
  Style/IfUnlessModifier:
3246
3346
  Description: >-
@@ -3273,12 +3373,14 @@ Style/ImplicitRuntimeError:
3273
3373
  VersionAdded: '0.41'
3274
3374
 
3275
3375
  Style/InfiniteLoop:
3276
- Description: 'Use Kernel#loop for infinite loops.'
3376
+ Description: >-
3377
+ Use Kernel#loop for infinite loops.
3378
+ This cop is unsafe in the body may raise a `StopIteration` exception.
3379
+ Safe: false
3277
3380
  StyleGuide: '#infinite-loop'
3278
3381
  Enabled: true
3279
3382
  VersionAdded: '0.26'
3280
3383
  VersionChanged: '0.61'
3281
- SafeAutoCorrect: true
3282
3384
 
3283
3385
  Style/InlineComment:
3284
3386
  Description: 'Avoid trailing inline comments.'
@@ -3330,7 +3432,7 @@ Style/IpAddresses:
3330
3432
  Style/KeywordParametersOrder:
3331
3433
  Description: 'Enforces that optional keyword parameters are placed at the end of the parameters list.'
3332
3434
  StyleGuide: '#keyword-parameters-order'
3333
- Enabled: pending
3435
+ Enabled: true
3334
3436
  VersionAdded: '0.90'
3335
3437
 
3336
3438
  Style/Lambda:
@@ -3532,6 +3634,7 @@ Style/MultipleComparison:
3532
3634
  use Array#include? instead.
3533
3635
  Enabled: true
3534
3636
  VersionAdded: '0.49'
3637
+ VersionChanged: '1.1'
3535
3638
 
3536
3639
  Style/MutableConstant:
3537
3640
  Description: 'Do not assign mutable objects to constants.'
@@ -3566,6 +3669,13 @@ Style/NegatedIf:
3566
3669
  - prefix
3567
3670
  - postfix
3568
3671
 
3672
+ Style/NegatedIfElseCondition:
3673
+ Description: >-
3674
+ This cop checks for uses of `if-else` and ternary operators with a negated condition
3675
+ which can be simplified by inverting condition and swapping branches.
3676
+ Enabled: pending
3677
+ VersionAdded: '1.2'
3678
+
3569
3679
  Style/NegatedUnless:
3570
3680
  Description: 'Favor if over unless for negative conditions.'
3571
3681
  StyleGuide: '#if-for-negatives'
@@ -3653,6 +3763,11 @@ Style/NilComparison:
3653
3763
  - predicate
3654
3764
  - comparison
3655
3765
 
3766
+ Style/NilLambda:
3767
+ Description: 'Prefer `-> {}` to `-> { nil }`.'
3768
+ Enabled: pending
3769
+ VersionAdded: '1.3'
3770
+
3656
3771
  Style/NonNilCheck:
3657
3772
  Description: 'Checks for redundant nil checks.'
3658
3773
  StyleGuide: '#no-non-nil-checks'
@@ -3755,7 +3870,7 @@ Style/OptionalArguments:
3755
3870
  Style/OptionalBooleanParameter:
3756
3871
  Description: 'Use keyword arguments when defining method with boolean argument.'
3757
3872
  StyleGuide: '#boolean-keyword-arguments'
3758
- Enabled: pending
3873
+ Enabled: true
3759
3874
  Safe: false
3760
3875
  VersionAdded: '0.89'
3761
3876
  AllowedMethods:
@@ -3843,11 +3958,12 @@ Style/RaiseArgs:
3843
3958
  StyleGuide: '#exception-class-messages'
3844
3959
  Enabled: true
3845
3960
  VersionAdded: '0.14'
3846
- VersionChanged: '0.40'
3961
+ VersionChanged: '1.2'
3847
3962
  EnforcedStyle: exploded
3848
3963
  SupportedStyles:
3849
3964
  - compact # raise Exception.new(msg)
3850
3965
  - exploded # raise Exception, msg
3966
+ AllowedCompactTypes: []
3851
3967
 
3852
3968
  Style/RandomWithOffset:
3853
3969
  Description: >-
@@ -3859,7 +3975,7 @@ Style/RandomWithOffset:
3859
3975
 
3860
3976
  Style/RedundantAssignment:
3861
3977
  Description: 'Checks for redundant assignment before returning.'
3862
- Enabled: 'pending'
3978
+ Enabled: true
3863
3979
  VersionAdded: '0.87'
3864
3980
 
3865
3981
  Style/RedundantBegin:
@@ -3896,7 +4012,7 @@ Style/RedundantFetchBlock:
3896
4012
  Use `fetch(key, value)` instead of `fetch(key) { value }`
3897
4013
  when value has Numeric, Rational, Complex, Symbol or String type, `false`, `true`, `nil` or is a constant.
3898
4014
  Reference: 'https://github.com/JuanitoFatas/fast-ruby#hashfetch-with-argument-vs-hashfetch--block-code'
3899
- Enabled: 'pending'
4015
+ Enabled: true
3900
4016
  Safe: false
3901
4017
  # If enabled, this cop will autocorrect usages of
3902
4018
  # `fetch` being called with block returning a constant.
@@ -3909,7 +4025,7 @@ Style/RedundantFileExtensionInRequire:
3909
4025
  Checks for the presence of superfluous `.rb` extension in
3910
4026
  the filename provided to `require` and `require_relative`.
3911
4027
  StyleGuide: '#no-explicit-rb-to-require'
3912
- Enabled: 'pending'
4028
+ Enabled: true
3913
4029
  VersionAdded: '0.88'
3914
4030
 
3915
4031
  Style/RedundantFreeze:
@@ -3936,12 +4052,12 @@ Style/RedundantPercentQ:
3936
4052
 
3937
4053
  Style/RedundantRegexpCharacterClass:
3938
4054
  Description: 'Checks for unnecessary single-element Regexp character classes.'
3939
- Enabled: pending
4055
+ Enabled: true
3940
4056
  VersionAdded: '0.85'
3941
4057
 
3942
4058
  Style/RedundantRegexpEscape:
3943
4059
  Description: 'Checks for redundant escapes in Regexps.'
3944
- Enabled: pending
4060
+ Enabled: true
3945
4061
  VersionAdded: '0.85'
3946
4062
 
3947
4063
  Style/RedundantReturn:
@@ -3962,7 +4078,7 @@ Style/RedundantSelf:
3962
4078
 
3963
4079
  Style/RedundantSelfAssignment:
3964
4080
  Description: 'Checks for places where redundant assignments are made for in place modification methods.'
3965
- Enabled: pending
4081
+ Enabled: true
3966
4082
  Safe: false
3967
4083
  VersionAdded: '0.90'
3968
4084
 
@@ -4090,7 +4206,7 @@ Style/SignalException:
4090
4206
 
4091
4207
  Style/SingleArgumentDig:
4092
4208
  Description: 'Avoid using single argument dig method.'
4093
- Enabled: pending
4209
+ Enabled: true
4094
4210
  VersionAdded: '0.89'
4095
4211
  Safe: false
4096
4212
 
@@ -4117,7 +4233,7 @@ Style/SingleLineMethods:
4117
4233
 
4118
4234
  Style/SlicingWithRange:
4119
4235
  Description: 'Checks array slicing is done with endless ranges when suitable.'
4120
- Enabled: pending
4236
+ Enabled: true
4121
4237
  VersionAdded: '0.83'
4122
4238
  Safe: false
4123
4239
 
@@ -4125,7 +4241,7 @@ Style/SoleNestedConditional:
4125
4241
  Description: >-
4126
4242
  Finds sole nested conditional nodes
4127
4243
  which can be merged into outer conditional node.
4128
- Enabled: pending
4244
+ Enabled: true
4129
4245
  VersionAdded: '0.89'
4130
4246
  AllowModifier: false
4131
4247
 
@@ -4151,6 +4267,13 @@ Style/StabbyLambdaParentheses:
4151
4267
  - require_parentheses
4152
4268
  - require_no_parentheses
4153
4269
 
4270
+ Style/StaticClass:
4271
+ Description: 'Prefer modules to classes with only class methods.'
4272
+ StyleGuide: '#modules-vs-classes'
4273
+ Enabled: false
4274
+ Safe: false
4275
+ VersionAdded: '1.3'
4276
+
4154
4277
  Style/StderrPuts:
4155
4278
  Description: 'Use `warn` instead of `$stderr.puts`.'
4156
4279
  StyleGuide: '#warn'
@@ -4160,7 +4283,7 @@ Style/StderrPuts:
4160
4283
  Style/StringConcatenation:
4161
4284
  Description: 'Checks for places where string concatenation can be replaced with string interpolation.'
4162
4285
  StyleGuide: '#string-interpolation'
4163
- Enabled: pending
4286
+ Enabled: true
4164
4287
  Safe: false
4165
4288
  VersionAdded: '0.89'
4166
4289
 
@@ -4223,6 +4346,13 @@ Style/StructInheritance:
4223
4346
  VersionAdded: '0.29'
4224
4347
  VersionChanged: '0.86'
4225
4348
 
4349
+ Style/SwapValues:
4350
+ Description: 'This cop enforces the use of shorthand-style swapping of 2 variables.'
4351
+ StyleGuide: '#values-swapping'
4352
+ Enabled: pending
4353
+ VersionAdded: '1.1'
4354
+ SafeAutoCorrect: false
4355
+
4226
4356
  Style/SymbolArray:
4227
4357
  Description: 'Use %i or %I for arrays of symbols.'
4228
4358
  StyleGuide: '#percent-i'