rubocop 0.76.0 → 0.80.1

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 (155) hide show
  1. checksums.yaml +4 -4
  2. data/LICENSE.txt +1 -1
  3. data/README.md +4 -4
  4. data/config/default.yml +325 -283
  5. data/lib/rubocop.rb +43 -23
  6. data/lib/rubocop/ast/builder.rb +43 -42
  7. data/lib/rubocop/ast/node.rb +1 -13
  8. data/lib/rubocop/ast/node/block_node.rb +2 -0
  9. data/lib/rubocop/ast/node/def_node.rb +11 -0
  10. data/lib/rubocop/ast/node/forward_args_node.rb +18 -0
  11. data/lib/rubocop/ast/node/regexp_node.rb +2 -4
  12. data/lib/rubocop/ast/traversal.rb +20 -3
  13. data/lib/rubocop/cli.rb +11 -230
  14. data/lib/rubocop/cli/command.rb +21 -0
  15. data/lib/rubocop/cli/command/auto_genenerate_config.rb +105 -0
  16. data/lib/rubocop/cli/command/base.rb +33 -0
  17. data/lib/rubocop/cli/command/execute_runner.rb +76 -0
  18. data/lib/rubocop/cli/command/init_dotfile.rb +45 -0
  19. data/lib/rubocop/cli/command/show_cops.rb +80 -0
  20. data/lib/rubocop/cli/command/version.rb +17 -0
  21. data/lib/rubocop/cli/environment.rb +21 -0
  22. data/lib/rubocop/comment_config.rb +6 -1
  23. data/lib/rubocop/config.rb +28 -10
  24. data/lib/rubocop/config_loader.rb +19 -19
  25. data/lib/rubocop/config_obsoletion.rb +65 -11
  26. data/lib/rubocop/config_validator.rb +56 -98
  27. data/lib/rubocop/cop/autocorrect_logic.rb +7 -4
  28. data/lib/rubocop/cop/bundler/gem_comment.rb +4 -4
  29. data/lib/rubocop/cop/bundler/insecure_protocol_source.rb +2 -2
  30. data/lib/rubocop/cop/cop.rb +21 -0
  31. data/lib/rubocop/cop/correctors/space_corrector.rb +1 -2
  32. data/lib/rubocop/cop/gemspec/ordered_dependencies.rb +1 -1
  33. data/lib/rubocop/cop/generator.rb +3 -4
  34. data/lib/rubocop/cop/generator/configuration_injector.rb +1 -1
  35. data/lib/rubocop/cop/internal_affairs.rb +1 -0
  36. data/lib/rubocop/cop/internal_affairs/method_name_equal.rb +59 -0
  37. data/lib/rubocop/cop/layout/{align_arguments.rb → argument_alignment.rb} +1 -1
  38. data/lib/rubocop/cop/layout/{align_array.rb → array_alignment.rb} +1 -1
  39. data/lib/rubocop/cop/layout/{indent_assignment.rb → assignment_indentation.rb} +1 -1
  40. data/lib/rubocop/cop/layout/empty_line_between_defs.rb +2 -1
  41. data/lib/rubocop/cop/layout/extra_spacing.rb +1 -1
  42. data/lib/rubocop/cop/layout/{indent_first_argument.rb → first_argument_indentation.rb} +5 -5
  43. data/lib/rubocop/cop/layout/{indent_first_array_element.rb → first_array_element_indentation.rb} +4 -4
  44. data/lib/rubocop/cop/layout/{indent_first_hash_element.rb → first_hash_element_indentation.rb} +3 -3
  45. data/lib/rubocop/cop/layout/{indent_first_parameter.rb → first_parameter_indentation.rb} +3 -3
  46. data/lib/rubocop/cop/layout/{align_hash.rb → hash_alignment.rb} +10 -6
  47. data/lib/rubocop/cop/layout/{indent_heredoc.rb → heredoc_indentation.rb} +5 -5
  48. data/lib/rubocop/cop/layout/leading_comment_space.rb +33 -2
  49. data/lib/rubocop/cop/layout/{leading_blank_lines.rb → leading_empty_lines.rb} +1 -1
  50. data/lib/rubocop/cop/{metrics → layout}/line_length.rb +67 -108
  51. data/lib/rubocop/cop/layout/multiline_block_layout.rb +14 -5
  52. data/lib/rubocop/cop/layout/multiline_hash_brace_layout.rb +0 -4
  53. data/lib/rubocop/cop/layout/multiline_method_argument_line_breaks.rb +1 -1
  54. data/lib/rubocop/cop/layout/{align_parameters.rb → parameter_alignment.rb} +1 -1
  55. data/lib/rubocop/cop/layout/space_around_keyword.rb +12 -0
  56. data/lib/rubocop/cop/layout/space_around_operators.rb +50 -7
  57. data/lib/rubocop/cop/layout/space_before_block_braces.rb +17 -0
  58. data/lib/rubocop/cop/layout/space_before_first_arg.rb +8 -0
  59. data/lib/rubocop/cop/layout/space_inside_hash_literal_braces.rb +2 -9
  60. data/lib/rubocop/cop/layout/{trailing_blank_lines.rb → trailing_empty_lines.rb} +1 -1
  61. data/lib/rubocop/cop/lint/debugger.rb +1 -1
  62. data/lib/rubocop/cop/lint/disjunctive_assignment_in_constructor.rb +1 -1
  63. data/lib/rubocop/cop/lint/{duplicated_key.rb → duplicate_hash_key.rb} +1 -1
  64. data/lib/rubocop/cop/lint/each_with_object_argument.rb +1 -1
  65. data/lib/rubocop/cop/lint/ineffective_access_modifier.rb +1 -1
  66. data/lib/rubocop/cop/lint/{multiple_compare.rb → multiple_comparison.rb} +1 -1
  67. data/lib/rubocop/cop/lint/non_deterministic_require_order.rb +89 -0
  68. data/lib/rubocop/cop/lint/redundant_cop_disable_directive.rb +3 -3
  69. data/lib/rubocop/cop/lint/redundant_cop_enable_directive.rb +13 -8
  70. data/lib/rubocop/cop/lint/redundant_splat_expansion.rb +1 -1
  71. data/lib/rubocop/cop/lint/{string_conversion_in_interpolation.rb → redundant_string_coercion.rb} +1 -1
  72. data/lib/rubocop/cop/lint/redundant_with_index.rb +2 -2
  73. data/lib/rubocop/cop/lint/redundant_with_object.rb +2 -2
  74. data/lib/rubocop/cop/lint/{handle_exceptions.rb → suppressed_exception.rb} +1 -1
  75. data/lib/rubocop/cop/lint/useless_access_modifier.rb +57 -23
  76. data/lib/rubocop/cop/lint/useless_setter_call.rb +5 -1
  77. data/lib/rubocop/cop/metrics/method_length.rb +1 -1
  78. data/lib/rubocop/cop/migration/department_name.rb +30 -2
  79. data/lib/rubocop/cop/mixin/alignment.rb +1 -1
  80. data/lib/rubocop/cop/mixin/configurable_enforced_style.rb +4 -0
  81. data/lib/rubocop/cop/mixin/frozen_string_literal.rb +7 -7
  82. data/lib/rubocop/cop/mixin/{hash_alignment.rb → hash_alignment_styles.rb} +1 -1
  83. data/lib/rubocop/cop/mixin/hash_transform_method.rb +171 -0
  84. data/lib/rubocop/cop/mixin/line_length_help.rb +88 -0
  85. data/lib/rubocop/cop/mixin/nil_methods.rb +4 -4
  86. data/lib/rubocop/cop/mixin/rational_literal.rb +18 -0
  87. data/lib/rubocop/cop/mixin/statement_modifier.rb +2 -2
  88. data/lib/rubocop/cop/mixin/trailing_comma.rb +8 -12
  89. data/lib/rubocop/cop/naming/{uncommunicative_block_param_name.rb → block_parameter_name.rb} +3 -3
  90. data/lib/rubocop/cop/naming/heredoc_delimiter_naming.rb +5 -5
  91. data/lib/rubocop/cop/naming/memoized_instance_variable_name.rb +1 -1
  92. data/lib/rubocop/cop/naming/{uncommunicative_method_param_name.rb → method_parameter_name.rb} +4 -4
  93. data/lib/rubocop/cop/naming/predicate_name.rb +6 -6
  94. data/lib/rubocop/cop/offense.rb +11 -0
  95. data/lib/rubocop/cop/registry.rb +7 -2
  96. data/lib/rubocop/cop/style/alias.rb +1 -1
  97. data/lib/rubocop/cop/style/array_join.rb +1 -1
  98. data/lib/rubocop/cop/style/attr.rb +8 -0
  99. data/lib/rubocop/cop/style/block_delimiters.rb +60 -1
  100. data/lib/rubocop/cop/style/conditional_assignment.rb +2 -2
  101. data/lib/rubocop/cop/style/eval_with_location.rb +1 -1
  102. data/lib/rubocop/cop/style/even_odd.rb +1 -1
  103. data/lib/rubocop/cop/style/frozen_string_literal_comment.rb +89 -11
  104. data/lib/rubocop/cop/style/guard_clause.rb +3 -2
  105. data/lib/rubocop/cop/style/hash_each_methods.rb +87 -0
  106. data/lib/rubocop/cop/style/hash_transform_keys.rb +79 -0
  107. data/lib/rubocop/cop/style/hash_transform_values.rb +79 -0
  108. data/lib/rubocop/cop/style/if_unless_modifier.rb +38 -3
  109. data/lib/rubocop/cop/style/infinite_loop.rb +1 -1
  110. data/lib/rubocop/cop/style/inverse_methods.rb +8 -4
  111. data/lib/rubocop/cop/style/ip_addresses.rb +4 -4
  112. data/lib/rubocop/cop/style/method_call_with_args_parentheses.rb +7 -205
  113. data/lib/rubocop/cop/style/method_call_with_args_parentheses/omit_parentheses.rb +169 -0
  114. data/lib/rubocop/cop/style/method_call_with_args_parentheses/require_parentheses.rb +54 -0
  115. data/lib/rubocop/cop/style/mixin_grouping.rb +1 -1
  116. data/lib/rubocop/cop/style/multiline_method_signature.rb +1 -1
  117. data/lib/rubocop/cop/style/multiline_when_then.rb +5 -1
  118. data/lib/rubocop/cop/style/nested_parenthesized_calls.rb +7 -7
  119. data/lib/rubocop/cop/style/next.rb +5 -5
  120. data/lib/rubocop/cop/style/numeric_literals.rb +7 -3
  121. data/lib/rubocop/cop/style/numeric_predicate.rb +4 -3
  122. data/lib/rubocop/cop/style/option_hash.rb +3 -3
  123. data/lib/rubocop/cop/style/or_assignment.rb +3 -2
  124. data/lib/rubocop/cop/style/percent_literal_delimiters.rb +7 -7
  125. data/lib/rubocop/cop/style/redundant_condition.rb +17 -4
  126. data/lib/rubocop/cop/style/redundant_parentheses.rb +3 -3
  127. data/lib/rubocop/cop/style/redundant_return.rb +2 -8
  128. data/lib/rubocop/cop/style/redundant_sort.rb +1 -1
  129. data/lib/rubocop/cop/style/symbol_array.rb +2 -2
  130. data/lib/rubocop/cop/style/ternary_parentheses.rb +1 -1
  131. data/lib/rubocop/cop/style/trailing_comma_in_arguments.rb +0 -22
  132. data/lib/rubocop/cop/style/trailing_underscore_variable.rb +7 -1
  133. data/lib/rubocop/cop/style/trivial_accessors.rb +5 -5
  134. data/lib/rubocop/cop/style/while_until_modifier.rb +1 -1
  135. data/lib/rubocop/cop/style/yoda_condition.rb +16 -1
  136. data/lib/rubocop/cop/team.rb +5 -0
  137. data/lib/rubocop/cop/variable_force.rb +4 -1
  138. data/lib/rubocop/formatter/base_formatter.rb +2 -2
  139. data/lib/rubocop/formatter/clang_style_formatter.rb +1 -3
  140. data/lib/rubocop/formatter/formatter_set.rb +1 -0
  141. data/lib/rubocop/formatter/json_formatter.rb +6 -5
  142. data/lib/rubocop/formatter/junit_formatter.rb +63 -0
  143. data/lib/rubocop/formatter/tap_formatter.rb +1 -3
  144. data/lib/rubocop/node_pattern.rb +97 -11
  145. data/lib/rubocop/options.rb +8 -8
  146. data/lib/rubocop/processed_source.rb +1 -1
  147. data/lib/rubocop/rake_task.rb +1 -0
  148. data/lib/rubocop/result_cache.rb +23 -7
  149. data/lib/rubocop/rspec/shared_contexts.rb +5 -0
  150. data/lib/rubocop/runner.rb +18 -2
  151. data/lib/rubocop/target_ruby.rb +151 -0
  152. data/lib/rubocop/version.rb +1 -1
  153. metadata +60 -27
  154. data/lib/rubocop/cop/mixin/safe_mode.rb +0 -24
  155. data/lib/rubocop/cop/style/braces_around_hash_parameters.rb +0 -209
