rubocop 1.12.0 → 1.16.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 +5 -2
- data/config/default.yml +77 -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 +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 +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 +35 -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 +16 -10
- data/lib/rubocop/cop/layout/multiline_operation_indentation.rb +4 -0
- 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 +4 -5
- data/lib/rubocop/cop/lint/ordered_magic_comments.rb +1 -2
- data/lib/rubocop/cop/lint/out_of_range_regexp_ref.rb +1 -3
- data/lib/rubocop/cop/lint/parentheses_as_grouped_expression.rb +1 -3
- data/lib/rubocop/cop/lint/percent_symbol_array.rb +1 -3
- data/lib/rubocop/cop/lint/raise_exception.rb +1 -2
- data/lib/rubocop/cop/lint/rand_one.rb +1 -2
- data/lib/rubocop/cop/lint/redundant_cop_disable_directive.rb +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 +20 -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 +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 -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/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 +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 +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 +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 +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 -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 +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 +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_in_pattern_then.rb +62 -0
- data/lib/rubocop/cop/style/multiline_method_signature.rb +11 -6
- data/lib/rubocop/cop/style/multiline_ternary_operator.rb +1 -2
- data/lib/rubocop/cop/style/multiple_comparison.rb +2 -4
- data/lib/rubocop/cop/style/mutable_constant.rb +4 -10
- data/lib/rubocop/cop/style/negated_if.rb +1 -2
- data/lib/rubocop/cop/style/negated_if_else_condition.rb +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 +105 -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 +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 +21 -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 +8 -11
- data/lib/rubocop/cop/utils/format_string.rb +1 -3
- data/lib/rubocop/cop/variable_force.rb +6 -15
- data/lib/rubocop/cop/variable_force/assignment.rb +1 -2
- data/lib/rubocop/cop/variable_force/branch.rb +16 -2
- data/lib/rubocop/cop/variable_force/reference.rb +1 -3
- data/lib/rubocop/cop/variable_force/scope.rb +4 -8
- data/lib/rubocop/cop/variable_force/variable.rb +2 -4
- data/lib/rubocop/cops_documentation_generator.rb +7 -21
- data/lib/rubocop/directive_comment.rb +10 -1
- data/lib/rubocop/file_finder.rb +1 -3
- data/lib/rubocop/formatter/clang_style_formatter.rb +4 -2
- data/lib/rubocop/formatter/disabled_config_formatter.rb +3 -8
- data/lib/rubocop/formatter/git_hub_actions_formatter.rb +1 -5
- data/lib/rubocop/formatter/html_formatter.rb +4 -10
- data/lib/rubocop/formatter/json_formatter.rb +1 -5
- data/lib/rubocop/formatter/junit_formatter.rb +23 -14
- data/lib/rubocop/formatter/progress_formatter.rb +1 -3
- data/lib/rubocop/formatter/tap_formatter.rb +4 -2
- data/lib/rubocop/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
@@ -80,25 +80,15 @@ module RuboCop
|
|
80
80
|
:$* => %i[$ARGV ARGV]
|
81
81
|
}
|
82
82
|
|
83
|
-
PERL_VARS =
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
ENGLISH_VARS.flat_map { |_, vs| vs.map { |v| [v, [v]] } }.to_h
|
88
|
-
)
|
89
|
-
PERL_VARS.merge!(
|
90
|
-
PERL_VARS.flat_map { |_, vs| vs.map { |v| [v, [v]] } }.to_h
|
91
|
-
)
|
83
|
+
PERL_VARS = ENGLISH_VARS.flat_map { |k, vs| vs.map { |v| [v, [k]] } }.to_h
|
84
|
+
|
85
|
+
ENGLISH_VARS.merge!(ENGLISH_VARS.flat_map { |_, vs| vs.map { |v| [v, [v]] } }.to_h)
|
86
|
+
PERL_VARS.merge!(PERL_VARS.flat_map { |_, vs| vs.map { |v| [v, [v]] } }.to_h)
|
92
87
|
ENGLISH_VARS.each_value(&:freeze).freeze
|
93
88
|
PERL_VARS.each_value(&:freeze).freeze
|
94
89
|
|
95
90
|
# Anything *not* in this set is provided by the English library.
|
96
|
-
NON_ENGLISH_VARS = Set.new(%i[
|
97
|
-
$LOAD_PATH
|
98
|
-
$LOADED_FEATURES
|
99
|
-
$PROGRAM_NAME
|
100
|
-
ARGV
|
101
|
-
]).freeze
|
91
|
+
NON_ENGLISH_VARS = Set.new(%i[$LOAD_PATH $LOADED_FEATURES $PROGRAM_NAME ARGV]).freeze
|
102
92
|
|
103
93
|
def on_gvar(node)
|
104
94
|
global_var, = *node
|
@@ -120,9 +110,7 @@ module RuboCop
|
|
120
110
|
if style == :use_english_names
|
121
111
|
format_english_message(global_var)
|
122
112
|
else
|
123
|
-
format(MSG_REGULAR,
|
124
|
-
prefer: preferred_names(global_var).first,
|
125
|
-
global: global_var)
|
113
|
+
format(MSG_REGULAR, prefer: preferred_names(global_var).first, global: global_var)
|
126
114
|
end
|
127
115
|
end
|
128
116
|
|
@@ -24,8 +24,7 @@ module RuboCop
|
|
24
24
|
extend AutoCorrector
|
25
25
|
|
26
26
|
MSG_REQUIRE = 'Wrap stabby lambda arguments with parentheses.'
|
27
|
-
MSG_NO_REQUIRE = 'Do not wrap stabby lambda arguments '
|
28
|
-
'with parentheses.'
|
27
|
+
MSG_NO_REQUIRE = 'Do not wrap stabby lambda arguments with parentheses.'
|
29
28
|
def on_send(node)
|
30
29
|
return unless stabby_lambda_with_args?(node)
|
31
30
|
return unless redundant_parentheses?(node) || missing_parentheses?(node)
|
@@ -18,8 +18,7 @@ module RuboCop
|
|
18
18
|
include RangeHelp
|
19
19
|
extend AutoCorrector
|
20
20
|
|
21
|
-
MSG =
|
22
|
-
'Use `warn` instead of `%<bad>s` to allow such output to be disabled.'
|
21
|
+
MSG = 'Use `warn` instead of `%<bad>s` to allow such output to be disabled.'
|
23
22
|
RESTRICT_ON_SEND = %i[puts].freeze
|
24
23
|
|
25
24
|
# @!method stderr_puts?(node)
|
@@ -50,10 +49,7 @@ module RuboCop
|
|
50
49
|
end
|
51
50
|
|
52
51
|
def stderr_puts_range(send)
|
53
|
-
range_between(
|
54
|
-
send.loc.expression.begin_pos,
|
55
|
-
send.loc.selector.end_pos
|
56
|
-
)
|
52
|
+
range_between(send.loc.expression.begin_pos, send.loc.selector.end_pos)
|
57
53
|
end
|
58
54
|
end
|
59
55
|
end
|
@@ -17,6 +17,7 @@ module RuboCop
|
|
17
17
|
# string.chars
|
18
18
|
#
|
19
19
|
class StringChars < Base
|
20
|
+
include RangeHelp
|
20
21
|
extend AutoCorrector
|
21
22
|
|
22
23
|
MSG = 'Use `chars` instead of `%<current>s`.'
|
@@ -26,7 +27,7 @@ module RuboCop
|
|
26
27
|
def on_send(node)
|
27
28
|
return unless node.arguments.one? && BAD_ARGUMENTS.include?(node.first_argument.source)
|
28
29
|
|
29
|
-
range = node.loc.selector.
|
30
|
+
range = range_between(node.loc.selector.begin_pos, node.source_range.end_pos)
|
30
31
|
|
31
32
|
add_offense(range, message: format(MSG, current: range.source)) do |corrector|
|
32
33
|
corrector.replace(range, 'chars')
|
@@ -29,6 +29,7 @@ module RuboCop
|
|
29
29
|
#
|
30
30
|
class StringConcatenation < Base
|
31
31
|
include Util
|
32
|
+
include RangeHelp
|
32
33
|
extend AutoCorrector
|
33
34
|
|
34
35
|
MSG = 'Prefer string interpolation to string concatenation.'
|
@@ -102,10 +103,7 @@ module RuboCop
|
|
102
103
|
end
|
103
104
|
|
104
105
|
def uncorrectable?(part)
|
105
|
-
part.multiline? ||
|
106
|
-
part.dstr_type? ||
|
107
|
-
(part.str_type? && part.heredoc?) ||
|
108
|
-
part.each_descendant(:block).any?
|
106
|
+
part.multiline? || (part.str_type? && part.heredoc?) || part.each_descendant(:block).any?
|
109
107
|
end
|
110
108
|
|
111
109
|
def corrected_ancestor?(node)
|
@@ -115,12 +113,12 @@ module RuboCop
|
|
115
113
|
def replacement(parts)
|
116
114
|
interpolated_parts =
|
117
115
|
parts.map do |part|
|
118
|
-
|
119
|
-
|
120
|
-
|
121
|
-
|
122
|
-
|
123
|
-
|
116
|
+
case part.type
|
117
|
+
when :str
|
118
|
+
value = part.value
|
119
|
+
single_quoted?(part) ? value.gsub(/(\\|")/, '\\\\\&') : value.inspect[1..-2]
|
120
|
+
when :dstr
|
121
|
+
contents_range(part).source
|
124
122
|
else
|
125
123
|
"\#{#{part.source}}"
|
126
124
|
end
|
@@ -29,6 +29,7 @@ module RuboCop
|
|
29
29
|
class StringLiterals < Base
|
30
30
|
include ConfigurableEnforcedStyle
|
31
31
|
include StringLiteralsHelp
|
32
|
+
include StringHelp
|
32
33
|
extend AutoCorrector
|
33
34
|
|
34
35
|
MSG_INCONSISTENT = 'Inconsistent quote style.'
|
@@ -110,8 +111,7 @@ module RuboCop
|
|
110
111
|
if unexpected_single_quotes?(quote)
|
111
112
|
all_children_with_quotes = children.all? { |c| wrong_quotes?(c) }
|
112
113
|
register_offense(node) if all_children_with_quotes
|
113
|
-
elsif unexpected_double_quotes?(quote) &&
|
114
|
-
!accept_child_double_quotes?(children)
|
114
|
+
elsif unexpected_double_quotes?(quote) && !accept_child_double_quotes?(children)
|
115
115
|
register_offense(node)
|
116
116
|
end
|
117
117
|
end
|
@@ -125,9 +125,7 @@ module RuboCop
|
|
125
125
|
end
|
126
126
|
|
127
127
|
def accept_child_double_quotes?(nodes)
|
128
|
-
nodes.any?
|
129
|
-
n.dstr_type? || double_quotes_required?(n.source)
|
130
|
-
end
|
128
|
+
nodes.any? { |n| n.dstr_type? || double_quotes_required?(n.source) }
|
131
129
|
end
|
132
130
|
end
|
133
131
|
end
|
@@ -49,11 +49,19 @@ module RuboCop
|
|
49
49
|
if parent.block_type?
|
50
50
|
corrector.remove(range_with_surrounding_space(range: parent.loc.end, newlines: false))
|
51
51
|
elsif (class_node = parent.parent).body.nil?
|
52
|
-
corrector.remove(
|
52
|
+
corrector.remove(range_for_empty_class_body(class_node, parent))
|
53
53
|
else
|
54
54
|
corrector.insert_after(parent.loc.expression, ' do')
|
55
55
|
end
|
56
56
|
end
|
57
|
+
|
58
|
+
def range_for_empty_class_body(class_node, struct_new)
|
59
|
+
if class_node.single_line?
|
60
|
+
range_between(struct_new.source_range.end_pos, class_node.source_range.end_pos)
|
61
|
+
else
|
62
|
+
range_by_whole_lines(class_node.loc.end, include_final_newline: true)
|
63
|
+
end
|
64
|
+
end
|
57
65
|
end
|
58
66
|
end
|
59
67
|
end
|
@@ -20,9 +20,7 @@ module RuboCop
|
|
20
20
|
def on_sym(node)
|
21
21
|
return unless /\A:["'][A-Za-z_]\w*["']\z/.match?(node.source)
|
22
22
|
|
23
|
-
add_offense(node)
|
24
|
-
corrector.replace(node, node.source.delete(%q('")))
|
25
|
-
end
|
23
|
+
add_offense(node) { |corrector| corrector.replace(node, node.source.delete(%q('"))) }
|
26
24
|
end
|
27
25
|
end
|
28
26
|
end
|
@@ -31,8 +31,7 @@ module RuboCop
|
|
31
31
|
include IgnoredMethods
|
32
32
|
extend AutoCorrector
|
33
33
|
|
34
|
-
MSG = 'Pass `&:%<method>s` as an argument to `%<block_method>s` '
|
35
|
-
'instead of a block.'
|
34
|
+
MSG = 'Pass `&:%<method>s` as an argument to `%<block_method>s` instead of a block.'
|
36
35
|
SUPER_TYPES = %i[super zsuper].freeze
|
37
36
|
|
38
37
|
# @!method proc_node?(node)
|
@@ -81,9 +80,7 @@ module RuboCop
|
|
81
80
|
range = range_between(block_start, block_end)
|
82
81
|
message = format(MSG, method: method_name, block_method: block_method_name)
|
83
82
|
|
84
|
-
add_offense(range, message: message)
|
85
|
-
autocorrect(corrector, node)
|
86
|
-
end
|
83
|
+
add_offense(range, message: message) { |corrector| autocorrect(corrector, node) }
|
87
84
|
end
|
88
85
|
|
89
86
|
def autocorrect(corrector, node)
|
@@ -95,8 +92,7 @@ module RuboCop
|
|
95
92
|
end
|
96
93
|
|
97
94
|
def autocorrect_without_args(corrector, node)
|
98
|
-
corrector.replace(block_range_with_space(node),
|
99
|
-
"(&:#{node.body.method_name})")
|
95
|
+
corrector.replace(block_range_with_space(node), "(&:#{node.body.method_name})")
|
100
96
|
end
|
101
97
|
|
102
98
|
def autocorrect_with_args(corrector, node, args, method_name)
|
@@ -109,8 +105,7 @@ module RuboCop
|
|
109
105
|
end
|
110
106
|
|
111
107
|
def block_range_with_space(node)
|
112
|
-
block_range = range_between(begin_pos_for_replacement(node),
|
113
|
-
node.loc.end.end_pos)
|
108
|
+
block_range = range_between(begin_pos_for_replacement(node), node.loc.end.end_pos)
|
114
109
|
range_with_surrounding_space(range: block_range, side: :left)
|
115
110
|
end
|
116
111
|
|
@@ -64,8 +64,7 @@ module RuboCop
|
|
64
64
|
NON_COMPLEX_TYPES = [*VARIABLE_TYPES, :const, :defined?, :yield].freeze
|
65
65
|
|
66
66
|
MSG = '%<command>s parentheses for ternary conditions.'
|
67
|
-
MSG_COMPLEX = '%<command>s parentheses for ternary expressions with'
|
68
|
-
' complex conditions.'
|
67
|
+
MSG_COMPLEX = '%<command>s parentheses for ternary expressions with complex conditions.'
|
69
68
|
|
70
69
|
def on_if(node)
|
71
70
|
return if only_closing_parenthesis_is_last_line?(node.condition)
|
@@ -88,8 +87,7 @@ module RuboCop
|
|
88
87
|
condition = node.condition
|
89
88
|
|
90
89
|
return nil if parenthesized?(condition) &&
|
91
|
-
(safe_assignment?(condition) ||
|
92
|
-
unsafe_autocorrect?(condition))
|
90
|
+
(safe_assignment?(condition) || unsafe_autocorrect?(condition))
|
93
91
|
|
94
92
|
if parenthesized?(condition)
|
95
93
|
correct_parenthesized(corrector, condition)
|
@@ -127,8 +125,7 @@ module RuboCop
|
|
127
125
|
# Anything that is not a variable, constant, or method/.method call
|
128
126
|
# will be counted as a complex expression.
|
129
127
|
def non_complex_expression?(condition)
|
130
|
-
NON_COMPLEX_TYPES.include?(condition.type) ||
|
131
|
-
non_complex_send?(condition)
|
128
|
+
NON_COMPLEX_TYPES.include?(condition.type) || non_complex_send?(condition)
|
132
129
|
end
|
133
130
|
|
134
131
|
def non_complex_send?(node)
|
@@ -0,0 +1,83 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module RuboCop
|
4
|
+
module Cop
|
5
|
+
module Style
|
6
|
+
# Newcomers to ruby applications may write top-level methods,
|
7
|
+
# when ideally they should be organized in appropriate classes or modules.
|
8
|
+
# This cop looks for definitions of top-level methods and warns about them.
|
9
|
+
#
|
10
|
+
# However for ruby scripts it is perfectly fine to use top-level methods.
|
11
|
+
# Hence this cop is disabled by default.
|
12
|
+
#
|
13
|
+
# @example
|
14
|
+
# # bad
|
15
|
+
# def some_method
|
16
|
+
# end
|
17
|
+
#
|
18
|
+
# # bad
|
19
|
+
# def self.some_method
|
20
|
+
# end
|
21
|
+
#
|
22
|
+
# # bad
|
23
|
+
# define_method(:foo) { puts 1 }
|
24
|
+
#
|
25
|
+
# # good
|
26
|
+
# module Foo
|
27
|
+
# def some_method
|
28
|
+
# end
|
29
|
+
# end
|
30
|
+
#
|
31
|
+
# # good
|
32
|
+
# class Foo
|
33
|
+
# def self.some_method
|
34
|
+
# end
|
35
|
+
# end
|
36
|
+
#
|
37
|
+
# # good
|
38
|
+
# Struct.new do
|
39
|
+
# def some_method
|
40
|
+
# end
|
41
|
+
# end
|
42
|
+
#
|
43
|
+
# # good
|
44
|
+
# class Foo
|
45
|
+
# define_method(:foo) { puts 1 }
|
46
|
+
# end
|
47
|
+
class TopLevelMethodDefinition < Base
|
48
|
+
MSG = 'Do not define methods at the top-level.'
|
49
|
+
|
50
|
+
RESTRICT_ON_SEND = %i[define_method].freeze
|
51
|
+
|
52
|
+
def on_def(node)
|
53
|
+
return unless top_level_method_definition?(node)
|
54
|
+
|
55
|
+
add_offense(node)
|
56
|
+
end
|
57
|
+
alias on_defs on_def
|
58
|
+
alias on_send on_def
|
59
|
+
|
60
|
+
def on_block(node)
|
61
|
+
return unless define_method_block?(node) && top_level_method_definition?(node)
|
62
|
+
|
63
|
+
add_offense(node)
|
64
|
+
end
|
65
|
+
|
66
|
+
private
|
67
|
+
|
68
|
+
def top_level_method_definition?(node)
|
69
|
+
if node.parent&.begin_type?
|
70
|
+
node.parent.root?
|
71
|
+
else
|
72
|
+
node.root?
|
73
|
+
end
|
74
|
+
end
|
75
|
+
|
76
|
+
# @!method define_method_block?(node)
|
77
|
+
def_node_matcher :define_method_block?, <<~PATTERN
|
78
|
+
(block (send _ {:define_method} _) ...)
|
79
|
+
PATTERN
|
80
|
+
end
|
81
|
+
end
|
82
|
+
end
|
83
|
+
end
|
@@ -33,8 +33,7 @@ module RuboCop
|
|
33
33
|
include TrailingBody
|
34
34
|
extend AutoCorrector
|
35
35
|
|
36
|
-
MSG = "Place the first line of a multi-line method definition's "
|
37
|
-
'body on its own line.'
|
36
|
+
MSG = "Place the first line of a multi-line method definition's body on its own line."
|
38
37
|
|
39
38
|
def on_def(node)
|
40
39
|
return unless trailing_body?(node)
|
@@ -52,9 +52,7 @@ module RuboCop
|
|
52
52
|
|
53
53
|
last_comma_pos = last_comma(node).pos
|
54
54
|
|
55
|
-
add_offense(last_comma_pos)
|
56
|
-
corrector.replace(last_comma_pos, '')
|
57
|
-
end
|
55
|
+
add_offense(last_comma_pos) { |corrector| corrector.replace(last_comma_pos, '') }
|
58
56
|
end
|
59
57
|
|
60
58
|
private
|
@@ -78,9 +76,7 @@ module RuboCop
|
|
78
76
|
def argument_tokens(node)
|
79
77
|
tokens = processed_source.tokens_within(node)
|
80
78
|
pipes = tokens.select { |token| token.type == :tPIPE }
|
81
|
-
begin_pos, end_pos = pipes.map
|
82
|
-
tokens.index(pipe)
|
83
|
-
end
|
79
|
+
begin_pos, end_pos = pipes.map { |pipe| tokens.index(pipe) }
|
84
80
|
|
85
81
|
tokens[begin_pos + 1..end_pos - 1]
|
86
82
|
end
|
@@ -36,8 +36,7 @@ module RuboCop
|
|
36
36
|
class TrailingMethodEndStatement < Base
|
37
37
|
extend AutoCorrector
|
38
38
|
|
39
|
-
MSG = 'Place the end statement of a multi-line method on '
|
40
|
-
'its own line.'
|
39
|
+
MSG = 'Place the end statement of a multi-line method on its own line.'
|
41
40
|
|
42
41
|
def on_def(node)
|
43
42
|
return if node.endless? || !trailing_end?(node)
|
@@ -53,9 +52,7 @@ module RuboCop
|
|
53
52
|
private
|
54
53
|
|
55
54
|
def trailing_end?(node)
|
56
|
-
node.body &&
|
57
|
-
node.multiline? &&
|
58
|
-
body_and_end_on_same_line?(node)
|
55
|
+
node.body && node.multiline? && body_and_end_on_same_line?(node)
|
59
56
|
end
|
60
57
|
|
61
58
|
def body_and_end_on_same_line?(node)
|
@@ -33,8 +33,7 @@ module RuboCop
|
|
33
33
|
include RangeHelp
|
34
34
|
extend AutoCorrector
|
35
35
|
|
36
|
-
MSG = 'Do not use trailing `_`s in parallel assignment. '
|
37
|
-
'Prefer `%<code>s`.'
|
36
|
+
MSG = 'Do not use trailing `_`s in parallel assignment. Prefer `%<code>s`.'
|
38
37
|
UNDERSCORE = '_'
|
39
38
|
DISALLOW = %i[lvasgn splat].freeze
|
40
39
|
private_constant :DISALLOW
|
@@ -91,8 +90,7 @@ module RuboCop
|
|
91
90
|
end
|
92
91
|
|
93
92
|
def allow_named_underscore_variables
|
94
|
-
@allow_named_underscore_variables ||=
|
95
|
-
cop_config['AllowNamedUnderscoreVariables']
|
93
|
+
@allow_named_underscore_variables ||= cop_config['AllowNamedUnderscoreVariables']
|
96
94
|
end
|
97
95
|
|
98
96
|
def unneeded_ranges(node)
|
@@ -121,8 +119,7 @@ module RuboCop
|
|
121
119
|
|
122
120
|
return range_for_parentheses(first_offense, mlhs_node) if Util.parentheses?(mlhs_node)
|
123
121
|
|
124
|
-
range_between(first_offense.source_range.begin_pos,
|
125
|
-
node.loc.operator.begin_pos)
|
122
|
+
range_between(first_offense.source_range.begin_pos, node.loc.operator.begin_pos)
|
126
123
|
end
|
127
124
|
|
128
125
|
def children_offenses(variables)
|
@@ -147,10 +144,7 @@ module RuboCop
|
|
147
144
|
end
|
148
145
|
|
149
146
|
def range_for_parentheses(offense, left)
|
150
|
-
range_between(
|
151
|
-
offense.source_range.begin_pos - 1,
|
152
|
-
left.loc.expression.end_pos - 1
|
153
|
-
)
|
147
|
+
range_between(offense.source_range.begin_pos - 1, left.loc.expression.end_pos - 1)
|
154
148
|
end
|
155
149
|
end
|
156
150
|
end
|