rubocop 0.78.0 → 0.82.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (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