@@ -43,6 +43,7 @@ require_relative 'rubocop/ast/node/def_node'
43
43
  require_relative 'rubocop/ast/node/defined_node'
44
44
  require_relative 'rubocop/ast/node/ensure_node'
45
45
  require_relative 'rubocop/ast/node/for_node'
46
+ require_relative 'rubocop/ast/node/forward_args_node'
46
47
  require_relative 'rubocop/ast/node/float_node'
47
48
  require_relative 'rubocop/ast/node/hash_node'
48
49
  require_relative 'rubocop/ast/node/if_node'
@@ -118,11 +119,13 @@ require_relative 'rubocop/cop/mixin/end_keyword_alignment'
118
119
  require_relative 'rubocop/cop/mixin/enforce_superclass'
119
120
  require_relative 'rubocop/cop/mixin/first_element_line_break'
120
121
  require_relative 'rubocop/cop/mixin/frozen_string_literal'
121
- require_relative 'rubocop/cop/mixin/hash_alignment'
122
+ require_relative 'rubocop/cop/mixin/hash_alignment_styles'
123
+ require_relative 'rubocop/cop/mixin/hash_transform_method'
122
124
  require_relative 'rubocop/cop/mixin/ignored_pattern'
123
125
  require_relative 'rubocop/cop/mixin/ignored_methods'
