rubocop 1.12.1 → 1.16.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/README.md +5 -2
- data/config/default.yml +78 -8
- data/exe/rubocop +1 -3
- data/lib/rubocop.rb +10 -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 +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 +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 +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 +1 -2
- data/lib/rubocop/cop/layout/argument_alignment.rb +30 -14
- 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 +57 -11
- 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 +14 -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 +36 -15
- 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 +6 -4
- 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 +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 +19 -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_in_pattern.rb +62 -0
- 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 +2 -3
- 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 +18 -27
- 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 +4 -16
- 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 +2 -4
- data/lib/rubocop/cop/mixin/check_line_breakable.rb +19 -3
- 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 +7 -7
- data/lib/rubocop/cop/mixin/gem_declaration.rb +13 -0
- data/lib/rubocop/cop/mixin/hash_alignment_styles.rb +17 -9
- 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/string_literals_help.rb +3 -5
- data/lib/rubocop/cop/mixin/symbol_help.rb +13 -0
- 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 +19 -10
- 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 +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 +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 +19 -3
- 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 +27 -8
- data/lib/rubocop/cop/style/if_unless_modifier.rb +40 -13
- data/lib/rubocop/cop/style/in_pattern_then.rb +56 -0
- 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 -12
- 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_in_pattern_then.rb +62 -0
- 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/multiline_when_then.rb +2 -11
- 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 +17 -9
- 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/quoted_symbols.rb +110 -0
- 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 +25 -7
- 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 +20 -4
- data/lib/rubocop/cop/style/sole_nested_conditional.rb +15 -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 +2 -1
- data/lib/rubocop/cop/style/string_concatenation.rb +8 -10
- data/lib/rubocop/cop/style/string_literals.rb +3 -5
- data/lib/rubocop/cop/style/string_literals_in_interpolation.rb +1 -0
- 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/top_level_method_definition.rb +83 -0
- 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 +67 -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 +4 -2
- 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 +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 +5 -1
- 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 +23 -14
- data/lib/rubocop/formatter/progress_formatter.rb +1 -3
- 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 +18 -16
- data/lib/rubocop/target_ruby.rb +4 -8
- data/lib/rubocop/version.rb +1 -1
- metadata +16 -7
- data/lib/rubocop/core_ext/hash.rb +0 -20
@@ -62,9 +62,7 @@ module RuboCop
|
|
62
62
|
referenced_after_loop?(var, range)
|
63
63
|
end
|
64
64
|
|
65
|
-
add_offense(node.loc.keyword)
|
66
|
-
autocorrect(corrector, node)
|
67
|
-
end
|
65
|
+
add_offense(node.loc.keyword) { |corrector| autocorrect(corrector, node) }
|
68
66
|
end
|
69
67
|
|
70
68
|
def autocorrect(corrector, node)
|
@@ -107,8 +105,7 @@ module RuboCop
|
|
107
105
|
else
|
108
106
|
indentation = body.source_range.source_line[LEADING_SPACE]
|
109
107
|
|
110
|
-
['loop do', body.source.gsub(/^/, configured_indent),
|
111
|
-
'end'].join("\n#{indentation}")
|
108
|
+
['loop do', body.source.gsub(/^/, configured_indent), 'end'].join("\n#{indentation}")
|
112
109
|
end
|
113
110
|
end
|
114
111
|
|
@@ -136,8 +136,7 @@ module RuboCop
|
|
136
136
|
end
|
137
137
|
|
138
138
|
def inverse_blocks
|
139
|
-
@inverse_blocks ||= cop_config['InverseBlocks']
|
140
|
-
.merge(cop_config['InverseBlocks'].invert)
|
139
|
+
@inverse_blocks ||= cop_config['InverseBlocks'].merge(cop_config['InverseBlocks'].invert)
|
141
140
|
end
|
142
141
|
|
143
142
|
def negated?(node)
|
@@ -160,9 +159,7 @@ module RuboCop
|
|
160
159
|
# `Integer > Numeric`.
|
161
160
|
def possible_class_hierarchy_check?(lhs, rhs, method)
|
162
161
|
CLASS_COMPARISON_METHODS.include?(method) &&
|
163
|
-
(camel_case_constant?(lhs) ||
|
164
|
-
(rhs.size == 1 &&
|
165
|
-
camel_case_constant?(rhs.first)))
|
162
|
+
(camel_case_constant?(lhs) || (rhs.size == 1 && camel_case_constant?(rhs.first)))
|
166
163
|
end
|
167
164
|
|
168
165
|
def camel_case_constant?(node)
|
@@ -174,8 +171,7 @@ module RuboCop
|
|
174
171
|
end
|
175
172
|
|
176
173
|
def remove_end_parenthesis(corrector, node, method, method_call)
|
177
|
-
return unless EQUALITY_METHODS.include?(method) ||
|
178
|
-
method_call.parent.begin_type?
|
174
|
+
return unless EQUALITY_METHODS.include?(method) || method_call.parent.begin_type?
|
179
175
|
|
180
176
|
corrector.remove(end_parentheses(node, method_call))
|
181
177
|
end
|
@@ -67,8 +67,7 @@ module RuboCop
|
|
67
67
|
|
68
68
|
def starts_with_hex_or_colon?(str)
|
69
69
|
first_char = str[0].ord
|
70
|
-
(48..58).cover?(first_char) || (65..70).cover?(first_char) ||
|
71
|
-
(97..102).cover?(first_char)
|
70
|
+
(48..58).cover?(first_char) || (65..70).cover?(first_char) || (97..102).cover?(first_char)
|
72
71
|
end
|
73
72
|
end
|
74
73
|
end
|
@@ -50,10 +50,8 @@ module RuboCop
|
|
50
50
|
include ConfigurableEnforcedStyle
|
51
51
|
extend AutoCorrector
|
52
52
|
|
53
|
-
LITERAL_MESSAGE = 'Use the `-> { ... }` lambda literal syntax for '
|
54
|
-
|
55
|
-
METHOD_MESSAGE = 'Use the `lambda` method for %<modifier>s ' \
|
56
|
-
'lambdas.'
|
53
|
+
LITERAL_MESSAGE = 'Use the `-> { ... }` lambda literal syntax for %<modifier>s lambdas.'
|
54
|
+
METHOD_MESSAGE = 'Use the `lambda` method for %<modifier>s lambdas.'
|
57
55
|
|
58
56
|
OFFENDING_SELECTORS = {
|
59
57
|
style: {
|
@@ -23,14 +23,12 @@ module RuboCop
|
|
23
23
|
include RangeHelp
|
24
24
|
extend AutoCorrector
|
25
25
|
|
26
|
-
MSG = 'Use `\\` instead of `+` or `<<` to concatenate '
|
27
|
-
'those strings.'
|
26
|
+
MSG = 'Use `\\` instead of `+` or `<<` to concatenate those strings.'
|
28
27
|
CONCAT_TOKEN_TYPES = %i[tPLUS tLSHFT].freeze
|
29
28
|
SIMPLE_STRING_TOKEN_TYPE = :tSTRING
|
30
29
|
COMPLEX_STRING_BEGIN_TOKEN = :tSTRING_BEG
|
31
30
|
COMPLEX_STRING_END_TOKEN = :tSTRING_END
|
32
|
-
HIGH_PRECEDENCE_OP_TOKEN_TYPES = %i[tSTAR2 tPERCENT tDOT
|
33
|
-
tLBRACK2].freeze
|
31
|
+
HIGH_PRECEDENCE_OP_TOKEN_TYPES = %i[tSTAR2 tPERCENT tDOT tLBRACK2].freeze
|
34
32
|
QUOTE_DELIMITERS = %w[' "].freeze
|
35
33
|
|
36
34
|
def self.autocorrect_incompatible_with
|
@@ -38,9 +36,7 @@ module RuboCop
|
|
38
36
|
end
|
39
37
|
|
40
38
|
def on_new_investigation
|
41
|
-
processed_source.tokens.each_index
|
42
|
-
check_token_set(index)
|
43
|
-
end
|
39
|
+
processed_source.tokens.each_index { |index| check_token_set(index) }
|
44
40
|
end
|
45
41
|
|
46
42
|
private
|
@@ -56,9 +52,7 @@ module RuboCop
|
|
56
52
|
|
57
53
|
return unless eligible_next_successor?(next_successor)
|
58
54
|
|
59
|
-
add_offense(operator.pos)
|
60
|
-
autocorrect(corrector, operator.pos)
|
61
|
-
end
|
55
|
+
add_offense(operator.pos) { |corrector| autocorrect(corrector, operator.pos) }
|
62
56
|
end
|
63
57
|
|
64
58
|
def autocorrect(corrector, operator_range)
|
@@ -89,8 +83,7 @@ module RuboCop
|
|
89
83
|
end
|
90
84
|
|
91
85
|
def eligible_next_successor?(next_successor)
|
92
|
-
!(next_successor &&
|
93
|
-
HIGH_PRECEDENCE_OP_TOKEN_TYPES.include?(next_successor.type))
|
86
|
+
!(next_successor && HIGH_PRECEDENCE_OP_TOKEN_TYPES.include?(next_successor.type))
|
94
87
|
end
|
95
88
|
|
96
89
|
def eligible_predecessor?(predecessor)
|
@@ -42,7 +42,7 @@ module RuboCop
|
|
42
42
|
|
43
43
|
def inside_endless_method_def?(node)
|
44
44
|
# parens are required around arguments inside an endless method
|
45
|
-
node.each_ancestor(:def).any?(&:endless?) && node.arguments.any?
|
45
|
+
node.each_ancestor(:def, :defs).any?(&:endless?) && node.arguments.any?
|
46
46
|
end
|
47
47
|
|
48
48
|
def syntax_like_method_call?(node)
|
@@ -55,8 +55,7 @@ module RuboCop
|
|
55
55
|
|
56
56
|
def allowed_camel_case_method_call?(node)
|
57
57
|
node.camel_case_method? &&
|
58
|
-
(node.arguments.none? ||
|
59
|
-
cop_config['AllowParenthesesInCamelCaseMethod'])
|
58
|
+
(node.arguments.none? || cop_config['AllowParenthesesInCamelCaseMethod'])
|
60
59
|
end
|
61
60
|
|
62
61
|
def allowed_string_interpolation_method_call?(node)
|
@@ -99,8 +98,7 @@ module RuboCop
|
|
99
98
|
end
|
100
99
|
|
101
100
|
def call_in_optional_arguments?(node)
|
102
|
-
node.parent &&
|
103
|
-
(node.parent.optarg_type? || node.parent.kwoptarg_type?)
|
101
|
+
node.parent && (node.parent.optarg_type? || node.parent.kwoptarg_type?)
|
104
102
|
end
|
105
103
|
|
106
104
|
def call_in_single_line_inheritance?(node)
|
@@ -119,7 +117,7 @@ module RuboCop
|
|
119
117
|
|
120
118
|
def call_with_braced_block?(node)
|
121
119
|
(node.send_type? || node.super_type?) &&
|
122
|
-
node.
|
120
|
+
((node.parent&.block_type? || node.parent&.numblock_type?) && node.parent&.braces?)
|
123
121
|
end
|
124
122
|
|
125
123
|
def call_as_argument_or_chain?(node)
|
@@ -145,13 +143,11 @@ module RuboCop
|
|
145
143
|
previous = node.descendants.first
|
146
144
|
return false unless previous&.send_type?
|
147
145
|
|
148
|
-
previous.parenthesized? ||
|
149
|
-
allowed_chained_call_with_parentheses?(previous)
|
146
|
+
previous.parenthesized? || allowed_chained_call_with_parentheses?(previous)
|
150
147
|
end
|
151
148
|
|
152
149
|
def ambigious_literal?(node)
|
153
|
-
splat?(node) || ternary_if?(node) || regexp_slash_literal?(node) ||
|
154
|
-
unary_literal?(node)
|
150
|
+
splat?(node) || ternary_if?(node) || regexp_slash_literal?(node) || unary_literal?(node)
|
155
151
|
end
|
156
152
|
|
157
153
|
def splat?(node)
|
@@ -180,8 +176,7 @@ module RuboCop
|
|
180
176
|
end
|
181
177
|
|
182
178
|
def assigned_before?(node, target)
|
183
|
-
node.assignment? &&
|
184
|
-
node.loc.operator.begin < target.loc.begin
|
179
|
+
node.assignment? && node.loc.operator.begin < target.loc.begin
|
185
180
|
end
|
186
181
|
|
187
182
|
def inside_string_interpolation?(node)
|
@@ -15,8 +15,7 @@ module RuboCop
|
|
15
15
|
include IgnoredMethods
|
16
16
|
extend AutoCorrector
|
17
17
|
|
18
|
-
MSG = 'Do not use parentheses for method calls with '
|
19
|
-
'no arguments.'
|
18
|
+
MSG = 'Do not use parentheses for method calls with no arguments.'
|
20
19
|
|
21
20
|
def on_send(node)
|
22
21
|
return unless !node.arguments? && node.parenthesized?
|
@@ -40,11 +40,9 @@ module RuboCop
|
|
40
40
|
|
41
41
|
receiver = node.receiver
|
42
42
|
|
43
|
-
return unless receiver&.block_type? &&
|
44
|
-
receiver.loc.end.is?('end')
|
43
|
+
return unless receiver&.block_type? && receiver.loc.end.is?('end')
|
45
44
|
|
46
|
-
range = range_between(receiver.loc.end.begin_pos,
|
47
|
-
node.source_range.end_pos)
|
45
|
+
range = range_between(receiver.loc.end.begin_pos, node.source_range.end_pos)
|
48
46
|
|
49
47
|
add_offense(range)
|
50
48
|
end
|
@@ -93,8 +93,7 @@ module RuboCop
|
|
93
93
|
extend AutoCorrector
|
94
94
|
|
95
95
|
MSG_PRESENT = 'Use def without parentheses.'
|
96
|
-
MSG_MISSING = 'Use def with parentheses when there are '
|
97
|
-
'parameters.'
|
96
|
+
MSG_MISSING = 'Use def with parentheses when there are parameters.'
|
98
97
|
|
99
98
|
def on_def(node)
|
100
99
|
return if node.endless?
|
@@ -124,18 +123,15 @@ module RuboCop
|
|
124
123
|
|
125
124
|
def correct_definition(def_node, corrector)
|
126
125
|
arguments_range = def_node.arguments.source_range
|
127
|
-
args_with_space = range_with_surrounding_space(range: arguments_range,
|
128
|
-
|
129
|
-
leading_space = range_between(args_with_space.begin_pos,
|
130
|
-
arguments_range.begin_pos)
|
126
|
+
args_with_space = range_with_surrounding_space(range: arguments_range, side: :left)
|
127
|
+
leading_space = range_between(args_with_space.begin_pos, arguments_range.begin_pos)
|
131
128
|
corrector.replace(leading_space, '(')
|
132
129
|
corrector.insert_after(arguments_range, ')')
|
133
130
|
end
|
134
131
|
|
135
132
|
def require_parentheses?(args)
|
136
133
|
style == :require_parentheses ||
|
137
|
-
(style == :require_no_parentheses_except_multiline &&
|
138
|
-
args.multiline?)
|
134
|
+
(style == :require_no_parentheses_except_multiline && args.multiline?)
|
139
135
|
end
|
140
136
|
|
141
137
|
def arguments_without_parentheses?(node)
|
@@ -98,10 +98,8 @@ module RuboCop
|
|
98
98
|
include ConfigurableEnforcedStyle
|
99
99
|
|
100
100
|
MSG = '`%<type>s` condition requires an `else`-clause.'
|
101
|
-
MSG_NIL = '`%<type>s` condition requires an `else`-clause with '
|
102
|
-
|
103
|
-
MSG_EMPTY = '`%<type>s` condition requires an empty ' \
|
104
|
-
'`else`-clause.'
|
101
|
+
MSG_NIL = '`%<type>s` condition requires an `else`-clause with `nil` in it.'
|
102
|
+
MSG_EMPTY = '`%<type>s` condition requires an empty `else`-clause.'
|
105
103
|
|
106
104
|
def on_normal_if_unless(node)
|
107
105
|
return if case_style?
|
@@ -22,8 +22,7 @@ module RuboCop
|
|
22
22
|
# end
|
23
23
|
#
|
24
24
|
class MissingRespondToMissing < Base
|
25
|
-
MSG =
|
26
|
-
'When using `method_missing`, define `respond_to_missing?`.'
|
25
|
+
MSG = 'When using `method_missing`, define `respond_to_missing?`.'
|
27
26
|
|
28
27
|
def on_def(node)
|
29
28
|
return unless node.method?(:method_missing)
|
@@ -53,8 +53,7 @@ module RuboCop
|
|
53
53
|
def range_to_remove_for_subsequent_mixin(mixins, node)
|
54
54
|
range = node.loc.expression
|
55
55
|
prev_mixin = mixins.each_cons(2) { |m, n| break m if n == node }
|
56
|
-
between = prev_mixin.loc.expression.end
|
57
|
-
.join(range.begin)
|
56
|
+
between = prev_mixin.loc.expression.end.join(range.begin)
|
58
57
|
# if separated from previous mixin with only whitespace?
|
59
58
|
unless /\S/.match?(between.source)
|
60
59
|
range = range.join(between) # then remove that too
|
@@ -103,12 +102,9 @@ module RuboCop
|
|
103
102
|
end
|
104
103
|
|
105
104
|
def sibling_mixins(send_node)
|
106
|
-
siblings = send_node.parent.each_child_node(:send)
|
107
|
-
.select(&:macro?)
|
105
|
+
siblings = send_node.parent.each_child_node(:send).select(&:macro?)
|
108
106
|
|
109
|
-
siblings.select
|
110
|
-
sibling_node.method?(send_node.method_name)
|
111
|
-
end
|
107
|
+
siblings.select { |sibling_node| sibling_node.method?(send_node.method_name) }
|
112
108
|
end
|
113
109
|
|
114
110
|
def grouped_style?
|
@@ -129,9 +125,7 @@ module RuboCop
|
|
129
125
|
end
|
130
126
|
|
131
127
|
def group_mixins(node, mixins)
|
132
|
-
mixin_names = mixins.reverse.flat_map
|
133
|
-
mixin.arguments.map(&:source)
|
134
|
-
end
|
128
|
+
mixin_names = mixins.reverse.flat_map { |mixin| mixin.arguments.map(&:source) }
|
135
129
|
|
136
130
|
"#{node.method_name} #{mixin_names.join(', ')}"
|
137
131
|
end
|
@@ -41,8 +41,7 @@ module RuboCop
|
|
41
41
|
# prepend M
|
42
42
|
# end
|
43
43
|
class MixinUsage < Base
|
44
|
-
MSG = '`%<statement>s` is used at the top level. Use inside `class` '
|
45
|
-
'or `module`.'
|
44
|
+
MSG = '`%<statement>s` is used at the top level. Use inside `class` or `module`.'
|
46
45
|
RESTRICT_ON_SEND = %i[include extend prepend].freeze
|
47
46
|
|
48
47
|
# @!method include_statement(node)
|
@@ -75,12 +75,9 @@ module RuboCop
|
|
75
75
|
include ConfigurableEnforcedStyle
|
76
76
|
extend AutoCorrector
|
77
77
|
|
78
|
-
MODULE_FUNCTION_MSG =
|
79
|
-
|
80
|
-
|
81
|
-
'Use `extend self` instead of `module_function`.'
|
82
|
-
FORBIDDEN_MSG =
|
83
|
-
'Do not use `module_function` or `extend self`.'
|
78
|
+
MODULE_FUNCTION_MSG = 'Use `module_function` instead of `extend self`.'
|
79
|
+
EXTEND_SELF_MSG = 'Use `extend self` instead of `module_function`.'
|
80
|
+
FORBIDDEN_MSG = 'Do not use `module_function` or `extend self`.'
|
84
81
|
|
85
82
|
# @!method module_function_node?(node)
|
86
83
|
def_node_matcher :module_function_node?, '(send nil? :module_function)'
|
@@ -33,8 +33,7 @@ module RuboCop
|
|
33
33
|
|
34
34
|
next unless receiver&.block_type? && receiver&.multiline?
|
35
35
|
|
36
|
-
range = range_between(receiver.loc.end.begin_pos,
|
37
|
-
node.send_node.source_range.end_pos)
|
36
|
+
range = range_between(receiver.loc.end.begin_pos, node.send_node.source_range.end_pos)
|
38
37
|
|
39
38
|
add_offense(range)
|
40
39
|
|
@@ -0,0 +1,62 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module RuboCop
|
4
|
+
module Cop
|
5
|
+
module Style
|
6
|
+
# This cop checks uses of the `then` keyword in multi-line `in` statement.
|
7
|
+
#
|
8
|
+
# @example
|
9
|
+
# # bad
|
10
|
+
# case expression
|
11
|
+
# in pattern then
|
12
|
+
# end
|
13
|
+
#
|
14
|
+
# # good
|
15
|
+
# case expression
|
16
|
+
# in pattern
|
17
|
+
# end
|
18
|
+
#
|
19
|
+
# # good
|
20
|
+
# case expression
|
21
|
+
# in pattern then do_something
|
22
|
+
# end
|
23
|
+
#
|
24
|
+
# # good
|
25
|
+
# case expression
|
26
|
+
# in pattern then do_something(arg1,
|
27
|
+
# arg2)
|
28
|
+
# end
|
29
|
+
#
|
30
|
+
class MultilineInPatternThen < Base
|
31
|
+
include RangeHelp
|
32
|
+
extend AutoCorrector
|
33
|
+
extend TargetRubyVersion
|
34
|
+
|
35
|
+
minimum_target_ruby_version 2.7
|
36
|
+
|
37
|
+
MSG = 'Do not use `then` for multiline `in` statement.'
|
38
|
+
|
39
|
+
def on_in_pattern(node)
|
40
|
+
return if !node.then? || require_then?(node)
|
41
|
+
|
42
|
+
range = node.loc.begin
|
43
|
+
add_offense(range) do |corrector|
|
44
|
+
corrector.remove(
|
45
|
+
range_with_surrounding_space(range: range, side: :left, newlines: false)
|
46
|
+
)
|
47
|
+
end
|
48
|
+
end
|
49
|
+
|
50
|
+
private
|
51
|
+
|
52
|
+
# Requires `then` for write `in` and its body on the same line.
|
53
|
+
def require_then?(in_pattern_node)
|
54
|
+
return true if in_pattern_node.pattern.first_line != in_pattern_node.pattern.last_line
|
55
|
+
return false unless in_pattern_node.body
|
56
|
+
|
57
|
+
in_pattern_node.loc.line == in_pattern_node.body.loc.line
|
58
|
+
end
|
59
|
+
end
|
60
|
+
end
|
61
|
+
end
|
62
|
+
end
|
@@ -29,9 +29,7 @@ module RuboCop
|
|
29
29
|
return if opening_line(node) == closing_line(node)
|
30
30
|
return if correction_exceeds_max_line_length?(node)
|
31
31
|
|
32
|
-
add_offense(node)
|
33
|
-
autocorrect(corrector, node)
|
34
|
-
end
|
32
|
+
add_offense(node) { |corrector| autocorrect(corrector, node) }
|
35
33
|
end
|
36
34
|
alias on_defs on_def
|
37
35
|
|