rubocop 0.79.0 → 0.83.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (225) hide show
  1. checksums.yaml +4 -4
  2. data/LICENSE.txt +1 -1
  3. data/README.md +5 -5
  4. data/config/default.yml +184 -50
  5. data/lib/rubocop.rb +15 -5
  6. data/lib/rubocop/ast/builder.rb +2 -0
  7. data/lib/rubocop/ast/node.rb +12 -19
  8. data/lib/rubocop/ast/node/array_node.rb +13 -0
  9. data/lib/rubocop/ast/node/block_node.rb +5 -1
  10. data/lib/rubocop/ast/node/case_match_node.rb +56 -0
  11. data/lib/rubocop/ast/node/mixin/method_dispatch_node.rb +8 -0
  12. data/lib/rubocop/ast/node/regexp_node.rb +2 -4
  13. data/lib/rubocop/ast/node/send_node.rb +4 -0
  14. data/lib/rubocop/ast/traversal.rb +20 -9
  15. data/lib/rubocop/cli.rb +11 -5
  16. data/lib/rubocop/comment_config.rb +6 -1
  17. data/lib/rubocop/config.rb +40 -10
  18. data/lib/rubocop/config_loader.rb +43 -33
  19. data/lib/rubocop/config_loader_resolver.rb +28 -1
  20. data/lib/rubocop/config_obsoletion.rb +4 -1
  21. data/lib/rubocop/config_validator.rb +18 -1
  22. data/lib/rubocop/cop/badge.rb +5 -5
  23. data/lib/rubocop/cop/bundler/insecure_protocol_source.rb +1 -1
  24. data/lib/rubocop/cop/corrector.rb +48 -24
  25. data/lib/rubocop/cop/correctors/alignment_corrector.rb +2 -2
  26. data/lib/rubocop/cop/correctors/condition_corrector.rb +1 -2
  27. data/lib/rubocop/cop/correctors/empty_line_corrector.rb +1 -1
  28. data/lib/rubocop/cop/correctors/lambda_literal_to_method_corrector.rb +3 -3
  29. data/lib/rubocop/cop/correctors/line_break_corrector.rb +2 -2
  30. data/lib/rubocop/cop/correctors/percent_literal_corrector.rb +1 -1
  31. data/lib/rubocop/cop/correctors/string_literal_corrector.rb +2 -2
  32. data/lib/rubocop/cop/generator.rb +3 -2
  33. data/lib/rubocop/cop/internal_affairs/offense_location_keyword.rb +1 -1
  34. data/lib/rubocop/cop/layout/array_alignment.rb +53 -10
  35. data/lib/rubocop/cop/layout/block_end_newline.rb +5 -3
  36. data/lib/rubocop/cop/layout/condition_position.rb +12 -2
  37. data/lib/rubocop/cop/layout/dot_position.rb +1 -1
  38. data/lib/rubocop/cop/layout/else_alignment.rb +8 -0
  39. data/lib/rubocop/cop/layout/empty_line_between_defs.rb +2 -1
  40. data/lib/rubocop/cop/layout/empty_lines_around_attribute_accessor.rb +68 -0
  41. data/lib/rubocop/cop/layout/end_of_line.rb +2 -2
  42. data/lib/rubocop/cop/layout/first_array_element_indentation.rb +16 -10
  43. data/lib/rubocop/cop/layout/first_hash_element_indentation.rb +1 -1
  44. data/lib/rubocop/cop/layout/heredoc_argument_closing_parenthesis.rb +2 -2
  45. data/lib/rubocop/cop/layout/heredoc_indentation.rb +2 -2
  46. data/lib/rubocop/cop/layout/{tab.rb → indentation_style.rb} +48 -6
  47. data/lib/rubocop/cop/layout/leading_comment_space.rb +34 -3
  48. data/lib/rubocop/cop/layout/line_length.rb +36 -4
  49. data/lib/rubocop/cop/layout/multiline_block_layout.rb +1 -1
  50. data/lib/rubocop/cop/layout/multiline_hash_brace_layout.rb +0 -4
  51. data/lib/rubocop/cop/layout/multiline_method_call_indentation.rb +1 -1
  52. data/lib/rubocop/cop/layout/multiline_operation_indentation.rb +13 -4
  53. data/lib/rubocop/cop/layout/space_around_block_parameters.rb +3 -3
  54. data/lib/rubocop/cop/layout/space_around_method_call_operator.rb +133 -0
  55. data/lib/rubocop/cop/layout/space_around_operators.rb +37 -2
  56. data/lib/rubocop/cop/layout/space_before_first_arg.rb +8 -0
  57. data/lib/rubocop/cop/layout/space_in_lambda_literal.rb +1 -1
  58. data/lib/rubocop/cop/layout/space_inside_block_braces.rb +2 -2
  59. data/lib/rubocop/cop/layout/space_inside_hash_literal_braces.rb +2 -9
  60. data/lib/rubocop/cop/layout/space_inside_range_literal.rb +2 -2
  61. data/lib/rubocop/cop/layout/trailing_whitespace.rb +2 -2
  62. data/lib/rubocop/cop/lint/ambiguous_operator.rb +38 -0
  63. data/lib/rubocop/cop/lint/ambiguous_regexp_literal.rb +14 -0
  64. data/lib/rubocop/cop/lint/boolean_symbol.rb +12 -0
  65. data/lib/rubocop/cop/lint/debugger.rb +2 -2
  66. data/lib/rubocop/cop/lint/duplicate_methods.rb +1 -5
  67. data/lib/rubocop/cop/lint/empty_when.rb +29 -6
  68. data/lib/rubocop/cop/lint/ensure_return.rb +18 -1
  69. data/lib/rubocop/cop/lint/erb_new_arguments.rb +1 -1
  70. data/lib/rubocop/cop/lint/implicit_string_concatenation.rb +1 -1
  71. data/lib/rubocop/cop/lint/inherit_exception.rb +1 -1
  72. data/lib/rubocop/cop/lint/interpolation_check.rb +1 -1
  73. data/lib/rubocop/cop/lint/literal_as_condition.rb +10 -13
  74. data/lib/rubocop/cop/lint/literal_in_interpolation.rb +1 -1
  75. data/lib/rubocop/cop/lint/loop.rb +6 -4
  76. data/lib/rubocop/cop/lint/multiple_comparison.rb +1 -1
  77. data/lib/rubocop/cop/lint/nested_method_definition.rb +2 -2
  78. data/lib/rubocop/cop/lint/non_deterministic_require_order.rb +2 -2
  79. data/lib/rubocop/cop/lint/number_conversion.rb +1 -1
  80. data/lib/rubocop/cop/lint/parentheses_as_grouped_expression.rb +21 -9
  81. data/lib/rubocop/cop/lint/percent_string_array.rb +2 -2
  82. data/lib/rubocop/cop/lint/raise_exception.rb +75 -0
  83. data/lib/rubocop/cop/lint/redundant_cop_disable_directive.rb +1 -6
  84. data/lib/rubocop/cop/lint/redundant_cop_enable_directive.rb +12 -7
  85. data/lib/rubocop/cop/lint/redundant_string_coercion.rb +1 -1
  86. data/lib/rubocop/cop/lint/safe_navigation_chain.rb +1 -1
  87. data/lib/rubocop/cop/lint/struct_new_override.rb +58 -0
  88. data/lib/rubocop/cop/lint/suppressed_exception.rb +12 -28
  89. data/lib/rubocop/cop/lint/unified_integer.rb +0 -2
  90. data/lib/rubocop/cop/lint/unused_method_argument.rb +32 -6
  91. data/lib/rubocop/cop/lint/uri_regexp.rb +4 -4
  92. data/lib/rubocop/cop/lint/useless_access_modifier.rb +12 -0
  93. data/lib/rubocop/cop/lint/useless_assignment.rb +3 -2
  94. data/lib/rubocop/cop/lint/useless_else_without_rescue.rb +5 -0
  95. data/lib/rubocop/cop/lint/useless_setter_call.rb +4 -0
  96. data/lib/rubocop/cop/migration/department_name.rb +36 -10
  97. data/lib/rubocop/cop/mixin/configurable_enforced_style.rb +4 -0
  98. data/lib/rubocop/cop/mixin/end_keyword_alignment.rb +6 -1
  99. data/lib/rubocop/cop/mixin/frozen_string_literal.rb +16 -1
  100. data/lib/rubocop/cop/mixin/hash_transform_method.rb +178 -0
  101. data/lib/rubocop/cop/mixin/line_length_help.rb +2 -1
  102. data/lib/rubocop/cop/mixin/method_complexity.rb +5 -0
  103. data/lib/rubocop/cop/mixin/parser_diagnostic.rb +1 -1
  104. data/lib/rubocop/cop/mixin/statement_modifier.rb +7 -22
  105. data/lib/rubocop/cop/mixin/target_ruby_version.rb +5 -1
  106. data/lib/rubocop/cop/mixin/trailing_comma.rb +3 -10
  107. data/lib/rubocop/cop/naming/class_and_module_camel_case.rb +1 -1
  108. data/lib/rubocop/cop/naming/constant_name.rb +2 -1
  109. data/lib/rubocop/cop/naming/heredoc_delimiter_naming.rb +1 -1
  110. data/lib/rubocop/cop/naming/memoized_instance_variable_name.rb +1 -1
  111. data/lib/rubocop/cop/naming/method_name.rb +26 -0
  112. data/lib/rubocop/cop/naming/rescued_exceptions_variable_name.rb +1 -1
  113. data/lib/rubocop/cop/registry.rb +11 -4
  114. data/lib/rubocop/cop/style/access_modifier_declarations.rb +26 -6
  115. data/lib/rubocop/cop/style/alias.rb +4 -4
  116. data/lib/rubocop/cop/style/and_or.rb +5 -6
  117. data/lib/rubocop/cop/style/array_join.rb +1 -1
  118. data/lib/rubocop/cop/style/block_delimiters.rb +60 -1
  119. data/lib/rubocop/cop/style/case_equality.rb +24 -1
  120. data/lib/rubocop/cop/style/character_literal.rb +2 -2
  121. data/lib/rubocop/cop/style/collection_methods.rb +2 -0
  122. data/lib/rubocop/cop/style/conditional_assignment.rb +8 -8
  123. data/lib/rubocop/cop/style/copyright.rb +1 -1
  124. data/lib/rubocop/cop/style/dir.rb +1 -1
  125. data/lib/rubocop/cop/style/disable_cops_within_source_code_directive.rb +49 -0
  126. data/lib/rubocop/cop/style/documentation.rb +43 -5
  127. data/lib/rubocop/cop/style/double_cop_disable_directive.rb +1 -1
  128. data/lib/rubocop/cop/style/each_for_simple_loop.rb +1 -1
  129. data/lib/rubocop/cop/style/each_with_object.rb +3 -3
  130. data/lib/rubocop/cop/style/empty_method.rb +1 -5
  131. data/lib/rubocop/cop/style/end_block.rb +6 -0
  132. data/lib/rubocop/cop/style/even_odd.rb +1 -1
  133. data/lib/rubocop/cop/style/expand_path_arguments.rb +3 -3
  134. data/lib/rubocop/cop/style/exponential_notation.rb +119 -0
  135. data/lib/rubocop/cop/style/format_string.rb +2 -2
  136. data/lib/rubocop/cop/style/frozen_string_literal_comment.rb +89 -11
  137. data/lib/rubocop/cop/style/guard_clause.rb +25 -2
  138. data/lib/rubocop/cop/style/hash_each_methods.rb +89 -0
  139. data/lib/rubocop/cop/style/hash_syntax.rb +3 -5
  140. data/lib/rubocop/cop/style/hash_transform_keys.rb +83 -0
  141. data/lib/rubocop/cop/style/hash_transform_values.rb +80 -0
  142. data/lib/rubocop/cop/style/if_unless_modifier.rb +23 -3
  143. data/lib/rubocop/cop/style/if_with_semicolon.rb +16 -0
  144. data/lib/rubocop/cop/style/inverse_methods.rb +9 -5
  145. data/lib/rubocop/cop/style/lambda.rb +3 -2
  146. data/lib/rubocop/cop/style/lambda_call.rb +1 -21
  147. data/lib/rubocop/cop/style/method_call_with_args_parentheses.rb +5 -0
  148. data/lib/rubocop/cop/style/method_call_with_args_parentheses/omit_parentheses.rb +5 -4
  149. data/lib/rubocop/cop/style/mixin_grouping.rb +1 -1
  150. data/lib/rubocop/cop/style/module_function.rb +58 -12
  151. data/lib/rubocop/cop/style/multiline_if_modifier.rb +1 -1
  152. data/lib/rubocop/cop/style/multiline_memoization.rb +1 -1
  153. data/lib/rubocop/cop/style/multiline_when_then.rb +16 -1
  154. data/lib/rubocop/cop/style/mutable_constant.rb +2 -4
  155. data/lib/rubocop/cop/style/nested_parenthesized_calls.rb +4 -4
  156. data/lib/rubocop/cop/style/next.rb +2 -2
  157. data/lib/rubocop/cop/style/nil_comparison.rb +1 -1
  158. data/lib/rubocop/cop/style/non_nil_check.rb +4 -4
  159. data/lib/rubocop/cop/style/not.rb +1 -1
  160. data/lib/rubocop/cop/style/numeric_literal_prefix.rb +1 -1
  161. data/lib/rubocop/cop/style/numeric_literals.rb +1 -1
  162. data/lib/rubocop/cop/style/numeric_predicate.rb +1 -1
  163. data/lib/rubocop/cop/style/one_line_conditional.rb +4 -3
  164. data/lib/rubocop/cop/style/optional_arguments.rb +1 -1
  165. data/lib/rubocop/cop/style/or_assignment.rb +4 -3
  166. data/lib/rubocop/cop/style/percent_q_literals.rb +1 -1
  167. data/lib/rubocop/cop/style/perl_backrefs.rb +2 -2
  168. data/lib/rubocop/cop/style/proc.rb +1 -1
  169. data/lib/rubocop/cop/style/raise_args.rb +1 -1
  170. data/lib/rubocop/cop/style/random_with_offset.rb +3 -3
  171. data/lib/rubocop/cop/style/redundant_condition.rb +18 -6
  172. data/lib/rubocop/cop/style/redundant_conditional.rb +1 -1
  173. data/lib/rubocop/cop/style/redundant_exception.rb +3 -3
  174. data/lib/rubocop/cop/style/redundant_interpolation.rb +2 -2
  175. data/lib/rubocop/cop/style/redundant_percent_q.rb +2 -2
  176. data/lib/rubocop/cop/style/redundant_return.rb +5 -7
  177. data/lib/rubocop/cop/style/redundant_self.rb +1 -1
  178. data/lib/rubocop/cop/style/redundant_sort.rb +2 -2
  179. data/lib/rubocop/cop/style/rescue_modifier.rb +1 -1
  180. data/lib/rubocop/cop/style/return_nil.rb +1 -1
  181. data/lib/rubocop/cop/style/safe_navigation.rb +1 -1
  182. data/lib/rubocop/cop/style/self_assignment.rb +1 -1
  183. data/lib/rubocop/cop/style/slicing_with_range.rb +39 -0
  184. data/lib/rubocop/cop/style/special_global_vars.rb +1 -1
  185. data/lib/rubocop/cop/style/stabby_lambda_parentheses.rb +1 -4
  186. data/lib/rubocop/cop/style/string_hash_keys.rb +1 -1
  187. data/lib/rubocop/cop/style/symbol_array.rb +3 -3
  188. data/lib/rubocop/cop/style/symbol_literal.rb +2 -2
  189. data/lib/rubocop/cop/style/ternary_parentheses.rb +2 -3
  190. data/lib/rubocop/cop/style/trailing_comma_in_arguments.rb +35 -22
  191. data/lib/rubocop/cop/style/trailing_comma_in_array_literal.rb +41 -0
  192. data/lib/rubocop/cop/style/trailing_comma_in_block_args.rb +88 -0
  193. data/lib/rubocop/cop/style/trailing_comma_in_hash_literal.rb +44 -0
  194. data/lib/rubocop/cop/style/trivial_accessors.rb +1 -1
  195. data/lib/rubocop/cop/style/unpack_first.rb +0 -4
  196. data/lib/rubocop/cop/style/variable_interpolation.rb +1 -1
  197. data/lib/rubocop/cop/style/while_until_modifier.rb +1 -1
  198. data/lib/rubocop/cop/style/word_array.rb +1 -1
  199. data/lib/rubocop/cop/style/zero_length_predicate.rb +1 -1
  200. data/lib/rubocop/cop/util.rb +24 -0
  201. data/lib/rubocop/cop/variable_force.rb +4 -1
  202. data/lib/rubocop/cop/variable_force/assignment.rb +1 -0
  203. data/lib/rubocop/cop/variable_force/scope.rb +1 -0
  204. data/lib/rubocop/cop/variable_force/variable.rb +1 -0
  205. data/lib/rubocop/formatter/clang_style_formatter.rb +1 -1
  206. data/lib/rubocop/formatter/formatter_set.rb +1 -1
  207. data/lib/rubocop/formatter/junit_formatter.rb +74 -0
  208. data/lib/rubocop/formatter/pacman_formatter.rb +1 -1
  209. data/lib/rubocop/formatter/tap_formatter.rb +1 -1
  210. data/lib/rubocop/name_similarity.rb +12 -9
  211. data/lib/rubocop/node_pattern.rb +96 -10
  212. data/lib/rubocop/options.rb +18 -5
  213. data/lib/rubocop/processed_source.rb +1 -4
  214. data/lib/rubocop/rspec/cop_helper.rb +1 -1
  215. data/lib/rubocop/rspec/expect_offense.rb +1 -1
  216. data/lib/rubocop/rspec/shared_contexts.rb +0 -4
  217. data/lib/rubocop/runner.rb +7 -2
  218. data/lib/rubocop/target_finder.rb +6 -4
  219. data/lib/rubocop/target_ruby.rb +2 -2
  220. data/lib/rubocop/version.rb +1 -1
  221. metadata +35 -25
  222. data/lib/rubocop/cop/lint/end_in_method.rb +0 -40
  223. data/lib/rubocop/cop/style/braces_around_hash_parameters.rb +0 -209
  224. data/lib/rubocop/formatter/disabled_lines_formatter.rb +0 -57
  225. data/lib/rubocop/string_util.rb +0 -14
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 3bdc80758a1e3604ccf4fc91cedac86412bea6d234b27c9b7ae064fb364076ce
4
- data.tar.gz: 2890ef6acaede12b528cf963cdbb8a90f64ecbcef6c5da6b3684fcf90c7d4c07
3
+ metadata.gz: 02ede8c9af1fb47b66ac79a0d93d577a5384f82f5076e1e64631ca761c4d3f6b
4
+ data.tar.gz: 2f22e7716a7068013b131636217a77189f2ca506e53c8613c407c18f8028600e
5
5
  SHA512:
6
- metadata.gz: 8eb332a372b879708bedba857c21532665ad9b459b18977180fdc5d5ec0cb0f035968a907adfe70bd6e5688a97d9c321503d97d37e87cbf77b04168d1e071c1d
7
- data.tar.gz: 98d0a07c70c4dca7c63cc96fb473a0079eee449d045b3543b55b90da3f1700c564d0f2ab7ccd909f63fefff7956680fd862710fabe2ccb0e9969b424b943216d
6
+ metadata.gz: 936fdee12ea43542b66ab1cccc0514f1a7076dbd671386cccf376e61633b12e51c88feba3e652e77c925a2f5df4e0646bf568af453032bd2cb6eafdd9ea66d48
7
+ data.tar.gz: 23ec3628be52fd219206cd866c7e46757cdae9c8bd5c29334a7471c856f19becb03af7da2dd6f12a12c1f876f4eb900d10f9c8fdd7ad669c1bf2dea4cb333145
@@ -1,4 +1,4 @@
1
- Copyright (c) 2012-19 Bozhidar Batsov
1
+ Copyright (c) 2012-20 Bozhidar Batsov
2
2
 
3
3
  Permission is hereby granted, free of charge, to any person obtaining
4
4
  a copy of this software and associated documentation files (the
data/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  [![Gem Version](https://badge.fury.io/rb/rubocop.svg)](https://badge.fury.io/rb/rubocop)
2
2
  [![CircleCI Status](https://circleci.com/gh/rubocop-hq/rubocop/tree/master.svg?style=svg)](https://circleci.com/gh/rubocop-hq/rubocop/tree/master)
3
- [![AppVeyor Status](https://ci.appveyor.com/api/projects/status/sj3ye7n5690d0nvg?svg=true)](https://ci.appveyor.com/project/bbatsov/rubocop)
3
+ [![Actions Status](https://github.com/rubocop-hq/rubocop/workflows/CI/badge.svg?branch=master)](https://github.com/rubocop-hq/rubocop/actions?query=workflow%3ACI)
4
4
  [![Coverage Status](https://api.codeclimate.com/v1/badges/ad6e76460499c8c99697/test_coverage)](https://codeclimate.com/github/bbatsov/rubocop)
5
5
  [![Code Climate](https://codeclimate.com/github/bbatsov/rubocop/badges/gpa.svg)](https://codeclimate.com/github/bbatsov/rubocop)
6
6
  [![Inline docs](https://inch-ci.org/github/bbatsov/rubocop.svg)](https://inch-ci.org/github/bbatsov/rubocop)
@@ -41,7 +41,7 @@ automatically fix some of the problems for you.
41
41
  $ gem install rubocop
42
42
  ```
43
43
 
44
- If you'd rather install RuboCop using `bundler`, don't require it in your `Gemfile`:
44
+ If you'd rather install RuboCop using `bundler`, add a line for it in your `Gemfile` (but set the `require` option to `false`, as it is a standalone tool):
45
45
 
46
46
  ```rb
47
47
  gem 'rubocop', require: false
@@ -53,7 +53,7 @@ haven't reached version 1.0 yet). To prevent an unwanted RuboCop update you
53
53
  might want to use a conservative version lock in your `Gemfile`:
54
54
 
55
55
  ```rb
56
- gem 'rubocop', '~> 0.79.0', require: false
56
+ gem 'rubocop', '~> 0.83.0', require: false
57
57
  ```
58
58
 
59
59
  ## Quickstart
@@ -73,7 +73,7 @@ You can read a lot more about RuboCop in its [official docs](https://docs.ruboco
73
73
 
74
74
  RuboCop supports the following Ruby implementations:
75
75
 
76
- * MRI 2.3+
76
+ * MRI 2.4+
77
77
  * JRuby 9.2+
78
78
 
79
79
  ## Team
@@ -213,5 +213,5 @@ RuboCop's changelog is available [here](CHANGELOG.md).
213
213
 
214
214
  ## Copyright
215
215
 
216
- Copyright (c) 2012-2019 Bozhidar Batsov. See [LICENSE.txt](LICENSE.txt) for
216
+ Copyright (c) 2012-2020 Bozhidar Batsov. See [LICENSE.txt](LICENSE.txt) for
217
217
  further details.
@@ -35,6 +35,7 @@ AllCops:
35
35
  - '**/*.watchr'
36
36
  - '**/.irbrc'
37
37
  - '**/.pryrc'
38
+ - '**/.simplecov'
38
39
  - '**/buildfile'
39
40
  - '**/Appraisals'
40
41
  - '**/Berksfile'
@@ -53,7 +54,9 @@ AllCops:
53
54
  - '**/Podfile'
54
55
  - '**/Puppetfile'
55
56
  - '**/Rakefile'
57
+ - '**/rakefile'
56
58
  - '**/Snapfile'
59
+ - '**/Steepfile'
57
60
  - '**/Thorfile'
58
61
  - '**/Vagabondfile'
59
62
  - '**/Vagrantfile'
@@ -96,6 +99,14 @@ AllCops:
96
99
  # to true in the same configuration.
97
100
  EnabledByDefault: false
98
101
  DisabledByDefault: false
102
+ # New cops introduced between major versions are set to a special pending status
103
+ # and are not enabled by default with warning message.
104
+ # Change this behavior by overriding either `NewCops: enable` or `NewCops: disable`.
105
+ # When `NewCops` is `enable`, pending cops are enabled in bulk. Can be overridden by
106
+ # the `--enable-pending-cops` command-line option.
107
+ # When `NewCops` is `disable`, pending cops are disabled in bulk. Can be overridden by
108
+ # the `--disable-pending-cops` command-line option.
109
+ NewCops: pending
99
110
  # Enables the result cache if `true`. Can be overridden by the `--cache` command
100
111
  # line option.
101
112
  UseCache: true
@@ -124,7 +135,7 @@ AllCops:
124
135
  # followed by the Gemfile.lock or gems.locked file. (Although the Ruby version
125
136
  # is specified in the Gemfile or gems.rb file, RuboCop reads the final value
126
137
  # from the lock file.) If the Ruby version is still unresolved, RuboCop will
127
- # use the oldest officially supported Ruby version (currently Ruby 2.3).
138
+ # use the oldest officially supported Ruby version (currently Ruby 2.4).
128
139
  TargetRubyVersion: ~
129
140
 
130
141
  #################### Bundler ###############################
@@ -254,10 +265,30 @@ Layout/ArrayAlignment:
254
265
  Description: >-
255
266
  Align the elements of an array literal if they span more than
256
267
  one line.
257
- StyleGuide: '#align-multiline-arrays'
268
+ StyleGuide: '#no-double-indent'
258
269
  Enabled: true
259
270
  VersionAdded: '0.49'
260
271
  VersionChanged: '0.77'
272
+ # Alignment of elements of a multi-line array.
273
+ #
274
+ # The `with_first_parameter` style aligns the following lines along the same
275
+ # column as the first element.
276
+ #
277
+ # array = [1, 2, 3,
278
+ # 4, 5, 6]
279
+ #
280
+ # The `with_fixed_indentation` style aligns the following lines with one
281
+ # level of indentation relative to the start of the line with start of array.
282
+ #
283
+ # array = [1, 2, 3,
284
+ # 4, 5, 6]
285
+ EnforcedStyle: with_first_element
286
+ SupportedStyles:
287
+ - with_first_element
288
+ - with_fixed_indentation
289
+ # By default, the indentation width from Layout/IndentationWidth is used
290
+ # But it can be overridden by setting this parameter
291
+ IndentationWidth: ~
261
292
 
262
293
  Layout/AssignmentIndentation:
263
294
  Description: >-
@@ -346,6 +377,7 @@ Layout/ConditionPosition:
346
377
  StyleGuide: '#same-line-condition'
347
378
  Enabled: true
348
379
  VersionAdded: '0.53'
380
+ VersionChanged: '0.83'
349
381
 
350
382
  Layout/DefEndAlignment:
351
383
  Description: 'Align ends corresponding to defs correctly.'
@@ -431,6 +463,12 @@ Layout/EmptyLinesAroundArguments:
431
463
  Enabled: true
432
464
  VersionAdded: '0.52'
433
465
 
466
+ Layout/EmptyLinesAroundAttributeAccessor:
467
+ Description: "Keep blank lines around attribute accessors."
468
+ StyleGuide: '#empty-lines-around-attribute-accessor'
469
+ Enabled: pending
470
+ VersionAdded: '0.83'
471
+
434
472
  Layout/EmptyLinesAroundBeginBody:
435
473
  Description: "Keeps track of empty lines around begin-end bodies."
436
474
  StyleGuide: '#empty-lines-around-bodies'
@@ -772,6 +810,22 @@ Layout/IndentationConsistency:
772
810
  # A reference to `EnforcedStyle: indented_internal_methods`.
773
811
  - https://edgeguides.rubyonrails.org/contributing_to_ruby_on_rails.html#follow-the-coding-conventions
774
812
 
813
+ Layout/IndentationStyle:
814
+ Description: 'Consistent indentation either with tabs only or spaces only.'
815
+ StyleGuide: '#spaces-indentation'
816
+ Enabled: true
817
+ VersionAdded: '0.49'
818
+ VersionChanged: '0.82'
819
+ # By default, the indentation width from Layout/IndentationWidth is used
820
+ # But it can be overridden by setting this parameter
821
+ # It is used during auto-correction to determine how many spaces should
822
+ # replace each tab.
823
+ IndentationWidth: ~
824
+ EnforcedStyle: spaces
825
+ SupportedStyles:
826
+ - spaces
827
+ - tabs
828
+
775
829
  Layout/IndentationWidth:
776
830
  Description: 'Use 2 spaces for indentation.'
777
831
  StyleGuide: '#spaces-indentation'
@@ -794,6 +848,7 @@ Layout/LeadingCommentSpace:
794
848
  VersionAdded: '0.49'
795
849
  VersionChanged: '0.73'
796
850
  AllowDoxygenCommentStyle: false
851
+ AllowGemfileRubyComment: false
797
852
 
798
853
  Layout/LeadingEmptyLines:
799
854
  Description: Check for unnecessary blank lines at the beginning of a file.
@@ -1058,6 +1113,11 @@ Layout/SpaceAroundKeyword:
1058
1113
  Enabled: true
1059
1114
  VersionAdded: '0.49'
1060
1115
 
1116
+ Layout/SpaceAroundMethodCallOperator:
1117
+ Description: 'Checks method call operators to not have spaces around them.'
1118
+ Enabled: pending
1119
+ VersionAdded: '0.82'
1120
+
1061
1121
  Layout/SpaceAroundOperators:
1062
1122
  Description: 'Use a single space around operators.'
1063
1123
  StyleGuide: '#spaces-operators'
@@ -1228,18 +1288,6 @@ Layout/SpaceInsideStringInterpolation:
1228
1288
  - space
1229
1289
  - no_space
1230
1290
 
1231
- Layout/Tab:
1232
- Description: 'No hard tabs.'
1233
- StyleGuide: '#spaces-indentation'
1234
- Enabled: true
1235
- VersionAdded: '0.49'
1236
- VersionChanged: '0.51'
1237
- # By default, the indentation width from Layout/IndentationWidth is used
1238
- # But it can be overridden by setting this parameter
1239
- # It is used during auto-correction to determine how many spaces should
1240
- # replace each tab.
1241
- IndentationWidth: ~
1242
-
1243
1291
  Layout/TrailingEmptyLines:
1244
1292
  Description: 'Checks trailing blank lines and final newline.'
1245
1293
  StyleGuide: '#newline-eof'
@@ -1256,8 +1304,8 @@ Layout/TrailingWhitespace:
1256
1304
  StyleGuide: '#no-trailing-whitespace'
1257
1305
  Enabled: true
1258
1306
  VersionAdded: '0.49'
1259
- VersionChanged: '0.55'
1260
- AllowInHeredoc: false
1307
+ VersionChanged: '0.83'
1308
+ AllowInHeredoc: true
1261
1309
 
1262
1310
  #################### Lint ##################################
1263
1311
  ### Warnings
@@ -1277,6 +1325,7 @@ Lint/AmbiguousOperator:
1277
1325
  StyleGuide: '#method-invocation-parens'
1278
1326
  Enabled: true
1279
1327
  VersionAdded: '0.17'
1328
+ VersionChanged: '0.83'
1280
1329
 
1281
1330
  Lint/AmbiguousRegexpLiteral:
1282
1331
  Description: >-
@@ -1284,6 +1333,7 @@ Lint/AmbiguousRegexpLiteral:
1284
1333
  a method invocation without parentheses.
1285
1334
  Enabled: true
1286
1335
  VersionAdded: '0.17'
1336
+ VersionChanged: '0.83'
1287
1337
 
1288
1338
  Lint/AssignmentInCondition:
1289
1339
  Description: "Don't use assignment in conditions."
@@ -1300,7 +1350,9 @@ Lint/BigDecimalNew:
1300
1350
  Lint/BooleanSymbol:
1301
1351
  Description: 'Check for `:true` and `:false` symbols.'
1302
1352
  Enabled: true
1353
+ Safe: false
1303
1354
  VersionAdded: '0.50'
1355
+ VersionChanged: '0.83'
1304
1356
 
1305
1357
  Lint/CircularArgumentReference:
1306
1358
  Description: "Default values in optional keyword arguments and optional ordinal arguments should not refer back to the name of the argument."
@@ -1371,18 +1423,16 @@ Lint/EmptyInterpolation:
1371
1423
  Lint/EmptyWhen:
1372
1424
  Description: 'Checks for `when` branches with empty bodies.'
1373
1425
  Enabled: true
1426
+ AllowComments: true
1374
1427
  VersionAdded: '0.45'
1375
-
1376
- Lint/EndInMethod:
1377
- Description: 'END blocks should not be placed inside method definitions.'
1378
- Enabled: true
1379
- VersionAdded: '0.9'
1428
+ VersionChanged: '0.83'
1380
1429
 
1381
1430
  Lint/EnsureReturn:
1382
1431
  Description: 'Do not use return in an ensure block.'
1383
1432
  StyleGuide: '#no-return-ensure'
1384
1433
  Enabled: true
1385
1434
  VersionAdded: '0.9'
1435
+ VersionChanged: '0.83'
1386
1436
 
1387
1437
  Lint/ErbNewArguments:
1388
1438
  Description: 'Use `:trim_mode` and `:eoutvar` keyword arguments to `ERB.new`.'
@@ -1530,6 +1580,7 @@ Lint/ParenthesesAsGroupedExpression:
1530
1580
  StyleGuide: '#parens-no-spaces'
1531
1581
  Enabled: true
1532
1582
  VersionAdded: '0.12'
1583
+ VersionChanged: '0.83'
1533
1584
 
1534
1585
  Lint/PercentStringArray:
1535
1586
  Description: >-
@@ -1544,6 +1595,14 @@ Lint/PercentSymbolArray:
1544
1595
  Enabled: true
1545
1596
  VersionAdded: '0.41'
1546
1597
 
1598
+ Lint/RaiseException:
1599
+ Description: Checks for `raise` or `fail` statements which are raising `Exception` class.
1600
+ StyleGuide: '#raise-exception'
1601
+ Enabled: pending
1602
+ VersionAdded: '0.81'
1603
+ AllowedImplicitNamespaces:
1604
+ - 'Gem'
1605
+
1547
1606
  Lint/RandOne:
1548
1607
  Description: >-
1549
1608
  Checks for `rand(1)` calls. Such calls always return `0`
@@ -1572,7 +1631,7 @@ Lint/RedundantRequireStatement:
1572
1631
  Lint/RedundantSplatExpansion:
1573
1632
  Description: 'Checks for splat unnecessarily being called on literals.'
1574
1633
  Enabled: true
1575
- VersionChanged: '0.76'
1634
+ VersionAdded: '0.76'
1576
1635
 
1577
1636
  Lint/RedundantStringCoercion:
1578
1637
  Description: 'Checks for Object#to_s usage in string interpolation.'
@@ -1686,13 +1745,18 @@ Lint/ShadowingOuterLocalVariable:
1686
1745
  Enabled: true
1687
1746
  VersionAdded: '0.9'
1688
1747
 
1748
+ Lint/StructNewOverride:
1749
+ Description: 'Disallow overriding the `Struct` built-in methods via `Struct.new`.'
1750
+ Enabled: pending
1751
+ VersionAdded: '0.81'
1752
+
1689
1753
  Lint/SuppressedException:
1690
1754
  Description: "Don't suppress exceptions."
1691
1755
  StyleGuide: '#dont-hide-exceptions'
1692
1756
  Enabled: true
1693
- AllowComments: false
1757
+ AllowComments: true
1694
1758
  VersionAdded: '0.9'
1695
- VersionChanged: '0.77'
1759
+ VersionChanged: '0.81'
1696
1760
 
1697
1761
  Lint/Syntax:
1698
1762
  Description: 'Checks syntax error.'
@@ -1703,6 +1767,7 @@ Lint/Syntax:
1703
1767
  Lint/ToJSON:
1704
1768
  Description: 'Ensure #to_json includes an optional argument.'
1705
1769
  Enabled: true
1770
+ VersionAdded: '0.66'
1706
1771
 
1707
1772
  Lint/UnderscorePrefixedVariableName:
1708
1773
  Description: 'Do not use prefix `_` for a variable that is used.'
@@ -1734,9 +1799,10 @@ Lint/UnusedMethodArgument:
1734
1799
  StyleGuide: '#underscore-unused-vars'
1735
1800
  Enabled: true
1736
1801
  VersionAdded: '0.21'
1737
- VersionChanged: '0.35'
1802
+ VersionChanged: '0.81'
1738
1803
  AllowUnusedKeywordArguments: false
1739
1804
  IgnoreEmptyMethods: true
1805
+ IgnoreNotImplementedMethods: true
1740
1806
 
1741
1807
  Lint/UriEscapeUnescape:
1742
1808
  Description: >-
@@ -1758,7 +1824,7 @@ Lint/UselessAccessModifier:
1758
1824
  Description: 'Checks for useless access modifiers.'
1759
1825
  Enabled: true
1760
1826
  VersionAdded: '0.20'
1761
- VersionChanged: '0.47'
1827
+ VersionChanged: '0.83'
1762
1828
  ContextCreatingMethods: []
1763
1829
  MethodCreatingMethods: []
1764
1830
 
@@ -1782,6 +1848,8 @@ Lint/UselessSetterCall:
1782
1848
  Description: 'Checks for useless setter call to a local variable.'
1783
1849
  Enabled: true
1784
1850
  VersionAdded: '0.13'
1851
+ VersionChanged: '0.80'
1852
+ Safe: false
1785
1853
 
1786
1854
  Lint/Void:
1787
1855
  Description: 'Possible use of operator/literal/variable in void context.'
@@ -1800,9 +1868,10 @@ Metrics/AbcSize:
1800
1868
  - https://en.wikipedia.org/wiki/ABC_Software_Metric
1801
1869
  Enabled: true
1802
1870
  VersionAdded: '0.27'
1803
- VersionChanged: '0.66'
1871
+ VersionChanged: '0.81'
1804
1872
  # The ABC size is a calculated magnitude, so this number can be an Integer or
1805
1873
  # a Float.
1874
+ IgnoredMethods: []
1806
1875
  Max: 15
1807
1876
 
1808
1877
  Metrics/BlockLength:
@@ -1842,6 +1911,8 @@ Metrics/CyclomaticComplexity:
1842
1911
  of test cases needed to validate a method.
1843
1912
  Enabled: true
1844
1913
  VersionAdded: '0.25'
1914
+ VersionChanged: '0.81'
1915
+ IgnoredMethods: []
1845
1916
  Max: 6
1846
1917
 
1847
1918
  Metrics/MethodLength:
@@ -1875,6 +1946,8 @@ Metrics/PerceivedComplexity:
1875
1946
  human reader.
1876
1947
  Enabled: true
1877
1948
  VersionAdded: '0.25'
1949
+ VersionChanged: '0.81'
1950
+ IgnoredMethods: []
1878
1951
  Max: 7
1879
1952
 
1880
1953
  ################## Migration #############################
@@ -1883,7 +1956,8 @@ Migration/DepartmentName:
1883
1956
  Description: >-
1884
1957
  Check that cop names in rubocop:disable (etc) comments are
1885
1958
  given with department name.
1886
- Enabled: false
1959
+ Enabled: true
1960
+ VersionAdded: '0.75'
1887
1961
 
1888
1962
  #################### Naming ##############################
1889
1963
 
@@ -2065,6 +2139,7 @@ Naming/MethodParameterName:
2065
2139
  - ip
2066
2140
  - db
2067
2141
  - os
2142
+ - pp
2068
2143
  # Forbidden names that will register an offense
2069
2144
  ForbiddenNames: []
2070
2145
 
@@ -2173,10 +2248,12 @@ Style/AccessModifierDeclarations:
2173
2248
  Description: 'Checks style of how access modifiers are used.'
2174
2249
  Enabled: true
2175
2250
  VersionAdded: '0.57'
2251
+ VersionChanged: '0.81'
2176
2252
  EnforcedStyle: group
2177
2253
  SupportedStyles:
2178
2254
  - inline
2179
2255
  - group
2256
+ AllowModifiersOnSymbols: true
2180
2257
 
2181
2258
  Style/Alias:
2182
2259
  Description: 'Use alias instead of alias_method.'
@@ -2355,30 +2432,27 @@ Style/BlockDelimiters:
2355
2432
  # # also good
2356
2433
  # collection.each do |element| puts element end
2357
2434
  AllowBracesOnProceduralOneLiners: false
2358
-
2359
- Style/BracesAroundHashParameters:
2360
- Description: 'Enforce braces style around hash parameters.'
2361
- Enabled: true
2362
- VersionAdded: '0.14.1'
2363
- VersionChanged: '0.28'
2364
- EnforcedStyle: no_braces
2365
- SupportedStyles:
2366
- # The `braces` style enforces braces around all method parameters that are
2367
- # hashes.
2368
- - braces
2369
- # The `no_braces` style checks that the last parameter doesn't have braces
2370
- # around it.
2371
- - no_braces
2372
- # The `context_dependent` style checks that the last parameter doesn't have
2373
- # braces around it, but requires braces if the second to last parameter is
2374
- # also a hash literal.
2375
- - context_dependent
2435
+ # The BracesRequiredMethods overrides all other configurations except
2436
+ # IgnoredMethods. It can be used to enforce that all blocks for specific
2437
+ # methods use braces. For example, you can use this to enforce Sorbet
2438
+ # signatures use braces even when the rest of your codebase enforces
2439
+ # the `line_count_based` style.
2440
+ BracesRequiredMethods: []
2376
2441
 
2377
2442
  Style/CaseEquality:
2378
2443
  Description: 'Avoid explicit use of the case equality operator(===).'
2379
2444
  StyleGuide: '#no-case-equality'
2380
2445
  Enabled: true
2381
2446
  VersionAdded: '0.9'
2447
+ # If AllowOnConstant is enabled, the cop will ignore violations when the receiver of
2448
+ # the case equality operator is a constant.
2449
+ #
2450
+ # # bad
2451
+ # /string/ === "string"
2452
+ #
2453
+ # # good
2454
+ # String === "string"
2455
+ AllowOnConstant: false
2382
2456
 
2383
2457
  Style/CharacterLiteral:
2384
2458
  Description: 'Checks for uses of character literals.'
@@ -2419,6 +2493,7 @@ Style/ClassAndModuleChildren:
2419
2493
 
2420
2494
  Style/ClassCheck:
2421
2495
  Description: 'Enforces consistent use of `Object#is_a?` or `Object#kind_of?`.'
2496
+ StyleGuide: '#is-a-vs-kind-of'
2422
2497
  Enabled: true
2423
2498
  VersionAdded: '0.24'
2424
2499
  EnforcedStyle: is_a?
@@ -2442,7 +2517,7 @@ Style/ClassVars:
2442
2517
  # Align with the style guide.
2443
2518
  Style/CollectionMethods:
2444
2519
  Description: 'Preferred collection methods.'
2445
- StyleGuide: '#map-find-select-reduce-size'
2520
+ StyleGuide: '#map-find-select-reduce-include-size'
2446
2521
  Enabled: false
2447
2522
  VersionAdded: '0.9'
2448
2523
  VersionChanged: '0.27'
@@ -2459,6 +2534,7 @@ Style/CollectionMethods:
2459
2534
  inject: 'reduce'
2460
2535
  detect: 'find'
2461
2536
  find_all: 'select'
2537
+ member?: 'include?'
2462
2538
 
2463
2539
  Style/ColonMethodCall:
2464
2540
  Description: 'Do not use :: for method call.'
@@ -2585,6 +2661,12 @@ Style/Dir:
2585
2661
  Enabled: true
2586
2662
  VersionAdded: '0.50'
2587
2663
 
2664
+ Style/DisableCopsWithinSourceCodeDirective:
2665
+ Description: >-
2666
+ Forbids disabling/enabling cops within source code.
2667
+ Enabled: false
2668
+ VersionAdded: '0.82'
2669
+
2588
2670
  Style/Documentation:
2589
2671
  Description: 'Document classes and non-namespace modules.'
2590
2672
  Enabled: true
@@ -2684,6 +2766,7 @@ Style/EndBlock:
2684
2766
  StyleGuide: '#no-END-blocks'
2685
2767
  Enabled: true
2686
2768
  VersionAdded: '0.9'
2769
+ VersionChanged: '0.81'
2687
2770
 
2688
2771
  Style/EvalWithLocation:
2689
2772
  Description: 'Pass `__FILE__` and `__LINE__` to `eval` method, as they are used by backtraces.'
@@ -2702,6 +2785,17 @@ Style/ExpandPathArguments:
2702
2785
  Enabled: true
2703
2786
  VersionAdded: '0.53'
2704
2787
 
2788
+ Style/ExponentialNotation:
2789
+ Description: 'When using exponential notation, favor a mantissa between 1 (inclusive) and 10 (exclusive).'
2790
+ StyleGuide: '#exponential-notation'
2791
+ Enabled: pending
2792
+ VersionAdded: '0.82'
2793
+ EnforcedStyle: scientific
2794
+ SupportedStyles:
2795
+ - scientific
2796
+ - engineering
2797
+ - integral
2798
+
2705
2799
  Style/FloatDivision:
2706
2800
  Description: 'For performing float division, coerce one side only.'
2707
2801
  StyleGuide: '#float-division'
@@ -2766,6 +2860,10 @@ Style/FrozenStringLiteralComment:
2766
2860
  # string literal. If you run code against multiple versions of Ruby, it is
2767
2861
  # possible that this will create errors in Ruby 2.3.0+.
2768
2862
  - always
2863
+ # `always_true` will add the frozen string literal comment to a file,
2864
+ # similarly to the `always` style, but will also change any disabled
2865
+ # comments (e.g. `# frozen_string_literal: false`) to be enabled.
2866
+ - always_true
2769
2867
  # `never` will enforce that the frozen string literal comment does not
2770
2868
  # exist in a file.
2771
2869
  - never
@@ -2790,6 +2888,13 @@ Style/GuardClause:
2790
2888
  # needs to have to trigger this cop
2791
2889
  MinBodyLength: 1
2792
2890
 
2891
+ Style/HashEachMethods:
2892
+ Description: 'Use Hash#each_key and Hash#each_value.'
2893
+ StyleGuide: '#hash-each'
2894
+ Enabled: pending
2895
+ VersionAdded: '0.80'
2896
+ Safe: false
2897
+
2793
2898
  Style/HashSyntax:
2794
2899
  Description: >-
2795
2900
  Prefer Ruby 1.9 hash syntax { a: 1, b: 2 } over 1.8 syntax
@@ -2813,6 +2918,18 @@ Style/HashSyntax:
2813
2918
  # Do not suggest { a?: 1 } over { :a? => 1 } in ruby19 style
2814
2919
  PreferHashRocketsForNonAlnumEndingSymbols: false
2815
2920
 
2921
+ Style/HashTransformKeys:
2922
+ Description: 'Prefer `transform_keys` over `each_with_object` and `map`.'
2923
+ Enabled: 'pending'
2924
+ VersionAdded: '0.80'
2925
+ Safe: false
2926
+
2927
+ Style/HashTransformValues:
2928
+ Description: 'Prefer `transform_values` over `each_with_object` and `map`.'
2929
+ Enabled: 'pending'
2930
+ VersionAdded: '0.80'
2931
+ Safe: false
2932
+
2816
2933
  Style/IdenticalConditionalBranches:
2817
2934
  Description: >-
2818
2935
  Checks that conditional statements do not have an identical
@@ -2847,6 +2964,7 @@ Style/IfWithSemicolon:
2847
2964
  StyleGuide: '#no-semicolon-ifs'
2848
2965
  Enabled: true
2849
2966
  VersionAdded: '0.9'
2967
+ VersionChanged: '0.83'
2850
2968
 
2851
2969
  Style/ImplicitRuntimeError:
2852
2970
  Description: >-
@@ -2921,7 +3039,7 @@ Style/LambdaCall:
2921
3039
  Description: 'Use lambda.call(...) instead of lambda.(...).'
2922
3040
  StyleGuide: '#proc-call'
2923
3041
  Enabled: true
2924
- VersionAdded: '0.13.1'
3042
+ VersionAdded: '0.13'
2925
3043
  VersionChanged: '0.14'
2926
3044
  EnforcedStyle: call
2927
3045
  SupportedStyles:
@@ -3051,6 +3169,7 @@ Style/ModuleFunction:
3051
3169
  SupportedStyles:
3052
3170
  - module_function
3053
3171
  - extend_self
3172
+ - forbidden
3054
3173
  Autocorrect: false
3055
3174
  SafeAutoCorrect: false
3056
3175
 
@@ -3323,7 +3442,9 @@ Style/OptionalArguments:
3323
3442
  of the argument list.
3324
3443
  StyleGuide: '#optional-arguments'
3325
3444
  Enabled: true
3445
+ Safe: false
3326
3446
  VersionAdded: '0.33'
3447
+ VersionChanged: '0.83'
3327
3448
 
3328
3449
  Style/OrAssignment:
3329
3450
  Description: 'Recommend usage of double pipe equals (||=) where applicable.'
@@ -3628,6 +3749,12 @@ Style/SingleLineMethods:
3628
3749
  VersionChanged: '0.19'
3629
3750
  AllowIfMethodIsEmpty: true
3630
3751
 
3752
+ Style/SlicingWithRange:
3753
+ Description: 'Checks array slicing is done with endless ranges when suitable.'
3754
+ Enabled: pending
3755
+ VersionAdded: '0.83'
3756
+ Safe: false
3757
+
3631
3758
  Style/SpecialGlobalVars:
3632
3759
  Description: 'Avoid Perl-style global variables.'
3633
3760
  StyleGuide: '#no-cryptic-perlisms'
@@ -3790,22 +3917,29 @@ Style/TrailingCommaInArrayLiteral:
3790
3917
  StyleGuide: '#no-trailing-array-commas'
3791
3918
  Enabled: true
3792
3919
  VersionAdded: '0.53'
3920
+ # If `comma`, the cop requires a comma after the last item in an array,
3793
3921
  # but only when each item is on its own line.
3794
3922
  # If `consistent_comma`, the cop requires a comma after the last item of all
3795
- # non-empty array literals.
3923
+ # non-empty, multiline array literals.
3796
3924
  EnforcedStyleForMultiline: no_comma
3797
3925
  SupportedStylesForMultiline:
3798
3926
  - comma
3799
3927
  - consistent_comma
3800
3928
  - no_comma
3801
3929
 
3930
+ Style/TrailingCommaInBlockArgs:
3931
+ Description: 'Checks for useless trailing commas in block arguments.'
3932
+ Enabled: false
3933
+ Safe: false
3934
+ VersionAdded: '0.81'
3935
+
3802
3936
  Style/TrailingCommaInHashLiteral:
3803
3937
  Description: 'Checks for trailing comma in hash literals.'
3804
3938
  Enabled: true
3805
3939
  # If `comma`, the cop requires a comma after the last item in a hash,
3806
3940
  # but only when each item is on its own line.
3807
3941
  # If `consistent_comma`, the cop requires a comma after the last item of all
3808
- # non-empty hash literals.
3942
+ # non-empty, multiline hash literals.
3809
3943
  EnforcedStyleForMultiline: no_comma
3810
3944
  SupportedStylesForMultiline:
3811
3945
  - comma