rubocop 0.78.0 → 0.82.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (209) hide show
  1. checksums.yaml +4 -4
  2. data/LICENSE.txt +1 -1
  3. data/README.md +4 -4
  4. data/config/default.yml +158 -48
  5. data/lib/rubocop.rb +19 -4
  6. data/lib/rubocop/ast/builder.rb +45 -42
  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/def_node.rb +11 -0
  12. data/lib/rubocop/ast/node/forward_args_node.rb +18 -0
  13. data/lib/rubocop/ast/node/mixin/method_dispatch_node.rb +8 -0
  14. data/lib/rubocop/ast/node/regexp_node.rb +2 -4
  15. data/lib/rubocop/ast/traversal.rb +29 -10
  16. data/lib/rubocop/cli.rb +10 -4
  17. data/lib/rubocop/cli/command/show_cops.rb +11 -4
  18. data/lib/rubocop/comment_config.rb +6 -1
  19. data/lib/rubocop/config.rb +36 -10
  20. data/lib/rubocop/config_loader.rb +42 -33
  21. data/lib/rubocop/config_loader_resolver.rb +1 -1
  22. data/lib/rubocop/config_obsoletion.rb +4 -1
  23. data/lib/rubocop/config_validator.rb +66 -92
  24. data/lib/rubocop/cop/autocorrect_logic.rb +6 -3
  25. data/lib/rubocop/cop/badge.rb +5 -5
  26. data/lib/rubocop/cop/bundler/insecure_protocol_source.rb +1 -1
  27. data/lib/rubocop/cop/corrector.rb +48 -24
  28. data/lib/rubocop/cop/correctors/alignment_corrector.rb +2 -2
  29. data/lib/rubocop/cop/correctors/condition_corrector.rb +1 -2
  30. data/lib/rubocop/cop/correctors/empty_line_corrector.rb +1 -1
  31. data/lib/rubocop/cop/correctors/lambda_literal_to_method_corrector.rb +3 -3
  32. data/lib/rubocop/cop/correctors/line_break_corrector.rb +2 -2
  33. data/lib/rubocop/cop/correctors/percent_literal_corrector.rb +1 -1
  34. data/lib/rubocop/cop/correctors/string_literal_corrector.rb +2 -2
  35. data/lib/rubocop/cop/gemspec/ordered_dependencies.rb +1 -1
  36. data/lib/rubocop/cop/generator.rb +3 -4
  37. data/lib/rubocop/cop/generator/configuration_injector.rb +1 -1
  38. data/lib/rubocop/cop/internal_affairs/offense_location_keyword.rb +1 -1
  39. data/lib/rubocop/cop/layout/array_alignment.rb +53 -10
  40. data/lib/rubocop/cop/layout/block_end_newline.rb +5 -3
  41. data/lib/rubocop/cop/layout/dot_position.rb +1 -1
  42. data/lib/rubocop/cop/layout/else_alignment.rb +8 -0
  43. data/lib/rubocop/cop/layout/empty_line_between_defs.rb +2 -1
  44. data/lib/rubocop/cop/layout/end_of_line.rb +2 -2
  45. data/lib/rubocop/cop/layout/first_array_element_indentation.rb +16 -10
  46. data/lib/rubocop/cop/layout/first_hash_element_indentation.rb +1 -1
  47. data/lib/rubocop/cop/layout/hash_alignment.rb +8 -4
  48. data/lib/rubocop/cop/layout/heredoc_argument_closing_parenthesis.rb +2 -2
  49. data/lib/rubocop/cop/layout/heredoc_indentation.rb +2 -2
  50. data/lib/rubocop/cop/layout/{tab.rb → indentation_style.rb} +48 -6
  51. data/lib/rubocop/cop/layout/leading_comment_space.rb +34 -3
  52. data/lib/rubocop/cop/layout/line_length.rb +32 -3
  53. data/lib/rubocop/cop/layout/multiline_block_layout.rb +15 -6
  54. data/lib/rubocop/cop/layout/multiline_hash_brace_layout.rb +0 -4
  55. data/lib/rubocop/cop/layout/multiline_method_call_indentation.rb +1 -1
  56. data/lib/rubocop/cop/layout/space_around_block_parameters.rb +3 -3
  57. data/lib/rubocop/cop/layout/space_around_method_call_operator.rb +133 -0
  58. data/lib/rubocop/cop/layout/space_around_operators.rb +19 -1
  59. data/lib/rubocop/cop/layout/space_before_block_braces.rb +2 -2
  60. data/lib/rubocop/cop/layout/space_before_first_arg.rb +8 -0
  61. data/lib/rubocop/cop/layout/space_in_lambda_literal.rb +1 -1
  62. data/lib/rubocop/cop/layout/space_inside_block_braces.rb +2 -2
  63. data/lib/rubocop/cop/layout/space_inside_hash_literal_braces.rb +2 -9
  64. data/lib/rubocop/cop/layout/space_inside_range_literal.rb +2 -2
  65. data/lib/rubocop/cop/lint/boolean_symbol.rb +12 -0
  66. data/lib/rubocop/cop/lint/debugger.rb +2 -2
  67. data/lib/rubocop/cop/lint/erb_new_arguments.rb +1 -1
  68. data/lib/rubocop/cop/lint/implicit_string_concatenation.rb +1 -1
  69. data/lib/rubocop/cop/lint/inherit_exception.rb +1 -1
  70. data/lib/rubocop/cop/lint/interpolation_check.rb +1 -1
  71. data/lib/rubocop/cop/lint/literal_in_interpolation.rb +1 -1
  72. data/lib/rubocop/cop/lint/loop.rb +6 -4
  73. data/lib/rubocop/cop/lint/multiple_comparison.rb +1 -1
  74. data/lib/rubocop/cop/lint/nested_method_definition.rb +2 -2
  75. data/lib/rubocop/cop/lint/non_deterministic_require_order.rb +2 -2
  76. data/lib/rubocop/cop/lint/number_conversion.rb +1 -1
  77. data/lib/rubocop/cop/lint/percent_string_array.rb +2 -2
  78. data/lib/rubocop/cop/lint/raise_exception.rb +75 -0
  79. data/lib/rubocop/cop/lint/redundant_cop_disable_directive.rb +1 -1
  80. data/lib/rubocop/cop/lint/redundant_cop_enable_directive.rb +12 -7
  81. data/lib/rubocop/cop/lint/redundant_string_coercion.rb +1 -1
  82. data/lib/rubocop/cop/lint/safe_navigation_chain.rb +1 -1
  83. data/lib/rubocop/cop/lint/struct_new_override.rb +58 -0
  84. data/lib/rubocop/cop/lint/suppressed_exception.rb +12 -22
  85. data/lib/rubocop/cop/lint/unified_integer.rb +0 -2
  86. data/lib/rubocop/cop/lint/unused_method_argument.rb +32 -6
  87. data/lib/rubocop/cop/lint/uri_regexp.rb +4 -4
  88. data/lib/rubocop/cop/lint/useless_setter_call.rb +4 -0
  89. data/lib/rubocop/cop/migration/department_name.rb +47 -6
  90. data/lib/rubocop/cop/mixin/configurable_enforced_style.rb +4 -0
  91. data/lib/rubocop/cop/mixin/end_keyword_alignment.rb +6 -1
  92. data/lib/rubocop/cop/mixin/frozen_string_literal.rb +7 -7
  93. data/lib/rubocop/cop/mixin/hash_transform_method.rb +171 -0
  94. data/lib/rubocop/cop/mixin/line_length_help.rb +1 -1
  95. data/lib/rubocop/cop/mixin/method_complexity.rb +5 -0
  96. data/lib/rubocop/cop/mixin/statement_modifier.rb +4 -3
  97. data/lib/rubocop/cop/mixin/trailing_comma.rb +3 -10
  98. data/lib/rubocop/cop/naming/class_and_module_camel_case.rb +1 -1
  99. data/lib/rubocop/cop/naming/constant_name.rb +2 -1
  100. data/lib/rubocop/cop/naming/heredoc_delimiter_naming.rb +1 -1
  101. data/lib/rubocop/cop/naming/memoized_instance_variable_name.rb +1 -1
  102. data/lib/rubocop/cop/naming/method_name.rb +30 -0
  103. data/lib/rubocop/cop/naming/method_parameter_name.rb +1 -1
  104. data/lib/rubocop/cop/naming/rescued_exceptions_variable_name.rb +1 -1
  105. data/lib/rubocop/cop/registry.rb +15 -3
  106. data/lib/rubocop/cop/style/access_modifier_declarations.rb +26 -6
  107. data/lib/rubocop/cop/style/alias.rb +4 -4
  108. data/lib/rubocop/cop/style/and_or.rb +5 -6
  109. data/lib/rubocop/cop/style/array_join.rb +1 -1
  110. data/lib/rubocop/cop/style/block_delimiters.rb +60 -1
  111. data/lib/rubocop/cop/style/case_equality.rb +24 -1
  112. data/lib/rubocop/cop/style/character_literal.rb +2 -2
  113. data/lib/rubocop/cop/style/collection_methods.rb +2 -0
  114. data/lib/rubocop/cop/style/conditional_assignment.rb +8 -8
  115. data/lib/rubocop/cop/style/copyright.rb +1 -1
  116. data/lib/rubocop/cop/style/dir.rb +1 -1
  117. data/lib/rubocop/cop/style/disable_cops_within_source_code_directive.rb +49 -0
  118. data/lib/rubocop/cop/style/documentation.rb +43 -5
  119. data/lib/rubocop/cop/style/double_cop_disable_directive.rb +1 -1
  120. data/lib/rubocop/cop/style/each_for_simple_loop.rb +1 -1
  121. data/lib/rubocop/cop/style/each_with_object.rb +3 -3
  122. data/lib/rubocop/cop/style/empty_method.rb +1 -1
  123. data/lib/rubocop/cop/style/end_block.rb +6 -0
  124. data/lib/rubocop/cop/style/even_odd.rb +1 -1
  125. data/lib/rubocop/cop/style/expand_path_arguments.rb +3 -3
  126. data/lib/rubocop/cop/style/exponential_notation.rb +119 -0
  127. data/lib/rubocop/cop/style/format_string.rb +2 -2
  128. data/lib/rubocop/cop/style/frozen_string_literal_comment.rb +89 -11
  129. data/lib/rubocop/cop/style/hash_each_methods.rb +89 -0
  130. data/lib/rubocop/cop/style/hash_syntax.rb +3 -5
  131. data/lib/rubocop/cop/style/hash_transform_keys.rb +83 -0
  132. data/lib/rubocop/cop/style/hash_transform_values.rb +80 -0
  133. data/lib/rubocop/cop/style/if_unless_modifier.rb +23 -3
  134. data/lib/rubocop/cop/style/inverse_methods.rb +9 -5
  135. data/lib/rubocop/cop/style/lambda.rb +3 -2
  136. data/lib/rubocop/cop/style/lambda_call.rb +2 -2
  137. data/lib/rubocop/cop/style/method_call_with_args_parentheses.rb +7 -205
  138. data/lib/rubocop/cop/style/method_call_with_args_parentheses/omit_parentheses.rb +169 -0
  139. data/lib/rubocop/cop/style/method_call_with_args_parentheses/require_parentheses.rb +54 -0
  140. data/lib/rubocop/cop/style/mixin_grouping.rb +1 -1
  141. data/lib/rubocop/cop/style/module_function.rb +58 -12
  142. data/lib/rubocop/cop/style/multiline_if_modifier.rb +1 -1
  143. data/lib/rubocop/cop/style/multiline_memoization.rb +1 -1
  144. data/lib/rubocop/cop/style/multiline_when_then.rb +5 -1
  145. data/lib/rubocop/cop/style/mutable_constant.rb +2 -4
  146. data/lib/rubocop/cop/style/nested_parenthesized_calls.rb +4 -4
  147. data/lib/rubocop/cop/style/next.rb +2 -2
  148. data/lib/rubocop/cop/style/nil_comparison.rb +1 -1
  149. data/lib/rubocop/cop/style/non_nil_check.rb +4 -4
  150. data/lib/rubocop/cop/style/not.rb +1 -1
  151. data/lib/rubocop/cop/style/numeric_literal_prefix.rb +1 -1
  152. data/lib/rubocop/cop/style/numeric_literals.rb +1 -1
  153. data/lib/rubocop/cop/style/numeric_predicate.rb +5 -4
  154. data/lib/rubocop/cop/style/one_line_conditional.rb +4 -3
  155. data/lib/rubocop/cop/style/or_assignment.rb +4 -3
  156. data/lib/rubocop/cop/style/percent_literal_delimiters.rb +7 -7
  157. data/lib/rubocop/cop/style/percent_q_literals.rb +1 -1
  158. data/lib/rubocop/cop/style/perl_backrefs.rb +2 -2
  159. data/lib/rubocop/cop/style/proc.rb +1 -1
  160. data/lib/rubocop/cop/style/raise_args.rb +1 -1
  161. data/lib/rubocop/cop/style/random_with_offset.rb +3 -3
  162. data/lib/rubocop/cop/style/redundant_condition.rb +18 -6
  163. data/lib/rubocop/cop/style/redundant_conditional.rb +1 -1
  164. data/lib/rubocop/cop/style/redundant_exception.rb +3 -3
  165. data/lib/rubocop/cop/style/redundant_interpolation.rb +2 -2
  166. data/lib/rubocop/cop/style/redundant_percent_q.rb +2 -2
  167. data/lib/rubocop/cop/style/redundant_return.rb +5 -7
  168. data/lib/rubocop/cop/style/redundant_self.rb +1 -1
  169. data/lib/rubocop/cop/style/redundant_sort.rb +2 -2
  170. data/lib/rubocop/cop/style/rescue_modifier.rb +1 -1
  171. data/lib/rubocop/cop/style/return_nil.rb +1 -1
  172. data/lib/rubocop/cop/style/safe_navigation.rb +1 -1
  173. data/lib/rubocop/cop/style/self_assignment.rb +1 -1
  174. data/lib/rubocop/cop/style/special_global_vars.rb +1 -1
  175. data/lib/rubocop/cop/style/stabby_lambda_parentheses.rb +1 -4
  176. data/lib/rubocop/cop/style/string_hash_keys.rb +1 -1
  177. data/lib/rubocop/cop/style/symbol_array.rb +3 -3
  178. data/lib/rubocop/cop/style/symbol_literal.rb +2 -2
  179. data/lib/rubocop/cop/style/ternary_parentheses.rb +2 -3
  180. data/lib/rubocop/cop/style/trailing_comma_in_arguments.rb +35 -22
  181. data/lib/rubocop/cop/style/trailing_comma_in_array_literal.rb +41 -0
  182. data/lib/rubocop/cop/style/trailing_comma_in_block_args.rb +88 -0
  183. data/lib/rubocop/cop/style/trailing_comma_in_hash_literal.rb +44 -0
  184. data/lib/rubocop/cop/style/trivial_accessors.rb +1 -1
  185. data/lib/rubocop/cop/style/unpack_first.rb +0 -4
  186. data/lib/rubocop/cop/style/variable_interpolation.rb +1 -1
  187. data/lib/rubocop/cop/style/while_until_modifier.rb +1 -1
  188. data/lib/rubocop/cop/style/word_array.rb +1 -1
  189. data/lib/rubocop/cop/style/yoda_condition.rb +16 -1
  190. data/lib/rubocop/cop/style/zero_length_predicate.rb +1 -1
  191. data/lib/rubocop/cop/variable_force.rb +4 -1
  192. data/lib/rubocop/formatter/clang_style_formatter.rb +1 -1
  193. data/lib/rubocop/formatter/formatter_set.rb +1 -1
  194. data/lib/rubocop/formatter/junit_formatter.rb +74 -0
  195. data/lib/rubocop/formatter/pacman_formatter.rb +1 -1
  196. data/lib/rubocop/formatter/tap_formatter.rb +1 -1
  197. data/lib/rubocop/node_pattern.rb +96 -10
  198. data/lib/rubocop/options.rb +7 -1
  199. data/lib/rubocop/processed_source.rb +1 -4
  200. data/lib/rubocop/rspec/cop_helper.rb +1 -1
  201. data/lib/rubocop/rspec/expect_offense.rb +1 -1
  202. data/lib/rubocop/rspec/shared_contexts.rb +5 -4
  203. data/lib/rubocop/runner.rb +1 -1
  204. data/lib/rubocop/target_ruby.rb +151 -0
  205. data/lib/rubocop/version.rb +1 -1
  206. metadata +39 -12
  207. data/lib/rubocop/cop/lint/end_in_method.rb +0 -40
  208. data/lib/rubocop/cop/style/braces_around_hash_parameters.rb +0 -209
  209. data/lib/rubocop/formatter/disabled_lines_formatter.rb +0 -57
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: a1c6769965ef19c24fed5115e5ee0e6949aef81f2d4f0c64a28e867b694b8f8b
4
- data.tar.gz: 6785ee7c23edbb4b47414ca32a9cb7b7e24565c454c8e4a33f742b9a15de8e5b
3
+ metadata.gz: 9e04c6e897293df4ef1c7bf05a0c0077512e2cba797a7caee484b1c08a7300ad
4
+ data.tar.gz: 92fbc98b5068e5c30bf83d058e3cfe774a1a65cc90608027ff8d6624c8c2910c
5
5
  SHA512:
6
- metadata.gz: e3e28e9ed24f5e757ce4c24f4ee4d079eb5e7ac1c6f50bd50fb512c5b4986d84ec19b0ba426a9b077ca734177a5e5139a50c12f5fe331216abee67bd6a2436b4
7
- data.tar.gz: 2f2739072557a141d69a51037e38a0973bee53caf40d216610eaffd3a8f14409e64562ed71a49803ad8b11b71fedc51312657efaecb27189900c7b5c44b2cb8c
6
+ metadata.gz: cacf128617d233de65c2061d0300d345357840b151f65c78a2463fa23830115dcaa667cc2110ef39cacd14d957e626fc3fb4857443e40a1ab0fb485ce9cbfeed
7
+ data.tar.gz: f7a095da673a5b32de33293c6056c580995d1b2ad913e2891c1740ab1ffb42896f1b0c69491eb75656907b60e4de6f6a58a119c8936cff26d1ed678bc1159e0c
@@ -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
@@ -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.78.0', require: false
56
+ gem 'rubocop', '~> 0.82.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.
@@ -54,6 +54,7 @@ AllCops:
54
54
  - '**/Puppetfile'
55
55
  - '**/Rakefile'
56
56
  - '**/Snapfile'
57
+ - '**/Steepfile'
57
58
  - '**/Thorfile'