124
126
  require_relative 'rubocop/cop/mixin/integer_node'
125
127
  require_relative 'rubocop/cop/mixin/interpolation'
128
+ require_relative 'rubocop/cop/mixin/line_length_help'
126
129
  require_relative 'rubocop/cop/mixin/match_range'
127
130
  require_relative 'rubocop/cop/mixin/method_complexity'
128
131
  require_relative 'rubocop/cop/mixin/method_preference'
@@ -142,9 +145,9 @@ require_relative 'rubocop/cop/mixin/percent_array'
142
145
  require_relative 'rubocop/cop/mixin/percent_literal'
143
146
  require_relative 'rubocop/cop/mixin/preceding_following_alignment'
144
147
  require_relative 'rubocop/cop/mixin/preferred_delimiters'
148
+ require_relative 'rubocop/cop/mixin/rational_literal'
145
149
  require_relative 'rubocop/cop/mixin/rescue_node'
146
150
  require_relative 'rubocop/cop/mixin/safe_assignment'
147
- require_relative 'rubocop/cop/mixin/safe_mode'
148
151
  require_relative 'rubocop/cop/mixin/space_after_punctuation'
149
152
  require_relative 'rubocop/cop/mixin/space_before_punctuation'
150
153
  require_relative 'rubocop/cop/mixin/surrounding_space'
