rubocop 1.12.1 → 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 +2 -5
- 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 +4 -10
- 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 +1 -2
- 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/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 -17
- 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 +1 -3
- data/lib/rubocop/cop/style/accessor_grouping.rb +1 -3
- data/lib/rubocop/cop/style/alias.rb +5 -12
- 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 +2 -8
- 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 -8
- data/lib/rubocop/cop/style/guard_clause.rb +3 -7
- data/lib/rubocop/cop/style/hash_conversion.rb +28 -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 +1 -1
- data/lib/rubocop/cop/style/method_call_with_args_parentheses/omit_parentheses.rb +7 -13
- 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 +1 -3
- 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 +4 -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 +15 -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 +4 -10
- 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/file_finder.rb +1 -3
- 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/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
@@ -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
|
@@ -76,8 +75,6 @@ module RuboCop
|
|
76
75
|
alias on_defs on_def
|
77
76
|
|
78
77
|
def on_block(node)
|
79
|
-
return if target_ruby_version < 2.5
|
80
|
-
|
81
78
|
return if node.send_node.lambda_literal?
|
82
79
|
return if node.braces?
|
83
80
|
return unless node.body&.kwbegin_type?
|
@@ -112,7 +109,10 @@ module RuboCop
|
|
112
109
|
def replace_begin_with_statement(corrector, offense_range, node)
|
113
110
|
first_child = node.children.first
|
114
111
|
|
115
|
-
|
112
|
+
source = first_child.source
|
113
|
+
source = "(#{source})" if first_child.if_type?
|
114
|
+
|
115
|
+
corrector.replace(offense_range, source)
|
116
116
|
corrector.remove(range_between(offense_range.end_pos, first_child.source_range.end_pos))
|
117
117
|
|
118
118
|
restore_removed_comments(corrector, offense_range, node, first_child)
|
@@ -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 = ''
|
@@ -73,11 +73,10 @@ module RuboCop
|
|
73
73
|
end
|
74
74
|
if return_node.splat_argument?
|
75
75
|
first_argument = return_node.first_argument
|
76
|
-
corrector.replace(first_argument, first_argument.source.
|
76
|
+
corrector.replace(first_argument, first_argument.source.delete_prefix('*'))
|
77
77
|
end
|
78
78
|
|
79
|
-
keyword = range_with_surrounding_space(range: return_node.loc.keyword,
|
80
|
-
side: :right)
|
79
|
+
keyword = range_with_surrounding_space(range: return_node.loc.keyword, side: :right)
|
81
80
|
corrector.remove(keyword)
|
82
81
|
end
|
83
82
|
|
@@ -113,8 +112,7 @@ module RuboCop
|
|
113
112
|
# rubocop:enable Metrics/CyclomaticComplexity
|
114
113
|
|
115
114
|
def check_return_node(node)
|
116
|
-
return if cop_config['AllowMultipleReturnValues'] &&
|
117
|
-
node.children.size > 1
|
115
|
+
return if cop_config['AllowMultipleReturnValues'] && node.children.size > 1
|
118
116
|
|
119
117
|
add_offense(node.loc.keyword, message: message(node)) do |corrector|
|
120
118
|
if node.arguments?
|
@@ -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)
|
@@ -160,9 +158,7 @@ module RuboCop
|
|
160
158
|
|
161
159
|
def add_lhs_to_local_variables_scopes(rhs, lhs)
|
162
160
|
if rhs&.send_type? && !rhs.arguments.empty?
|
163
|
-
rhs.arguments.each
|
164
|
-
@local_variables_scopes[argument] << lhs
|
165
|
-
end
|
161
|
+
rhs.arguments.each { |argument| @local_variables_scopes[argument] << lhs }
|
166
162
|
else
|
167
163
|
@local_variables_scopes[rhs] << lhs
|
168
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
|
@@ -107,13 +107,11 @@ module RuboCop
|
|
107
107
|
private
|
108
108
|
|
109
109
|
def allowed_slash_literal?(node)
|
110
|
-
style == :slashes && !contains_disallowed_slash?(node) ||
|
111
|
-
allowed_mixed_slash?(node)
|
110
|
+
style == :slashes && !contains_disallowed_slash?(node) || allowed_mixed_slash?(node)
|
112
111
|
end
|
113
112
|
|
114
113
|
def allowed_mixed_slash?(node)
|
115
|
-
style == :mixed && node.single_line? &&
|
116
|
-
!contains_disallowed_slash?(node)
|
114
|
+
style == :mixed && node.single_line? && !contains_disallowed_slash?(node)
|
117
115
|
end
|
118
116
|
|
119
117
|
def allowed_percent_r_literal?(node)
|
@@ -123,8 +121,7 @@ module RuboCop
|
|
123
121
|
end
|
124
122
|
|
125
123
|
def allowed_mixed_percent_r?(node)
|
126
|
-
style == :mixed && node.multiline? ||
|
127
|
-
contains_disallowed_slash?(node)
|
124
|
+
style == :mixed && node.multiline? || contains_disallowed_slash?(node)
|
128
125
|
end
|
129
126
|
|
130
127
|
def contains_disallowed_slash?(node)
|
@@ -149,8 +146,7 @@ module RuboCop
|
|
149
146
|
end
|
150
147
|
|
151
148
|
def preferred_delimiters
|
152
|
-
config.for_cop('Style/PercentLiteralDelimiters')
|
153
|
-
['PreferredDelimiters']['%r'].chars
|
149
|
+
config.for_cop('Style/PercentLiteralDelimiters') ['PreferredDelimiters']['%r'].chars
|
154
150
|
end
|
155
151
|
|
156
152
|
def correct_delimiters(node, corrector)
|
@@ -76,10 +76,8 @@ module RuboCop
|
|
76
76
|
include RangeHelp
|
77
77
|
extend AutoCorrector
|
78
78
|
|
79
|
-
MSG_IMPLICIT = 'Omit the error class when rescuing '
|
80
|
-
|
81
|
-
MSG_EXPLICIT = 'Avoid rescuing without specifying ' \
|
82
|
-
'an error class.'
|
79
|
+
MSG_IMPLICIT = 'Omit the error class when rescuing `StandardError` by itself.'
|
80
|
+
MSG_EXPLICIT = 'Avoid rescuing without specifying an error class.'
|
83
81
|
|
84
82
|
# @!method rescue_without_error_class?(node)
|
85
83
|
def_node_matcher :rescue_without_error_class?, <<~PATTERN
|
@@ -100,9 +98,7 @@ module RuboCop
|
|
100
98
|
offense_for_implicit_enforced_style(node, error)
|
101
99
|
end
|
102
100
|
when :explicit
|
103
|
-
rescue_without_error_class?(node)
|
104
|
-
offense_for_exlicit_enforced_style(node)
|
105
|
-
end
|
101
|
+
rescue_without_error_class?(node) { offense_for_exlicit_enforced_style(node) }
|
106
102
|
end
|
107
103
|
end
|
108
104
|
|
@@ -74,8 +74,7 @@ module RuboCop
|
|
74
74
|
end
|
75
75
|
|
76
76
|
def correct_style?(node)
|
77
|
-
style == :return && !return_nil_node?(node) ||
|
78
|
-
style == :return_nil && !return_node?(node)
|
77
|
+
style == :return && !return_nil_node?(node) || style == :return_nil && !return_node?(node)
|
79
78
|
end
|
80
79
|
|
81
80
|
def scoped_node?(node)
|
@@ -69,8 +69,7 @@ module RuboCop
|
|
69
69
|
|
70
70
|
MSG = 'Use safe navigation (`&.`) instead of checking if an object ' \
|
71
71
|
'exists before calling the method.'
|
72
|
-
LOGIC_JUMP_KEYWORDS = %i[break fail next raise
|
73
|
-
return throw yield].freeze
|
72
|
+
LOGIC_JUMP_KEYWORDS = %i[break fail next raise return throw yield].freeze
|
74
73
|
|
75
74
|
# if format: (if checked_variable body nil)
|
76
75
|
# unless format: (if checked_variable nil body)
|
@@ -112,9 +111,7 @@ module RuboCop
|
|
112
111
|
return if unsafe_method_used?(method_chain, method)
|
113
112
|
return if method_chain.method?(:empty?)
|
114
113
|
|
115
|
-
add_offense(node)
|
116
|
-
autocorrect(corrector, node)
|
117
|
-
end
|
114
|
+
add_offense(node) { |corrector| autocorrect(corrector, node) }
|
118
115
|
end
|
119
116
|
|
120
117
|
def use_var_only_in_unless_modifier?(node, variable)
|
@@ -139,8 +136,7 @@ module RuboCop
|
|
139
136
|
comments = comments(node)
|
140
137
|
return if comments.empty?
|
141
138
|
|
142
|
-
corrector.insert_before(method_call,
|
143
|
-
"#{comments.map(&:text).join("\n")}\n")
|
139
|
+
corrector.insert_before(method_call, "#{comments.map(&:text).join("\n")}\n")
|
144
140
|
end
|
145
141
|
|
146
142
|
def comments(node)
|
@@ -181,11 +177,9 @@ module RuboCop
|
|
181
177
|
end
|
182
178
|
|
183
179
|
def extract_parts_from_if(node)
|
184
|
-
variable, receiver =
|
185
|
-
modifier_if_safe_navigation_candidate(node)
|
180
|
+
variable, receiver = modifier_if_safe_navigation_candidate(node)
|
186
181
|
|
187
|
-
checked_variable, matching_receiver, method =
|
188
|
-
extract_common_parts(receiver, variable)
|
182
|
+
checked_variable, matching_receiver, method = extract_common_parts(receiver, variable)
|
189
183
|
|
190
184
|
matching_receiver = nil if receiver && LOGIC_JUMP_KEYWORDS.include?(receiver.type)
|
191
185
|
|
@@ -195,18 +189,15 @@ module RuboCop
|
|
195
189
|
def extract_parts_from_and(node)
|
196
190
|
checked_variable, rhs = *node
|
197
191
|
if cop_config['ConvertCodeThatCanStartToReturnNil']
|
198
|
-
checked_variable =
|
199
|
-
not_nil_check?(checked_variable) || checked_variable
|
192
|
+
checked_variable = not_nil_check?(checked_variable) || checked_variable
|
200
193
|
end
|
201
194
|
|
202
|
-
checked_variable, matching_receiver, method =
|
203
|
-
extract_common_parts(rhs, checked_variable)
|
195
|
+
checked_variable, matching_receiver, method = extract_common_parts(rhs, checked_variable)
|
204
196
|
[checked_variable, matching_receiver, rhs, method]
|
205
197
|
end
|
206
198
|
|
207
199
|
def extract_common_parts(method_chain, checked_variable)
|
208
|
-
matching_receiver =
|
209
|
-
find_matching_receiver_invocation(method_chain, checked_variable)
|
200
|
+
matching_receiver = find_matching_receiver_invocation(method_chain, checked_variable)
|
210
201
|
|
211
202
|
method = matching_receiver.parent if matching_receiver
|
212
203
|
|
@@ -264,13 +255,11 @@ module RuboCop
|
|
264
255
|
end
|
265
256
|
|
266
257
|
def begin_range(node, method_call)
|
267
|
-
range_between(node.loc.expression.begin_pos,
|
268
|
-
method_call.loc.expression.begin_pos)
|
258
|
+
range_between(node.loc.expression.begin_pos, method_call.loc.expression.begin_pos)
|
269
259
|
end
|
270
260
|
|
271
261
|
def end_range(node, method_call)
|
272
|
-
range_between(method_call.loc.expression.end_pos,
|
273
|
-
node.loc.expression.end_pos)
|
262
|
+
range_between(method_call.loc.expression.end_pos, node.loc.expression.end_pos)
|
274
263
|
end
|
275
264
|
|
276
265
|
def add_safe_nav_to_all_methods_in_chain(corrector,
|