58
59
  - '**/Vagabondfile'
59
60
  - '**/Vagrantfile'
@@ -96,6 +97,14 @@ AllCops:
96
97
  # to true in the same configuration.
97
98
  EnabledByDefault: false
98
99
  DisabledByDefault: false
100
+ # New cops introduced between major versions are set to a special pending status
101
+ # and are not enabled by default with warning message.
102
+ # Change this behavior by overriding either `NewCops: enable` or `NewCops: disable`.
103
+ # When `NewCops` is `enable`, pending cops are enabled in bulk. Can be overridden by
104
+ # the `--enable-pending-cops` command-line option.
105
+ # When `NewCops` is `disable`, pending cops are disabled in bulk. Can be overridden by
106
+ # the `--disable-pending-cops` command-line option.
107
+ NewCops: pending
99
108
  # Enables the result cache if `true`. Can be overridden by the `--cache` command
100
109
  # line option.
101
110
  UseCache: true
@@ -124,7 +133,7 @@ AllCops:
124
133
  # followed by the Gemfile.lock or gems.locked file. (Although the Ruby version
125
134
  # is specified in the Gemfile or gems.rb file, RuboCop reads the final value
126
135
  # 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).
136
+ # use the oldest officially supported Ruby version (currently Ruby 2.4).
128
137
  TargetRubyVersion: ~
