rubocop 1.11.0 → 1.15.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/README.md +6 -3
- data/config/default.yml +58 -6
- data/exe/rubocop +1 -3
- data/lib/rubocop.rb +6 -1
- data/lib/rubocop/cached_data.rb +1 -3
- data/lib/rubocop/cli.rb +4 -6
- data/lib/rubocop/cli/command/auto_genenerate_config.rb +9 -19
- data/lib/rubocop/cli/command/init_dotfile.rb +1 -3
- data/lib/rubocop/cli/command/show_cops.rb +1 -4
- data/lib/rubocop/cli/command/suggest_extensions.rb +3 -2
- data/lib/rubocop/comment_config.rb +45 -101
- data/lib/rubocop/config.rb +11 -26
- data/lib/rubocop/config_loader.rb +5 -11
- data/lib/rubocop/config_loader_resolver.rb +22 -14
- data/lib/rubocop/config_obsoletion/cop_rule.rb +1 -2
- data/lib/rubocop/config_store.rb +1 -2
- data/lib/rubocop/config_validator.rb +5 -10
- data/lib/rubocop/cop/autocorrect_logic.rb +3 -8
- data/lib/rubocop/cop/badge.rb +1 -2
- data/lib/rubocop/cop/base.rb +8 -6
- data/lib/rubocop/cop/bundler/duplicated_gem.rb +1 -2
- data/lib/rubocop/cop/bundler/gem_comment.rb +43 -11
- data/lib/rubocop/cop/bundler/gem_version.rb +99 -0
- data/lib/rubocop/cop/bundler/ordered_gems.rb +1 -4
- data/lib/rubocop/cop/commissioner.rb +2 -8
- data/lib/rubocop/cop/cop.rb +4 -18
- data/lib/rubocop/cop/corrector.rb +1 -4
- data/lib/rubocop/cop/correctors/alignment_corrector.rb +6 -12
- data/lib/rubocop/cop/correctors/each_to_for_corrector.rb +2 -4
- data/lib/rubocop/cop/correctors/for_to_each_corrector.rb +1 -2
- data/lib/rubocop/cop/correctors/line_break_corrector.rb +3 -6
- data/lib/rubocop/cop/correctors/multiline_literal_brace_corrector.rb +1 -3
- data/lib/rubocop/cop/correctors/ordered_gem_corrector.rb +1 -3
- data/lib/rubocop/cop/correctors/percent_literal_corrector.rb +2 -8
- data/lib/rubocop/cop/gemspec/duplicated_assignment.rb +1 -2
- data/lib/rubocop/cop/gemspec/ordered_dependencies.rb +1 -4
- data/lib/rubocop/cop/generator.rb +1 -4
- data/lib/rubocop/cop/generator/configuration_injector.rb +1 -2
- data/lib/rubocop/cop/generator/require_file_injector.rb +2 -5
- data/lib/rubocop/cop/internal_affairs/example_description.rb +7 -5
- data/lib/rubocop/cop/internal_affairs/method_name_equal.rb +2 -5
- data/lib/rubocop/cop/internal_affairs/node_destructuring.rb +1 -3
- data/lib/rubocop/cop/internal_affairs/node_type_predicate.rb +1 -3
- data/lib/rubocop/cop/internal_affairs/offense_location_keyword.rb +1 -2
- data/lib/rubocop/cop/internal_affairs/style_detected_api_use.rb +1 -2
- data/lib/rubocop/cop/internal_affairs/useless_message_assertion.rb +1 -3
- data/lib/rubocop/cop/layout/access_modifier_indentation.rb +12 -10
- data/lib/rubocop/cop/layout/argument_alignment.rb +34 -18
- data/lib/rubocop/cop/layout/array_alignment.rb +7 -6
- data/lib/rubocop/cop/layout/assignment_indentation.rb +8 -7
- data/lib/rubocop/cop/layout/begin_end_alignment.rb +1 -4
- data/lib/rubocop/cop/layout/block_alignment.rb +7 -19
- data/lib/rubocop/cop/layout/block_end_newline.rb +4 -8
- data/lib/rubocop/cop/layout/case_indentation.rb +1 -3
- data/lib/rubocop/cop/layout/class_structure.rb +4 -10
- data/lib/rubocop/cop/layout/closing_parenthesis_indentation.rb +18 -30
- data/lib/rubocop/cop/layout/comment_indentation.rb +17 -21
- data/lib/rubocop/cop/layout/def_end_alignment.rb +2 -6
- data/lib/rubocop/cop/layout/dot_position.rb +1 -3
- data/lib/rubocop/cop/layout/else_alignment.rb +10 -9
- data/lib/rubocop/cop/layout/empty_comment.rb +5 -12
- data/lib/rubocop/cop/layout/empty_line_after_guard_clause.rb +22 -8
- data/lib/rubocop/cop/layout/empty_line_between_defs.rb +2 -6
- data/lib/rubocop/cop/layout/empty_lines.rb +1 -3
- data/lib/rubocop/cop/layout/empty_lines_around_access_modifier.rb +8 -18
- data/lib/rubocop/cop/layout/empty_lines_around_exception_handling_keywords.rb +2 -8
- data/lib/rubocop/cop/layout/end_alignment.rb +1 -2
- data/lib/rubocop/cop/layout/end_of_line.rb +1 -1
- data/lib/rubocop/cop/layout/extra_spacing.rb +3 -7
- data/lib/rubocop/cop/layout/first_argument_indentation.rb +6 -5
- data/lib/rubocop/cop/layout/first_array_element_indentation.rb +10 -8
- data/lib/rubocop/cop/layout/first_array_element_line_break.rb +1 -2
- data/lib/rubocop/cop/layout/first_hash_element_indentation.rb +36 -20
- data/lib/rubocop/cop/layout/first_hash_element_line_break.rb +1 -2
- data/lib/rubocop/cop/layout/first_method_argument_line_break.rb +1 -2
- data/lib/rubocop/cop/layout/first_method_parameter_line_break.rb +1 -2
- data/lib/rubocop/cop/layout/first_parameter_indentation.rb +6 -5
- data/lib/rubocop/cop/layout/hash_alignment.rb +18 -13
- data/lib/rubocop/cop/layout/heredoc_argument_closing_parenthesis.rb +2 -9
- data/lib/rubocop/cop/layout/heredoc_indentation.rb +2 -6
- data/lib/rubocop/cop/layout/indentation_consistency.rb +9 -6
- data/lib/rubocop/cop/layout/indentation_style.rb +25 -30
- data/lib/rubocop/cop/layout/indentation_width.rb +24 -12
- data/lib/rubocop/cop/layout/initial_indentation.rb +1 -4
- data/lib/rubocop/cop/layout/line_length.rb +4 -15
- data/lib/rubocop/cop/layout/multiline_array_line_breaks.rb +1 -2
- data/lib/rubocop/cop/layout/multiline_block_layout.rb +7 -15
- data/lib/rubocop/cop/layout/multiline_hash_key_line_breaks.rb +1 -2
- data/lib/rubocop/cop/layout/multiline_method_argument_line_breaks.rb +1 -2
- data/lib/rubocop/cop/layout/multiline_method_call_indentation.rb +22 -15
- data/lib/rubocop/cop/layout/multiline_operation_indentation.rb +10 -5
- data/lib/rubocop/cop/layout/parameter_alignment.rb +6 -5
- data/lib/rubocop/cop/layout/redundant_line_break.rb +137 -0
- data/lib/rubocop/cop/layout/rescue_ensure_alignment.rb +3 -6
- data/lib/rubocop/cop/layout/single_line_block_chain.rb +53 -0
- data/lib/rubocop/cop/layout/space_after_colon.rb +1 -3
- data/lib/rubocop/cop/layout/space_after_method_name.rb +2 -4
- data/lib/rubocop/cop/layout/space_around_block_parameters.rb +6 -14
- data/lib/rubocop/cop/layout/space_around_equals_in_parameter_default.rb +1 -2
- data/lib/rubocop/cop/layout/space_around_keyword.rb +3 -6
- data/lib/rubocop/cop/layout/space_around_operators.rb +4 -9
- data/lib/rubocop/cop/layout/space_before_block_braces.rb +1 -2
- data/lib/rubocop/cop/layout/space_before_brackets.rb +1 -3
- data/lib/rubocop/cop/layout/space_before_comment.rb +1 -3
- data/lib/rubocop/cop/layout/space_before_first_arg.rb +5 -11
- data/lib/rubocop/cop/layout/space_in_lambda_literal.rb +2 -4
- data/lib/rubocop/cop/layout/space_inside_array_literal_brackets.rb +5 -10
- data/lib/rubocop/cop/layout/space_inside_array_percent_literal.rb +2 -7
- data/lib/rubocop/cop/layout/space_inside_block_braces.rb +5 -10
- data/lib/rubocop/cop/layout/space_inside_hash_literal_braces.rb +1 -2
- data/lib/rubocop/cop/layout/space_inside_reference_brackets.rb +1 -2
- data/lib/rubocop/cop/legacy/corrections_proxy.rb +2 -8
- data/lib/rubocop/cop/legacy/corrector.rb +1 -3
- data/lib/rubocop/cop/lint/ambiguous_assignment.rb +1 -6
- data/lib/rubocop/cop/lint/ambiguous_block_association.rb +14 -7
- data/lib/rubocop/cop/lint/boolean_symbol.rb +1 -2
- data/lib/rubocop/cop/lint/constant_resolution.rb +1 -2
- data/lib/rubocop/cop/lint/deprecated_class_methods.rb +83 -41
- data/lib/rubocop/cop/lint/deprecated_constants.rb +3 -3
- data/lib/rubocop/cop/lint/deprecated_open_ssl_constant.rb +2 -5
- data/lib/rubocop/cop/lint/duplicate_branch.rb +1 -2
- data/lib/rubocop/cop/lint/duplicate_hash_key.rb +1 -3
- data/lib/rubocop/cop/lint/duplicate_methods.rb +3 -7
- data/lib/rubocop/cop/lint/else_layout.rb +1 -3
- data/lib/rubocop/cop/lint/empty_block.rb +18 -2
- data/lib/rubocop/cop/lint/empty_ensure.rb +1 -3
- data/lib/rubocop/cop/lint/empty_file.rb +1 -3
- data/lib/rubocop/cop/lint/empty_interpolation.rb +1 -3
- data/lib/rubocop/cop/lint/ensure_return.rb +1 -3
- data/lib/rubocop/cop/lint/erb_new_arguments.rb +3 -7
- data/lib/rubocop/cop/lint/float_out_of_range.rb +1 -2
- data/lib/rubocop/cop/lint/format_parameter_mismatch.rb +3 -6
- data/lib/rubocop/cop/lint/heredoc_method_call_position.rb +1 -2
- data/lib/rubocop/cop/lint/implicit_string_concatenation.rb +1 -2
- data/lib/rubocop/cop/lint/ineffective_access_modifier.rb +3 -7
- data/lib/rubocop/cop/lint/inherit_exception.rb +1 -2
- data/lib/rubocop/cop/lint/interpolation_check.rb +3 -11
- data/lib/rubocop/cop/lint/literal_in_interpolation.rb +3 -6
- data/lib/rubocop/cop/lint/loop.rb +1 -2
- data/lib/rubocop/cop/lint/missing_cop_enable_directive.rb +3 -7
- data/lib/rubocop/cop/lint/missing_super.rb +1 -2
- data/lib/rubocop/cop/lint/mixed_regexp_capture_types.rb +1 -2
- data/lib/rubocop/cop/lint/nested_method_definition.rb +1 -2
- data/lib/rubocop/cop/lint/nested_percent_literal.rb +1 -3
- data/lib/rubocop/cop/lint/non_deterministic_require_order.rb +1 -3
- data/lib/rubocop/cop/lint/number_conversion.rb +11 -5
- data/lib/rubocop/cop/lint/ordered_magic_comments.rb +1 -2
- data/lib/rubocop/cop/lint/out_of_range_regexp_ref.rb +1 -3
- data/lib/rubocop/cop/lint/parentheses_as_grouped_expression.rb +1 -3
- data/lib/rubocop/cop/lint/percent_symbol_array.rb +1 -3
- data/lib/rubocop/cop/lint/raise_exception.rb +1 -2
- data/lib/rubocop/cop/lint/rand_one.rb +1 -2
- data/lib/rubocop/cop/lint/redundant_cop_disable_directive.rb +9 -22
- data/lib/rubocop/cop/lint/redundant_safe_navigation.rb +1 -3
- data/lib/rubocop/cop/lint/redundant_splat_expansion.rb +3 -7
- data/lib/rubocop/cop/lint/redundant_string_coercion.rb +1 -2
- data/lib/rubocop/cop/lint/redundant_with_index.rb +1 -4
- data/lib/rubocop/cop/lint/redundant_with_object.rb +1 -4
- data/lib/rubocop/cop/lint/regexp_as_condition.rb +1 -3
- data/lib/rubocop/cop/lint/require_parentheses.rb +2 -4
- data/lib/rubocop/cop/lint/rescue_exception.rb +1 -2
- data/lib/rubocop/cop/lint/rescue_type.rb +2 -7
- data/lib/rubocop/cop/lint/return_in_void_context.rb +1 -2
- data/lib/rubocop/cop/lint/safe_navigation_chain.rb +1 -2
- data/lib/rubocop/cop/lint/safe_navigation_consistency.rb +4 -10
- data/lib/rubocop/cop/lint/safe_navigation_with_empty.rb +1 -2
- data/lib/rubocop/cop/lint/send_with_mixin_argument.rb +2 -7
- data/lib/rubocop/cop/lint/shadowed_argument.rb +4 -11
- data/lib/rubocop/cop/lint/shadowed_exception.rb +7 -8
- data/lib/rubocop/cop/lint/struct_new_override.rb +1 -2
- data/lib/rubocop/cop/lint/suppressed_exception.rb +44 -1
- data/lib/rubocop/cop/lint/symbol_conversion.rb +91 -6
- data/lib/rubocop/cop/lint/syntax.rb +1 -3
- data/lib/rubocop/cop/lint/to_json.rb +1 -2
- data/lib/rubocop/cop/lint/trailing_comma_in_attribute_declaration.rb +1 -3
- data/lib/rubocop/cop/lint/underscore_prefixed_variable_name.rb +1 -3
- data/lib/rubocop/cop/lint/unreachable_code.rb +2 -5
- data/lib/rubocop/cop/lint/unreachable_loop.rb +14 -7
- data/lib/rubocop/cop/lint/unused_block_argument.rb +9 -7
- data/lib/rubocop/cop/lint/unused_method_argument.rb +1 -2
- data/lib/rubocop/cop/lint/useless_access_modifier.rb +2 -4
- data/lib/rubocop/cop/lint/useless_assignment.rb +4 -9
- data/lib/rubocop/cop/lint/useless_setter_call.rb +1 -3
- data/lib/rubocop/cop/lint/void.rb +5 -12
- data/lib/rubocop/cop/message_annotator.rb +1 -3
- data/lib/rubocop/cop/metrics/block_nesting.rb +2 -7
- data/lib/rubocop/cop/metrics/class_length.rb +1 -3
- data/lib/rubocop/cop/metrics/cyclomatic_complexity.rb +1 -2
- data/lib/rubocop/cop/metrics/module_length.rb +2 -6
- data/lib/rubocop/cop/metrics/parameter_lists.rb +2 -5
- data/lib/rubocop/cop/metrics/perceived_complexity.rb +1 -2
- data/lib/rubocop/cop/metrics/utils/abc_size_calculator.rb +4 -7
- data/lib/rubocop/cop/metrics/utils/repeated_attribute_discount.rb +2 -7
- data/lib/rubocop/cop/migration/department_name.rb +3 -7
- data/lib/rubocop/cop/mixin/alignment.rb +12 -7
- data/lib/rubocop/cop/mixin/check_line_breakable.rb +20 -4
- data/lib/rubocop/cop/mixin/code_length.rb +1 -3
- data/lib/rubocop/cop/mixin/comments_help.rb +5 -1
- data/lib/rubocop/cop/mixin/configurable_enforced_style.rb +2 -2
- data/lib/rubocop/cop/mixin/configurable_formatting.rb +3 -8
- data/lib/rubocop/cop/mixin/def_node.rb +2 -5
- data/lib/rubocop/cop/mixin/documentation_comment.rb +3 -6
- data/lib/rubocop/cop/mixin/empty_lines_around_body.rb +3 -7
- data/lib/rubocop/cop/mixin/empty_parameter.rb +1 -3
- data/lib/rubocop/cop/mixin/end_keyword_alignment.rb +1 -3
- data/lib/rubocop/cop/mixin/enforce_superclass.rb +2 -6
- data/lib/rubocop/cop/mixin/first_element_line_break.rb +1 -3
- data/lib/rubocop/cop/mixin/frozen_string_literal.rb +7 -7
- data/lib/rubocop/cop/mixin/gem_declaration.rb +13 -0
- data/lib/rubocop/cop/mixin/hash_alignment_styles.rb +3 -6
- data/lib/rubocop/cop/mixin/hash_transform_method.rb +7 -22
- data/lib/rubocop/cop/mixin/interpolation.rb +1 -3
- data/lib/rubocop/cop/mixin/line_length_help.rb +13 -10
- data/lib/rubocop/cop/mixin/match_range.rb +2 -5
- data/lib/rubocop/cop/mixin/method_complexity.rb +1 -3
- data/lib/rubocop/cop/mixin/method_preference.rb +1 -2
- data/lib/rubocop/cop/mixin/multiline_element_indentation.rb +4 -3
- data/lib/rubocop/cop/mixin/multiline_element_line_breaks.rb +1 -3
- data/lib/rubocop/cop/mixin/multiline_expression_indentation.rb +11 -40
- data/lib/rubocop/cop/mixin/multiline_literal_brace_layout.rb +1 -2
- data/lib/rubocop/cop/mixin/negative_conditional.rb +1 -2
- data/lib/rubocop/cop/mixin/ordered_gem_node.rb +1 -4
- data/lib/rubocop/cop/mixin/percent_array.rb +1 -3
- data/lib/rubocop/cop/mixin/percent_literal.rb +0 -6
- data/lib/rubocop/cop/mixin/preceding_following_alignment.rb +5 -11
- data/lib/rubocop/cop/mixin/preferred_delimiters.rb +4 -7
- data/lib/rubocop/cop/mixin/range_help.rb +10 -13
- data/lib/rubocop/cop/mixin/rescue_node.rb +2 -6
- data/lib/rubocop/cop/mixin/safe_assignment.rb +1 -2
- data/lib/rubocop/cop/mixin/space_after_punctuation.rb +2 -4
- data/lib/rubocop/cop/mixin/space_before_punctuation.rb +1 -2
- data/lib/rubocop/cop/mixin/statement_modifier.rb +1 -3
- data/lib/rubocop/cop/mixin/string_literals_help.rb +1 -1
- data/lib/rubocop/cop/mixin/trailing_body.rb +1 -2
- data/lib/rubocop/cop/mixin/trailing_comma.rb +1 -2
- data/lib/rubocop/cop/mixin/uncommunicative_name.rb +7 -13
- data/lib/rubocop/cop/mixin/unused_argument.rb +1 -3
- data/lib/rubocop/cop/naming/ascii_identifiers.rb +2 -4
- data/lib/rubocop/cop/naming/binary_operator_parameter_name.rb +1 -2
- data/lib/rubocop/cop/naming/file_name.rb +7 -16
- data/lib/rubocop/cop/naming/memoized_instance_variable_name.rb +6 -3
- data/lib/rubocop/cop/naming/method_name.rb +1 -2
- data/lib/rubocop/cop/naming/predicate_name.rb +1 -2
- data/lib/rubocop/cop/naming/rescued_exceptions_variable_name.rb +10 -0
- data/lib/rubocop/cop/offense.rb +3 -8
- data/lib/rubocop/cop/registry.rb +12 -11
- data/lib/rubocop/cop/style/access_modifier_declarations.rb +3 -5
- data/lib/rubocop/cop/style/accessor_grouping.rb +1 -3
- data/lib/rubocop/cop/style/alias.rb +5 -12
- data/lib/rubocop/cop/style/and_or.rb +3 -1
- data/lib/rubocop/cop/style/arguments_forwarding.rb +1 -3
- data/lib/rubocop/cop/style/ascii_comments.rb +1 -2
- data/lib/rubocop/cop/style/attr.rb +1 -3
- data/lib/rubocop/cop/style/auto_resource_cleanup.rb +2 -5
- data/lib/rubocop/cop/style/bisected_attr_accessor.rb +59 -71
- data/lib/rubocop/cop/style/bisected_attr_accessor/macro.rb +60 -0
- data/lib/rubocop/cop/style/case_like_if.rb +16 -6
- data/lib/rubocop/cop/style/character_literal.rb +2 -4
- data/lib/rubocop/cop/style/class_and_module_children.rb +19 -10
- data/lib/rubocop/cop/style/class_equality_comparison.rb +2 -0
- data/lib/rubocop/cop/style/class_methods.rb +1 -3
- data/lib/rubocop/cop/style/collection_compact.rb +1 -3
- data/lib/rubocop/cop/style/colon_method_call.rb +1 -3
- data/lib/rubocop/cop/style/combinable_loops.rb +3 -2
- data/lib/rubocop/cop/style/command_literal.rb +4 -9
- data/lib/rubocop/cop/style/comment_annotation.rb +3 -6
- data/lib/rubocop/cop/style/commented_keyword.rb +7 -13
- data/lib/rubocop/cop/style/conditional_assignment.rb +10 -24
- data/lib/rubocop/cop/style/copyright.rb +3 -6
- data/lib/rubocop/cop/style/date_time.rb +2 -5
- data/lib/rubocop/cop/style/def_with_parentheses.rb +1 -2
- data/lib/rubocop/cop/style/disable_cops_within_source_code_directive.rb +2 -2
- data/lib/rubocop/cop/style/documentation.rb +25 -3
- data/lib/rubocop/cop/style/each_for_simple_loop.rb +1 -2
- data/lib/rubocop/cop/style/empty_case_condition.rb +2 -7
- data/lib/rubocop/cop/style/empty_else.rb +3 -9
- data/lib/rubocop/cop/style/empty_literal.rb +12 -9
- data/lib/rubocop/cop/style/empty_method.rb +3 -7
- data/lib/rubocop/cop/style/end_block.rb +1 -2
- data/lib/rubocop/cop/style/endless_method.rb +1 -3
- data/lib/rubocop/cop/style/eval_with_location.rb +3 -5
- data/lib/rubocop/cop/style/expand_path_arguments.rb +1 -3
- data/lib/rubocop/cop/style/explicit_block_argument.rb +1 -4
- data/lib/rubocop/cop/style/format_string_token.rb +1 -4
- data/lib/rubocop/cop/style/frozen_string_literal_comment.rb +3 -11
- data/lib/rubocop/cop/style/guard_clause.rb +3 -7
- data/lib/rubocop/cop/style/hash_conversion.rb +31 -3
- data/lib/rubocop/cop/style/hash_each_methods.rb +1 -2
- data/lib/rubocop/cop/style/hash_like_case.rb +1 -2
- data/lib/rubocop/cop/style/hash_syntax.rb +20 -24
- data/lib/rubocop/cop/style/identical_conditional_branches.rb +1 -3
- data/lib/rubocop/cop/style/if_unless_modifier.rb +40 -13
- data/lib/rubocop/cop/style/infinite_loop.rb +2 -5
- data/lib/rubocop/cop/style/inverse_methods.rb +3 -7
- data/lib/rubocop/cop/style/ip_addresses.rb +1 -2
- data/lib/rubocop/cop/style/lambda.rb +2 -4
- data/lib/rubocop/cop/style/lambda_call.rb +1 -2
- data/lib/rubocop/cop/style/line_end_concatenation.rb +5 -12
- data/lib/rubocop/cop/style/method_call_with_args_parentheses.rb +47 -3
- data/lib/rubocop/cop/style/method_call_with_args_parentheses/omit_parentheses.rb +26 -16
- data/lib/rubocop/cop/style/method_call_without_args_parentheses.rb +1 -2
- data/lib/rubocop/cop/style/method_called_on_do_end_block.rb +2 -4
- data/lib/rubocop/cop/style/method_def_parentheses.rb +4 -8
- data/lib/rubocop/cop/style/min_max.rb +1 -2
- data/lib/rubocop/cop/style/missing_else.rb +2 -4
- data/lib/rubocop/cop/style/missing_respond_to_missing.rb +1 -2
- data/lib/rubocop/cop/style/mixin_grouping.rb +4 -10
- data/lib/rubocop/cop/style/mixin_usage.rb +1 -2
- data/lib/rubocop/cop/style/module_function.rb +3 -6
- data/lib/rubocop/cop/style/multiline_block_chain.rb +1 -2
- data/lib/rubocop/cop/style/multiline_method_signature.rb +11 -6
- data/lib/rubocop/cop/style/multiline_ternary_operator.rb +1 -2
- data/lib/rubocop/cop/style/multiple_comparison.rb +2 -4
- data/lib/rubocop/cop/style/mutable_constant.rb +4 -10
- data/lib/rubocop/cop/style/negated_if.rb +1 -2
- data/lib/rubocop/cop/style/negated_if_else_condition.rb +23 -2
- data/lib/rubocop/cop/style/negated_unless.rb +1 -2
- data/lib/rubocop/cop/style/nested_modifier.rb +3 -7
- data/lib/rubocop/cop/style/nested_ternary_operator.rb +2 -3
- data/lib/rubocop/cop/style/next.rb +4 -9
- data/lib/rubocop/cop/style/nil_lambda.rb +29 -12
- data/lib/rubocop/cop/style/non_nil_check.rb +2 -5
- data/lib/rubocop/cop/style/numeric_literals.rb +3 -11
- data/lib/rubocop/cop/style/numeric_predicate.rb +2 -7
- data/lib/rubocop/cop/style/one_line_conditional.rb +1 -2
- data/lib/rubocop/cop/style/option_hash.rb +1 -3
- data/lib/rubocop/cop/style/optional_arguments.rb +2 -5
- data/lib/rubocop/cop/style/or_assignment.rb +2 -6
- data/lib/rubocop/cop/style/parallel_assignment.rb +6 -9
- data/lib/rubocop/cop/style/percent_literal_delimiters.rb +1 -3
- data/lib/rubocop/cop/style/percent_q_literals.rb +1 -2
- data/lib/rubocop/cop/style/perl_backrefs.rb +2 -9
- data/lib/rubocop/cop/style/preferred_hash_methods.rb +1 -4
- data/lib/rubocop/cop/style/proc.rb +1 -2
- data/lib/rubocop/cop/style/raise_args.rb +4 -8
- data/lib/rubocop/cop/style/random_with_offset.rb +3 -8
- data/lib/rubocop/cop/style/redundant_argument.rb +2 -11
- data/lib/rubocop/cop/style/redundant_assignment.rb +1 -3
- data/lib/rubocop/cop/style/redundant_begin.rb +40 -6
- data/lib/rubocop/cop/style/redundant_capital_w.rb +1 -2
- data/lib/rubocop/cop/style/redundant_condition.rb +2 -5
- data/lib/rubocop/cop/style/redundant_conditional.rb +3 -6
- data/lib/rubocop/cop/style/redundant_exception.rb +3 -6
- data/lib/rubocop/cop/style/redundant_file_extension_in_require.rb +1 -1
- data/lib/rubocop/cop/style/redundant_freeze.rb +1 -2
- data/lib/rubocop/cop/style/redundant_interpolation.rb +1 -2
- data/lib/rubocop/cop/style/redundant_parentheses.rb +8 -20
- data/lib/rubocop/cop/style/redundant_percent_q.rb +1 -2
- data/lib/rubocop/cop/style/redundant_regexp_escape.rb +1 -4
- data/lib/rubocop/cop/style/redundant_return.rb +6 -4
- data/lib/rubocop/cop/style/redundant_self.rb +9 -9
- data/lib/rubocop/cop/style/redundant_self_assignment.rb +2 -2
- data/lib/rubocop/cop/style/redundant_sort.rb +2 -5
- data/lib/rubocop/cop/style/regexp_literal.rb +4 -8
- data/lib/rubocop/cop/style/rescue_modifier.rb +21 -14
- data/lib/rubocop/cop/style/rescue_standard_error.rb +3 -7
- data/lib/rubocop/cop/style/return_nil.rb +1 -2
- data/lib/rubocop/cop/style/safe_navigation.rb +10 -21
- data/lib/rubocop/cop/style/send.rb +1 -2
- data/lib/rubocop/cop/style/signal_exception.rb +3 -7
- data/lib/rubocop/cop/style/single_argument_dig.rb +1 -2
- data/lib/rubocop/cop/style/single_line_block_params.rb +2 -5
- data/lib/rubocop/cop/style/single_line_methods.rb +21 -4
- data/lib/rubocop/cop/style/sole_nested_conditional.rb +31 -7
- data/lib/rubocop/cop/style/special_global_vars.rb +6 -18
- data/lib/rubocop/cop/style/stabby_lambda_parentheses.rb +1 -2
- data/lib/rubocop/cop/style/stderr_puts.rb +2 -6
- data/lib/rubocop/cop/style/string_chars.rb +39 -0
- data/lib/rubocop/cop/style/string_concatenation.rb +8 -10
- data/lib/rubocop/cop/style/string_literals.rb +2 -5
- data/lib/rubocop/cop/style/struct_inheritance.rb +10 -0
- data/lib/rubocop/cop/style/symbol_literal.rb +1 -3
- data/lib/rubocop/cop/style/symbol_proc.rb +4 -9
- data/lib/rubocop/cop/style/ternary_parentheses.rb +3 -6
- data/lib/rubocop/cop/style/top_level_method_definition.rb +75 -0
- data/lib/rubocop/cop/style/trailing_body_on_method_definition.rb +6 -3
- data/lib/rubocop/cop/style/trailing_comma_in_block_args.rb +2 -6
- data/lib/rubocop/cop/style/trailing_method_end_statement.rb +2 -5
- data/lib/rubocop/cop/style/trailing_underscore_variable.rb +4 -10
- data/lib/rubocop/cop/style/trivial_accessors.rb +67 -4
- data/lib/rubocop/cop/style/unless_else.rb +1 -2
- data/lib/rubocop/cop/style/unless_logical_operators.rb +8 -2
- data/lib/rubocop/cop/style/variable_interpolation.rb +1 -1
- data/lib/rubocop/cop/style/when_then.rb +1 -3
- data/lib/rubocop/cop/style/while_until_modifier.rb +1 -2
- data/lib/rubocop/cop/style/word_array.rb +1 -2
- data/lib/rubocop/cop/style/yoda_condition.rb +3 -11
- data/lib/rubocop/cop/style/zero_length_predicate.rb +1 -2
- data/lib/rubocop/cop/team.rb +2 -5
- data/lib/rubocop/cop/util.rb +8 -11
- data/lib/rubocop/cop/utils/format_string.rb +1 -3
- data/lib/rubocop/cop/variable_force.rb +6 -15
- data/lib/rubocop/cop/variable_force/assignment.rb +1 -2
- data/lib/rubocop/cop/variable_force/branch.rb +16 -2
- data/lib/rubocop/cop/variable_force/reference.rb +1 -3
- data/lib/rubocop/cop/variable_force/scope.rb +4 -8
- data/lib/rubocop/cop/variable_force/variable.rb +2 -4
- data/lib/rubocop/cops_documentation_generator.rb +7 -21
- data/lib/rubocop/directive_comment.rb +69 -9
- data/lib/rubocop/ext/regexp_parser.rb +3 -6
- data/lib/rubocop/file_finder.rb +1 -3
- data/lib/rubocop/formatter/clang_style_formatter.rb +4 -2
- data/lib/rubocop/formatter/disabled_config_formatter.rb +3 -8
- data/lib/rubocop/formatter/git_hub_actions_formatter.rb +1 -5
- data/lib/rubocop/formatter/html_formatter.rb +4 -10
- data/lib/rubocop/formatter/json_formatter.rb +1 -5
- data/lib/rubocop/formatter/junit_formatter.rb +23 -14
- data/lib/rubocop/formatter/progress_formatter.rb +1 -3
- data/lib/rubocop/formatter/tap_formatter.rb +4 -2
- data/lib/rubocop/magic_comment.rb +1 -1
- data/lib/rubocop/options.rb +30 -50
- data/lib/rubocop/path_util.rb +1 -3
- data/lib/rubocop/rake_task.rb +3 -0
- data/lib/rubocop/remote_config.rb +4 -7
- data/lib/rubocop/result_cache.rb +5 -12
- data/lib/rubocop/rspec/cop_helper.rb +1 -1
- data/lib/rubocop/rspec/expect_offense.rb +4 -9
- data/lib/rubocop/rspec/shared_contexts.rb +8 -15
- data/lib/rubocop/runner.rb +7 -14
- data/lib/rubocop/target_finder.rb +19 -16
- data/lib/rubocop/target_ruby.rb +4 -8
- data/lib/rubocop/version.rb +1 -1
- metadata +13 -7
- data/lib/rubocop/core_ext/hash.rb +0 -20
@@ -26,8 +26,7 @@ module RuboCop
|
|
26
26
|
class RandomWithOffset < Base
|
27
27
|
extend AutoCorrector
|
28
28
|
|
29
|
-
MSG = 'Prefer ranges when generating random numbers instead of '
|
30
|
-
'integers with offsets.'
|
29
|
+
MSG = 'Prefer ranges when generating random numbers instead of integers with offsets.'
|
31
30
|
RESTRICT_ON_SEND = %i[+ - succ pred next].freeze
|
32
31
|
|
33
32
|
# @!method integer_op_rand?(node)
|
@@ -63,13 +62,9 @@ module RuboCop
|
|
63
62
|
|
64
63
|
def on_send(node)
|
65
64
|
return unless node.receiver
|
66
|
-
return unless integer_op_rand?(node) ||
|
67
|
-
rand_op_integer?(node) ||
|
68
|
-
rand_modified?(node)
|
65
|
+
return unless integer_op_rand?(node) || rand_op_integer?(node) || rand_modified?(node)
|
69
66
|
|
70
|
-
add_offense(node)
|
71
|
-
autocorrect(corrector, node)
|
72
|
-
end
|
67
|
+
add_offense(node) { |corrector| autocorrect(corrector, node) }
|
73
68
|
end
|
74
69
|
|
75
70
|
private
|
@@ -1,7 +1,5 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
require 'parser/current'
|
4
|
-
|
5
3
|
module RuboCop
|
6
4
|
module Cop
|
7
5
|
module Style
|
@@ -68,17 +66,10 @@ module RuboCop
|
|
68
66
|
end
|
69
67
|
|
70
68
|
def redundant_arg_for_method(method_name)
|
71
|
-
|
69
|
+
arg = cop_config['Methods'].fetch(method_name) { return }
|
72
70
|
|
73
71
|
@mem ||= {}
|
74
|
-
@mem[method_name] ||=
|
75
|
-
begin
|
76
|
-
arg = cop_config['Methods'].fetch(method_name)
|
77
|
-
buffer = Parser::Source::Buffer.new('(string)', 1)
|
78
|
-
buffer.source = arg.inspect
|
79
|
-
builder = RuboCop::AST::Builder.new
|
80
|
-
Parser::CurrentRuby.new(builder).parse(buffer)
|
81
|
-
end
|
72
|
+
@mem[method_name] ||= parse(arg.inspect).ast
|
82
73
|
end
|
83
74
|
|
84
75
|
def argument_range(node)
|
@@ -36,7 +36,6 @@ module RuboCop
|
|
36
36
|
# do_something
|
37
37
|
#
|
38
38
|
# # bad
|
39
|
-
# # When using Ruby 2.5 or later.
|
40
39
|
# do_something do
|
41
40
|
# begin
|
42
41
|
# something
|
@@ -63,6 +62,7 @@ module RuboCop
|
|
63
62
|
# end
|
64
63
|
# end
|
65
64
|
class RedundantBegin < Base
|
65
|
+
include RangeHelp
|
66
66
|
extend AutoCorrector
|
67
67
|
|
68
68
|
MSG = 'Redundant `begin` block detected.'
|
@@ -75,8 +75,6 @@ module RuboCop
|
|
75
75
|
alias on_defs on_def
|
76
76
|
|
77
77
|
def on_block(node)
|
78
|
-
return if target_ruby_version < 2.5
|
79
|
-
|
80
78
|
return if node.send_node.lambda_literal?
|
81
79
|
return if node.braces?
|
82
80
|
return unless node.body&.kwbegin_type?
|
@@ -95,12 +93,40 @@ module RuboCop
|
|
95
93
|
private
|
96
94
|
|
97
95
|
def register_offense(node)
|
98
|
-
|
99
|
-
|
96
|
+
offense_range = node.loc.begin
|
97
|
+
|
98
|
+
add_offense(offense_range) do |corrector|
|
99
|
+
if any_ancestor_assignment_node?(node)
|
100
|
+
replace_begin_with_statement(corrector, offense_range, node)
|
101
|
+
else
|
102
|
+
corrector.remove(offense_range)
|
103
|
+
end
|
104
|
+
|
100
105
|
corrector.remove(node.loc.end)
|
101
106
|
end
|
102
107
|
end
|
103
108
|
|
109
|
+
def replace_begin_with_statement(corrector, offense_range, node)
|
110
|
+
first_child = node.children.first
|
111
|
+
|
112
|
+
source = first_child.source
|
113
|
+
source = "(#{source})" if first_child.if_type? && first_child.modifier_form?
|
114
|
+
|
115
|
+
corrector.replace(offense_range, source)
|
116
|
+
corrector.remove(range_between(offense_range.end_pos, first_child.source_range.end_pos))
|
117
|
+
|
118
|
+
restore_removed_comments(corrector, offense_range, node, first_child)
|
119
|
+
end
|
120
|
+
|
121
|
+
# Restore comments that occur between "begin" and "first_child".
|
122
|
+
# These comments will be moved to above the assignment line.
|
123
|
+
def restore_removed_comments(corrector, offense_range, node, first_child)
|
124
|
+
comments_range = range_between(offense_range.end_pos, first_child.source_range.begin_pos)
|
125
|
+
comments = comments_range.source
|
126
|
+
|
127
|
+
corrector.insert_before(node.parent, comments) unless comments.blank?
|
128
|
+
end
|
129
|
+
|
104
130
|
def empty_begin?(node)
|
105
131
|
node.children.empty?
|
106
132
|
end
|
@@ -114,9 +140,17 @@ module RuboCop
|
|
114
140
|
def valid_context_using_only_begin?(node)
|
115
141
|
parent = node.parent
|
116
142
|
|
117
|
-
|
143
|
+
valid_begin_assignment?(node) || parent&.post_condition_loop? ||
|
118
144
|
parent&.send_type? || parent&.operator_keyword?
|
119
145
|
end
|
146
|
+
|
147
|
+
def valid_begin_assignment?(node)
|
148
|
+
any_ancestor_assignment_node?(node) && !node.children.one?
|
149
|
+
end
|
150
|
+
|
151
|
+
def any_ancestor_assignment_node?(node)
|
152
|
+
node.each_ancestor.any?(&:assignment?)
|
153
|
+
end
|
120
154
|
end
|
121
155
|
end
|
122
156
|
end
|
@@ -18,8 +18,7 @@ module RuboCop
|
|
18
18
|
include PercentLiteral
|
19
19
|
extend AutoCorrector
|
20
20
|
|
21
|
-
MSG = 'Do not use `%W` unless interpolation is needed. '
|
22
|
-
'If not, use `%w`.'
|
21
|
+
MSG = 'Do not use `%W` unless interpolation is needed. If not, use `%w`.'
|
23
22
|
|
24
23
|
def on_array(node)
|
25
24
|
process(node, '%W')
|
@@ -78,9 +78,7 @@ module RuboCop
|
|
78
78
|
return false if use_if_branch?(else_branch) || use_hash_key_assignment?(else_branch)
|
79
79
|
|
80
80
|
condition == if_branch && !node.elsif? && (
|
81
|
-
node.ternary? ||
|
82
|
-
!else_branch.instance_of?(AST::Node) ||
|
83
|
-
else_branch.single_line?
|
81
|
+
node.ternary? || !else_branch.instance_of?(AST::Node) || else_branch.single_line?
|
84
82
|
)
|
85
83
|
end
|
86
84
|
|
@@ -104,8 +102,7 @@ module RuboCop
|
|
104
102
|
|
105
103
|
def make_ternary_form(node)
|
106
104
|
_condition, if_branch, else_branch = *node
|
107
|
-
ternary_form = [if_branch.source,
|
108
|
-
else_source(else_branch)].join(' || ')
|
105
|
+
ternary_form = [if_branch.source, else_source(else_branch)].join(' || ')
|
109
106
|
|
110
107
|
if node.parent&.send_type?
|
111
108
|
"(#{ternary_form})"
|
@@ -31,8 +31,7 @@ module RuboCop
|
|
31
31
|
operators = RuboCop::AST::Node::COMPARISON_OPERATORS.to_a
|
32
32
|
COMPARISON_OPERATOR_MATCHER = "{:#{operators.join(' :')}}"
|
33
33
|
|
34
|
-
MSG = 'This conditional expression can just be replaced '
|
35
|
-
'by `%<msg>s`.'
|
34
|
+
MSG = 'This conditional expression can just be replaced by `%<msg>s`.'
|
36
35
|
|
37
36
|
def on_if(node)
|
38
37
|
return unless offense?(node)
|
@@ -78,11 +77,9 @@ module RuboCop
|
|
78
77
|
|
79
78
|
def invert_expression?(node)
|
80
79
|
(
|
81
|
-
(node.if? || node.elsif? || node.ternary?) &&
|
82
|
-
redundant_condition_inverted?(node)
|
80
|
+
(node.if? || node.elsif? || node.ternary?) && redundant_condition_inverted?(node)
|
83
81
|
) || (
|
84
|
-
node.unless? &&
|
85
|
-
redundant_condition?(node)
|
82
|
+
node.unless? && redundant_condition?(node)
|
86
83
|
)
|
87
84
|
end
|
88
85
|
|
@@ -20,8 +20,7 @@ module RuboCop
|
|
20
20
|
extend AutoCorrector
|
21
21
|
|
22
22
|
MSG_1 = 'Redundant `RuntimeError` argument can be removed.'
|
23
|
-
MSG_2 = 'Redundant `RuntimeError.new` call can be replaced with '
|
24
|
-
'just the message.'
|
23
|
+
MSG_2 = 'Redundant `RuntimeError.new` call can be replaced with just the message.'
|
25
24
|
|
26
25
|
RESTRICT_ON_SEND = %i[raise fail].freeze
|
27
26
|
|
@@ -35,11 +34,9 @@ module RuboCop
|
|
35
34
|
exploded?(node) do |command, message|
|
36
35
|
add_offense(node, message: MSG_1) do |corrector|
|
37
36
|
if node.parenthesized?
|
38
|
-
corrector.replace(node,
|
39
|
-
"#{command}(#{message.source})")
|
37
|
+
corrector.replace(node, "#{command}(#{message.source})")
|
40
38
|
else
|
41
|
-
corrector.replace(node,
|
42
|
-
"#{command} #{message.source}")
|
39
|
+
corrector.replace(node, "#{command} #{message.source}")
|
43
40
|
end
|
44
41
|
end
|
45
42
|
end
|
@@ -40,7 +40,7 @@ module RuboCop
|
|
40
40
|
return unless name_node.value.end_with?('.rb')
|
41
41
|
|
42
42
|
add_offense(name_node) do |corrector|
|
43
|
-
correction = name_node.value.
|
43
|
+
correction = name_node.value.delete_suffix('.rb')
|
44
44
|
|
45
45
|
corrector.replace(name_node, "'#{correction}'")
|
46
46
|
end
|
@@ -17,8 +17,7 @@ module RuboCop
|
|
17
17
|
extend AutoCorrector
|
18
18
|
include FrozenStringLiteral
|
19
19
|
|
20
|
-
MSG = 'Do not freeze immutable objects, as freezing them has no '
|
21
|
-
'effect.'
|
20
|
+
MSG = 'Do not freeze immutable objects, as freezing them has no effect.'
|
22
21
|
RESTRICT_ON_SEND = %i[freeze].freeze
|
23
22
|
|
24
23
|
def on_send(node)
|
@@ -72,8 +72,7 @@ module RuboCop
|
|
72
72
|
end
|
73
73
|
|
74
74
|
def embedded_in_percent_array?(node)
|
75
|
-
node.parent&.array_type? &&
|
76
|
-
percent_literal?(node.parent)
|
75
|
+
node.parent&.array_type? && percent_literal?(node.parent)
|
77
76
|
end
|
78
77
|
|
79
78
|
def autocorrect_variable_interpolation(corrector, embedded_node, node)
|
@@ -18,8 +18,7 @@ module RuboCop
|
|
18
18
|
extend AutoCorrector
|
19
19
|
|
20
20
|
# @!method square_brackets?(node)
|
21
|
-
def_node_matcher :square_brackets?,
|
22
|
-
'(send {(send _recv _msg) str array hash} :[] ...)'
|
21
|
+
def_node_matcher :square_brackets?, '(send {(send _recv _msg) str array hash} :[] ...)'
|
23
22
|
|
24
23
|
# @!method range_end?(node)
|
25
24
|
def_node_matcher :range_end?, '^^{irange erange}'
|
@@ -31,8 +30,7 @@ module RuboCop
|
|
31
30
|
def_node_matcher :rescue?, '{^resbody ^^resbody}'
|
32
31
|
|
33
32
|
# @!method arg_in_call_with_block?(node)
|
34
|
-
def_node_matcher :arg_in_call_with_block?,
|
35
|
-
'^^(block (send _ _ equal?(%0) ...) ...)'
|
33
|
+
def_node_matcher :arg_in_call_with_block?, '^^(block (send _ _ equal?(%0) ...) ...)'
|
36
34
|
|
37
35
|
def on_begin(node)
|
38
36
|
return if !parentheses?(node) || parens_allowed?(node) || ignore_syntax?(node)
|
@@ -135,8 +133,7 @@ module RuboCop
|
|
135
133
|
|
136
134
|
node = node.children.first while suspect_unary?(node)
|
137
135
|
|
138
|
-
return if node.send_type? &&
|
139
|
-
!method_call_with_redundant_parentheses?(node)
|
136
|
+
return if node.send_type? && !method_call_with_redundant_parentheses?(node)
|
140
137
|
|
141
138
|
offense(begin_node, 'an unary operation')
|
142
139
|
end
|
@@ -161,16 +158,11 @@ module RuboCop
|
|
161
158
|
# { a: (1
|
162
159
|
# ), }
|
163
160
|
# ```
|
164
|
-
|
165
|
-
only_closing_paren_before_comma?(node)
|
161
|
+
hash_or_array_element?(node) && only_closing_paren_before_comma?(node)
|
166
162
|
end
|
167
163
|
|
168
|
-
def
|
169
|
-
node.
|
170
|
-
end
|
171
|
-
|
172
|
-
def array_element?(node)
|
173
|
-
node.parent&.array_type?
|
164
|
+
def hash_or_array_element?(node)
|
165
|
+
node.each_ancestor(:array, :hash).any?
|
174
166
|
end
|
175
167
|
|
176
168
|
def only_closing_paren_before_comma?(node)
|
@@ -181,9 +173,7 @@ module RuboCop
|
|
181
173
|
end
|
182
174
|
|
183
175
|
def disallowed_literal?(begin_node, node)
|
184
|
-
node.literal? &&
|
185
|
-
!node.range_type? &&
|
186
|
-
!raised_to_power_negative_numeric?(begin_node, node)
|
176
|
+
node.literal? && !node.range_type? && !raised_to_power_negative_numeric?(begin_node, node)
|
187
177
|
end
|
188
178
|
|
189
179
|
def raised_to_power_negative_numeric?(begin_node, node)
|
@@ -225,9 +215,7 @@ module RuboCop
|
|
225
215
|
end
|
226
216
|
|
227
217
|
def first_argument?(node)
|
228
|
-
first_send_argument?(node) ||
|
229
|
-
first_super_argument?(node) ||
|
230
|
-
first_yield_argument?(node)
|
218
|
+
first_send_argument?(node) || first_super_argument?(node) || first_yield_argument?(node)
|
231
219
|
end
|
232
220
|
|
233
221
|
# @!method first_send_argument?(node)
|
@@ -22,8 +22,7 @@ module RuboCop
|
|
22
22
|
|
23
23
|
MSG = 'Use `%<q_type>s` only for strings that contain both ' \
|
24
24
|
'single quotes and double quotes%<extra>s.'
|
25
|
-
DYNAMIC_MSG = ', or for dynamic strings that contain '
|
26
|
-
'double quotes'
|
25
|
+
DYNAMIC_MSG = ', or for dynamic strings that contain double quotes'
|
27
26
|
SINGLE_QUOTE = "'"
|
28
27
|
QUOTE = '"'
|
29
28
|
EMPTY = ''
|
@@ -71,9 +71,12 @@ module RuboCop
|
|
71
71
|
elsif hash_without_braces?(return_node.first_argument)
|
72
72
|
add_braces(corrector, return_node.first_argument)
|
73
73
|
end
|
74
|
+
if return_node.splat_argument?
|
75
|
+
first_argument = return_node.first_argument
|
76
|
+
corrector.replace(first_argument, first_argument.source.delete_prefix('*'))
|
77
|
+
end
|
74
78
|
|
75
|
-
keyword = range_with_surrounding_space(range: return_node.loc.keyword,
|
76
|
-
side: :right)
|
79
|
+
keyword = range_with_surrounding_space(range: return_node.loc.keyword, side: :right)
|
77
80
|
corrector.remove(keyword)
|
78
81
|
end
|
79
82
|
|
@@ -109,8 +112,7 @@ module RuboCop
|
|
109
112
|
# rubocop:enable Metrics/CyclomaticComplexity
|
110
113
|
|
111
114
|
def check_return_node(node)
|
112
|
-
return if cop_config['AllowMultipleReturnValues'] &&
|
113
|
-
node.children.size > 1
|
115
|
+
return if cop_config['AllowMultipleReturnValues'] && node.children.size > 1
|
114
116
|
|
115
117
|
add_offense(node.loc.keyword, message: message(node)) do |corrector|
|
116
118
|
if node.arguments?
|
@@ -11,7 +11,7 @@ module RuboCop
|
|
11
11
|
# presence of a method name clash with an argument or a local
|
12
12
|
# variable.
|
13
13
|
#
|
14
|
-
# * Calling an attribute writer to prevent
|
14
|
+
# * Calling an attribute writer to prevent a local variable assignment.
|
15
15
|
#
|
16
16
|
# Note, with using explicit self you can only send messages with public or
|
17
17
|
# protected scope, you cannot send private messages this way.
|
@@ -92,9 +92,7 @@ module RuboCop
|
|
92
92
|
|
93
93
|
def on_masgn(node)
|
94
94
|
lhs, rhs = *node
|
95
|
-
lhs.children.each
|
96
|
-
add_lhs_to_local_variables_scopes(rhs, child.to_a.first)
|
97
|
-
end
|
95
|
+
lhs.children.each { |child| add_lhs_to_local_variables_scopes(rhs, child.to_a.first) }
|
98
96
|
end
|
99
97
|
|
100
98
|
def on_lvasgn(node)
|
@@ -144,8 +142,12 @@ module RuboCop
|
|
144
142
|
end
|
145
143
|
|
146
144
|
def on_argument(node)
|
147
|
-
|
148
|
-
|
145
|
+
if node.mlhs_type?
|
146
|
+
on_args(node)
|
147
|
+
else
|
148
|
+
name, = *node
|
149
|
+
@local_variables_scopes[node] << name
|
150
|
+
end
|
149
151
|
end
|
150
152
|
|
151
153
|
def allow_self(node)
|
@@ -156,9 +158,7 @@ module RuboCop
|
|
156
158
|
|
157
159
|
def add_lhs_to_local_variables_scopes(rhs, lhs)
|
158
160
|
if rhs&.send_type? && !rhs.arguments.empty?
|
159
|
-
rhs.arguments.each
|
160
|
-
@local_variables_scopes[argument] << lhs
|
161
|
-
end
|
161
|
+
rhs.arguments.each { |argument| @local_variables_scopes[argument] << lhs }
|
162
162
|
else
|
163
163
|
@local_variables_scopes[rhs] << lhs
|
164
164
|
end
|
@@ -66,8 +66,8 @@ module RuboCop
|
|
66
66
|
alias on_gvasgn on_lvasgn
|
67
67
|
|
68
68
|
def on_send(node)
|
69
|
-
# TODO:
|
70
|
-
return unless node.method_name.
|
69
|
+
# TODO: Remove `Symbol#to_s` after supporting only Ruby >= 2.7.
|
70
|
+
return unless node.method_name.to_s.end_with?('=')
|
71
71
|
return unless redundant_assignment?(node)
|
72
72
|
|
73
73
|
message = format(MSG, method_name: node.first_argument.method_name)
|
@@ -53,8 +53,7 @@ module RuboCop
|
|
53
53
|
include RangeHelp
|
54
54
|
extend AutoCorrector
|
55
55
|
|
56
|
-
MSG = 'Use `%<suggestion>s` instead of '
|
57
|
-
'`%<sorter>s...%<accessor_source>s`.'
|
56
|
+
MSG = 'Use `%<suggestion>s` instead of `%<sorter>s...%<accessor_source>s`.'
|
58
57
|
|
59
58
|
RESTRICT_ON_SEND = %i[sort sort_by].freeze
|
60
59
|
|
@@ -112,9 +111,7 @@ module RuboCop
|
|
112
111
|
).source
|
113
112
|
|
114
113
|
format(MSG,
|
115
|
-
suggestion: suggestion(sorter,
|
116
|
-
accessor,
|
117
|
-
arg_value(node)),
|
114
|
+
suggestion: suggestion(sorter, accessor, arg_value(node)),
|
118
115
|
sorter: sorter,
|
119
116
|
accessor_source: accessor_source)
|
120
117
|
end
|