@@ -189,10 +192,9 @@ require_relative 'rubocop/cop/gemspec/required_ruby_version'
189
192
  require_relative 'rubocop/cop/gemspec/ruby_version_globals_usage'
190
193
 
191
194
  require_relative 'rubocop/cop/layout/access_modifier_indentation'
192
- require_relative 'rubocop/cop/layout/align_arguments'
193
- require_relative 'rubocop/cop/layout/align_array'
194
- require_relative 'rubocop/cop/layout/align_hash'
195
- require_relative 'rubocop/cop/layout/align_parameters'
195
+ require_relative 'rubocop/cop/layout/argument_alignment'
196
+ require_relative 'rubocop/cop/layout/array_alignment'
197
+ require_relative 'rubocop/cop/layout/assignment_indentation'
196
198
  require_relative 'rubocop/cop/layout/block_alignment'
197
199
  require_relative 'rubocop/cop/layout/block_end_newline'
198
200
  require_relative 'rubocop/cop/layout/case_indentation'
@@ -213,29 +215,30 @@ require_relative 'rubocop/cop/layout/empty_lines_around_arguments'
213
215
  require_relative 'rubocop/cop/layout/empty_lines_around_begin_body'
214
216
  require_relative 'rubocop/cop/layout/empty_lines_around_block_body'
215
217
  require_relative 'rubocop/cop/layout/empty_lines_around_class_body'
216
- require_relative 'rubocop/cop/layout/empty_lines_around_exception_handling_keywords' # rubocop:disable Metrics/LineLength
218
+ require_relative 'rubocop/cop/layout/empty_lines_around_exception_handling_keywords' # rubocop:disable Layout/LineLength
217
219
  require_relative 'rubocop/cop/layout/empty_lines_around_method_body'
218
220
  require_relative 'rubocop/cop/layout/empty_lines_around_module_body'
219
221
  require_relative 'rubocop/cop/layout/empty_lines'
220
222
  require_relative 'rubocop/cop/layout/end_alignment'
221
223
  require_relative 'rubocop/cop/layout/end_of_line'
222
224
  require_relative 'rubocop/cop/layout/extra_spacing'
225
+ require_relative 'rubocop/cop/layout/first_argument_indentation'
226
+ require_relative 'rubocop/cop/layout/first_array_element_indentation'
223
227
  require_relative 'rubocop/cop/layout/first_array_element_line_break'
228
+ require_relative 'rubocop/cop/layout/first_hash_element_indentation'
224
229
  require_relative 'rubocop/cop/layout/first_hash_element_line_break'
225
230
  require_relative 'rubocop/cop/layout/first_method_argument_line_break'
226
231
  require_relative 'rubocop/cop/layout/first_method_parameter_line_break'
232
+ require_relative 'rubocop/cop/layout/first_parameter_indentation'
233
+ require_relative 'rubocop/cop/layout/hash_alignment'
227
234
  require_relative 'rubocop/cop/layout/heredoc_argument_closing_parenthesis'
228
- require_relative 'rubocop/cop/layout/indent_assignment'
235
+ require_relative 'rubocop/cop/layout/heredoc_indentation'
229
236
  require_relative 'rubocop/cop/layout/indentation_consistency'
230
237
  require_relative 'rubocop/cop/layout/indentation_width'
231
- require_relative 'rubocop/cop/layout/indent_first_argument'
232
- require_relative 'rubocop/cop/layout/indent_first_array_element'
233
- require_relative 'rubocop/cop/layout/indent_first_hash_element'
234
- require_relative 'rubocop/cop/layout/indent_first_parameter'
235
- require_relative 'rubocop/cop/layout/indent_heredoc'
236
238
  require_relative 'rubocop/cop/layout/initial_indentation'
237
- require_relative 'rubocop/cop/layout/leading_blank_lines'
238
239
  require_relative 'rubocop/cop/layout/leading_comment_space'
240
+ require_relative 'rubocop/cop/layout/leading_empty_lines'
241
+ require_relative 'rubocop/cop/layout/line_length'
239
242
  require_relative 'rubocop/cop/layout/multiline_array_brace_layout'
240
243
  require_relative 'rubocop/cop/layout/multiline_array_line_breaks'
241
244
  require_relative 'rubocop/cop/layout/multiline_assignment_layout'
@@ -247,6 +250,7 @@ require_relative 'rubocop/cop/layout/multiline_method_call_brace_layout'
247
250
  require_relative 'rubocop/cop/layout/multiline_method_call_indentation'
248
251
  require_relative 'rubocop/cop/layout/multiline_method_definition_brace_layout'
249
252
  require_relative 'rubocop/cop/layout/multiline_operation_indentation'
253
+ require_relative 'rubocop/cop/layout/parameter_alignment'
250
254
  require_relative 'rubocop/cop/layout/rescue_ensure_alignment'
251
255
  require_relative 'rubocop/cop/layout/space_after_colon'