129
138
 
130
139
  #################### Bundler ###############################
@@ -254,10 +263,30 @@ Layout/ArrayAlignment:
254
263
  Description: >-
255
264
  Align the elements of an array literal if they span more than
256
265
  one line.
257
- StyleGuide: '#align-multiline-arrays'
266
+ StyleGuide: '#no-double-indent'
258
267
  Enabled: true
259
268
  VersionAdded: '0.49'
260
269
  VersionChanged: '0.77'
270
+ # Alignment of elements of a multi-line array.
271
+ #
272
+ # The `with_first_parameter` style aligns the following lines along the same
273
+ # column as the first element.
274
+ #
275
+ # array = [1, 2, 3,
276
+ # 4, 5, 6]
277
+ #
278
+ # The `with_fixed_indentation` style aligns the following lines with one
279
+ # level of indentation relative to the start of the line with start of array.
280
+ #
281
+ # array = [1, 2, 3,
282
+ # 4, 5, 6]
283
+ EnforcedStyle: with_first_element
284
+ SupportedStyles:
285
+ - with_first_element
286
+ - with_fixed_indentation
287
+ # By default, the indentation width from Layout/IndentationWidth is used
288
+ # But it can be overridden by setting this parameter
289
+ IndentationWidth: ~
261
290
 
