rubocop 1.10.0 → 1.14.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 +15 -14
- data/assets/output.html.erb +1 -1
- data/config/default.yml +60 -3
- data/exe/rubocop +1 -3
- data/lib/rubocop.rb +6 -1
- data/lib/rubocop/cached_data.rb +1 -3
- data/lib/rubocop/cli.rb +4 -6
- data/lib/rubocop/cli/command/auto_genenerate_config.rb +9 -19
- data/lib/rubocop/cli/command/execute_runner.rb +1 -1
- data/lib/rubocop/cli/command/init_dotfile.rb +1 -3
- data/lib/rubocop/cli/command/show_cops.rb +1 -4
- data/lib/rubocop/cli/command/suggest_extensions.rb +3 -2
- data/lib/rubocop/comment_config.rb +45 -101
- data/lib/rubocop/config.rb +11 -26
- data/lib/rubocop/config_loader.rb +5 -11
- data/lib/rubocop/config_loader_resolver.rb +22 -14
- data/lib/rubocop/config_obsoletion/cop_rule.rb +1 -2
- data/lib/rubocop/config_store.rb +1 -2
- data/lib/rubocop/config_validator.rb +5 -10
- data/lib/rubocop/cop/autocorrect_logic.rb +3 -8
- data/lib/rubocop/cop/badge.rb +1 -2
- data/lib/rubocop/cop/base.rb +8 -6
- data/lib/rubocop/cop/bundler/duplicated_gem.rb +3 -3
- data/lib/rubocop/cop/bundler/gem_comment.rb +43 -10
- data/lib/rubocop/cop/bundler/gem_version.rb +99 -0
- data/lib/rubocop/cop/bundler/insecure_protocol_source.rb +1 -0
- data/lib/rubocop/cop/bundler/ordered_gems.rb +2 -4
- data/lib/rubocop/cop/commissioner.rb +2 -8
- data/lib/rubocop/cop/cop.rb +4 -18
- data/lib/rubocop/cop/corrector.rb +1 -4
- data/lib/rubocop/cop/correctors/alignment_corrector.rb +6 -12
- data/lib/rubocop/cop/correctors/each_to_for_corrector.rb +2 -4
- data/lib/rubocop/cop/correctors/for_to_each_corrector.rb +1 -2
- data/lib/rubocop/cop/correctors/line_break_corrector.rb +3 -6
- data/lib/rubocop/cop/correctors/multiline_literal_brace_corrector.rb +1 -3
- data/lib/rubocop/cop/correctors/ordered_gem_corrector.rb +1 -3
- data/lib/rubocop/cop/correctors/percent_literal_corrector.rb +2 -8
- data/lib/rubocop/cop/gemspec/date_assignment.rb +1 -0
- data/lib/rubocop/cop/gemspec/duplicated_assignment.rb +3 -2
- data/lib/rubocop/cop/gemspec/ordered_dependencies.rb +2 -4
- data/lib/rubocop/cop/gemspec/required_ruby_version.rb +2 -0
- data/lib/rubocop/cop/gemspec/ruby_version_globals_usage.rb +2 -0
- data/lib/rubocop/cop/generator.rb +3 -6
- 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.rb +1 -0
- data/lib/rubocop/cop/internal_affairs/example_description.rb +7 -4
- data/lib/rubocop/cop/internal_affairs/method_name_equal.rb +3 -5
- data/lib/rubocop/cop/internal_affairs/node_destructuring.rb +3 -3
- data/lib/rubocop/cop/internal_affairs/node_matcher_directive.rb +151 -0
- data/lib/rubocop/cop/internal_affairs/node_type_predicate.rb +2 -3
- data/lib/rubocop/cop/internal_affairs/offense_location_keyword.rb +3 -2
- data/lib/rubocop/cop/internal_affairs/redundant_described_class_as_subject.rb +1 -0
- data/lib/rubocop/cop/internal_affairs/redundant_let_rubocop_config_new.rb +1 -0
- data/lib/rubocop/cop/internal_affairs/redundant_location_argument.rb +1 -0
- data/lib/rubocop/cop/internal_affairs/redundant_message_argument.rb +3 -0
- data/lib/rubocop/cop/internal_affairs/style_detected_api_use.rb +5 -2
- data/lib/rubocop/cop/internal_affairs/useless_message_assertion.rb +3 -3
- data/lib/rubocop/cop/layout/access_modifier_indentation.rb +12 -10
- data/lib/rubocop/cop/layout/argument_alignment.rb +8 -9
- data/lib/rubocop/cop/layout/array_alignment.rb +7 -6
- data/lib/rubocop/cop/layout/assignment_indentation.rb +8 -7
- data/lib/rubocop/cop/layout/begin_end_alignment.rb +1 -4
- data/lib/rubocop/cop/layout/block_alignment.rb +8 -19
- data/lib/rubocop/cop/layout/block_end_newline.rb +4 -8
- data/lib/rubocop/cop/layout/case_indentation.rb +1 -3
- data/lib/rubocop/cop/layout/class_structure.rb +5 -10
- data/lib/rubocop/cop/layout/closing_parenthesis_indentation.rb +18 -30
- data/lib/rubocop/cop/layout/comment_indentation.rb +17 -21
- data/lib/rubocop/cop/layout/def_end_alignment.rb +2 -6
- data/lib/rubocop/cop/layout/dot_position.rb +1 -3
- data/lib/rubocop/cop/layout/else_alignment.rb +10 -9
- data/lib/rubocop/cop/layout/empty_comment.rb +5 -12
- data/lib/rubocop/cop/layout/empty_line_after_guard_clause.rb +22 -8
- data/lib/rubocop/cop/layout/empty_line_between_defs.rb +2 -6
- data/lib/rubocop/cop/layout/empty_lines.rb +1 -3
- data/lib/rubocop/cop/layout/empty_lines_around_access_modifier.rb +8 -18
- data/lib/rubocop/cop/layout/empty_lines_around_exception_handling_keywords.rb +2 -8
- data/lib/rubocop/cop/layout/end_alignment.rb +1 -2
- data/lib/rubocop/cop/layout/end_of_line.rb +1 -1
- data/lib/rubocop/cop/layout/extra_spacing.rb +5 -9
- data/lib/rubocop/cop/layout/first_argument_indentation.rb +11 -5
- data/lib/rubocop/cop/layout/first_array_element_indentation.rb +10 -8
- data/lib/rubocop/cop/layout/first_array_element_line_break.rb +1 -2
- data/lib/rubocop/cop/layout/first_hash_element_indentation.rb +24 -20
- data/lib/rubocop/cop/layout/first_hash_element_line_break.rb +1 -2
- data/lib/rubocop/cop/layout/first_method_argument_line_break.rb +1 -2
- data/lib/rubocop/cop/layout/first_method_parameter_line_break.rb +1 -2
- data/lib/rubocop/cop/layout/first_parameter_indentation.rb +6 -5
- data/lib/rubocop/cop/layout/hash_alignment.rb +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_consistency.rb +9 -6
- data/lib/rubocop/cop/layout/indentation_style.rb +25 -30
- data/lib/rubocop/cop/layout/indentation_width.rb +21 -11
- data/lib/rubocop/cop/layout/initial_indentation.rb +1 -4
- data/lib/rubocop/cop/layout/line_length.rb +4 -15
- data/lib/rubocop/cop/layout/multiline_array_line_breaks.rb +1 -2
- data/lib/rubocop/cop/layout/multiline_block_layout.rb +7 -15
- data/lib/rubocop/cop/layout/multiline_hash_key_line_breaks.rb +1 -2
- data/lib/rubocop/cop/layout/multiline_method_argument_line_breaks.rb +1 -2
- data/lib/rubocop/cop/layout/multiline_method_call_indentation.rb +22 -15
- data/lib/rubocop/cop/layout/multiline_operation_indentation.rb +10 -5
- data/lib/rubocop/cop/layout/parameter_alignment.rb +6 -5
- data/lib/rubocop/cop/layout/redundant_line_break.rb +137 -0
- data/lib/rubocop/cop/layout/rescue_ensure_alignment.rb +3 -6
- data/lib/rubocop/cop/layout/single_line_block_chain.rb +53 -0
- data/lib/rubocop/cop/layout/space_after_colon.rb +1 -3
- data/lib/rubocop/cop/layout/space_after_method_name.rb +2 -4
- data/lib/rubocop/cop/layout/space_around_block_parameters.rb +6 -14
- data/lib/rubocop/cop/layout/space_around_equals_in_parameter_default.rb +1 -2
- data/lib/rubocop/cop/layout/space_around_keyword.rb +3 -6
- data/lib/rubocop/cop/layout/space_around_operators.rb +4 -9
- data/lib/rubocop/cop/layout/space_before_block_braces.rb +2 -3
- 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 +6 -11
- 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/big_decimal_new.rb +1 -0
- data/lib/rubocop/cop/lint/boolean_symbol.rb +2 -2
- data/lib/rubocop/cop/lint/constant_definition_in_block.rb +2 -0
- data/lib/rubocop/cop/lint/constant_resolution.rb +2 -2
- data/lib/rubocop/cop/lint/debugger.rb +3 -1
- data/lib/rubocop/cop/lint/deprecated_class_methods.rb +79 -41
- data/lib/rubocop/cop/lint/deprecated_constants.rb +3 -3
- data/lib/rubocop/cop/lint/deprecated_open_ssl_constant.rb +3 -5
- data/lib/rubocop/cop/lint/duplicate_branch.rb +2 -3
- data/lib/rubocop/cop/lint/duplicate_hash_key.rb +1 -3
- data/lib/rubocop/cop/lint/duplicate_methods.rb +6 -7
- data/lib/rubocop/cop/lint/duplicate_require.rb +1 -0
- data/lib/rubocop/cop/lint/each_with_object_argument.rb +1 -0
- 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 +4 -7
- data/lib/rubocop/cop/lint/float_out_of_range.rb +1 -2
- data/lib/rubocop/cop/lint/format_parameter_mismatch.rb +4 -6
- data/lib/rubocop/cop/lint/hash_compare_by_identity.rb +1 -0
- 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 +4 -7
- data/lib/rubocop/cop/lint/inherit_exception.rb +2 -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/multiple_comparison.rb +1 -0
- data/lib/rubocop/cop/lint/nested_method_definition.rb +4 -2
- data/lib/rubocop/cop/lint/nested_percent_literal.rb +1 -3
- data/lib/rubocop/cop/lint/next_without_accumulator.rb +1 -0
- data/lib/rubocop/cop/lint/non_deterministic_require_order.rb +8 -3
- data/lib/rubocop/cop/lint/non_local_exit_from_iterator.rb +3 -0
- data/lib/rubocop/cop/lint/number_conversion.rb +13 -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 +3 -2
- data/lib/rubocop/cop/lint/rand_one.rb +2 -2
- data/lib/rubocop/cop/lint/redundant_cop_disable_directive.rb +9 -22
- data/lib/rubocop/cop/lint/redundant_require_statement.rb +1 -0
- data/lib/rubocop/cop/lint/redundant_safe_navigation.rb +2 -3
- data/lib/rubocop/cop/lint/redundant_splat_expansion.rb +5 -7
- data/lib/rubocop/cop/lint/redundant_string_coercion.rb +2 -2
- data/lib/rubocop/cop/lint/redundant_with_index.rb +2 -4
- data/lib/rubocop/cop/lint/redundant_with_object.rb +2 -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 +2 -2
- data/lib/rubocop/cop/lint/safe_navigation_consistency.rb +4 -10
- data/lib/rubocop/cop/lint/safe_navigation_with_empty.rb +2 -2
- data/lib/rubocop/cop/lint/send_with_mixin_argument.rb +3 -7
- data/lib/rubocop/cop/lint/shadowed_argument.rb +5 -11
- data/lib/rubocop/cop/lint/shadowed_exception.rb +7 -8
- data/lib/rubocop/cop/lint/shadowing_outer_local_variable.rb +1 -0
- data/lib/rubocop/cop/lint/struct_new_override.rb +2 -2
- data/lib/rubocop/cop/lint/suppressed_exception.rb +44 -1
- data/lib/rubocop/cop/lint/symbol_conversion.rb +91 -6
- data/lib/rubocop/cop/lint/syntax.rb +1 -3
- data/lib/rubocop/cop/lint/to_enum_arguments.rb +3 -0
- 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/unified_integer.rb +1 -0
- data/lib/rubocop/cop/lint/unmodified_reduce_accumulator.rb +5 -0
- data/lib/rubocop/cop/lint/unreachable_code.rb +3 -5
- data/lib/rubocop/cop/lint/unreachable_loop.rb +15 -7
- data/lib/rubocop/cop/lint/unused_block_argument.rb +9 -7
- data/lib/rubocop/cop/lint/unused_method_argument.rb +2 -2
- data/lib/rubocop/cop/lint/uri_escape_unescape.rb +1 -0
- data/lib/rubocop/cop/lint/useless_access_modifier.rb +6 -4
- data/lib/rubocop/cop/lint/useless_assignment.rb +4 -9
- data/lib/rubocop/cop/lint/useless_setter_call.rb +2 -3
- data/lib/rubocop/cop/lint/useless_times.rb +3 -0
- 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 +3 -6
- data/lib/rubocop/cop/metrics/parameter_lists.rb +3 -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/code_length_calculator.rb +6 -4
- data/lib/rubocop/cop/metrics/utils/repeated_attribute_discount.rb +4 -7
- data/lib/rubocop/cop/migration/department_name.rb +3 -7
- data/lib/rubocop/cop/mixin/alignment.rb +12 -7
- data/lib/rubocop/cop/mixin/check_line_breakable.rb +1 -1
- data/lib/rubocop/cop/mixin/code_length.rb +1 -3
- data/lib/rubocop/cop/mixin/comments_help.rb +5 -1
- data/lib/rubocop/cop/mixin/configurable_enforced_style.rb +2 -2
- data/lib/rubocop/cop/mixin/configurable_formatting.rb +3 -8
- data/lib/rubocop/cop/mixin/def_node.rb +3 -5
- data/lib/rubocop/cop/mixin/documentation_comment.rb +3 -6
- data/lib/rubocop/cop/mixin/empty_lines_around_body.rb +6 -7
- data/lib/rubocop/cop/mixin/empty_parameter.rb +2 -3
- data/lib/rubocop/cop/mixin/end_keyword_alignment.rb +1 -3
- data/lib/rubocop/cop/mixin/enforce_superclass.rb +4 -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/gem_declaration.rb +13 -0
- data/lib/rubocop/cop/mixin/hash_alignment_styles.rb +3 -6
- data/lib/rubocop/cop/mixin/hash_transform_method.rb +8 -22
- data/lib/rubocop/cop/mixin/interpolation.rb +1 -3
- data/lib/rubocop/cop/mixin/line_length_help.rb +13 -10
- data/lib/rubocop/cop/mixin/match_range.rb +2 -5
- data/lib/rubocop/cop/mixin/method_complexity.rb +2 -3
- data/lib/rubocop/cop/mixin/method_preference.rb +1 -2
- data/lib/rubocop/cop/mixin/multiline_element_indentation.rb +4 -3
- data/lib/rubocop/cop/mixin/multiline_element_line_breaks.rb +1 -3
- data/lib/rubocop/cop/mixin/multiline_expression_indentation.rb +11 -40
- data/lib/rubocop/cop/mixin/multiline_literal_brace_layout.rb +1 -2
- data/lib/rubocop/cop/mixin/negative_conditional.rb +4 -2
- data/lib/rubocop/cop/mixin/ordered_gem_node.rb +1 -4
- data/lib/rubocop/cop/mixin/percent_array.rb +1 -3
- data/lib/rubocop/cop/mixin/percent_literal.rb +0 -6
- data/lib/rubocop/cop/mixin/preceding_following_alignment.rb +5 -11
- data/lib/rubocop/cop/mixin/preferred_delimiters.rb +4 -7
- data/lib/rubocop/cop/mixin/range_help.rb +10 -13
- data/lib/rubocop/cop/mixin/rational_literal.rb +1 -0
- data/lib/rubocop/cop/mixin/rescue_node.rb +2 -6
- data/lib/rubocop/cop/mixin/safe_assignment.rb +6 -2
- data/lib/rubocop/cop/mixin/space_after_punctuation.rb +2 -4
- data/lib/rubocop/cop/mixin/space_before_punctuation.rb +1 -2
- data/lib/rubocop/cop/mixin/statement_modifier.rb +1 -3
- data/lib/rubocop/cop/mixin/string_literals_help.rb +1 -1
- data/lib/rubocop/cop/mixin/trailing_body.rb +1 -2
- data/lib/rubocop/cop/mixin/trailing_comma.rb +1 -2
- data/lib/rubocop/cop/mixin/uncommunicative_name.rb +7 -13
- data/lib/rubocop/cop/mixin/unused_argument.rb +1 -3
- data/lib/rubocop/cop/mixin/visibility_help.rb +1 -0
- data/lib/rubocop/cop/naming/ascii_identifiers.rb +2 -4
- data/lib/rubocop/cop/naming/binary_operator_parameter_name.rb +2 -2
- data/lib/rubocop/cop/naming/constant_name.rb +2 -0
- data/lib/rubocop/cop/naming/file_name.rb +7 -16
- data/lib/rubocop/cop/naming/memoized_instance_variable_name.rb +8 -3
- data/lib/rubocop/cop/naming/method_name.rb +4 -2
- data/lib/rubocop/cop/naming/predicate_name.rb +2 -2
- data/lib/rubocop/cop/naming/rescued_exceptions_variable_name.rb +10 -0
- data/lib/rubocop/cop/offense.rb +3 -8
- data/lib/rubocop/cop/registry.rb +12 -11
- data/lib/rubocop/cop/security/eval.rb +1 -0
- data/lib/rubocop/cop/security/json_load.rb +1 -0
- data/lib/rubocop/cop/security/marshal_load.rb +1 -0
- data/lib/rubocop/cop/security/open.rb +1 -0
- data/lib/rubocop/cop/security/yaml_load.rb +1 -0
- data/lib/rubocop/cop/style/access_modifier_declarations.rb +4 -5
- data/lib/rubocop/cop/style/accessor_grouping.rb +1 -3
- data/lib/rubocop/cop/style/alias.rb +6 -12
- data/lib/rubocop/cop/style/and_or.rb +3 -1
- data/lib/rubocop/cop/style/arguments_forwarding.rb +4 -3
- data/lib/rubocop/cop/style/array_coercion.rb +2 -0
- data/lib/rubocop/cop/style/array_join.rb +1 -0
- data/lib/rubocop/cop/style/ascii_comments.rb +1 -2
- data/lib/rubocop/cop/style/attr.rb +2 -3
- data/lib/rubocop/cop/style/auto_resource_cleanup.rb +2 -5
- data/lib/rubocop/cop/style/bisected_attr_accessor.rb +59 -71
- data/lib/rubocop/cop/style/bisected_attr_accessor/macro.rb +60 -0
- data/lib/rubocop/cop/style/case_equality.rb +2 -1
- data/lib/rubocop/cop/style/case_like_if.rb +16 -6
- data/lib/rubocop/cop/style/character_literal.rb +2 -4
- data/lib/rubocop/cop/style/class_and_module_children.rb +6 -9
- data/lib/rubocop/cop/style/class_equality_comparison.rb +3 -0
- data/lib/rubocop/cop/style/class_methods.rb +1 -3
- data/lib/rubocop/cop/style/collection_compact.rb +3 -3
- data/lib/rubocop/cop/style/colon_method_call.rb +2 -3
- data/lib/rubocop/cop/style/combinable_loops.rb +3 -2
- data/lib/rubocop/cop/style/command_literal.rb +4 -9
- data/lib/rubocop/cop/style/comment_annotation.rb +3 -6
- data/lib/rubocop/cop/style/commented_keyword.rb +7 -13
- data/lib/rubocop/cop/style/conditional_assignment.rb +12 -24
- data/lib/rubocop/cop/style/constant_visibility.rb +1 -0
- data/lib/rubocop/cop/style/copyright.rb +3 -6
- data/lib/rubocop/cop/style/date_time.rb +5 -5
- data/lib/rubocop/cop/style/def_with_parentheses.rb +1 -2
- data/lib/rubocop/cop/style/dir.rb +1 -0
- data/lib/rubocop/cop/style/disable_cops_within_source_code_directive.rb +2 -2
- data/lib/rubocop/cop/style/documentation.rb +30 -3
- data/lib/rubocop/cop/style/documentation_method.rb +1 -0
- data/lib/rubocop/cop/style/double_negation.rb +1 -0
- data/lib/rubocop/cop/style/each_for_simple_loop.rb +2 -2
- data/lib/rubocop/cop/style/each_with_object.rb +1 -0
- 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 +13 -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 +2 -3
- data/lib/rubocop/cop/style/eval_with_location.rb +5 -5
- data/lib/rubocop/cop/style/even_odd.rb +1 -0
- data/lib/rubocop/cop/style/expand_path_arguments.rb +4 -3
- data/lib/rubocop/cop/style/explicit_block_argument.rb +2 -4
- data/lib/rubocop/cop/style/float_division.rb +4 -0
- data/lib/rubocop/cop/style/format_string.rb +2 -0
- data/lib/rubocop/cop/style/format_string_token.rb +2 -4
- data/lib/rubocop/cop/style/frozen_string_literal_comment.rb +3 -11
- data/lib/rubocop/cop/style/global_std_stream.rb +1 -0
- data/lib/rubocop/cop/style/guard_clause.rb +3 -7
- data/lib/rubocop/cop/style/hash_conversion.rb +57 -5
- data/lib/rubocop/cop/style/hash_each_methods.rb +2 -2
- data/lib/rubocop/cop/style/hash_except.rb +1 -0
- data/lib/rubocop/cop/style/hash_like_case.rb +2 -2
- data/lib/rubocop/cop/style/hash_syntax.rb +20 -24
- data/lib/rubocop/cop/style/hash_transform_keys.rb +4 -0
- data/lib/rubocop/cop/style/hash_transform_values.rb +4 -0
- data/lib/rubocop/cop/style/identical_conditional_branches.rb +1 -3
- data/lib/rubocop/cop/style/if_unless_modifier.rb +40 -13
- data/lib/rubocop/cop/style/if_with_boolean_literal_branches.rb +2 -0
- data/lib/rubocop/cop/style/implicit_runtime_error.rb +1 -0
- data/lib/rubocop/cop/style/infinite_loop.rb +2 -5
- data/lib/rubocop/cop/style/inverse_methods.rb +5 -7
- data/lib/rubocop/cop/style/ip_addresses.rb +1 -2
- data/lib/rubocop/cop/style/lambda.rb +2 -4
- data/lib/rubocop/cop/style/lambda_call.rb +1 -2
- data/lib/rubocop/cop/style/line_end_concatenation.rb +5 -12
- data/lib/rubocop/cop/style/method_call_with_args_parentheses.rb +47 -3
- data/lib/rubocop/cop/style/method_call_with_args_parentheses/omit_parentheses.rb +26 -16
- data/lib/rubocop/cop/style/method_call_without_args_parentheses.rb +1 -2
- data/lib/rubocop/cop/style/method_called_on_do_end_block.rb +2 -4
- data/lib/rubocop/cop/style/method_def_parentheses.rb +4 -8
- data/lib/rubocop/cop/style/min_max.rb +2 -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 +3 -2
- data/lib/rubocop/cop/style/module_function.rb +8 -6
- data/lib/rubocop/cop/style/multiline_block_chain.rb +1 -2
- data/lib/rubocop/cop/style/multiline_method_signature.rb +11 -6
- data/lib/rubocop/cop/style/multiline_ternary_operator.rb +1 -2
- data/lib/rubocop/cop/style/multiple_comparison.rb +22 -5
- data/lib/rubocop/cop/style/mutable_constant.rb +7 -10
- data/lib/rubocop/cop/style/negated_if.rb +1 -2
- data/lib/rubocop/cop/style/negated_if_else_condition.rb +24 -2
- data/lib/rubocop/cop/style/negated_unless.rb +1 -2
- data/lib/rubocop/cop/style/nested_modifier.rb +3 -7
- data/lib/rubocop/cop/style/nested_ternary_operator.rb +2 -3
- data/lib/rubocop/cop/style/next.rb +4 -9
- data/lib/rubocop/cop/style/nil_comparison.rb +3 -0
- data/lib/rubocop/cop/style/nil_lambda.rb +1 -0
- data/lib/rubocop/cop/style/non_nil_check.rb +9 -5
- data/lib/rubocop/cop/style/numeric_literals.rb +3 -11
- data/lib/rubocop/cop/style/numeric_predicate.rb +5 -7
- data/lib/rubocop/cop/style/one_line_conditional.rb +1 -2
- data/lib/rubocop/cop/style/option_hash.rb +2 -3
- data/lib/rubocop/cop/style/optional_arguments.rb +2 -5
- data/lib/rubocop/cop/style/or_assignment.rb +4 -6
- data/lib/rubocop/cop/style/parallel_assignment.rb +12 -9
- data/lib/rubocop/cop/style/parentheses_around_condition.rb +1 -0
- 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 +2 -2
- data/lib/rubocop/cop/style/raise_args.rb +4 -8
- data/lib/rubocop/cop/style/random_with_offset.rb +8 -8
- data/lib/rubocop/cop/style/redundant_argument.rb +2 -11
- data/lib/rubocop/cop/style/redundant_assignment.rb +2 -3
- data/lib/rubocop/cop/style/redundant_begin.rb +47 -7
- 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 +5 -6
- data/lib/rubocop/cop/style/redundant_exception.rb +5 -6
- data/lib/rubocop/cop/style/redundant_fetch_block.rb +2 -0
- data/lib/rubocop/cop/style/redundant_file_extension_in_require.rb +2 -1
- data/lib/rubocop/cop/style/redundant_freeze.rb +2 -2
- data/lib/rubocop/cop/style/redundant_interpolation.rb +1 -2
- data/lib/rubocop/cop/style/redundant_parentheses.rb +21 -20
- data/lib/rubocop/cop/style/redundant_percent_q.rb +1 -2
- data/lib/rubocop/cop/style/redundant_regexp_escape.rb +1 -4
- data/lib/rubocop/cop/style/redundant_return.rb +6 -4
- data/lib/rubocop/cop/style/redundant_self.rb +9 -9
- data/lib/rubocop/cop/style/redundant_self_assignment.rb +4 -2
- data/lib/rubocop/cop/style/redundant_sort.rb +3 -5
- data/lib/rubocop/cop/style/redundant_sort_by.rb +1 -0
- data/lib/rubocop/cop/style/regexp_literal.rb +4 -8
- data/lib/rubocop/cop/style/rescue_modifier.rb +21 -14
- data/lib/rubocop/cop/style/rescue_standard_error.rb +5 -7
- data/lib/rubocop/cop/style/return_nil.rb +7 -2
- data/lib/rubocop/cop/style/safe_navigation.rb +12 -21
- data/lib/rubocop/cop/style/sample.rb +1 -0
- data/lib/rubocop/cop/style/send.rb +1 -2
- data/lib/rubocop/cop/style/signal_exception.rb +6 -7
- data/lib/rubocop/cop/style/single_argument_dig.rb +2 -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/slicing_with_range.rb +1 -0
- data/lib/rubocop/cop/style/sole_nested_conditional.rb +31 -7
- data/lib/rubocop/cop/style/special_global_vars.rb +6 -18
- data/lib/rubocop/cop/style/stabby_lambda_parentheses.rb +1 -2
- data/lib/rubocop/cop/style/stderr_puts.rb +3 -6
- data/lib/rubocop/cop/style/string_chars.rb +39 -0
- data/lib/rubocop/cop/style/string_concatenation.rb +9 -10
- data/lib/rubocop/cop/style/string_hash_keys.rb +2 -0
- data/lib/rubocop/cop/style/string_literals.rb +2 -5
- data/lib/rubocop/cop/style/strip.rb +1 -0
- data/lib/rubocop/cop/style/struct_inheritance.rb +11 -0
- data/lib/rubocop/cop/style/symbol_literal.rb +1 -3
- data/lib/rubocop/cop/style/symbol_proc.rb +29 -10
- data/lib/rubocop/cop/style/ternary_parentheses.rb +4 -6
- data/lib/rubocop/cop/style/trailing_body_on_method_definition.rb +6 -2
- data/lib/rubocop/cop/style/trailing_comma_in_block_args.rb +2 -6
- data/lib/rubocop/cop/style/trailing_method_end_statement.rb +3 -6
- data/lib/rubocop/cop/style/trailing_underscore_variable.rb +4 -10
- data/lib/rubocop/cop/style/trivial_accessors.rb +3 -4
- data/lib/rubocop/cop/style/unless_else.rb +1 -2
- data/lib/rubocop/cop/style/unless_logical_operators.rb +105 -0
- data/lib/rubocop/cop/style/unpack_first.rb +1 -0
- 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 +4 -11
- data/lib/rubocop/cop/style/zero_length_predicate.rb +6 -2
- data/lib/rubocop/cop/team.rb +2 -5
- data/lib/rubocop/cop/util.rb +8 -11
- data/lib/rubocop/cop/utils/format_string.rb +1 -3
- data/lib/rubocop/cop/variable_force.rb +6 -15
- data/lib/rubocop/cop/variable_force/assignment.rb +1 -2
- data/lib/rubocop/cop/variable_force/branch.rb +16 -2
- data/lib/rubocop/cop/variable_force/reference.rb +1 -3
- data/lib/rubocop/cop/variable_force/scope.rb +4 -8
- data/lib/rubocop/cop/variable_force/variable.rb +2 -4
- data/lib/rubocop/cops_documentation_generator.rb +7 -21
- data/lib/rubocop/directive_comment.rb +69 -9
- data/lib/rubocop/ext/regexp_parser.rb +3 -6
- data/lib/rubocop/file_finder.rb +1 -3
- data/lib/rubocop/formatter/clang_style_formatter.rb +4 -2
- data/lib/rubocop/formatter/disabled_config_formatter.rb +3 -8
- data/lib/rubocop/formatter/git_hub_actions_formatter.rb +1 -5
- data/lib/rubocop/formatter/html_formatter.rb +4 -10
- data/lib/rubocop/formatter/json_formatter.rb +1 -5
- data/lib/rubocop/formatter/junit_formatter.rb +3 -9
- data/lib/rubocop/formatter/progress_formatter.rb +1 -3
- data/lib/rubocop/formatter/tap_formatter.rb +4 -2
- data/lib/rubocop/magic_comment.rb +1 -1
- data/lib/rubocop/name_similarity.rb +1 -1
- 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 +8 -15
- data/lib/rubocop/runner.rb +7 -14
- data/lib/rubocop/target_finder.rb +19 -16
- data/lib/rubocop/target_ruby.rb +25 -21
- data/lib/rubocop/version.rb +1 -1
- metadata +18 -11
- data/lib/rubocop/core_ext/hash.rb +0 -20
@@ -31,60 +31,55 @@ module RuboCop
|
|
31
31
|
# def foo
|
32
32
|
# bar
|
33
33
|
# end
|
34
|
-
class IndentationStyle <
|
34
|
+
class IndentationStyle < Base
|
35
35
|
include Alignment
|
36
36
|
include ConfigurableEnforcedStyle
|
37
37
|
include RangeHelp
|
38
|
+
extend AutoCorrector
|
38
39
|
|
39
40
|
MSG = '%<type>s detected in indentation.'
|
40
41
|
|
41
|
-
def
|
42
|
+
def on_new_investigation
|
42
43
|
str_ranges = string_literal_ranges(processed_source.ast)
|
43
44
|
|
44
45
|
processed_source.lines.each.with_index(1) do |line, lineno|
|
45
|
-
|
46
|
-
next unless match
|
47
|
-
|
48
|
-
range = source_range(processed_source.buffer,
|
49
|
-
lineno,
|
50
|
-
match.begin(0)...match.end(0))
|
46
|
+
next unless (range = find_offence(line, lineno))
|
51
47
|
next if in_string_literal?(str_ranges, range)
|
52
48
|
|
53
|
-
add_offense(range,
|
49
|
+
add_offense(range) { |corrector| autocorrect(corrector, range) }
|
54
50
|
end
|
55
51
|
end
|
56
52
|
|
57
|
-
|
53
|
+
private
|
54
|
+
|
55
|
+
def autocorrect(corrector, range)
|
58
56
|
if range.source.include?("\t")
|
59
|
-
autocorrect_lambda_for_tabs(range)
|
57
|
+
autocorrect_lambda_for_tabs(corrector, range)
|
60
58
|
else
|
61
|
-
autocorrect_lambda_for_spaces(range)
|
59
|
+
autocorrect_lambda_for_spaces(corrector, range)
|
62
60
|
end
|
63
61
|
end
|
64
62
|
|
65
|
-
|
63
|
+
def find_offence(line, lineno)
|
64
|
+
match = if style == :spaces
|
65
|
+
line.match(/\A\s*\t+/)
|
66
|
+
else
|
67
|
+
line.match(/\A\s* +/)
|
68
|
+
end
|
69
|
+
return unless match
|
66
70
|
|
67
|
-
|
68
|
-
if style == :spaces
|
69
|
-
line.match(/\A\s*\t+/)
|
70
|
-
else
|
71
|
-
line.match(/\A\s* +/)
|
72
|
-
end
|
71
|
+
source_range(processed_source.buffer, lineno, match.begin(0)...match.end(0))
|
73
72
|
end
|
74
73
|
|
75
|
-
def autocorrect_lambda_for_tabs(range)
|
76
|
-
|
77
|
-
|
78
|
-
corrector.replace(range, range.source.gsub(/\t/, spaces))
|
79
|
-
end
|
74
|
+
def autocorrect_lambda_for_tabs(corrector, range)
|
75
|
+
spaces = ' ' * configured_indentation_width
|
76
|
+
corrector.replace(range, range.source.gsub(/\t/, spaces))
|
80
77
|
end
|
81
78
|
|
82
|
-
def autocorrect_lambda_for_spaces(range)
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
end)
|
87
|
-
end
|
79
|
+
def autocorrect_lambda_for_spaces(corrector, range)
|
80
|
+
corrector.replace(range, range.source.gsub(/\A\s+/) do |match|
|
81
|
+
"\t" * (match.size / configured_indentation_width)
|
82
|
+
end)
|
88
83
|
end
|
89
84
|
|
90
85
|
def in_string_literal?(ranges, tabs_range)
|
@@ -42,16 +42,18 @@ module RuboCop
|
|
42
42
|
# end
|
43
43
|
# end
|
44
44
|
# end
|
45
|
-
class IndentationWidth <
|
45
|
+
class IndentationWidth < Base # rubocop:disable Metrics/ClassLength
|
46
46
|
include EndKeywordAlignment
|
47
47
|
include Alignment
|
48
48
|
include CheckAssignment
|
49
49
|
include IgnoredPattern
|
50
50
|
include RangeHelp
|
51
|
+
extend AutoCorrector
|
51
52
|
|
52
53
|
MSG = 'Use %<configured_indentation_width>d (not %<indentation>d) ' \
|
53
54
|
'spaces for%<name>s indentation.'
|
54
55
|
|
56
|
+
# @!method access_modifier?(node)
|
55
57
|
def_node_matcher :access_modifier?, <<~PATTERN
|
56
58
|
[(send ...) access_modifier?]
|
57
59
|
PATTERN
|
@@ -133,8 +135,7 @@ module RuboCop
|
|
133
135
|
check_indentation(when_node.loc.keyword, when_node.body)
|
134
136
|
end
|
135
137
|
|
136
|
-
check_indentation(case_node.when_branches.last.loc.keyword,
|
137
|
-
case_node.else_branch)
|
138
|
+
check_indentation(case_node.when_branches.last.loc.keyword, case_node.else_branch)
|
138
139
|
end
|
139
140
|
|
140
141
|
def on_if(node, base = node)
|
@@ -144,12 +145,12 @@ module RuboCop
|
|
144
145
|
check_if(node, node.body, node.else_branch, base.loc)
|
145
146
|
end
|
146
147
|
|
147
|
-
def autocorrect(node)
|
148
|
-
AlignmentCorrector.correct(processed_source, node, @column_delta)
|
149
|
-
end
|
150
|
-
|
151
148
|
private
|
152
149
|
|
150
|
+
def autocorrect(corrector, node)
|
151
|
+
AlignmentCorrector.correct(corrector, processed_source, node, @column_delta)
|
152
|
+
end
|
153
|
+
|
153
154
|
def check_members(base, members)
|
154
155
|
check_indentation(base, select_check_member(members.first))
|
155
156
|
|
@@ -279,8 +280,9 @@ module RuboCop
|
|
279
280
|
name = style == 'normal' ? '' : " #{style}"
|
280
281
|
message = message(configured_indentation_width, indentation, name)
|
281
282
|
|
282
|
-
add_offense(
|
283
|
-
|
283
|
+
add_offense(offending_range(body_node, indentation), message: message) do |corrector|
|
284
|
+
autocorrect(corrector, node)
|
285
|
+
end
|
284
286
|
end
|
285
287
|
|
286
288
|
def message(configured_indentation_width, indentation, name)
|
@@ -307,12 +309,20 @@ module RuboCop
|
|
307
309
|
def indentation_to_check?(base_loc, body_node)
|
308
310
|
return false if skip_check?(base_loc, body_node)
|
309
311
|
|
310
|
-
if
|
312
|
+
if body_node.rescue_type?
|
313
|
+
check_rescue?(body_node)
|
314
|
+
elsif body_node.ensure_type?
|
311
315
|
block_body, = *body_node
|
312
316
|
return unless block_body
|
317
|
+
|
318
|
+
check_rescue?(block_body) if block_body.rescue_type?
|
319
|
+
else
|
320
|
+
true
|
313
321
|
end
|
322
|
+
end
|
314
323
|
|
315
|
-
|
324
|
+
def check_rescue?(rescue_node)
|
325
|
+
rescue_node.body
|
316
326
|
end
|
317
327
|
|
318
328
|
def skip_check?(base_loc, body_node)
|
@@ -41,10 +41,7 @@ module RuboCop
|
|
41
41
|
return unless token
|
42
42
|
return if token.column.zero?
|
43
43
|
|
44
|
-
space_range =
|
45
|
-
range_with_surrounding_space(range: token.pos,
|
46
|
-
side: :left,
|
47
|
-
newlines: false)
|
44
|
+
space_range = range_with_surrounding_space(range: token.pos, side: :left, newlines: false)
|
48
45
|
# If the file starts with a byte order mark (BOM), the column can be
|
49
46
|
# non-zero, but then we find out here if there's no space to the left
|
50
47
|
# of the first token.
|
@@ -122,8 +122,7 @@ module RuboCop
|
|
122
122
|
range = breakable_block_range(block_node)
|
123
123
|
pos = range.begin_pos + 1
|
124
124
|
|
125
|
-
breakable_range_by_line_index[line_index] =
|
126
|
-
range_between(pos, pos + 1)
|
125
|
+
breakable_range_by_line_index[line_index] = range_between(pos, pos + 1)
|
127
126
|
end
|
128
127
|
|
129
128
|
def breakable_block_range(block_node)
|
@@ -171,11 +170,7 @@ module RuboCop
|
|
171
170
|
end
|
172
171
|
return check_uri_line(line, line_index) if allow_uri?
|
173
172
|
|
174
|
-
register_offense(
|
175
|
-
excess_range(nil, line, line_index),
|
176
|
-
line,
|
177
|
-
line_index
|
178
|
-
)
|
173
|
+
register_offense(excess_range(nil, line, line_index), line, line_index)
|
179
174
|
end
|
180
175
|
|
181
176
|
def ignored_line?(line, line_index)
|
@@ -242,9 +237,7 @@ module RuboCop
|
|
242
237
|
end
|
243
238
|
|
244
239
|
def line_in_heredoc?(line_number)
|
245
|
-
heredocs.any?
|
246
|
-
range.cover?(line_number)
|
247
|
-
end
|
240
|
+
heredocs.any? { |range, _delimiter| range.cover?(line_number) }
|
248
241
|
end
|
249
242
|
|
250
243
|
def check_directive_line(line, line_index)
|
@@ -266,11 +259,7 @@ module RuboCop
|
|
266
259
|
uri_range = find_excessive_uri_range(line)
|
267
260
|
return if uri_range && allowed_uri_position?(line, uri_range)
|
268
261
|
|
269
|
-
register_offense(
|
270
|
-
excess_range(uri_range, line, line_index),
|
271
|
-
line,
|
272
|
-
line_index
|
273
|
-
)
|
262
|
+
register_offense(excess_range(uri_range, line, line_index), line, line_index)
|
274
263
|
end
|
275
264
|
end
|
276
265
|
end
|
@@ -24,8 +24,7 @@ module RuboCop
|
|
24
24
|
include MultilineElementLineBreaks
|
25
25
|
extend AutoCorrector
|
26
26
|
|
27
|
-
MSG = 'Each item in a multi-line array must start '
|
28
|
-
'on a separate line.'
|
27
|
+
MSG = 'Each item in a multi-line array must start on a separate line.'
|
29
28
|
|
30
29
|
def on_array(node)
|
31
30
|
check_line_breaks(node, node.children)
|
@@ -52,17 +52,14 @@ module RuboCop
|
|
52
52
|
include RangeHelp
|
53
53
|
extend AutoCorrector
|
54
54
|
|
55
|
-
MSG = 'Block body expression is on the same line as '
|
56
|
-
|
57
|
-
ARG_MSG = 'Block argument expression is not on the same line as the ' \
|
58
|
-
'block start.'
|
55
|
+
MSG = 'Block body expression is on the same line as the block start.'
|
56
|
+
ARG_MSG = 'Block argument expression is not on the same line as the block start.'
|
59
57
|
PIPE_SIZE = '|'.length
|
60
58
|
|
61
59
|
def on_block(node)
|
62
60
|
return if node.single_line?
|
63
61
|
|
64
|
-
unless args_on_beginning_line?(node) ||
|
65
|
-
line_break_necessary_in_args?(node)
|
62
|
+
unless args_on_beginning_line?(node) || line_break_necessary_in_args?(node)
|
66
63
|
add_offense_for_expression(node, node.arguments, ARG_MSG)
|
67
64
|
end
|
68
65
|
|
@@ -74,8 +71,7 @@ module RuboCop
|
|
74
71
|
private
|
75
72
|
|
76
73
|
def args_on_beginning_line?(node)
|
77
|
-
!node.arguments? ||
|
78
|
-
node.loc.begin.line == node.arguments.loc.last_line
|
74
|
+
!node.arguments? || node.loc.begin.line == node.arguments.loc.last_line
|
79
75
|
end
|
80
76
|
|
81
77
|
def line_break_necessary_in_args?(node)
|
@@ -101,9 +97,7 @@ module RuboCop
|
|
101
97
|
expression = expr.source_range
|
102
98
|
range = range_between(expression.begin_pos, expression.end_pos)
|
103
99
|
|
104
|
-
add_offense(range, message: msg)
|
105
|
-
autocorrect(corrector, node)
|
106
|
-
end
|
100
|
+
add_offense(range, message: msg) { |corrector| autocorrect(corrector, node) }
|
107
101
|
end
|
108
102
|
|
109
103
|
def autocorrect(corrector, node)
|
@@ -128,8 +122,7 @@ module RuboCop
|
|
128
122
|
newlines: false
|
129
123
|
).end_pos
|
130
124
|
range = range_between(node.loc.begin.end.begin_pos, end_pos)
|
131
|
-
corrector.replace(range,
|
132
|
-
" |#{block_arg_string(node, node.arguments)}|")
|
125
|
+
corrector.replace(range, " |#{block_arg_string(node, node.arguments)}|")
|
133
126
|
end
|
134
127
|
|
135
128
|
def autocorrect_body(corrector, node, block_body)
|
@@ -141,8 +134,7 @@ module RuboCop
|
|
141
134
|
|
142
135
|
block_start_col = node.source_range.column
|
143
136
|
|
144
|
-
corrector.insert_before(first_node,
|
145
|
-
"\n #{' ' * block_start_col}")
|
137
|
+
corrector.insert_before(first_node, "\n #{' ' * block_start_col}")
|
146
138
|
end
|
147
139
|
|
148
140
|
def block_arg_string(node, args)
|
@@ -24,8 +24,7 @@ module RuboCop
|
|
24
24
|
include MultilineElementLineBreaks
|
25
25
|
extend AutoCorrector
|
26
26
|
|
27
|
-
MSG = 'Each key in a multi-line hash must start on a '
|
28
|
-
'separate line.'
|
27
|
+
MSG = 'Each key in a multi-line hash must start on a separate line.'
|
29
28
|
|
30
29
|
def on_hash(node)
|
31
30
|
# This cop only deals with hashes wrapped by a set of curly
|
@@ -23,8 +23,7 @@ module RuboCop
|
|
23
23
|
include MultilineElementLineBreaks
|
24
24
|
extend AutoCorrector
|
25
25
|
|
26
|
-
MSG = 'Each argument in a multi-line method call must start '
|
27
|
-
'on a separate line.'
|
26
|
+
MSG = 'Each argument in a multi-line method call must start on a separate line.'
|
28
27
|
|
29
28
|
def on_send(node)
|
30
29
|
return if node.method?(:[]=)
|
@@ -46,10 +46,11 @@ module RuboCop
|
|
46
46
|
# .a
|
47
47
|
# .b
|
48
48
|
# .c
|
49
|
-
class MultilineMethodCallIndentation <
|
49
|
+
class MultilineMethodCallIndentation < Base
|
50
50
|
include ConfigurableEnforcedStyle
|
51
51
|
include Alignment
|
52
52
|
include MultilineExpressionIndentation
|
53
|
+
extend AutoCorrector
|
53
54
|
|
54
55
|
def validate_config
|
55
56
|
return unless style == :aligned && cop_config['IndentationWidth']
|
@@ -61,16 +62,28 @@ module RuboCop
|
|
61
62
|
'`EnforcedStyle` is `indented`.'
|
62
63
|
end
|
63
64
|
|
64
|
-
def autocorrect(node)
|
65
|
-
AlignmentCorrector.correct(processed_source, node, @column_delta)
|
66
|
-
end
|
67
|
-
|
68
65
|
private
|
69
66
|
|
67
|
+
def autocorrect(corrector, node)
|
68
|
+
AlignmentCorrector.correct(corrector, processed_source, node, @column_delta)
|
69
|
+
end
|
70
|
+
|
70
71
|
def relevant_node?(send_node)
|
71
72
|
send_node.loc.dot # Only check method calls with dot operator
|
72
73
|
end
|
73
74
|
|
75
|
+
def right_hand_side(send_node)
|
76
|
+
dot = send_node.loc.dot
|
77
|
+
selector = send_node.loc.selector
|
78
|
+
if send_node.dot? && selector && dot.line == selector.line
|
79
|
+
dot.join(selector)
|
80
|
+
elsif selector
|
81
|
+
selector
|
82
|
+
elsif send_node.implicit_call?
|
83
|
+
dot.join(send_node.loc.begin)
|
84
|
+
end
|
85
|
+
end
|
86
|
+
|
74
87
|
def offending_range(node, lhs, rhs, given_style)
|
75
88
|
return false unless begins_its_line?(rhs)
|
76
89
|
return false if not_for_this_cop?(node)
|
@@ -139,8 +152,7 @@ module RuboCop
|
|
139
152
|
def alignment_base(node, rhs, given_style)
|
140
153
|
case given_style
|
141
154
|
when :aligned
|
142
|
-
semantic_alignment_base(node, rhs) ||
|
143
|
-
syntactic_alignment_base(node, rhs)
|
155
|
+
semantic_alignment_base(node, rhs) || syntactic_alignment_base(node, rhs)
|
144
156
|
when :indented
|
145
157
|
nil
|
146
158
|
when :indented_relative_to_receiver
|
@@ -157,15 +169,11 @@ module RuboCop
|
|
157
169
|
|
158
170
|
# a = b
|
159
171
|
# .c
|
160
|
-
part_of_assignment_rhs(lhs, rhs)
|
161
|
-
return assignment_rhs(base).source_range
|
162
|
-
end
|
172
|
+
part_of_assignment_rhs(lhs, rhs) { |base| return assignment_rhs(base).source_range }
|
163
173
|
|
164
174
|
# a + b
|
165
175
|
# .c
|
166
|
-
operation_rhs(lhs)
|
167
|
-
return base.source_range
|
168
|
-
end
|
176
|
+
operation_rhs(lhs) { |base| return base.source_range }
|
169
177
|
end
|
170
178
|
|
171
179
|
# a.b
|
@@ -215,8 +223,7 @@ module RuboCop
|
|
215
223
|
end
|
216
224
|
|
217
225
|
def operator_rhs?(node, receiver)
|
218
|
-
node.operator_method? && node.arguments? &&
|
219
|
-
within_node?(receiver, node.first_argument)
|
226
|
+
node.operator_method? && node.arguments? && within_node?(receiver, node.first_argument)
|
220
227
|
end
|
221
228
|
end
|
222
229
|
end
|
@@ -41,10 +41,11 @@ module RuboCop
|
|
41
41
|
# something_else
|
42
42
|
# end
|
43
43
|
#
|
44
|
-
class MultilineOperationIndentation <
|
44
|
+
class MultilineOperationIndentation < Base
|
45
45
|
include ConfigurableEnforcedStyle
|
46
46
|
include Alignment
|
47
47
|
include MultilineExpressionIndentation
|
48
|
+
extend AutoCorrector
|
48
49
|
|
49
50
|
def on_and(node)
|
50
51
|
check_and_or(node)
|
@@ -63,12 +64,12 @@ module RuboCop
|
|
63
64
|
'`EnforcedStyle` is `indented`.'
|
64
65
|
end
|
65
66
|
|
66
|
-
def autocorrect(node)
|
67
|
-
AlignmentCorrector.correct(processed_source, node, @column_delta)
|
68
|
-
end
|
69
|
-
|
70
67
|
private
|
71
68
|
|
69
|
+
def autocorrect(corrector, node)
|
70
|
+
AlignmentCorrector.correct(corrector, processed_source, node, @column_delta)
|
71
|
+
end
|
72
|
+
|
72
73
|
def relevant_node?(node)
|
73
74
|
return false if node.send_type? && node.unary_operation?
|
74
75
|
|
@@ -117,6 +118,10 @@ module RuboCop
|
|
117
118
|
"spaces for indenting #{what} spanning multiple lines."
|
118
119
|
end
|
119
120
|
end
|
121
|
+
|
122
|
+
def right_hand_side(send_node)
|
123
|
+
send_node.first_argument.source_range
|
124
|
+
end
|
120
125
|
end
|
121
126
|
end
|
122
127
|
end
|
@@ -68,8 +68,9 @@ module RuboCop
|
|
68
68
|
# baz)
|
69
69
|
# 123
|
70
70
|
# end
|
71
|
-
class ParameterAlignment <
|
71
|
+
class ParameterAlignment < Base
|
72
72
|
include Alignment
|
73
|
+
extend AutoCorrector
|
73
74
|
|
74
75
|
ALIGN_PARAMS_MSG = 'Align the parameters of a method definition if ' \
|
75
76
|
'they span more than one line.'
|
@@ -84,12 +85,12 @@ module RuboCop
|
|
84
85
|
end
|
85
86
|
alias on_defs on_def
|
86
87
|
|
87
|
-
def autocorrect(node)
|
88
|
-
AlignmentCorrector.correct(processed_source, node, column_delta)
|
89
|
-
end
|
90
|
-
|
91
88
|
private
|
92
89
|
|
90
|
+
def autocorrect(corrector, node)
|
91
|
+
AlignmentCorrector.correct(corrector, processed_source, node, column_delta)
|
92
|
+
end
|
93
|
+
|
93
94
|
def message(_node)
|
94
95
|
fixed_indentation? ? FIXED_INDENT_MSG : ALIGN_PARAMS_MSG
|
95
96
|
end
|