252
256
  require_relative 'rubocop/cop/layout/space_after_comma'
@@ -273,7 +277,7 @@ require_relative 'rubocop/cop/layout/space_inside_range_literal'
273
277
  require_relative 'rubocop/cop/layout/space_inside_reference_brackets'
274
278
  require_relative 'rubocop/cop/layout/space_inside_string_interpolation'
275
279
  require_relative 'rubocop/cop/layout/tab'
276
- require_relative 'rubocop/cop/layout/trailing_blank_lines'
280
+ require_relative 'rubocop/cop/layout/trailing_empty_lines'
277
281
  require_relative 'rubocop/cop/layout/trailing_whitespace'
278
282
 
279
283
  require_relative 'rubocop/cop/lint/ambiguous_block_association'
@@ -287,8 +291,8 @@ require_relative 'rubocop/cop/lint/debugger'
287
291
  require_relative 'rubocop/cop/lint/deprecated_class_methods'
288
292
  require_relative 'rubocop/cop/lint/disjunctive_assignment_in_constructor'
289
293
  require_relative 'rubocop/cop/lint/duplicate_case_condition'
294
+ require_relative 'rubocop/cop/lint/duplicate_hash_key'
290
295
  require_relative 'rubocop/cop/lint/duplicate_methods'
291
- require_relative 'rubocop/cop/lint/duplicated_key'
292
296
  require_relative 'rubocop/cop/lint/each_with_object_argument'
293
297
  require_relative 'rubocop/cop/lint/else_layout'
294
298
  require_relative 'rubocop/cop/lint/empty_ensure'
@@ -301,7 +305,6 @@ require_relative 'rubocop/cop/lint/erb_new_arguments'
301
305
  require_relative 'rubocop/cop/lint/flip_flop'
302
306
  require_relative 'rubocop/cop/lint/float_out_of_range'
303
307
  require_relative 'rubocop/cop/lint/format_parameter_mismatch'
304
- require_relative 'rubocop/cop/lint/handle_exceptions'
305
308
  require_relative 'rubocop/cop/lint/heredoc_method_call_position'
306
309
  require_relative 'rubocop/cop/lint/implicit_string_concatenation'
307
310
  require_relative 'rubocop/cop/lint/inherit_exception'
@@ -311,10 +314,11 @@ require_relative 'rubocop/cop/lint/literal_as_condition'
311
314
  require_relative 'rubocop/cop/lint/literal_in_interpolation'
312
315
  require_relative 'rubocop/cop/lint/loop'
313
316
  require_relative 'rubocop/cop/lint/missing_cop_enable_directive'
314
- require_relative 'rubocop/cop/lint/multiple_compare'
317
+ require_relative 'rubocop/cop/lint/multiple_comparison'
315
318
  require_relative 'rubocop/cop/lint/nested_method_definition'
316
319
  require_relative 'rubocop/cop/lint/nested_percent_literal'
317
320
  require_relative 'rubocop/cop/lint/next_without_accumulator'
321
+ require_relative 'rubocop/cop/lint/non_deterministic_require_order'
318
322
  require_relative 'rubocop/cop/lint/non_local_exit_from_iterator'
319
323
  require_relative 'rubocop/cop/lint/number_conversion'
320
324
  require_relative 'rubocop/cop/lint/ordered_magic_comments'
@@ -326,6 +330,7 @@ require_relative 'rubocop/cop/lint/redundant_cop_disable_directive'
326
330
  require_relative 'rubocop/cop/lint/redundant_cop_enable_directive'
327
331
  require_relative 'rubocop/cop/lint/redundant_require_statement'
328
332
  require_relative 'rubocop/cop/lint/redundant_splat_expansion'
333
+ require_relative 'rubocop/cop/lint/redundant_string_coercion'
329
334
  require_relative 'rubocop/cop/lint/redundant_with_index'
330
335
  require_relative 'rubocop/cop/lint/redundant_with_object'
331
336
  require_relative 'rubocop/cop/lint/regexp_as_condition'
@@ -341,7 +346,7 @@ require_relative 'rubocop/cop/lint/send_with_mixin_argument'
341
346
  require_relative 'rubocop/cop/lint/shadowed_argument'
342
347
  require_relative 'rubocop/cop/lint/shadowed_exception'
343
348
  require_relative 'rubocop/cop/lint/shadowing_outer_local_variable'
344
- require_relative 'rubocop/cop/lint/string_conversion_in_interpolation'
349
+ require_relative 'rubocop/cop/lint/suppressed_exception'
345
350
  require_relative 'rubocop/cop/lint/syntax'
346
351
  require_relative 'rubocop/cop/lint/to_json'
347
352
  require_relative 'rubocop/cop/lint/underscore_prefixed_variable_name'
@@ -365,7 +370,6 @@ require_relative 'rubocop/cop/metrics/abc_size'
365
370
  require_relative 'rubocop/cop/metrics/block_length'
366
371
  require_relative 'rubocop/cop/metrics/block_nesting'
367
372
  require_relative 'rubocop/cop/metrics/class_length'
368
- require_relative 'rubocop/cop/metrics/line_length'
369
373
  require_relative 'rubocop/cop/metrics/method_length'
370
374
  require_relative 'rubocop/cop/metrics/module_length'