262
291
  Layout/AssignmentIndentation:
263
292
  Description: >-
@@ -772,6 +801,22 @@ Layout/IndentationConsistency:
772
801
  # A reference to `EnforcedStyle: indented_internal_methods`.
773
802
  - https://edgeguides.rubyonrails.org/contributing_to_ruby_on_rails.html#follow-the-coding-conventions
774
803
 
804
+ Layout/IndentationStyle:
805
+ Description: 'Consistent indentation either with tabs only or spaces only.'
806
+ StyleGuide: '#spaces-indentation'
807
+ Enabled: true
808
+ VersionAdded: '0.49'
809
+ VersionChanged: '0.82'
810
+ # By default, the indentation width from Layout/IndentationWidth is used
811
+ # But it can be overridden by setting this parameter
812
+ # It is used during auto-correction to determine how many spaces should
813
+ # replace each tab.
814
+ IndentationWidth: ~
815
+ EnforcedStyle: spaces
816
+ SupportedStyles:
817
+ - spaces
818
+ - tabs
819
+
775
820
  Layout/IndentationWidth:
776
821
  Description: 'Use 2 spaces for indentation.'
777
822
  StyleGuide: '#spaces-indentation'
@@ -794,6 +839,7 @@ Layout/LeadingCommentSpace:
794
839
  VersionAdded: '0.49'
795
840
  VersionChanged: '0.73'
796
841
  AllowDoxygenCommentStyle: false
842
+ AllowGemfileRubyComment: false
797
843
 
798
844
  Layout/LeadingEmptyLines:
799
845
  Description: Check for unnecessary blank lines at the beginning of a file.
@@ -1058,6 +1104,11 @@ Layout/SpaceAroundKeyword:
1058
1104
  Enabled: true
1059
1105
  VersionAdded: '0.49'
1060
1106
 
1107
+ Layout/SpaceAroundMethodCallOperator:
1108
+ Description: 'Checks method call operators to not have spaces around them.'
1109
+ Enabled: pending
1110
+ VersionAdded: '0.82'
1111
+
1061
1112
  Layout/SpaceAroundOperators:
1062
1113
  Description: 'Use a single space around operators.'
1063
1114
  StyleGuide: '#spaces-operators'
@@ -1228,18 +1279,6 @@ Layout/SpaceInsideStringInterpolation:
1228
1279
  - space
1229
1280
  - no_space
1230
1281
 
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
1282
  Layout/TrailingEmptyLines:
1244
1283
  Description: 'Checks trailing blank lines and final newline.'
1245
1284
  StyleGuide: '#newline-eof'
@@ -1301,6 +1340,7 @@ Lint/BooleanSymbol:
1301
1340
  Description: 'Check for `:true` and `:false` symbols.'
1302
1341
  Enabled: true
1303
1342
  VersionAdded: '0.50'
1343
+ VersionChanged: '0.81'
1304
1344
 
1305
1345
  Lint/CircularArgumentReference:
1306
1346
  Description: "Default values in optional keyword arguments and optional ordinal arguments should not refer back to the name of the argument."
@@ -1373,11 +1413,6 @@ Lint/EmptyWhen:
1373
1413
  Enabled: true
1374
1414
  VersionAdded: '0.45'
1375
1415
 
1376
- Lint/EndInMethod:
1377
- Description: 'END blocks should not be placed inside method definitions.'
1378
- Enabled: true
1379
- VersionAdded: '0.9'
1380
-
1381
1416
  Lint/EnsureReturn:
1382
1417
  Description: 'Do not use return in an ensure block.'
1383
1418
  StyleGuide: '#no-return-ensure'
@@ -1544,6 +1579,14 @@ Lint/PercentSymbolArray:
1544
1579
  Enabled: true
1545
1580
  VersionAdded: '0.41'
1546
1581
 
1582
+ Lint/RaiseException:
1583
+ Description: Checks for `raise` or `fail` statements which are raising `Exception` class.
1584
+ StyleGuide: '#raise-exception'
1585
+ Enabled: pending
1586
+ VersionAdded: '0.81'
1587
+ AllowedImplicitNamespaces:
1588
+ - 'Gem'
1589
+
1547
1590
  Lint/RandOne:
1548
1591
  Description: >-
1549
1592
  Checks for `rand(1)` calls. Such calls always return `0`
@@ -1572,7 +1615,7 @@ Lint/RedundantRequireStatement:
1572
1615
  Lint/RedundantSplatExpansion:
1573
1616
  Description: 'Checks for splat unnecessarily being called on literals.'
1574
1617
  Enabled: true
1575
- VersionChanged: '0.76'
1618
+ VersionAdded: '0.76'
1576
1619
 
1577
1620
  Lint/RedundantStringCoercion:
1578
1621
  Description: 'Checks for Object#to_s usage in string interpolation.'
@@ -1686,13 +1729,18 @@ Lint/ShadowingOuterLocalVariable:
1686
1729
  Enabled: true
1687
1730
  VersionAdded: '0.9'
1688
1731
 
1732
+ Lint/StructNewOverride:
1733
+ Description: 'Disallow overriding the `Struct` built-in methods via `Struct.new`.'
1734
+ Enabled: pending
1735
+ VersionAdded: '0.81'
1736
+
1689
1737
  Lint/SuppressedException:
1690
1738
  Description: "Don't suppress exceptions."
1691
1739
  StyleGuide: '#dont-hide-exceptions'
1692
1740
  Enabled: true
1693
- AllowComments: false
1741
+ AllowComments: true
1694
1742
  VersionAdded: '0.9'
1695
- VersionChanged: '0.77'
1743
+ VersionChanged: '0.81'
1696
1744
 
1697
1745
  Lint/Syntax:
1698
1746
  Description: 'Checks syntax error.'
@@ -1703,6 +1751,7 @@ Lint/Syntax:
1703
1751
  Lint/ToJSON:
1704
1752
  Description: 'Ensure #to_json includes an optional argument.'
1705
1753
  Enabled: true
1754
+ VersionAdded: '0.66'
1706
1755
 
1707
1756
  Lint/UnderscorePrefixedVariableName:
1708
1757
  Description: 'Do not use prefix `_` for a variable that is used.'
@@ -1734,9 +1783,10 @@ Lint/UnusedMethodArgument:
1734
1783
  StyleGuide: '#underscore-unused-vars'
1735
1784
  Enabled: true
1736
1785
  VersionAdded: '0.21'
1737
- VersionChanged: '0.35'
1786
+ VersionChanged: '0.81'
1738
1787
  AllowUnusedKeywordArguments: false
1739
1788
  IgnoreEmptyMethods: true
1789
+ IgnoreNotImplementedMethods: true
1740
1790
 
1741
1791
  Lint/UriEscapeUnescape:
1742
1792
  Description: >-
@@ -1782,6 +1832,8 @@ Lint/UselessSetterCall:
1782
1832
  Description: 'Checks for useless setter call to a local variable.'
1783
1833
  Enabled: true
1784
1834
  VersionAdded: '0.13'
1835
+ VersionChanged: '0.80'
1836
+ Safe: false
1785
1837
 
1786
1838
  Lint/Void:
1787
1839
  Description: 'Possible use of operator/literal/variable in void context.'
@@ -1800,9 +1852,10 @@ Metrics/AbcSize:
1800
1852
  - https://en.wikipedia.org/wiki/ABC_Software_Metric
1801
1853
  Enabled: true
1802
1854
  VersionAdded: '0.27'
1803
- VersionChanged: '0.66'
1855
+ VersionChanged: '0.81'
1804
1856
  # The ABC size is a calculated magnitude, so this number can be an Integer or
1805
1857
  # a Float.
1858
+ IgnoredMethods: []
1806
1859
  Max: 15
1807
1860
 
1808
1861
  Metrics/BlockLength:
@@ -1842,6 +1895,8 @@ Metrics/CyclomaticComplexity:
1842
1895
  of test cases needed to validate a method.
1843
1896
  Enabled: true
1844
1897
  VersionAdded: '0.25'
1898
+ VersionChanged: '0.81'
1899
+ IgnoredMethods: []
1845
1900
  Max: 6
1846
1901
 
1847
1902
  Metrics/MethodLength:
@@ -1875,6 +1930,8 @@ Metrics/PerceivedComplexity:
1875
1930
  human reader.
1876
1931
  Enabled: true
1877
1932
  VersionAdded: '0.25'
1933
+ VersionChanged: '0.81'
1934
+ IgnoredMethods: []
1878
1935
  Max: 7
1879
1936
 
1880
1937
  ################## Migration #############################
@@ -1883,7 +1940,8 @@ Migration/DepartmentName:
1883
1940
  Description: >-
1884
1941
  Check that cop names in rubocop:disable (etc) comments are
1885
1942
  given with department name.
1886
- Enabled: false
1943
+ Enabled: true
1944
+ VersionAdded: '0.75'
1887
1945
 
1888
1946
  #################### Naming ##############################
1889
1947
 
@@ -2065,6 +2123,7 @@ Naming/MethodParameterName:
2065
2123
  - ip
2066
2124
  - db
2067
2125
  - os
2126
+ - pp
2068
2127
  # Forbidden names that will register an offense
2069
2128
  ForbiddenNames: []
2070
2129
 
