rubocop 1.12.0 → 1.13.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 +3 -2
- data/config/default.yml +10 -0
- data/exe/rubocop +1 -3
- data/lib/rubocop.rb +1 -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/comment_config.rb +2 -7
- 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 +42 -8
- 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 +3 -6
- 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 +6 -4
- 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 +1 -2
- data/lib/rubocop/cop/layout/argument_alignment.rb +2 -4
- data/lib/rubocop/cop/layout/assignment_indentation.rb +2 -4
- 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/case_indentation.rb +1 -3
- data/lib/rubocop/cop/layout/class_structure.rb +4 -10
- data/lib/rubocop/cop/layout/closing_parenthesis_indentation.rb +4 -15
- data/lib/rubocop/cop/layout/comment_indentation.rb +1 -5
- 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 +1 -3
- 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_array_element_indentation.rb +1 -2
- data/lib/rubocop/cop/layout/first_array_element_line_break.rb +1 -2
- data/lib/rubocop/cop/layout/first_hash_element_indentation.rb +2 -5
- 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/hash_alignment.rb +3 -6
- 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_style.rb +1 -3
- data/lib/rubocop/cop/layout/indentation_width.rb +1 -2
- 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 +16 -10
- data/lib/rubocop/cop/layout/multiline_operation_indentation.rb +4 -0
- data/lib/rubocop/cop/layout/redundant_line_break.rb +125 -0
- data/lib/rubocop/cop/layout/rescue_ensure_alignment.rb +3 -6
- 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 +2 -4
- 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_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 +3 -4
- 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 +8 -20
- 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/symbol_conversion.rb +2 -4
- 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 +2 -5
- data/lib/rubocop/cop/lint/unused_block_argument.rb +4 -8
- 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 +4 -11
- 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 +2 -4
- data/lib/rubocop/cop/mixin/check_line_breakable.rb +1 -1
- data/lib/rubocop/cop/mixin/code_length.rb +1 -3
- 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 +2 -5
- 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 +3 -9
- 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 +2 -4
- 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 +1 -2
- data/lib/rubocop/cop/mixin/multiline_element_line_breaks.rb +1 -3
- data/lib/rubocop/cop/mixin/multiline_expression_indentation.rb +7 -37
- 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 +3 -6
- 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/trailing_body.rb +1 -2
- data/lib/rubocop/cop/mixin/trailing_comma.rb +1 -2
- data/lib/rubocop/cop/mixin/uncommunicative_name.rb +3 -7
- 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 +2 -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/offense.rb +3 -8
- data/lib/rubocop/cop/registry.rb +3 -11
- data/lib/rubocop/cop/style/access_modifier_declarations.rb +2 -4
- 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/macro.rb +1 -3
- data/lib/rubocop/cop/style/case_like_if.rb +1 -2
- data/lib/rubocop/cop/style/character_literal.rb +2 -4
- data/lib/rubocop/cop/style/class_and_module_children.rb +3 -6
- 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 +3 -8
- 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/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 +4 -8
- 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 +2 -4
- 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 +4 -9
- data/lib/rubocop/cop/style/identical_conditional_branches.rb +1 -3
- data/lib/rubocop/cop/style/if_unless_modifier.rb +41 -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 +7 -3
- data/lib/rubocop/cop/style/method_call_with_args_parentheses/omit_parentheses.rb +10 -18
- 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_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/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 +15 -4
- 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 +3 -5
- data/lib/rubocop/cop/style/redundant_self.rb +2 -6
- 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 +4 -0
- 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 +16 -4
- data/lib/rubocop/cop/style/sole_nested_conditional.rb +1 -2
- 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 +2 -1
- 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 +9 -1
- 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/trailing_body_on_method_definition.rb +1 -2
- 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 +2 -4
- data/lib/rubocop/cop/style/unless_else.rb +1 -2
- data/lib/rubocop/cop/style/unless_logical_operators.rb +2 -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 +1 -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 +5 -0
- 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 +3 -9
- data/lib/rubocop/formatter/progress_formatter.rb +1 -3
- data/lib/rubocop/formatter/tap_formatter.rb +4 -2
- data/lib/rubocop/options.rb +27 -41
- 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 +4 -15
- data/lib/rubocop/runner.rb +7 -14
- data/lib/rubocop/target_finder.rb +11 -16
- data/lib/rubocop/target_ruby.rb +4 -8
- data/lib/rubocop/version.rb +1 -1
- metadata +5 -5
- data/lib/rubocop/core_ext/hash.rb +0 -20
@@ -77,8 +77,7 @@ module RuboCop
|
|
77
77
|
first = args.first.source_range
|
78
78
|
last = args.last.source_range
|
79
79
|
|
80
|
-
check_no_space(opening_pipe.end_pos, first.begin_pos,
|
81
|
-
'Space before first')
|
80
|
+
check_no_space(opening_pipe.end_pos, first.begin_pos, 'Space before first')
|
82
81
|
check_no_space(last_end_pos_inside_pipes(arguments, last),
|
83
82
|
closing_pipe.begin_pos, 'Space after last')
|
84
83
|
end
|
@@ -98,8 +97,7 @@ module RuboCop
|
|
98
97
|
|
99
98
|
check_space(opening_pipe.end_pos, range.begin_pos, range,
|
100
99
|
'before first block parameter', first_arg)
|
101
|
-
check_no_space(opening_pipe.end_pos, range.begin_pos - 1,
|
102
|
-
'Extra space before first')
|
100
|
+
check_no_space(opening_pipe.end_pos, range.begin_pos - 1, 'Extra space before first')
|
103
101
|
end
|
104
102
|
|
105
103
|
def check_closing_pipe_space(arguments, closing_pipe)
|
@@ -108,10 +106,8 @@ module RuboCop
|
|
108
106
|
last = args.last.source_range
|
109
107
|
last_end_pos = last_end_pos_inside_pipes(arguments, last)
|
110
108
|
|
111
|
-
check_space(last_end_pos, closing_pipe.begin_pos, last,
|
112
|
-
|
113
|
-
check_no_space(last_end_pos + 1, closing_pipe.begin_pos,
|
114
|
-
'Extra space after last')
|
109
|
+
check_space(last_end_pos, closing_pipe.begin_pos, last, 'after last block parameter')
|
110
|
+
check_no_space(last_end_pos + 1, closing_pipe.begin_pos, 'Extra space after last')
|
115
111
|
end
|
116
112
|
|
117
113
|
def last_end_pos_inside_pipes(arguments, range)
|
@@ -123,9 +119,7 @@ module RuboCop
|
|
123
119
|
end
|
124
120
|
|
125
121
|
def check_each_arg(args)
|
126
|
-
args.children.each
|
127
|
-
check_arg(arg)
|
128
|
-
end
|
122
|
+
args.children.each { |arg| check_arg(arg) }
|
129
123
|
end
|
130
124
|
|
131
125
|
def check_arg(arg)
|
@@ -160,9 +154,7 @@ module RuboCop
|
|
160
154
|
return if range.source.include?("\n")
|
161
155
|
|
162
156
|
message = "#{msg} block parameter detected."
|
163
|
-
add_offense(range, message: message)
|
164
|
-
corrector.remove(range)
|
165
|
-
end
|
157
|
+
add_offense(range, message: message) { |corrector| corrector.remove(range) }
|
166
158
|
end
|
167
159
|
end
|
168
160
|
end
|
@@ -47,8 +47,7 @@ module RuboCop
|
|
47
47
|
space_on_both_sides = space_on_both_sides?(arg, equals)
|
48
48
|
no_surrounding_space = no_surrounding_space?(arg, equals)
|
49
49
|
|
50
|
-
if style == :space && space_on_both_sides ||
|
51
|
-
style == :no_space && no_surrounding_space
|
50
|
+
if style == :space && space_on_both_sides || style == :no_space && no_surrounding_space
|
52
51
|
correct_style_detected
|
53
52
|
else
|
54
53
|
incorrect_style_detected(arg, value)
|
@@ -33,10 +33,8 @@ module RuboCop
|
|
33
33
|
DO = 'do'
|
34
34
|
SAFE_NAVIGATION = '&.'
|
35
35
|
NAMESPACE_OPERATOR = '::'
|
36
|
-
ACCEPT_LEFT_PAREN =
|
37
|
-
|
38
|
-
ACCEPT_LEFT_SQUARE_BRACKET =
|
39
|
-
%w[super yield].freeze
|
36
|
+
ACCEPT_LEFT_PAREN = %w[break defined? next not rescue return super yield].freeze
|
37
|
+
ACCEPT_LEFT_SQUARE_BRACKET = %w[super yield].freeze
|
40
38
|
ACCEPT_NAMESPACE_OPERATOR = 'super'
|
41
39
|
|
42
40
|
def on_and(node)
|
@@ -194,8 +192,7 @@ module RuboCop
|
|
194
192
|
|
195
193
|
return false if accepted_opening_delimiter?(range, char)
|
196
194
|
return false if safe_navigation_call?(range, pos)
|
197
|
-
return false if accept_namespace_operator?(range) &&
|
198
|
-
namespace_operator?(range, pos)
|
195
|
+
return false if accept_namespace_operator?(range) && namespace_operator?(range, pos)
|
199
196
|
|
200
197
|
!/[\s;,#\\)}\].]/.match?(char)
|
201
198
|
end
|
@@ -92,9 +92,7 @@ module RuboCop
|
|
92
92
|
if node.setter_method?
|
93
93
|
on_special_asgn(node)
|
94
94
|
elsif regular_operator?(node)
|
95
|
-
check_operator(:send,
|
96
|
-
node.loc.selector,
|
97
|
-
node.first_argument.source_range)
|
95
|
+
check_operator(:send, node.loc.selector, node.first_argument.source_range)
|
98
96
|
end
|
99
97
|
end
|
100
98
|
|
@@ -138,13 +136,11 @@ module RuboCop
|
|
138
136
|
private
|
139
137
|
|
140
138
|
def regular_operator?(send_node)
|
141
|
-
!send_node.unary_operation? && !send_node.dot? &&
|
142
|
-
operator_with_regular_syntax?(send_node)
|
139
|
+
!send_node.unary_operation? && !send_node.dot? && operator_with_regular_syntax?(send_node)
|
143
140
|
end
|
144
141
|
|
145
142
|
def operator_with_regular_syntax?(send_node)
|
146
|
-
send_node.operator_method? &&
|
147
|
-
!IRREGULAR_METHODS.include?(send_node.method_name)
|
143
|
+
send_node.operator_method? && !IRREGULAR_METHODS.include?(send_node.method_name)
|
148
144
|
end
|
149
145
|
|
150
146
|
def check_operator(type, operator, right_operand)
|
@@ -225,8 +221,7 @@ module RuboCop
|
|
225
221
|
end
|
226
222
|
|
227
223
|
def hash_table_style?
|
228
|
-
align_hash_cop_config &&
|
229
|
-
align_hash_cop_config['EnforcedHashRocketStyle'] == 'table'
|
224
|
+
align_hash_cop_config && align_hash_cop_config['EnforcedHashRocketStyle'] == 'table'
|
230
225
|
end
|
231
226
|
|
232
227
|
def space_around_exponent_operator?
|
@@ -136,8 +136,7 @@ module RuboCop
|
|
136
136
|
end
|
137
137
|
|
138
138
|
def conflict_with_block_delimiters?(node)
|
139
|
-
block_delimiters_style == 'line_count_based' &&
|
140
|
-
style == :no_space && node.multiline?
|
139
|
+
block_delimiters_style == 'line_count_based' && style == :no_space && node.multiline?
|
141
140
|
end
|
142
141
|
|
143
142
|
def block_delimiters_style
|
@@ -26,23 +26,18 @@ module RuboCop
|
|
26
26
|
include RangeHelp
|
27
27
|
extend AutoCorrector
|
28
28
|
|
29
|
-
MSG = 'Put one space between the method name and '
|
30
|
-
'the first argument.'
|
29
|
+
MSG = 'Put one space between the method name and the first argument.'
|
31
30
|
|
32
31
|
def on_send(node)
|
33
32
|
return unless regular_method_call_with_arguments?(node)
|
34
33
|
|
35
34
|
first_arg = node.first_argument.source_range
|
36
|
-
first_arg_with_space = range_with_surrounding_space(range: first_arg,
|
37
|
-
|
38
|
-
space = range_between(first_arg_with_space.begin_pos,
|
39
|
-
first_arg.begin_pos)
|
35
|
+
first_arg_with_space = range_with_surrounding_space(range: first_arg, side: :left)
|
36
|
+
space = range_between(first_arg_with_space.begin_pos, first_arg.begin_pos)
|
40
37
|
return if space.length == 1
|
41
38
|
return unless expect_params_after_method_name?(node)
|
42
39
|
|
43
|
-
add_offense(space)
|
44
|
-
corrector.replace(space, ' ')
|
45
|
-
end
|
40
|
+
add_offense(space) { |corrector| corrector.replace(space, ' ') }
|
46
41
|
end
|
47
42
|
alias on_csend on_send
|
48
43
|
|
@@ -59,8 +54,7 @@ module RuboCop
|
|
59
54
|
first_arg = node.first_argument
|
60
55
|
|
61
56
|
same_line?(first_arg, node) &&
|
62
|
-
!(allow_for_alignment? &&
|
63
|
-
aligned_with_something?(first_arg.source_range))
|
57
|
+
!(allow_for_alignment? && aligned_with_something?(first_arg.source_range))
|
64
58
|
end
|
65
59
|
|
66
60
|
def no_space_between_method_name_and_first_argument?(node)
|
@@ -24,10 +24,8 @@ module RuboCop
|
|
24
24
|
include RangeHelp
|
25
25
|
extend AutoCorrector
|
26
26
|
|
27
|
-
MSG_REQUIRE_SPACE = 'Use a space between `->` and '
|
28
|
-
|
29
|
-
MSG_REQUIRE_NO_SPACE = 'Do not use spaces between `->` and ' \
|
30
|
-
'`(` in lambda literals.'
|
27
|
+
MSG_REQUIRE_SPACE = 'Use a space between `->` and `(` in lambda literals.'
|
28
|
+
MSG_REQUIRE_NO_SPACE = 'Do not use spaces between `->` and `(` in lambda literals.'
|
31
29
|
|
32
30
|
def on_send(node)
|
33
31
|
return unless arrow_lambda_with_args?(node)
|
@@ -142,11 +142,9 @@ module RuboCop
|
|
142
142
|
case style
|
143
143
|
when :no_space
|
144
144
|
start_ok = next_to_comment?(node, left)
|
145
|
-
no_space_offenses(node, left, right, MSG, start_ok: start_ok,
|
146
|
-
end_ok: end_ok)
|
145
|
+
no_space_offenses(node, left, right, MSG, start_ok: start_ok, end_ok: end_ok)
|
147
146
|
when :space
|
148
|
-
space_offenses(node, left, right, MSG, start_ok: start_ok,
|
149
|
-
end_ok: end_ok)
|
147
|
+
space_offenses(node, left, right, MSG, start_ok: start_ok, end_ok: end_ok)
|
150
148
|
else
|
151
149
|
compact_offenses(node, left, right, start_ok, end_ok)
|
152
150
|
end
|
@@ -160,21 +158,18 @@ module RuboCop
|
|
160
158
|
if qualifies_for_compact?(node, left, side: :left)
|
161
159
|
compact_offense(node, left, side: :left)
|
162
160
|
elsif !multi_dimensional_array?(node, left, side: :left)
|
163
|
-
space_offenses(node, left, nil, MSG, start_ok: start_ok,
|
164
|
-
end_ok: true)
|
161
|
+
space_offenses(node, left, nil, MSG, start_ok: start_ok, end_ok: true)
|
165
162
|
end
|
166
163
|
if qualifies_for_compact?(node, right)
|
167
164
|
compact_offense(node, right)
|
168
165
|
elsif !multi_dimensional_array?(node, right)
|
169
|
-
space_offenses(node, nil, right, MSG, start_ok: true,
|
170
|
-
end_ok: end_ok)
|
166
|
+
space_offenses(node, nil, right, MSG, start_ok: true, end_ok: end_ok)
|
171
167
|
end
|
172
168
|
end
|
173
169
|
|
174
170
|
def qualifies_for_compact?(node, token, side: :right)
|
175
171
|
if side == :right
|
176
|
-
multi_dimensional_array?(node, token) &&
|
177
|
-
!next_to_bracket?(token)
|
172
|
+
multi_dimensional_array?(node, token) && !next_to_bracket?(token)
|
178
173
|
else
|
179
174
|
multi_dimensional_array?(node, token, side: :left) &&
|
180
175
|
!next_to_bracket?(token, side: :left)
|
@@ -18,8 +18,7 @@ module RuboCop
|
|
18
18
|
extend AutoCorrector
|
19
19
|
|
20
20
|
MSG = 'Use only a single space inside array percent literal.'
|
21
|
-
MULTIPLE_SPACES_BETWEEN_ITEMS_REGEX =
|
22
|
-
/(?:[\S&&[^\\]](?:\\ )*)( {2,})(?=\S)/.freeze
|
21
|
+
MULTIPLE_SPACES_BETWEEN_ITEMS_REGEX = /(?:[\S&&[^\\]](?:\\ )*)( {2,})(?=\S)/.freeze
|
23
22
|
|
24
23
|
def on_array(node)
|
25
24
|
process(node, '%i', '%I', '%w', '%W')
|
@@ -36,11 +35,7 @@ module RuboCop
|
|
36
35
|
private
|
37
36
|
|
38
37
|
def each_unnecessary_space_match(node, &blk)
|
39
|
-
each_match_range(
|
40
|
-
contents_range(node),
|
41
|
-
MULTIPLE_SPACES_BETWEEN_ITEMS_REGEX,
|
42
|
-
&blk
|
43
|
-
)
|
38
|
+
each_match_range(contents_range(node), MULTIPLE_SPACES_BETWEEN_ITEMS_REGEX, &blk)
|
44
39
|
end
|
45
40
|
end
|
46
41
|
end
|
@@ -129,8 +129,7 @@ module RuboCop
|
|
129
129
|
args_delimiter = node.arguments.loc.begin # Can be ( | or nil.
|
130
130
|
|
131
131
|
check_left_brace(inner, node.loc.begin, args_delimiter)
|
132
|
-
check_right_brace(inner, node.loc.begin, node.loc.end,
|
133
|
-
node.single_line?)
|
132
|
+
check_right_brace(inner, node.loc.begin, node.loc.end, node.single_line?)
|
134
133
|
end
|
135
134
|
|
136
135
|
def check_left_brace(inner, left_brace, args_delimiter)
|
@@ -143,8 +142,7 @@ module RuboCop
|
|
143
142
|
|
144
143
|
def check_right_brace(inner, left_brace, right_brace, single_line)
|
145
144
|
if single_line && /\S$/.match?(inner)
|
146
|
-
no_space(right_brace.begin_pos, right_brace.end_pos,
|
147
|
-
'Space missing inside }.')
|
145
|
+
no_space(right_brace.begin_pos, right_brace.end_pos, 'Space missing inside }.')
|
148
146
|
else
|
149
147
|
return if multiline_block?(left_brace, right_brace) &&
|
150
148
|
aligned_braces?(left_brace, right_brace)
|
@@ -174,8 +172,7 @@ module RuboCop
|
|
174
172
|
# We indicate the position after the left brace. Otherwise it's
|
175
173
|
# difficult to distinguish between space missing to the left and to
|
176
174
|
# the right of the brace in autocorrect.
|
177
|
-
no_space(left_brace.end_pos, left_brace.end_pos + 1,
|
178
|
-
'Space missing inside {.')
|
175
|
+
no_space(left_brace.end_pos, left_brace.end_pos + 1, 'Space missing inside {.')
|
179
176
|
end
|
180
177
|
end
|
181
178
|
|
@@ -188,8 +185,7 @@ module RuboCop
|
|
188
185
|
'Space between { and | detected.')
|
189
186
|
end
|
190
187
|
else
|
191
|
-
brace_with_space = range_with_surrounding_space(range: left_brace,
|
192
|
-
side: :right)
|
188
|
+
brace_with_space = range_with_surrounding_space(range: left_brace, side: :right)
|
193
189
|
space(brace_with_space.begin_pos + 1, brace_with_space.end_pos,
|
194
190
|
'Space inside { detected.')
|
195
191
|
end
|
@@ -200,8 +196,7 @@ module RuboCop
|
|
200
196
|
end
|
201
197
|
|
202
198
|
def space_inside_right_brace(right_brace)
|
203
|
-
brace_with_space = range_with_surrounding_space(range: right_brace,
|
204
|
-
side: :left)
|
199
|
+
brace_with_space = range_with_surrounding_space(range: right_brace, side: :left)
|
205
200
|
space(brace_with_space.begin_pos, brace_with_space.end_pos - 1,
|
206
201
|
'Space inside } detected.')
|
207
202
|
end
|
@@ -90,8 +90,7 @@ module RuboCop
|
|
90
90
|
expect_space = expect_space?(token1, token2)
|
91
91
|
|
92
92
|
if offense?(token1, expect_space)
|
93
|
-
incorrect_style_detected(token1, token2,
|
94
|
-
expect_space, is_empty_braces)
|
93
|
+
incorrect_style_detected(token1, token2, expect_space, is_empty_braces)
|
95
94
|
else
|
96
95
|
correct_style_detected
|
97
96
|
end
|
@@ -107,8 +107,7 @@ module RuboCop
|
|
107
107
|
current_token = tokens.reverse.find(&:left_ref_bracket?)
|
108
108
|
previous_token = previous_token(current_token)
|
109
109
|
|
110
|
-
if node.method?(:[]=) ||
|
111
|
-
previous_token && !previous_token.right_bracket?
|
110
|
+
if node.method?(:[]=) || previous_token && !previous_token.right_bracket?
|
112
111
|
tokens.find(&:left_ref_bracket?)
|
113
112
|
else
|
114
113
|
current_token
|
@@ -11,11 +11,7 @@ module RuboCop
|
|
11
11
|
end
|
12
12
|
|
13
13
|
def <<(callable)
|
14
|
-
suppress_clobbering
|
15
|
-
@corrector.transaction do
|
16
|
-
callable.call(@corrector)
|
17
|
-
end
|
18
|
-
end
|
14
|
+
suppress_clobbering { @corrector.transaction { callable.call(@corrector) } }
|
19
15
|
end
|
20
16
|
|
21
17
|
def empty?
|
@@ -24,9 +20,7 @@ module RuboCop
|
|
24
20
|
|
25
21
|
def concat(corrections)
|
26
22
|
if corrections.is_a?(CorrectionsProxy)
|
27
|
-
suppress_clobbering
|
28
|
-
corrector.merge!(corrections.corrector)
|
29
|
-
end
|
23
|
+
suppress_clobbering { corrector.merge!(corrections.corrector) }
|
30
24
|
else
|
31
25
|
corrections.each { |correction| self << correction }
|
32
26
|
end
|
@@ -25,12 +25,7 @@ module RuboCop
|
|
25
25
|
|
26
26
|
SIMPLE_ASSIGNMENT_TYPES = %i[lvasgn ivasgn cvasgn gvasgn casgn].freeze
|
27
27
|
|
28
|
-
MISTAKES = {
|
29
|
-
'=-' => '-=',
|
30
|
-
'=+' => '+=',
|
31
|
-
'=*' => '*=',
|
32
|
-
'=!' => '!='
|
33
|
-
}.freeze
|
28
|
+
MISTAKES = { '=-' => '-=', '=+' => '+=', '=*' => '*=', '=!' => '!=' }.freeze
|
34
29
|
|
35
30
|
def on_asgn(node)
|
36
31
|
return unless (rhs = rhs(node))
|
@@ -6,6 +6,8 @@ module RuboCop
|
|
6
6
|
# This cop checks for ambiguous block association with method
|
7
7
|
# when param passed without parentheses.
|
8
8
|
#
|
9
|
+
# This cop can customize ignored methods with `IgnoredMethods`.
|
10
|
+
#
|
9
11
|
# @example
|
10
12
|
#
|
11
13
|
# # bad
|
@@ -26,7 +28,14 @@ module RuboCop
|
|
26
28
|
# # good
|
27
29
|
# # Lambda arguments require no disambiguation
|
28
30
|
# foo = ->(bar) { bar.baz }
|
31
|
+
#
|
32
|
+
# @example IgnoredMethods: [change]
|
33
|
+
#
|
34
|
+
# # good
|
35
|
+
# expect { do_something }.to change { object.attribute }
|
29
36
|
class AmbiguousBlockAssociation < Base
|
37
|
+
include IgnoredMethods
|
38
|
+
|
30
39
|
MSG = 'Parenthesize the param `%<param>s` to make sure that the ' \
|
31
40
|
'block will be associated with the `%<method>s` method ' \
|
32
41
|
'call.'
|
@@ -35,8 +44,7 @@ module RuboCop
|
|
35
44
|
return unless node.arguments?
|
36
45
|
|
37
46
|
return unless ambiguous_block_association?(node)
|
38
|
-
return if node.parenthesized? ||
|
39
|
-
node.last_argument.lambda? || allowed_method?(node)
|
47
|
+
return if node.parenthesized? || node.last_argument.lambda? || allowed_method?(node)
|
40
48
|
|
41
49
|
message = message(node)
|
42
50
|
|
@@ -47,19 +55,18 @@ module RuboCop
|
|
47
55
|
private
|
48
56
|
|
49
57
|
def ambiguous_block_association?(send_node)
|
50
|
-
send_node.last_argument.block_type? &&
|
51
|
-
!send_node.last_argument.send_node.arguments?
|
58
|
+
send_node.last_argument.block_type? && !send_node.last_argument.send_node.arguments?
|
52
59
|
end
|
53
60
|
|
54
61
|
def allowed_method?(node)
|
55
|
-
node.assignment? || node.operator_method? || node.method?(:[])
|
62
|
+
node.assignment? || node.operator_method? || node.method?(:[]) ||
|
63
|
+
ignored_method?(node.last_argument.send_node.source)
|
56
64
|
end
|
57
65
|
|
58
66
|
def message(send_node)
|
59
67
|
block_param = send_node.last_argument
|
60
68
|
|
61
|
-
format(MSG, param: block_param.source,
|
62
|
-
method: block_param.send_node.source)
|
69
|
+
format(MSG, param: block_param.source, method: block_param.send_node.source)
|
63
70
|
end
|
64
71
|
end
|
65
72
|
end
|