371
375
  require_relative 'rubocop/cop/metrics/parameter_lists'
@@ -373,6 +377,7 @@ require_relative 'rubocop/cop/metrics/perceived_complexity'
373
377
 
374
378
  require_relative 'rubocop/cop/naming/accessor_method_name'
375
379
  require_relative 'rubocop/cop/naming/ascii_identifiers'
380
+ require_relative 'rubocop/cop/naming/block_parameter_name'
376
381
  require_relative 'rubocop/cop/naming/class_and_module_camel_case'
377
382
  require_relative 'rubocop/cop/naming/constant_name'
378
383
  require_relative 'rubocop/cop/naming/file_name'
@@ -380,11 +385,10 @@ require_relative 'rubocop/cop/naming/heredoc_delimiter_case'
380
385
  require_relative 'rubocop/cop/naming/heredoc_delimiter_naming'
381
386
  require_relative 'rubocop/cop/naming/memoized_instance_variable_name'
382
387
  require_relative 'rubocop/cop/naming/method_name'
388
+ require_relative 'rubocop/cop/naming/method_parameter_name'
383
389
  require_relative 'rubocop/cop/naming/binary_operator_parameter_name'
384
390
  require_relative 'rubocop/cop/naming/predicate_name'
385
391
  require_relative 'rubocop/cop/naming/rescued_exceptions_variable_name'
386
- require_relative 'rubocop/cop/naming/uncommunicative_block_param_name'
387
- require_relative 'rubocop/cop/naming/uncommunicative_method_param_name'
388
392
  require_relative 'rubocop/cop/naming/variable_name'
389
393
  require_relative 'rubocop/cop/naming/variable_number'
390
394
 
@@ -399,7 +403,6 @@ require_relative 'rubocop/cop/style/bare_percent_literals'
399
403
  require_relative 'rubocop/cop/style/begin_block'
400
404
  require_relative 'rubocop/cop/style/block_comments'
401
405
  require_relative 'rubocop/cop/style/block_delimiters'
402
- require_relative 'rubocop/cop/style/braces_around_hash_parameters'
403
406
  require_relative 'rubocop/cop/style/case_equality'
404
407
  require_relative 'rubocop/cop/style/character_literal'
405
408
  require_relative 'rubocop/cop/style/class_and_module_children'
@@ -442,7 +445,10 @@ require_relative 'rubocop/cop/style/format_string_token'
442
445
  require_relative 'rubocop/cop/style/frozen_string_literal_comment'
443
446
  require_relative 'rubocop/cop/style/global_vars'
444
447
  require_relative 'rubocop/cop/style/guard_clause'
448
+ require_relative 'rubocop/cop/style/hash_each_methods'
445
449
  require_relative 'rubocop/cop/style/hash_syntax'
450
+ require_relative 'rubocop/cop/style/hash_transform_keys'
451
+ require_relative 'rubocop/cop/style/hash_transform_values'
446
452
  require_relative 'rubocop/cop/style/identical_conditional_branches'
447
453
  require_relative 'rubocop/cop/style/if_inside_else'
448
454
  require_relative 'rubocop/cop/style/if_unless_modifier'
@@ -457,7 +463,11 @@ require_relative 'rubocop/cop/style/lambda'
457
463
  require_relative 'rubocop/cop/style/lambda_call'
458
464
  require_relative 'rubocop/cop/style/line_end_concatenation'
459
465
  require_relative 'rubocop/cop/style/method_call_without_args_parentheses'
466
+ # rubocop:disable Layout/LineLength
460
467
  require_relative 'rubocop/cop/style/method_call_with_args_parentheses'
468
+ require_relative 'rubocop/cop/style/method_call_with_args_parentheses/omit_parentheses'
469
+ require_relative 'rubocop/cop/style/method_call_with_args_parentheses/require_parentheses'
470
+ # rubocop:enable Layout/LineLength
461
471
  require_relative 'rubocop/cop/style/method_called_on_do_end_block'
462
472
  require_relative 'rubocop/cop/style/method_def_parentheses'
463
473
  require_relative 'rubocop/cop/style/method_missing_super'
@@ -578,6 +588,7 @@ require_relative 'rubocop/formatter/file_list_formatter'
578
588
  require_relative 'rubocop/formatter/fuubar_style_formatter'
579
589
  require_relative 'rubocop/formatter/html_formatter'
580
590
  require_relative 'rubocop/formatter/json_formatter'
591
+ require_relative 'rubocop/formatter/junit_formatter'
581
592
  require_relative 'rubocop/formatter/offense_count_formatter'
582
593
  require_relative 'rubocop/formatter/progress_formatter'
583
594
  require_relative 'rubocop/formatter/quiet_formatter'
@@ -604,6 +615,15 @@ require_relative 'rubocop/processed_source'
604
615
  require_relative 'rubocop/result_cache'
605
616
  require_relative 'rubocop/runner'
606
617
  require_relative 'rubocop/cli'
618
+ require_relative 'rubocop/cli/command'
619
+ require_relative 'rubocop/cli/environment'
620
+ require_relative 'rubocop/cli/command/base'
621
+ require_relative 'rubocop/cli/command/auto_genenerate_config'
622
+ require_relative 'rubocop/cli/command/execute_runner'
623
+ require_relative 'rubocop/cli/command/init_dotfile'
624
+ require_relative 'rubocop/cli/command/show_cops'
625
+ require_relative 'rubocop/cli/command/version'
607
626
  require_relative 'rubocop/options'