@@ -2173,10 +2232,12 @@ Style/AccessModifierDeclarations:
2173
2232
  Description: 'Checks style of how access modifiers are used.'
2174
2233
  Enabled: true
2175
2234
  VersionAdded: '0.57'
2235
+ VersionChanged: '0.81'
2176
2236
  EnforcedStyle: group
2177
2237
  SupportedStyles:
2178
2238
  - inline
2179
2239
  - group
2240
+ AllowModifiersOnSymbols: true
2180
2241
 
2181
2242
  Style/Alias:
2182
2243
  Description: 'Use alias instead of alias_method.'
@@ -2355,30 +2416,27 @@ Style/BlockDelimiters:
2355
2416
  # # also good
2356
2417
  # collection.each do |element| puts element end
2357
2418
  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
2419
+ # The BracesRequiredMethods overrides all other configurations except
2420
+ # IgnoredMethods. It can be used to enforce that all blocks for specific
2421
+ # methods use braces. For example, you can use this to enforce Sorbet
2422
+ # signatures use braces even when the rest of your codebase enforces
2423
+ # the `line_count_based` style.
2424
+ BracesRequiredMethods: []
2376
2425
 
2377
2426
  Style/CaseEquality:
2378
2427
  Description: 'Avoid explicit use of the case equality operator(===).'
2379
2428
  StyleGuide: '#no-case-equality'
2380
2429
  Enabled: true
2381
2430
  VersionAdded: '0.9'
2431
+ # If AllowOnConstant is enabled, the cop will ignore violations when the receiver of
2432
+ # the case equality operator is a constant.
2433
+ #
2434
+ # # bad
2435
+ # /string/ === "string"
2436
+ #
2437
+ # # good
2438
+ # String === "string"
2439
+ AllowOnConstant: false
2382
2440
 
2383
2441
  Style/CharacterLiteral:
2384
2442
  Description: 'Checks for uses of character literals.'
@@ -2419,6 +2477,7 @@ Style/ClassAndModuleChildren:
2419
2477
 
2420
2478
  Style/ClassCheck:
2421
2479
  Description: 'Enforces consistent use of `Object#is_a?` or `Object#kind_of?`.'
2480
+ StyleGuide: '#is-a-vs-kind-of'
2422
2481
  Enabled: true
2423
2482
  VersionAdded: '0.24'
2424
2483
  EnforcedStyle: is_a?
@@ -2442,7 +2501,7 @@ Style/ClassVars:
2442
2501
  # Align with the style guide.
2443
2502
  Style/CollectionMethods:
2444
2503
  Description: 'Preferred collection methods.'
2445
- StyleGuide: '#map-find-select-reduce-size'
2504
+ StyleGuide: '#map-find-select-reduce-include-size'
2446
2505
  Enabled: false
2447
2506
  VersionAdded: '0.9'
2448
2507
  VersionChanged: '0.27'
@@ -2459,6 +2518,7 @@ Style/CollectionMethods:
2459
2518
  inject: 'reduce'
2460
2519
  detect: 'find'
2461
2520
  find_all: 'select'
2521
+ member?: 'include?'
2462
2522
 
2463
2523
  Style/ColonMethodCall:
2464
2524
  Description: 'Do not use :: for method call.'
@@ -2585,6 +2645,12 @@ Style/Dir:
2585
2645
  Enabled: true
2586
2646
  VersionAdded: '0.50'
2587
2647
 
2648
+ Style/DisableCopsWithinSourceCodeDirective:
2649
+ Description: >-
2650
+ Forbids disabling/enabling cops within source code.
2651
+ Enabled: false
2652
+ VersionAdded: '0.82'
2653
+
2588
2654
  Style/Documentation:
2589
2655
  Description: 'Document classes and non-namespace modules.'
2590
2656
  Enabled: true
@@ -2684,6 +2750,7 @@ Style/EndBlock:
2684
2750
  StyleGuide: '#no-END-blocks'
2685
2751
  Enabled: true
2686
2752
  VersionAdded: '0.9'
2753
+ VersionChanged: '0.81'
2687
2754
 
2688
2755
  Style/EvalWithLocation:
2689
2756
  Description: 'Pass `__FILE__` and `__LINE__` to `eval` method, as they are used by backtraces.'
@@ -2702,6 +2769,17 @@ Style/ExpandPathArguments:
2702
2769
  Enabled: true
2703
2770
  VersionAdded: '0.53'
2704
2771
 
2772
+ Style/ExponentialNotation:
2773
+ Description: 'When using exponential notation, favor a mantissa between 1 (inclusive) and 10 (exclusive).'
2774
+ StyleGuide: '#exponential-notation'
2775
+ Enabled: pending
2776
+ VersionAdded: '0.82'
2777
+ EnforcedStyle: scientific
2778
+ SupportedStyles:
2779
+ - scientific
2780
+ - engineering
2781
+ - integral
2782
+
2705
2783
  Style/FloatDivision:
2706
2784
  Description: 'For performing float division, coerce one side only.'
2707
2785
  StyleGuide: '#float-division'
@@ -2758,7 +2836,7 @@ Style/FrozenStringLiteralComment:
2758
2836
  to help transition to frozen string literals by default.
