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.
- checksums.yaml +4 -4
- data/LICENSE.txt +1 -1
- data/README.md +4 -4
- data/config/default.yml +158 -48
- data/lib/rubocop.rb +19 -4
- data/lib/rubocop/ast/builder.rb +45 -42
- data/lib/rubocop/ast/node.rb +12 -19
- data/lib/rubocop/ast/node/array_node.rb +13 -0
- data/lib/rubocop/ast/node/block_node.rb +5 -1
- data/lib/rubocop/ast/node/case_match_node.rb +56 -0
- data/lib/rubocop/ast/node/def_node.rb +11 -0
- data/lib/rubocop/ast/node/forward_args_node.rb +18 -0
- data/lib/rubocop/ast/node/mixin/method_dispatch_node.rb +8 -0
- data/lib/rubocop/ast/node/regexp_node.rb +2 -4
- data/lib/rubocop/ast/traversal.rb +29 -10
- data/lib/rubocop/cli.rb +10 -4
- data/lib/rubocop/cli/command/show_cops.rb +11 -4
- data/lib/rubocop/comment_config.rb +6 -1
- data/lib/rubocop/config.rb +36 -10
- data/lib/rubocop/config_loader.rb +42 -33
- data/lib/rubocop/config_loader_resolver.rb +1 -1
- data/lib/rubocop/config_obsoletion.rb +4 -1
- data/lib/rubocop/config_validator.rb +66 -92
- data/lib/rubocop/cop/autocorrect_logic.rb +6 -3
- data/lib/rubocop/cop/badge.rb +5 -5
- data/lib/rubocop/cop/bundler/insecure_protocol_source.rb +1 -1
- data/lib/rubocop/cop/corrector.rb +48 -24
- data/lib/rubocop/cop/correctors/alignment_corrector.rb +2 -2
- data/lib/rubocop/cop/correctors/condition_corrector.rb +1 -2
- data/lib/rubocop/cop/correctors/empty_line_corrector.rb +1 -1
- data/lib/rubocop/cop/correctors/lambda_literal_to_method_corrector.rb +3 -3
- data/lib/rubocop/cop/correctors/line_break_corrector.rb +2 -2
- data/lib/rubocop/cop/correctors/percent_literal_corrector.rb +1 -1
- data/lib/rubocop/cop/correctors/string_literal_corrector.rb +2 -2
- data/lib/rubocop/cop/gemspec/ordered_dependencies.rb +1 -1
- data/lib/rubocop/cop/generator.rb +3 -4
- data/lib/rubocop/cop/generator/configuration_injector.rb +1 -1
- data/lib/rubocop/cop/internal_affairs/offense_location_keyword.rb +1 -1
- data/lib/rubocop/cop/layout/array_alignment.rb +53 -10
- data/lib/rubocop/cop/layout/block_end_newline.rb +5 -3
- data/lib/rubocop/cop/layout/dot_position.rb +1 -1
- data/lib/rubocop/cop/layout/else_alignment.rb +8 -0
- data/lib/rubocop/cop/layout/empty_line_between_defs.rb +2 -1
- data/lib/rubocop/cop/layout/end_of_line.rb +2 -2
- data/lib/rubocop/cop/layout/first_array_element_indentation.rb +16 -10
- data/lib/rubocop/cop/layout/first_hash_element_indentation.rb +1 -1
- data/lib/rubocop/cop/layout/hash_alignment.rb +8 -4
- data/lib/rubocop/cop/layout/heredoc_argument_closing_parenthesis.rb +2 -2
- data/lib/rubocop/cop/layout/heredoc_indentation.rb +2 -2
- data/lib/rubocop/cop/layout/{tab.rb → indentation_style.rb} +48 -6
- data/lib/rubocop/cop/layout/leading_comment_space.rb +34 -3
- data/lib/rubocop/cop/layout/line_length.rb +32 -3
- data/lib/rubocop/cop/layout/multiline_block_layout.rb +15 -6
- data/lib/rubocop/cop/layout/multiline_hash_brace_layout.rb +0 -4
- data/lib/rubocop/cop/layout/multiline_method_call_indentation.rb +1 -1
- data/lib/rubocop/cop/layout/space_around_block_parameters.rb +3 -3
- data/lib/rubocop/cop/layout/space_around_method_call_operator.rb +133 -0
- data/lib/rubocop/cop/layout/space_around_operators.rb +19 -1
- data/lib/rubocop/cop/layout/space_before_block_braces.rb +2 -2
- data/lib/rubocop/cop/layout/space_before_first_arg.rb +8 -0
- data/lib/rubocop/cop/layout/space_in_lambda_literal.rb +1 -1
- data/lib/rubocop/cop/layout/space_inside_block_braces.rb +2 -2
- data/lib/rubocop/cop/layout/space_inside_hash_literal_braces.rb +2 -9
- data/lib/rubocop/cop/layout/space_inside_range_literal.rb +2 -2
- data/lib/rubocop/cop/lint/boolean_symbol.rb +12 -0
- data/lib/rubocop/cop/lint/debugger.rb +2 -2
- data/lib/rubocop/cop/lint/erb_new_arguments.rb +1 -1
- data/lib/rubocop/cop/lint/implicit_string_concatenation.rb +1 -1
- data/lib/rubocop/cop/lint/inherit_exception.rb +1 -1
- data/lib/rubocop/cop/lint/interpolation_check.rb +1 -1
- data/lib/rubocop/cop/lint/literal_in_interpolation.rb +1 -1
- data/lib/rubocop/cop/lint/loop.rb +6 -4
- data/lib/rubocop/cop/lint/multiple_comparison.rb +1 -1
- data/lib/rubocop/cop/lint/nested_method_definition.rb +2 -2
- data/lib/rubocop/cop/lint/non_deterministic_require_order.rb +2 -2
- data/lib/rubocop/cop/lint/number_conversion.rb +1 -1
- data/lib/rubocop/cop/lint/percent_string_array.rb +2 -2
- data/lib/rubocop/cop/lint/raise_exception.rb +75 -0
- data/lib/rubocop/cop/lint/redundant_cop_disable_directive.rb +1 -1
- data/lib/rubocop/cop/lint/redundant_cop_enable_directive.rb +12 -7
- data/lib/rubocop/cop/lint/redundant_string_coercion.rb +1 -1
- data/lib/rubocop/cop/lint/safe_navigation_chain.rb +1 -1
- data/lib/rubocop/cop/lint/struct_new_override.rb +58 -0
- data/lib/rubocop/cop/lint/suppressed_exception.rb +12 -22
- data/lib/rubocop/cop/lint/unified_integer.rb +0 -2
- data/lib/rubocop/cop/lint/unused_method_argument.rb +32 -6
- data/lib/rubocop/cop/lint/uri_regexp.rb +4 -4
- data/lib/rubocop/cop/lint/useless_setter_call.rb +4 -0
- data/lib/rubocop/cop/migration/department_name.rb +47 -6
- data/lib/rubocop/cop/mixin/configurable_enforced_style.rb +4 -0
- data/lib/rubocop/cop/mixin/end_keyword_alignment.rb +6 -1
- data/lib/rubocop/cop/mixin/frozen_string_literal.rb +7 -7
- data/lib/rubocop/cop/mixin/hash_transform_method.rb +171 -0
- data/lib/rubocop/cop/mixin/line_length_help.rb +1 -1
- data/lib/rubocop/cop/mixin/method_complexity.rb +5 -0
- data/lib/rubocop/cop/mixin/statement_modifier.rb +4 -3
- data/lib/rubocop/cop/mixin/trailing_comma.rb +3 -10
- data/lib/rubocop/cop/naming/class_and_module_camel_case.rb +1 -1
- data/lib/rubocop/cop/naming/constant_name.rb +2 -1
- data/lib/rubocop/cop/naming/heredoc_delimiter_naming.rb +1 -1
- data/lib/rubocop/cop/naming/memoized_instance_variable_name.rb +1 -1
- data/lib/rubocop/cop/naming/method_name.rb +30 -0
- data/lib/rubocop/cop/naming/method_parameter_name.rb +1 -1
- data/lib/rubocop/cop/naming/rescued_exceptions_variable_name.rb +1 -1
- data/lib/rubocop/cop/registry.rb +15 -3
- data/lib/rubocop/cop/style/access_modifier_declarations.rb +26 -6
- data/lib/rubocop/cop/style/alias.rb +4 -4
- data/lib/rubocop/cop/style/and_or.rb +5 -6
- data/lib/rubocop/cop/style/array_join.rb +1 -1
- data/lib/rubocop/cop/style/block_delimiters.rb +60 -1
- data/lib/rubocop/cop/style/case_equality.rb +24 -1
- data/lib/rubocop/cop/style/character_literal.rb +2 -2
- data/lib/rubocop/cop/style/collection_methods.rb +2 -0
- data/lib/rubocop/cop/style/conditional_assignment.rb +8 -8
- data/lib/rubocop/cop/style/copyright.rb +1 -1
- data/lib/rubocop/cop/style/dir.rb +1 -1
- data/lib/rubocop/cop/style/disable_cops_within_source_code_directive.rb +49 -0
- data/lib/rubocop/cop/style/documentation.rb +43 -5
- data/lib/rubocop/cop/style/double_cop_disable_directive.rb +1 -1
- data/lib/rubocop/cop/style/each_for_simple_loop.rb +1 -1
- data/lib/rubocop/cop/style/each_with_object.rb +3 -3
- data/lib/rubocop/cop/style/empty_method.rb +1 -1
- data/lib/rubocop/cop/style/end_block.rb +6 -0
- data/lib/rubocop/cop/style/even_odd.rb +1 -1
- data/lib/rubocop/cop/style/expand_path_arguments.rb +3 -3
- data/lib/rubocop/cop/style/exponential_notation.rb +119 -0
- data/lib/rubocop/cop/style/format_string.rb +2 -2
- data/lib/rubocop/cop/style/frozen_string_literal_comment.rb +89 -11
- data/lib/rubocop/cop/style/hash_each_methods.rb +89 -0
- data/lib/rubocop/cop/style/hash_syntax.rb +3 -5
- data/lib/rubocop/cop/style/hash_transform_keys.rb +83 -0
- data/lib/rubocop/cop/style/hash_transform_values.rb +80 -0
- data/lib/rubocop/cop/style/if_unless_modifier.rb +23 -3
- data/lib/rubocop/cop/style/inverse_methods.rb +9 -5
- data/lib/rubocop/cop/style/lambda.rb +3 -2
- data/lib/rubocop/cop/style/lambda_call.rb +2 -2
- data/lib/rubocop/cop/style/method_call_with_args_parentheses.rb +7 -205
- data/lib/rubocop/cop/style/method_call_with_args_parentheses/omit_parentheses.rb +169 -0
- data/lib/rubocop/cop/style/method_call_with_args_parentheses/require_parentheses.rb +54 -0
- data/lib/rubocop/cop/style/mixin_grouping.rb +1 -1
- data/lib/rubocop/cop/style/module_function.rb +58 -12
- data/lib/rubocop/cop/style/multiline_if_modifier.rb +1 -1
- data/lib/rubocop/cop/style/multiline_memoization.rb +1 -1
- data/lib/rubocop/cop/style/multiline_when_then.rb +5 -1
- data/lib/rubocop/cop/style/mutable_constant.rb +2 -4
- data/lib/rubocop/cop/style/nested_parenthesized_calls.rb +4 -4
- data/lib/rubocop/cop/style/next.rb +2 -2
- data/lib/rubocop/cop/style/nil_comparison.rb +1 -1
- data/lib/rubocop/cop/style/non_nil_check.rb +4 -4
- data/lib/rubocop/cop/style/not.rb +1 -1
- data/lib/rubocop/cop/style/numeric_literal_prefix.rb +1 -1
- data/lib/rubocop/cop/style/numeric_literals.rb +1 -1
- data/lib/rubocop/cop/style/numeric_predicate.rb +5 -4
- data/lib/rubocop/cop/style/one_line_conditional.rb +4 -3
- data/lib/rubocop/cop/style/or_assignment.rb +4 -3
- data/lib/rubocop/cop/style/percent_literal_delimiters.rb +7 -7
- data/lib/rubocop/cop/style/percent_q_literals.rb +1 -1
- data/lib/rubocop/cop/style/perl_backrefs.rb +2 -2
- data/lib/rubocop/cop/style/proc.rb +1 -1
- data/lib/rubocop/cop/style/raise_args.rb +1 -1
- data/lib/rubocop/cop/style/random_with_offset.rb +3 -3
- data/lib/rubocop/cop/style/redundant_condition.rb +18 -6
- data/lib/rubocop/cop/style/redundant_conditional.rb +1 -1
- data/lib/rubocop/cop/style/redundant_exception.rb +3 -3
- data/lib/rubocop/cop/style/redundant_interpolation.rb +2 -2
- data/lib/rubocop/cop/style/redundant_percent_q.rb +2 -2
- data/lib/rubocop/cop/style/redundant_return.rb +5 -7
- data/lib/rubocop/cop/style/redundant_self.rb +1 -1
- data/lib/rubocop/cop/style/redundant_sort.rb +2 -2
- data/lib/rubocop/cop/style/rescue_modifier.rb +1 -1
- data/lib/rubocop/cop/style/return_nil.rb +1 -1
- data/lib/rubocop/cop/style/safe_navigation.rb +1 -1
- data/lib/rubocop/cop/style/self_assignment.rb +1 -1
- data/lib/rubocop/cop/style/special_global_vars.rb +1 -1
- data/lib/rubocop/cop/style/stabby_lambda_parentheses.rb +1 -4
- data/lib/rubocop/cop/style/string_hash_keys.rb +1 -1
- data/lib/rubocop/cop/style/symbol_array.rb +3 -3
- data/lib/rubocop/cop/style/symbol_literal.rb +2 -2
- data/lib/rubocop/cop/style/ternary_parentheses.rb +2 -3
- data/lib/rubocop/cop/style/trailing_comma_in_arguments.rb +35 -22
- data/lib/rubocop/cop/style/trailing_comma_in_array_literal.rb +41 -0
- data/lib/rubocop/cop/style/trailing_comma_in_block_args.rb +88 -0
- data/lib/rubocop/cop/style/trailing_comma_in_hash_literal.rb +44 -0
- data/lib/rubocop/cop/style/trivial_accessors.rb +1 -1
- data/lib/rubocop/cop/style/unpack_first.rb +0 -4
- data/lib/rubocop/cop/style/variable_interpolation.rb +1 -1
- data/lib/rubocop/cop/style/while_until_modifier.rb +1 -1
- data/lib/rubocop/cop/style/word_array.rb +1 -1
- data/lib/rubocop/cop/style/yoda_condition.rb +16 -1
- data/lib/rubocop/cop/style/zero_length_predicate.rb +1 -1
- data/lib/rubocop/cop/variable_force.rb +4 -1
- data/lib/rubocop/formatter/clang_style_formatter.rb +1 -1
- data/lib/rubocop/formatter/formatter_set.rb +1 -1
- data/lib/rubocop/formatter/junit_formatter.rb +74 -0
- data/lib/rubocop/formatter/pacman_formatter.rb +1 -1
- data/lib/rubocop/formatter/tap_formatter.rb +1 -1
- data/lib/rubocop/node_pattern.rb +96 -10
- data/lib/rubocop/options.rb +7 -1
- data/lib/rubocop/processed_source.rb +1 -4
- data/lib/rubocop/rspec/cop_helper.rb +1 -1
- data/lib/rubocop/rspec/expect_offense.rb +1 -1
- data/lib/rubocop/rspec/shared_contexts.rb +5 -4
- data/lib/rubocop/runner.rb +1 -1
- data/lib/rubocop/target_ruby.rb +151 -0
- data/lib/rubocop/version.rb +1 -1
- metadata +39 -12
- data/lib/rubocop/cop/lint/end_in_method.rb +0 -40
- data/lib/rubocop/cop/style/braces_around_hash_parameters.rb +0 -209
- data/lib/rubocop/formatter/disabled_lines_formatter.rb +0 -57
data/lib/rubocop.rb
CHANGED
@@ -37,12 +37,14 @@ require_relative 'rubocop/ast/node/args_node'
|
|
37
37
|
require_relative 'rubocop/ast/node/array_node'
|
38
38
|
require_relative 'rubocop/ast/node/block_node'
|
39
39
|
require_relative 'rubocop/ast/node/break_node'
|
40
|
+
require_relative 'rubocop/ast/node/case_match_node'
|
40
41
|
require_relative 'rubocop/ast/node/case_node'
|
41
42
|
require_relative 'rubocop/ast/node/class_node'
|
42
43
|
require_relative 'rubocop/ast/node/def_node'
|
43
44
|
require_relative 'rubocop/ast/node/defined_node'
|
44
45
|
require_relative 'rubocop/ast/node/ensure_node'
|
45
46
|
require_relative 'rubocop/ast/node/for_node'
|
47
|
+
require_relative 'rubocop/ast/node/forward_args_node'
|
46
48
|
require_relative 'rubocop/ast/node/float_node'
|
47
49
|
require_relative 'rubocop/ast/node/hash_node'
|
48
50
|
require_relative 'rubocop/ast/node/if_node'
|
@@ -119,6 +121,7 @@ require_relative 'rubocop/cop/mixin/enforce_superclass'
|
|
119
121
|
require_relative 'rubocop/cop/mixin/first_element_line_break'
|
120
122
|
require_relative 'rubocop/cop/mixin/frozen_string_literal'
|
121
123
|
require_relative 'rubocop/cop/mixin/hash_alignment_styles'
|
124
|
+
require_relative 'rubocop/cop/mixin/hash_transform_method'
|
122
125
|
require_relative 'rubocop/cop/mixin/ignored_pattern'
|
123
126
|
require_relative 'rubocop/cop/mixin/ignored_methods'
|
124
127
|
require_relative 'rubocop/cop/mixin/integer_node'
|
@@ -232,6 +235,7 @@ require_relative 'rubocop/cop/layout/hash_alignment'
|
|
232
235
|
require_relative 'rubocop/cop/layout/heredoc_argument_closing_parenthesis'
|
233
236
|
require_relative 'rubocop/cop/layout/heredoc_indentation'
|
234
237
|
require_relative 'rubocop/cop/layout/indentation_consistency'
|
238
|
+
require_relative 'rubocop/cop/layout/indentation_style'
|
235
239
|
require_relative 'rubocop/cop/layout/indentation_width'
|
236
240
|
require_relative 'rubocop/cop/layout/initial_indentation'
|
237
241
|
require_relative 'rubocop/cop/layout/leading_comment_space'
|
@@ -258,6 +262,7 @@ require_relative 'rubocop/cop/layout/space_after_semicolon'
|
|
258
262
|
require_relative 'rubocop/cop/layout/space_around_block_parameters'
|
259
263
|
require_relative 'rubocop/cop/layout/space_around_equals_in_parameter_default'
|
260
264
|
require_relative 'rubocop/cop/layout/space_around_keyword'
|
265
|
+
require_relative 'rubocop/cop/layout/space_around_method_call_operator'
|
261
266
|
require_relative 'rubocop/cop/layout/space_around_operators'
|
262
267
|
require_relative 'rubocop/cop/layout/space_before_block_braces'
|
263
268
|
require_relative 'rubocop/cop/layout/space_before_comma'
|
@@ -274,7 +279,6 @@ require_relative 'rubocop/cop/layout/space_inside_percent_literal_delimiters'
|
|
274
279
|
require_relative 'rubocop/cop/layout/space_inside_range_literal'
|
275
280
|
require_relative 'rubocop/cop/layout/space_inside_reference_brackets'
|
276
281
|
require_relative 'rubocop/cop/layout/space_inside_string_interpolation'
|
277
|
-
require_relative 'rubocop/cop/layout/tab'
|
278
282
|
require_relative 'rubocop/cop/layout/trailing_empty_lines'
|
279
283
|
require_relative 'rubocop/cop/layout/trailing_whitespace'
|
280
284
|
|
@@ -297,7 +301,6 @@ require_relative 'rubocop/cop/lint/empty_ensure'
|
|
297
301
|
require_relative 'rubocop/cop/lint/empty_expression'
|
298
302
|
require_relative 'rubocop/cop/lint/empty_interpolation'
|
299
303
|
require_relative 'rubocop/cop/lint/empty_when'
|
300
|
-
require_relative 'rubocop/cop/lint/end_in_method'
|
301
304
|
require_relative 'rubocop/cop/lint/ensure_return'
|
302
305
|
require_relative 'rubocop/cop/lint/erb_new_arguments'
|
303
306
|
require_relative 'rubocop/cop/lint/flip_flop'
|
@@ -323,6 +326,7 @@ require_relative 'rubocop/cop/lint/ordered_magic_comments'
|
|
323
326
|
require_relative 'rubocop/cop/lint/parentheses_as_grouped_expression'
|
324
327
|
require_relative 'rubocop/cop/lint/percent_string_array'
|
325
328
|
require_relative 'rubocop/cop/lint/percent_symbol_array'
|
329
|
+
require_relative 'rubocop/cop/lint/raise_exception'
|
326
330
|
require_relative 'rubocop/cop/lint/rand_one'
|
327
331
|
require_relative 'rubocop/cop/lint/redundant_cop_disable_directive'
|
328
332
|
require_relative 'rubocop/cop/lint/redundant_cop_enable_directive'
|
@@ -344,6 +348,7 @@ require_relative 'rubocop/cop/lint/send_with_mixin_argument'
|
|
344
348
|
require_relative 'rubocop/cop/lint/shadowed_argument'
|
345
349
|
require_relative 'rubocop/cop/lint/shadowed_exception'
|
346
350
|
require_relative 'rubocop/cop/lint/shadowing_outer_local_variable'
|
351
|
+
require_relative 'rubocop/cop/lint/struct_new_override'
|
347
352
|
require_relative 'rubocop/cop/lint/suppressed_exception'
|
348
353
|
require_relative 'rubocop/cop/lint/syntax'
|
349
354
|
require_relative 'rubocop/cop/lint/to_json'
|
@@ -401,7 +406,6 @@ require_relative 'rubocop/cop/style/bare_percent_literals'
|
|
401
406
|
require_relative 'rubocop/cop/style/begin_block'
|
402
407
|
require_relative 'rubocop/cop/style/block_comments'
|
403
408
|
require_relative 'rubocop/cop/style/block_delimiters'
|
404
|
-
require_relative 'rubocop/cop/style/braces_around_hash_parameters'
|
405
409
|
require_relative 'rubocop/cop/style/case_equality'
|
406
410
|
require_relative 'rubocop/cop/style/character_literal'
|
407
411
|
require_relative 'rubocop/cop/style/class_and_module_children'
|
@@ -420,6 +424,7 @@ require_relative 'rubocop/cop/style/copyright'
|
|
420
424
|
require_relative 'rubocop/cop/style/date_time'
|
421
425
|
require_relative 'rubocop/cop/style/def_with_parentheses'
|
422
426
|
require_relative 'rubocop/cop/style/dir'
|
427
|
+
require_relative 'rubocop/cop/style/disable_cops_within_source_code_directive'
|
423
428
|
require_relative 'rubocop/cop/style/documentation_method'
|
424
429
|
require_relative 'rubocop/cop/style/documentation'
|
425
430
|
require_relative 'rubocop/cop/style/double_cop_disable_directive'
|
@@ -437,6 +442,7 @@ require_relative 'rubocop/cop/style/end_block'
|
|
437
442
|
require_relative 'rubocop/cop/style/eval_with_location'
|
438
443
|
require_relative 'rubocop/cop/style/even_odd'
|
439
444
|
require_relative 'rubocop/cop/style/expand_path_arguments'
|
445
|
+
require_relative 'rubocop/cop/style/exponential_notation'
|
440
446
|
require_relative 'rubocop/cop/style/float_division'
|
441
447
|
require_relative 'rubocop/cop/style/for'
|
442
448
|
require_relative 'rubocop/cop/style/format_string'
|
@@ -444,7 +450,10 @@ require_relative 'rubocop/cop/style/format_string_token'
|
|
444
450
|
require_relative 'rubocop/cop/style/frozen_string_literal_comment'
|
445
451
|
require_relative 'rubocop/cop/style/global_vars'
|
446
452
|
require_relative 'rubocop/cop/style/guard_clause'
|
453
|
+
require_relative 'rubocop/cop/style/hash_each_methods'
|
447
454
|
require_relative 'rubocop/cop/style/hash_syntax'
|
455
|
+
require_relative 'rubocop/cop/style/hash_transform_keys'
|
456
|
+
require_relative 'rubocop/cop/style/hash_transform_values'
|
448
457
|
require_relative 'rubocop/cop/style/identical_conditional_branches'
|
449
458
|
require_relative 'rubocop/cop/style/if_inside_else'
|
450
459
|
require_relative 'rubocop/cop/style/if_unless_modifier'
|
@@ -459,7 +468,11 @@ require_relative 'rubocop/cop/style/lambda'
|
|
459
468
|
require_relative 'rubocop/cop/style/lambda_call'
|
460
469
|
require_relative 'rubocop/cop/style/line_end_concatenation'
|
461
470
|
require_relative 'rubocop/cop/style/method_call_without_args_parentheses'
|
471
|
+
# rubocop:disable Layout/LineLength
|
462
472
|
require_relative 'rubocop/cop/style/method_call_with_args_parentheses'
|
473
|
+
require_relative 'rubocop/cop/style/method_call_with_args_parentheses/omit_parentheses'
|
474
|
+
require_relative 'rubocop/cop/style/method_call_with_args_parentheses/require_parentheses'
|
475
|
+
# rubocop:enable Layout/LineLength
|
463
476
|
require_relative 'rubocop/cop/style/method_called_on_do_end_block'
|
464
477
|
require_relative 'rubocop/cop/style/method_def_parentheses'
|
465
478
|
require_relative 'rubocop/cop/style/method_missing_super'
|
@@ -547,6 +560,7 @@ require_relative 'rubocop/cop/style/trailing_body_on_method_definition'
|
|
547
560
|
require_relative 'rubocop/cop/style/trailing_body_on_module'
|
548
561
|
require_relative 'rubocop/cop/style/trailing_comma_in_arguments'
|
549
562
|
require_relative 'rubocop/cop/style/trailing_comma_in_array_literal'
|
563
|
+
require_relative 'rubocop/cop/style/trailing_comma_in_block_args'
|
550
564
|
require_relative 'rubocop/cop/style/trailing_comma_in_hash_literal'
|
551
565
|
require_relative 'rubocop/cop/style/trailing_method_end_statement'
|
552
566
|
require_relative 'rubocop/cop/style/trailing_underscore_variable'
|
@@ -574,12 +588,12 @@ require_relative 'rubocop/formatter/simple_text_formatter'
|
|
574
588
|
# relies on simple text
|
575
589
|
require_relative 'rubocop/formatter/clang_style_formatter'
|
576
590
|
require_relative 'rubocop/formatter/disabled_config_formatter'
|
577
|
-
require_relative 'rubocop/formatter/disabled_lines_formatter'
|
578
591
|
require_relative 'rubocop/formatter/emacs_style_formatter'
|
579
592
|
require_relative 'rubocop/formatter/file_list_formatter'
|
580
593
|
require_relative 'rubocop/formatter/fuubar_style_formatter'
|
581
594
|
require_relative 'rubocop/formatter/html_formatter'
|
582
595
|
require_relative 'rubocop/formatter/json_formatter'
|
596
|
+
require_relative 'rubocop/formatter/junit_formatter'
|
583
597
|
require_relative 'rubocop/formatter/offense_count_formatter'
|
584
598
|
require_relative 'rubocop/formatter/progress_formatter'
|
585
599
|
require_relative 'rubocop/formatter/quiet_formatter'
|
@@ -616,4 +630,5 @@ require_relative 'rubocop/cli/command/show_cops'
|
|
616
630
|
require_relative 'rubocop/cli/command/version'
|
617
631
|
require_relative 'rubocop/options'
|
618
632
|
require_relative 'rubocop/remote_config'
|
633
|
+
require_relative 'rubocop/target_ruby'
|
619
634
|
require_relative 'rubocop/yaml_duplication_checker'
|
data/lib/rubocop/ast/builder.rb
CHANGED
@@ -15,48 +15,51 @@ module RuboCop
|
|
15
15
|
# root_node = parser.parse(buffer)
|
16
16
|
class Builder < Parser::Builders::Default
|
17
17
|
NODE_MAP = {
|
18
|
-
and:
|
19
|
-
alias:
|
20
|
-
args:
|
21
|
-
array:
|
22
|
-
block:
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
18
|
+
and: AndNode,
|
19
|
+
alias: AliasNode,
|
20
|
+
args: ArgsNode,
|
21
|
+
array: ArrayNode,
|
22
|
+
block: BlockNode,
|
23
|
+
numblock: BlockNode,
|
24
|
+
break: BreakNode,
|
25
|
+
case_match: CaseMatchNode,
|
26
|
+
case: CaseNode,
|
27
|
+
class: ClassNode,
|
28
|
+
def: DefNode,
|
29
|
+
defined?: DefinedNode,
|
30
|
+
defs: DefNode,
|
31
|
+
ensure: EnsureNode,
|
32
|
+
for: ForNode,
|
33
|
+
forward_args: ForwardArgsNode,
|
34
|
+
float: FloatNode,
|
35
|
+
hash: HashNode,
|
36
|
+
if: IfNode,
|
37
|
+
int: IntNode,
|
38
|
+
irange: RangeNode,
|
39
|
+
erange: RangeNode,
|
40
|
+
kwsplat: KeywordSplatNode,
|
41
|
+
module: ModuleNode,
|
42
|
+
or: OrNode,
|
43
|
+
pair: PairNode,
|
44
|
+
regexp: RegexpNode,
|
45
|
+
resbody: ResbodyNode,
|
46
|
+
retry: RetryNode,
|
47
|
+
return: ReturnNode,
|
48
|
+
csend: SendNode,
|
49
|
+
send: SendNode,
|
50
|
+
str: StrNode,
|
51
|
+
dstr: StrNode,
|
52
|
+
xstr: StrNode,
|
53
|
+
sclass: SelfClassNode,
|
54
|
+
super: SuperNode,
|
55
|
+
zsuper: SuperNode,
|
56
|
+
sym: SymbolNode,
|
57
|
+
until: UntilNode,
|
58
|
+
until_post: UntilNode,
|
59
|
+
when: WhenNode,
|
60
|
+
while: WhileNode,
|
61
|
+
while_post: WhileNode,
|
62
|
+
yield: YieldNode
|
60
63
|
}.freeze
|
61
64
|
|
62
65
|
# Generates {Node} from the given information.
|
data/lib/rubocop/ast/node.rb
CHANGED
@@ -98,7 +98,7 @@ module RuboCop
|
|
98
98
|
@mutable_attributes.frozen?
|
99
99
|
end
|
100
100
|
|
101
|
-
protected :parent=
|
101
|
+
protected :parent=
|
102
102
|
|
103
103
|
# Override `AST::Node#updated` so that `AST::Processor` does not try to
|
104
104
|
# mutate our ASTs. Since we keep references from children to parents and
|
@@ -116,7 +116,7 @@ module RuboCop
|
|
116
116
|
#
|
117
117
|
# @return [Integer] the index of the receiver node in its siblings
|
118
118
|
def sibling_index
|
119
|
-
parent
|
119
|
+
parent&.children&.index { |sibling| sibling.equal?(self) }
|
120
120
|
end
|
121
121
|
|
122
122
|
# Common destructuring method. This can be used to normalize
|
@@ -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
|
@@ -303,7 +291,7 @@ module RuboCop
|
|
303
291
|
## Destructuring
|
304
292
|
|
305
293
|
def_node_matcher :receiver, <<~PATTERN
|
306
|
-
{(send $_ ...) (block (send $_ ...) ...)}
|
294
|
+
{(send $_ ...) ({block numblock} (send $_ ...) ...)}
|
307
295
|
PATTERN
|
308
296
|
|
309
297
|
def_node_matcher :str_content, '(str $_)'
|
@@ -325,9 +313,8 @@ module RuboCop
|
|
325
313
|
(casgn $_ $_ (send (const nil? {:Class :Module}) :new ...))
|
326
314
|
(casgn $_ $_ (block (send (const nil? {:Class :Module}) :new ...) ...))}
|
327
315
|
PATTERN
|
328
|
-
|
316
|
+
|
329
317
|
private :defined_module0
|
330
|
-
# rubocop:enable Style/AccessModifierDeclarations
|
331
318
|
|
332
319
|
def defined_module
|
333
320
|
namespace, name = *defined_module0
|
@@ -481,7 +468,13 @@ module RuboCop
|
|
481
468
|
irange_type? || erange_type?
|
482
469
|
end
|
483
470
|
|
484
|
-
|
471
|
+
def guard_clause?
|
472
|
+
node = and_type? || or_type? ? rhs : self
|
473
|
+
|
474
|
+
node.match_guard_clause?
|
475
|
+
end
|
476
|
+
|
477
|
+
def_node_matcher :match_guard_clause?, <<~PATTERN
|
485
478
|
[${(send nil? {:raise :fail} ...) return break next} single_line?]
|
486
479
|
PATTERN
|
487
480
|
|
@@ -491,7 +484,7 @@ module RuboCop
|
|
491
484
|
(send (const nil? :Proc) :new)}
|
492
485
|
PATTERN
|
493
486
|
|
494
|
-
def_node_matcher :lambda?, '(block (send nil? :lambda) ...)'
|
487
|
+
def_node_matcher :lambda?, '({block numblock} (send nil? :lambda) ...)'
|
495
488
|
def_node_matcher :lambda_or_proc?, '{lambda? proc?}'
|
496
489
|
|
497
490
|
def_node_matcher :class_constructor?, <<~PATTERN
|
@@ -18,6 +18,19 @@ module RuboCop
|
|
18
18
|
each_child_node.to_a
|
19
19
|
end
|
20
20
|
|
21
|
+
# Calls the given block for all values in the `array` literal.
|
22
|
+
#
|
23
|
+
# @yieldparam [Node] node each node
|
24
|
+
# @return [self] if a block is given
|
25
|
+
# @return [Enumerator] if no block is given
|
26
|
+
def each_value(&block)
|
27
|
+
return to_enum(__method__) unless block_given?
|
28
|
+
|
29
|
+
values.each(&block)
|
30
|
+
|
31
|
+
self
|
32
|
+
end
|
33
|
+
|
21
34
|
# Checks whether the `array` literal is delimited by square brackets.
|
22
35
|
#
|
23
36
|
# @return [Boolean] whether the array is enclosed in square brackets
|
@@ -0,0 +1,56 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module RuboCop
|
4
|
+
module AST
|
5
|
+
# A node extension for `case_match` nodes. This will be used in place of
|
6
|
+
# a plain node when the builder constructs the AST, making its methods
|
7
|
+
# available to all `case_match` nodes within RuboCop.
|
8
|
+
class CaseMatchNode < Node
|
9
|
+
include ConditionalNode
|
10
|
+
|
11
|
+
# Returns the keyword of the `case` statement as a string.
|
12
|
+
#
|
13
|
+
# @return [String] the keyword of the `case` statement
|
14
|
+
def keyword
|
15
|
+
'case'
|
16
|
+
end
|
17
|
+
|
18
|
+
# Calls the given block for each `in_pattern` node in the `in` statement.
|
19
|
+
# If no block is given, an `Enumerator` is returned.
|
20
|
+
#
|
21
|
+
# @return [self] if a block is given
|
22
|
+
# @return [Enumerator] if no block is given
|
23
|
+
def each_in_pattern
|
24
|
+
return in_pattern_branches.to_enum(__method__) unless block_given?
|
25
|
+
|
26
|
+
in_pattern_branches.each do |condition|
|
27
|
+
yield condition
|
28
|
+
end
|
29
|
+
|
30
|
+
self
|
31
|
+
end
|
32
|
+
|
33
|
+
# Returns an array of all the when branches in the `case` statement.
|
34
|
+
#
|
35
|
+
# @return [Array<Node>] an array of `in_pattern` nodes
|
36
|
+
def in_pattern_branches
|
37
|
+
node_parts[1...-1]
|
38
|
+
end
|
39
|
+
|
40
|
+
# Returns the else branch of the `case` statement, if any.
|
41
|
+
#
|
42
|
+
# @return [Node] the else branch node of the `case` statement
|
43
|
+
# @return [nil] if the case statement does not have an else branch.
|
44
|
+
def else_branch
|
45
|
+
node_parts[-1]
|
46
|
+
end
|
47
|
+
|
48
|
+
# Checks whether this case statement has an `else` branch.
|
49
|
+
#
|
50
|
+
# @return [Boolean] whether the `case` statement has an `else` branch
|
51
|
+
def else?
|
52
|
+
!loc.else.nil?
|
53
|
+
end
|
54
|
+
end
|
55
|
+
end
|
56
|
+
end
|
@@ -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
|