608
627
  require_relative 'rubocop/remote_config'
628
+ require_relative 'rubocop/target_ruby'
609
629
  require_relative 'rubocop/yaml_duplication_checker'
@@ -15,48 +15,49 @@ module RuboCop
15
15
  # root_node = parser.parse(buffer)
16
16
  class Builder < Parser::Builders::Default
17
17
  NODE_MAP = {
18
- and: AndNode,
19
- alias: AliasNode,
20
- args: ArgsNode,
21
- array: ArrayNode,
22
- block: BlockNode,
23
- break: BreakNode,
24
- case: CaseNode,
25
- class: ClassNode,
26
- def: DefNode,
27
- defined?: DefinedNode,
28
- defs: DefNode,
29
- ensure: EnsureNode,
30
- for: ForNode,
31
- float: FloatNode,
32
- hash: HashNode,
33
- if: IfNode,
34
- int: IntNode,
35
- irange: RangeNode,
36
- erange: RangeNode,
37
- kwsplat: KeywordSplatNode,
38
- module: ModuleNode,
39
- or: OrNode,
40
- pair: PairNode,
41
- regexp: RegexpNode,
42
- resbody: ResbodyNode,
43
- retry: RetryNode,
44
- return: ReturnNode,
45
- csend: SendNode,
46
- send: SendNode,
47
- str: StrNode,
48
- dstr: StrNode,
49
- xstr: StrNode,
50
- sclass: SelfClassNode,
51
- super: SuperNode,
52
- zsuper: SuperNode,
53
- sym: SymbolNode,
54
- until: UntilNode,
55
- until_post: UntilNode,
56
- when: WhenNode,
57
- while: WhileNode,
58
- while_post: WhileNode,
59
- yield: YieldNode
18
+ and: AndNode,
19
+ alias: AliasNode,
20
+ args: ArgsNode,
21
+ array: ArrayNode,
22
+ block: BlockNode,
23
+ break: BreakNode,
24
+ case: CaseNode,
25
+ class: ClassNode,
26
+ def: DefNode,
27
+ defined?: DefinedNode,
28
+ defs: DefNode,
29
+ ensure: EnsureNode,
30
+ for: ForNode,
31
+ forward_args: ForwardArgsNode,
32
+ float: FloatNode,
33
+ hash: HashNode,
34
+ if: IfNode,
35
+ int: IntNode,
36
+ irange: RangeNode,
37
+ erange: RangeNode,
38
+ kwsplat: KeywordSplatNode,
39
+ module: ModuleNode,
40
+ or: OrNode,
41
+ pair: PairNode,
42
+ regexp: RegexpNode,
43
+ resbody: ResbodyNode,
44
+ retry: RetryNode,
45
+ return: ReturnNode,
46
+ csend: SendNode,
47
+ send: SendNode,
48
+ str: StrNode,
49
+ dstr: StrNode,
50
+ xstr: StrNode,
51
+ sclass: SelfClassNode,
52
+ super: SuperNode,
53
+ zsuper: SuperNode,
54
+ sym: SymbolNode,
55
+ until: UntilNode,
56
+ until_post: UntilNode,
57
+ when: WhenNode,
58
+ while: WhileNode,
59
+ while_post: WhileNode,
60
+ yield: YieldNode
60
61
  }.freeze
61
62
 
62
63
  # Generates {Node} from the given information.
@@ -141,9 +141,6 @@ module RuboCop
141
141
  # Yield only nodes matching any of the types.
142
142
  # @param [Symbol] type_a a node type
143
143
  # @param [Symbol] type_b a node type
144
- # @overload each_ancestor(types)
145
- # Yield only nodes matching any of types in the array.
146
- # @param [Array<Symbol>] types an array containing node types
147
144
  # @yieldparam [Node] node each ancestor node
148
145
  # @return [self] if a block is given
149
146
  # @return [Enumerator] if no block is given
@@ -178,9 +175,6 @@ module RuboCop
178
175
  # Yield only nodes matching any of the types.
179
176
  # @param [Symbol] type_a a node type
180
177
  # @param [Symbol] type_b a node type
181
- # @overload each_child_node(types)
182
- # Yield only nodes matching any of types in the array.
183
- # @param [Array<Symbol>] types an array containing node types
184
178
  # @yieldparam [Node] node each child node
185
179
  # @return [self] if a block is given
186
180
  # @return [Enumerator] if no block is given
@@ -216,9 +210,6 @@ module RuboCop
216
210
  # Yield only nodes matching any of the types.
217
211
  # @param [Symbol] type_a a node type
218
212
  # @param [Symbol] type_b a node type
219
- # @overload each_descendant(types)
220
- # Yield only nodes matching any of types in the array.
221
- # @param [Array<Symbol>] types an array containing node types
222
213
  # @yieldparam [Node] node each descendant node
223
214
  # @return [self] if a block is given
224
215
  # @return [Enumerator] if no block is given
@@ -254,9 +245,6 @@ module RuboCop
254
245
  # Yield only nodes matching any of the types.