2759
2837
  Enabled: true
2760
2838
  VersionAdded: '0.36'
2761
- VersionChanged: '0.69'
2839
+ VersionChanged: '0.79'
2762
2840
  EnforcedStyle: always
2763
2841
  SupportedStyles:
2764
2842
  # `always` will always add the frozen string literal comment to a file
@@ -2766,9 +2844,14 @@ Style/FrozenStringLiteralComment:
2766
2844
  # string literal. If you run code against multiple versions of Ruby, it is
2767
2845
  # possible that this will create errors in Ruby 2.3.0+.
2768
2846
  - always
2847
+ # `always_true` will add the frozen string literal comment to a file,
2848
+ # similarly to the `always` style, but will also change any disabled
2849
+ # comments (e.g. `# frozen_string_literal: false`) to be enabled.
2850
+ - always_true
2769
2851
  # `never` will enforce that the frozen string literal comment does not
2770
2852
  # exist in a file.
2771
2853
  - never
2854
+ Safe: false
2772
2855
 
2773
2856
  Style/GlobalVars:
2774
2857
  Description: 'Do not introduce global variables.'
@@ -2789,6 +2872,13 @@ Style/GuardClause:
2789
2872
  # needs to have to trigger this cop
2790
2873
  MinBodyLength: 1
2791
2874
 
2875
+ Style/HashEachMethods:
2876
+ Description: 'Use Hash#each_key and Hash#each_value.'
2877
+ StyleGuide: '#hash-each'
2878
+ Enabled: pending
2879
+ VersionAdded: '0.80'
2880
+ Safe: false
2881
+
2792
2882
  Style/HashSyntax:
2793
2883
  Description: >-
2794
2884
  Prefer Ruby 1.9 hash syntax { a: 1, b: 2 } over 1.8 syntax
@@ -2812,6 +2902,18 @@ Style/HashSyntax:
2812
2902
  # Do not suggest { a?: 1 } over { :a? => 1 } in ruby19 style
2813
2903
  PreferHashRocketsForNonAlnumEndingSymbols: false
2814
2904
 
2905
+ Style/HashTransformKeys:
2906
+ Description: 'Prefer `transform_keys` over `each_with_object` and `map`.'
2907
+ Enabled: 'pending'
2908
+ VersionAdded: '0.80'
2909
+ Safe: false
2910
+
2911
+ Style/HashTransformValues:
2912
+ Description: 'Prefer `transform_values` over `each_with_object` and `map`.'
2913
+ Enabled: 'pending'
2914
+ VersionAdded: '0.80'
2915
+ Safe: false
2916
+
2815
2917
  Style/IdenticalConditionalBranches:
2816
2918
  Description: >-
2817
2919
  Checks that conditional statements do not have an identical
@@ -2920,7 +3022,7 @@ Style/LambdaCall:
2920
3022
  Description: 'Use lambda.call(...) instead of lambda.(...).'
2921
3023
  StyleGuide: '#proc-call'
2922
3024
  Enabled: true
2923
- VersionAdded: '0.13.1'
3025
+ VersionAdded: '0.13'
2924
3026
  VersionChanged: '0.14'
2925
3027
  EnforcedStyle: call
2926
3028
  SupportedStyles:
@@ -3050,6 +3152,7 @@ Style/ModuleFunction:
3050
3152
  SupportedStyles:
3051
3153
  - module_function
3052
3154
  - extend_self
3155
+ - forbidden
3053
3156
  Autocorrect: false
3054
3157
  SafeAutoCorrect: false
3055
3158
 
@@ -3789,22 +3892,29 @@ Style/TrailingCommaInArrayLiteral:
3789
3892
  StyleGuide: '#no-trailing-array-commas'
3790
3893
  Enabled: true
3791
3894
  VersionAdded: '0.53'
3895
+ # If `comma`, the cop requires a comma after the last item in an array,
3792
3896
  # but only when each item is on its own line.
3793
3897
  # If `consistent_comma`, the cop requires a comma after the last item of all
3794
- # non-empty array literals.
3898
+ # non-empty, multiline array literals.
3795
3899
  EnforcedStyleForMultiline: no_comma
3796
3900
  SupportedStylesForMultiline:
3797
3901
  - comma
3798
3902
  - consistent_comma
3799
3903
  - no_comma
3800
3904
 
3905
+ Style/TrailingCommaInBlockArgs:
3906
+ Description: 'Checks for useless trailing commas in block arguments.'
3907
+ Enabled: false
3908
+ Safe: false
3909
+ VersionAdded: '0.81'
3910
+
3801
3911
  Style/TrailingCommaInHashLiteral:
3802
3912
  Description: 'Checks for trailing comma in hash literals.'
3803
3913
  Enabled: true
3804
3914
  # If `comma`, the cop requires a comma after the last item in a hash,
3805
3915
  # but only when each item is on its own line.
3806
3916
  # If `consistent_comma`, the cop requires a comma after the last item of all
3807
- # non-empty hash literals.
3917
+ # non-empty, multiline hash literals.
3808
3918
  EnforcedStyleForMultiline: no_comma
3809
3919
  SupportedStylesForMultiline:
3810
3920
  - comma