255
246
  # @param [Symbol] type_a a node type
256
247
  # @param [Symbol] type_b a node type
257
- # @overload each_node(types)
258
- # Yield only nodes matching any of types in the array.
259
- # @param [Array<Symbol>] types an array containing node types
260
248
  # @yieldparam [Node] node each node
261
249
  # @return [self] if a block is given
262
250
  # @return [Enumerator] if no block is given
@@ -624,7 +612,7 @@ module RuboCop
624
612
  end
625
613
 
626
614
  def parent_module_name_for_block(ancestor)
627
- if ancestor.method_name == :class_eval
615
+ if ancestor.method?(:class_eval)
628
616
  # `class_eval` with no receiver applies to whatever module or class
629
617
  # we are currently in
630
618
  return unless (receiver = ancestor.receiver)
@@ -9,6 +9,8 @@ module RuboCop
9
9
  # A `block` node is essentially a method send with a block. Parser nests
10
10
  # the `send` node inside the `block` node.
11
11
  class BlockNode < Node
12
+ include MethodIdentifierPredicates
13
+
12
14
  VOID_CONTEXT_METHODS = %i[each tap].freeze
13
15
 
14
16
  # The `send` node associated with this block.
@@ -16,6 +16,17 @@ module RuboCop
16
16
  method?(:initialize) || assignment_method?
17
17
  end
18
18
 
19
+ # Checks whether this method definition node forwards its arguments
20
+ # as per the feature added in Ruby 2.7.
21
+ #
22
+ # @note This is written in a way that may support lead arguments
23
+ # which are rumored to be added in a later version of Ruby.
24
+ #
25
+ # @return [Boolean] whether the `def` node uses argument forwarding
26
+ def argument_forwarding?
27
+ arguments.any?(&:forward_args_type?)
28
+ end
29
+
19
30
  # The name of the defined method as a symbol.
20
31
  #
21
32
  # @return [Symbol] the name of the defined method
@@ -0,0 +1,18 @@
1
+ # frozen_string_literal: true
2
+
3
+ module RuboCop
4
+ module AST
5
+ # A node extension for `forward-args` nodes. This will be used in place
6
+ # of a plain node when the builder constructs the AST, making its methods
7
+ # available to all `forward-args` nodes within RuboCop.
8
+ class ForwardArgsNode < Node
9
+ include CollectionNode
10
+
11
+ # Node wraps itself in an array to be compatible with other
12
+ # enumerable argument types.
13
+ def to_a
14
+ [self]
15
+ end
16
+ end
17
+ end
18
+ end
@@ -21,14 +21,12 @@ module RuboCop
21
21
 
22
22
  # @return [RuboCop::AST::Node] a regopt node
23
23
  def regopt
24
- first, second = *self
25
- first.regopt_type? ? first : second
24
+ children.last
26
25
  end
27
26
 
28
27
  # @return [String] a string of regexp content
29
28
  def content
30
- str = children.first
31
- str.str_content || ''
29
+ children.select(&:str_type?).map(&:str_content).join
32
30
  end
33
31
  end
34
32
  end
@@ -1,5 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ # rubocop:disable Metrics/ModuleLength
3
4
  module RuboCop
4
5
  module AST
5
6
  # Provides methods for traversing an AST.
@@ -18,15 +19,21 @@ module RuboCop
18
19
  rational str sym regopt self lvar
19
20
  ivar cvar gvar nth_ref back_ref cbase
20
21
  arg restarg blockarg shadowarg
21
- kwrestarg zsuper lambda redo retry].freeze
22
+ kwrestarg zsuper lambda redo retry
23
+ forward_args forwarded_args
24
+ match_var match_nil_pattern].freeze
22
25
  ONE_CHILD_NODE = %i[splat kwsplat block_pass not break next
23
26
  preexe postexe match_current_line defined?
24
- arg_expr].freeze
27
+ arg_expr pin match_rest if_guard unless_guard
28
+ match_with_trailing_comma].freeze
25
29
  MANY_CHILD_NODES = %i[dstr dsym xstr regexp array hash pair
26
30
  mlhs masgn or_asgn and_asgn
27
31
  undef alias args super yield or and
28
32
  while_post until_post iflipflop eflipflop
29
- match_with_lvasgn begin kwbegin return].freeze
33
+ match_with_lvasgn begin kwbegin return
34
+ in_match case_match in_pattern match_alt
35
+ match_as array_pattern array_pattern_with_tail
36
+ hash_pattern const_pattern].freeze
30
37
  SECOND_CHILD_ONLY = %i[lvasgn ivasgn cvasgn gvasgn optarg kwarg
31
38
  kwoptarg].freeze
32
39
 
@@ -178,6 +185,16 @@ module RuboCop
178
185
  alias on_when on_case
179
186
  alias on_irange on_case
180
187
  alias on_erange on_case
188
+
189
+ def on_numblock(node)
190
+ children = node.children
191
+ child = children[0]
192
+ send(:"on_#{child.type}", child)
193
+ return unless (child = children[2])
194
+
195
+ send(:"on_#{child.type}", child)
196
+ end
181
197
  end
182
198
  end
183
199
  end
200
+ # rubocop:enable Metrics/ModuleLength