rubocop 1.57.1 → 1.81.6
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/LICENSE.txt +1 -1
- data/README.md +92 -89
- data/assets/output.css.erb +159 -0
- data/assets/output.html.erb +1 -160
- data/config/default.yml +540 -86
- data/config/internal_affairs.yml +31 -0
- data/config/obsoletion.yml +8 -3
- data/exe/rubocop +1 -7
- data/lib/rubocop/cached_data.rb +21 -5
- data/lib/rubocop/cli/command/auto_generate_config.rb +30 -17
- data/lib/rubocop/cli/command/execute_runner.rb +4 -4
- data/lib/rubocop/cli/command/lsp.rb +4 -4
- data/lib/rubocop/cli/command/show_cops.rb +24 -2
- data/lib/rubocop/cli/command/show_docs_url.rb +2 -2
- data/lib/rubocop/cli/command/suggest_extensions.rb +7 -1
- data/lib/rubocop/cli/command/version.rb +2 -2
- data/lib/rubocop/cli.rb +28 -4
- data/lib/rubocop/comment_config.rb +3 -3
- data/lib/rubocop/config.rb +92 -22
- data/lib/rubocop/config_finder.rb +12 -2
- data/lib/rubocop/config_loader.rb +71 -58
- data/lib/rubocop/config_loader_resolver.rb +48 -17
- data/lib/rubocop/config_obsoletion/extracted_cop.rb +4 -3
- data/lib/rubocop/config_obsoletion/renamed_cop.rb +18 -3
- data/lib/rubocop/config_obsoletion.rb +56 -9
- data/lib/rubocop/config_store.rb +5 -0
- data/lib/rubocop/config_validator.rb +39 -20
- data/lib/rubocop/cop/autocorrect_logic.rb +57 -27
- data/lib/rubocop/cop/base.rb +79 -18
- data/lib/rubocop/cop/bundler/duplicated_gem.rb +2 -2
- data/lib/rubocop/cop/bundler/gem_comment.rb +2 -2
- data/lib/rubocop/cop/bundler/gem_filename.rb +0 -1
- data/lib/rubocop/cop/bundler/gem_version.rb +4 -5
- data/lib/rubocop/cop/bundler/insecure_protocol_source.rb +0 -1
- data/lib/rubocop/cop/bundler/ordered_gems.rb +1 -1
- data/lib/rubocop/cop/cop.rb +30 -4
- data/lib/rubocop/cop/correctors/alignment_corrector.rb +8 -16
- data/lib/rubocop/cop/correctors/each_to_for_corrector.rb +4 -8
- data/lib/rubocop/cop/correctors/for_to_each_corrector.rb +13 -16
- data/lib/rubocop/cop/correctors/line_break_corrector.rb +2 -0
- data/lib/rubocop/cop/correctors/parentheses_corrector.rb +6 -3
- data/lib/rubocop/cop/correctors/percent_literal_corrector.rb +10 -0
- data/lib/rubocop/cop/documentation.rb +32 -5
- data/lib/rubocop/cop/exclude_limit.rb +1 -1
- data/lib/rubocop/cop/force.rb +12 -0
- data/lib/rubocop/cop/gemspec/add_runtime_dependency.rb +38 -0
- data/lib/rubocop/cop/gemspec/attribute_assignment.rb +91 -0
- data/lib/rubocop/cop/gemspec/dependency_version.rb +3 -5
- data/lib/rubocop/cop/gemspec/deprecated_attribute_assignment.rb +3 -4
- data/lib/rubocop/cop/gemspec/duplicated_assignment.rb +39 -17
- data/lib/rubocop/cop/gemspec/ordered_dependencies.rb +1 -1
- data/lib/rubocop/cop/gemspec/require_mfa.rb +15 -1
- data/lib/rubocop/cop/gemspec/required_ruby_version.rb +5 -3
- data/lib/rubocop/cop/gemspec/ruby_version_globals_usage.rb +3 -3
- data/lib/rubocop/cop/generator.rb +6 -0
- data/lib/rubocop/cop/internal_affairs/cop_description.rb +0 -4
- data/lib/rubocop/cop/internal_affairs/cop_enabled.rb +85 -0
- data/lib/rubocop/cop/internal_affairs/empty_line_between_expect_offense_and_correction.rb +2 -1
- data/lib/rubocop/cop/internal_affairs/example_description.rb +13 -8
- data/lib/rubocop/cop/internal_affairs/location_exists.rb +116 -0
- data/lib/rubocop/cop/internal_affairs/location_expression.rb +2 -1
- data/lib/rubocop/cop/internal_affairs/location_line_equality_comparison.rb +3 -4
- data/lib/rubocop/cop/internal_affairs/method_name_end_with.rb +8 -6
- data/lib/rubocop/cop/internal_affairs/method_name_equal.rb +19 -20
- data/lib/rubocop/cop/internal_affairs/node_first_or_last_argument.rb +54 -0
- data/lib/rubocop/cop/internal_affairs/node_matcher_directive.rb +124 -30
- data/lib/rubocop/cop/internal_affairs/node_pattern_groups/ast_processor.rb +63 -0
- data/lib/rubocop/cop/internal_affairs/node_pattern_groups/ast_walker.rb +131 -0
- data/lib/rubocop/cop/internal_affairs/node_pattern_groups.rb +233 -0
- data/lib/rubocop/cop/internal_affairs/node_type_group.rb +92 -0
- data/lib/rubocop/cop/internal_affairs/node_type_multiple_predicates.rb +126 -0
- data/lib/rubocop/cop/internal_affairs/node_type_predicate.rb +4 -3
- data/lib/rubocop/cop/internal_affairs/numblock_handler.rb +1 -1
- data/lib/rubocop/cop/internal_affairs/on_send_without_on_csend.rb +90 -0
- data/lib/rubocop/cop/internal_affairs/operator_keyword.rb +48 -0
- data/lib/rubocop/cop/internal_affairs/plugin.rb +33 -0
- data/lib/rubocop/cop/internal_affairs/redundant_described_class_as_subject.rb +6 -5
- data/lib/rubocop/cop/internal_affairs/redundant_expect_offense_arguments.rb +34 -0
- data/lib/rubocop/cop/internal_affairs/redundant_message_argument.rb +6 -21
- data/lib/rubocop/cop/internal_affairs/redundant_source_range.rb +11 -2
- data/lib/rubocop/cop/internal_affairs/single_line_comparison.rb +5 -4
- data/lib/rubocop/cop/internal_affairs/style_detected_api_use.rb +0 -2
- data/lib/rubocop/cop/internal_affairs/undefined_config.rb +23 -2
- data/lib/rubocop/cop/internal_affairs/useless_message_assertion.rb +0 -5
- data/lib/rubocop/cop/internal_affairs/useless_restrict_on_send.rb +1 -1
- data/lib/rubocop/cop/internal_affairs.rb +9 -0
- data/lib/rubocop/cop/layout/access_modifier_indentation.rb +6 -2
- data/lib/rubocop/cop/layout/argument_alignment.rb +3 -10
- data/lib/rubocop/cop/layout/array_alignment.rb +1 -1
- data/lib/rubocop/cop/layout/assignment_indentation.rb +3 -2
- data/lib/rubocop/cop/layout/begin_end_alignment.rb +0 -1
- data/lib/rubocop/cop/layout/block_alignment.rb +32 -13
- data/lib/rubocop/cop/layout/block_end_newline.rb +1 -0
- data/lib/rubocop/cop/layout/case_indentation.rb +1 -1
- data/lib/rubocop/cop/layout/class_structure.rb +45 -10
- data/lib/rubocop/cop/layout/closing_parenthesis_indentation.rb +5 -5
- data/lib/rubocop/cop/layout/comment_indentation.rb +1 -1
- data/lib/rubocop/cop/layout/condition_position.rb +0 -4
- data/lib/rubocop/cop/layout/def_end_alignment.rb +2 -2
- data/lib/rubocop/cop/layout/dot_position.rb +1 -1
- data/lib/rubocop/cop/layout/else_alignment.rb +2 -2
- data/lib/rubocop/cop/layout/empty_comment.rb +3 -1
- data/lib/rubocop/cop/layout/empty_line_after_guard_clause.rb +4 -4
- data/lib/rubocop/cop/layout/empty_line_after_magic_comment.rb +14 -7
- data/lib/rubocop/cop/layout/empty_line_after_multiline_condition.rb +1 -1
- data/lib/rubocop/cop/layout/empty_line_between_defs.rb +36 -21
- data/lib/rubocop/cop/layout/empty_lines_after_module_inclusion.rb +101 -0
- data/lib/rubocop/cop/layout/empty_lines_around_access_modifier.rb +37 -7
- data/lib/rubocop/cop/layout/empty_lines_around_arguments.rb +8 -29
- data/lib/rubocop/cop/layout/empty_lines_around_begin_body.rb +5 -6
- data/lib/rubocop/cop/layout/empty_lines_around_block_body.rb +1 -0
- data/lib/rubocop/cop/layout/empty_lines_around_class_body.rb +1 -1
- data/lib/rubocop/cop/layout/empty_lines_around_exception_handling_keywords.rb +12 -8
- data/lib/rubocop/cop/layout/empty_lines_around_method_body.rb +23 -1
- data/lib/rubocop/cop/layout/end_alignment.rb +16 -4
- data/lib/rubocop/cop/layout/extra_spacing.rb +5 -11
- data/lib/rubocop/cop/layout/first_argument_indentation.rb +6 -11
- data/lib/rubocop/cop/layout/first_array_element_indentation.rb +19 -10
- data/lib/rubocop/cop/layout/first_hash_element_indentation.rb +2 -7
- data/lib/rubocop/cop/layout/first_hash_element_line_break.rb +1 -1
- data/lib/rubocop/cop/layout/first_method_argument_line_break.rb +8 -0
- data/lib/rubocop/cop/layout/first_parameter_indentation.rb +3 -3
- data/lib/rubocop/cop/layout/hash_alignment.rb +8 -11
- data/lib/rubocop/cop/layout/heredoc_argument_closing_parenthesis.rb +4 -3
- data/lib/rubocop/cop/layout/heredoc_indentation.rb +2 -2
- data/lib/rubocop/cop/layout/indentation_width.rb +13 -13
- data/lib/rubocop/cop/layout/leading_comment_space.rb +83 -1
- data/lib/rubocop/cop/layout/line_continuation_leading_space.rb +12 -3
- data/lib/rubocop/cop/layout/line_continuation_spacing.rb +7 -1
- data/lib/rubocop/cop/layout/line_end_string_concatenation_indentation.rb +2 -2
- data/lib/rubocop/cop/layout/line_length.rb +177 -29
- data/lib/rubocop/cop/layout/multiline_block_layout.rb +1 -0
- data/lib/rubocop/cop/layout/multiline_hash_key_line_breaks.rb +1 -1
- data/lib/rubocop/cop/layout/multiline_method_argument_line_breaks.rb +25 -0
- data/lib/rubocop/cop/layout/multiline_method_call_brace_layout.rb +2 -1
- data/lib/rubocop/cop/layout/multiline_method_call_indentation.rb +4 -4
- data/lib/rubocop/cop/layout/multiline_method_definition_brace_layout.rb +1 -1
- data/lib/rubocop/cop/layout/multiline_method_parameter_line_breaks.rb +1 -0
- data/lib/rubocop/cop/layout/multiline_operation_indentation.rb +11 -8
- data/lib/rubocop/cop/layout/parameter_alignment.rb +3 -4
- data/lib/rubocop/cop/layout/redundant_line_break.rb +32 -46
- data/lib/rubocop/cop/layout/rescue_ensure_alignment.rb +16 -9
- data/lib/rubocop/cop/layout/single_line_block_chain.rb +6 -1
- data/lib/rubocop/cop/layout/space_after_colon.rb +2 -2
- data/lib/rubocop/cop/layout/space_after_comma.rb +1 -1
- data/lib/rubocop/cop/layout/space_after_method_name.rb +1 -1
- data/lib/rubocop/cop/layout/space_after_semicolon.rb +11 -1
- data/lib/rubocop/cop/layout/space_around_keyword.rb +8 -2
- data/lib/rubocop/cop/layout/space_around_method_call_operator.rb +1 -1
- data/lib/rubocop/cop/layout/space_around_operators.rb +80 -37
- data/lib/rubocop/cop/layout/space_before_block_braces.rb +20 -10
- data/lib/rubocop/cop/layout/space_before_brackets.rb +7 -40
- data/lib/rubocop/cop/layout/space_before_comma.rb +1 -1
- data/lib/rubocop/cop/layout/space_before_semicolon.rb +1 -1
- data/lib/rubocop/cop/layout/space_inside_array_literal_brackets.rb +18 -3
- data/lib/rubocop/cop/layout/space_inside_block_braces.rb +5 -0
- data/lib/rubocop/cop/layout/space_inside_hash_literal_braces.rb +8 -1
- data/lib/rubocop/cop/layout/space_inside_string_interpolation.rb +3 -5
- data/lib/rubocop/cop/layout/trailing_whitespace.rb +6 -4
- data/lib/rubocop/cop/legacy/corrector.rb +12 -2
- data/lib/rubocop/cop/lint/ambiguous_block_association.rb +1 -3
- data/lib/rubocop/cop/lint/ambiguous_operator.rb +0 -2
- data/lib/rubocop/cop/lint/ambiguous_range.rb +9 -1
- data/lib/rubocop/cop/lint/ambiguous_regexp_literal.rb +0 -2
- data/lib/rubocop/cop/lint/array_literal_in_regexp.rb +118 -0
- data/lib/rubocop/cop/lint/assignment_in_condition.rb +7 -9
- data/lib/rubocop/cop/lint/big_decimal_new.rb +4 -7
- data/lib/rubocop/cop/lint/binary_operator_with_identical_operands.rb +11 -13
- data/lib/rubocop/cop/lint/boolean_symbol.rb +2 -4
- data/lib/rubocop/cop/lint/circular_argument_reference.rb +4 -14
- data/lib/rubocop/cop/lint/constant_definition_in_block.rb +3 -3
- data/lib/rubocop/cop/lint/constant_overwritten_in_rescue.rb +4 -3
- data/lib/rubocop/cop/lint/constant_reassignment.rb +148 -0
- data/lib/rubocop/cop/lint/cop_directive_syntax.rb +90 -0
- data/lib/rubocop/cop/lint/debugger.rb +30 -8
- data/lib/rubocop/cop/lint/deprecated_class_methods.rb +2 -2
- data/lib/rubocop/cop/lint/deprecated_open_ssl_constant.rb +7 -13
- data/lib/rubocop/cop/lint/duplicate_branch.rb +39 -4
- data/lib/rubocop/cop/lint/duplicate_case_condition.rb +1 -5
- data/lib/rubocop/cop/lint/duplicate_hash_key.rb +0 -4
- data/lib/rubocop/cop/lint/duplicate_match_pattern.rb +1 -1
- data/lib/rubocop/cop/lint/duplicate_methods.rb +110 -32
- data/lib/rubocop/cop/lint/duplicate_regexp_character_class_element.rb +6 -43
- data/lib/rubocop/cop/lint/duplicate_set_element.rb +87 -0
- data/lib/rubocop/cop/lint/each_with_object_argument.rb +0 -4
- data/lib/rubocop/cop/lint/else_layout.rb +0 -2
- data/lib/rubocop/cop/lint/empty_conditional_body.rb +29 -58
- data/lib/rubocop/cop/lint/empty_ensure.rb +2 -12
- data/lib/rubocop/cop/lint/empty_expression.rb +0 -2
- data/lib/rubocop/cop/lint/empty_file.rb +0 -2
- data/lib/rubocop/cop/lint/empty_interpolation.rb +14 -5
- data/lib/rubocop/cop/lint/empty_when.rb +1 -3
- data/lib/rubocop/cop/lint/ensure_return.rb +2 -10
- data/lib/rubocop/cop/lint/erb_new_arguments.rb +24 -23
- data/lib/rubocop/cop/lint/float_comparison.rb +58 -15
- data/lib/rubocop/cop/lint/float_out_of_range.rb +2 -8
- data/lib/rubocop/cop/lint/format_parameter_mismatch.rb +2 -12
- data/lib/rubocop/cop/lint/hash_compare_by_identity.rb +2 -1
- data/lib/rubocop/cop/lint/hash_new_with_keyword_arguments_as_default.rb +55 -0
- data/lib/rubocop/cop/lint/identity_comparison.rb +19 -15
- data/lib/rubocop/cop/lint/implicit_string_concatenation.rb +23 -12
- data/lib/rubocop/cop/lint/ineffective_access_modifier.rb +0 -7
- data/lib/rubocop/cop/lint/interpolation_check.rb +9 -4
- data/lib/rubocop/cop/lint/it_without_arguments_in_block.rb +50 -0
- data/lib/rubocop/cop/lint/literal_as_condition.rb +126 -11
- data/lib/rubocop/cop/lint/literal_assignment_in_condition.rb +85 -0
- data/lib/rubocop/cop/lint/literal_in_interpolation.rb +49 -12
- data/lib/rubocop/cop/lint/loop.rb +6 -12
- data/lib/rubocop/cop/lint/missing_cop_enable_directive.rb +1 -2
- data/lib/rubocop/cop/lint/missing_super.rb +2 -2
- data/lib/rubocop/cop/lint/mixed_case_range.rb +14 -12
- data/lib/rubocop/cop/lint/mixed_regexp_capture_types.rb +1 -1
- data/lib/rubocop/cop/lint/nested_method_definition.rb +10 -12
- data/lib/rubocop/cop/lint/next_without_accumulator.rb +6 -25
- data/lib/rubocop/cop/lint/no_return_in_begin_end_blocks.rb +2 -7
- data/lib/rubocop/cop/lint/non_atomic_file_operation.rb +12 -3
- data/lib/rubocop/cop/lint/non_deterministic_require_order.rb +6 -8
- data/lib/rubocop/cop/lint/non_local_exit_from_iterator.rb +3 -3
- data/lib/rubocop/cop/lint/number_conversion.rb +9 -5
- data/lib/rubocop/cop/lint/numbered_parameter_assignment.rb +1 -2
- data/lib/rubocop/cop/lint/numeric_operation_with_constant_result.rb +94 -0
- data/lib/rubocop/cop/lint/or_assignment_to_constant.rb +2 -3
- data/lib/rubocop/cop/lint/out_of_range_regexp_ref.rb +3 -2
- data/lib/rubocop/cop/lint/parentheses_as_grouped_expression.rb +6 -11
- data/lib/rubocop/cop/lint/percent_string_array.rb +0 -4
- data/lib/rubocop/cop/lint/percent_symbol_array.rb +0 -4
- data/lib/rubocop/cop/lint/raise_exception.rb +29 -10
- data/lib/rubocop/cop/lint/rand_one.rb +0 -4
- data/lib/rubocop/cop/lint/redundant_cop_enable_directive.rb +4 -2
- data/lib/rubocop/cop/lint/redundant_regexp_quantifiers.rb +2 -2
- data/lib/rubocop/cop/lint/redundant_require_statement.rb +0 -21
- data/lib/rubocop/cop/lint/redundant_safe_navigation.rb +164 -12
- data/lib/rubocop/cop/lint/redundant_splat_expansion.rb +9 -8
- data/lib/rubocop/cop/lint/redundant_string_coercion.rb +2 -6
- data/lib/rubocop/cop/lint/redundant_type_conversion.rb +261 -0
- data/lib/rubocop/cop/lint/redundant_with_index.rb +9 -2
- data/lib/rubocop/cop/lint/redundant_with_object.rb +5 -2
- data/lib/rubocop/cop/lint/refinement_import_methods.rb +1 -1
- data/lib/rubocop/cop/lint/regexp_as_condition.rb +0 -1
- data/lib/rubocop/cop/lint/require_parentheses.rb +0 -4
- data/lib/rubocop/cop/lint/require_range_parentheses.rb +1 -1
- data/lib/rubocop/cop/lint/rescue_exception.rb +2 -9
- data/lib/rubocop/cop/lint/rescue_type.rb +5 -11
- data/lib/rubocop/cop/lint/return_in_void_context.rb +9 -13
- data/lib/rubocop/cop/lint/safe_navigation_chain.rb +20 -9
- data/lib/rubocop/cop/lint/safe_navigation_consistency.rb +109 -41
- data/lib/rubocop/cop/lint/script_permission.rb +3 -3
- data/lib/rubocop/cop/lint/self_assignment.rb +72 -10
- data/lib/rubocop/cop/lint/shadowed_argument.rb +8 -7
- data/lib/rubocop/cop/lint/shadowed_exception.rb +1 -1
- data/lib/rubocop/cop/lint/shadowing_outer_local_variable.rb +19 -11
- data/lib/rubocop/cop/lint/shared_mutable_default.rb +76 -0
- data/lib/rubocop/cop/lint/suppressed_exception.rb +1 -1
- data/lib/rubocop/cop/lint/suppressed_exception_in_number_conversion.rb +111 -0
- data/lib/rubocop/cop/lint/symbol_conversion.rb +8 -3
- data/lib/rubocop/cop/lint/syntax.rb +10 -4
- data/lib/rubocop/cop/lint/to_enum_arguments.rb +2 -4
- data/lib/rubocop/cop/lint/top_level_return_with_argument.rb +1 -1
- data/lib/rubocop/cop/lint/trailing_comma_in_attribute_declaration.rb +1 -1
- data/lib/rubocop/cop/lint/unescaped_bracket_in_regexp.rb +88 -0
- data/lib/rubocop/cop/lint/unexpected_block_arity.rb +3 -1
- data/lib/rubocop/cop/lint/unified_integer.rb +0 -4
- data/lib/rubocop/cop/lint/unmodified_reduce_accumulator.rb +4 -3
- data/lib/rubocop/cop/lint/unreachable_code.rb +56 -9
- data/lib/rubocop/cop/lint/unreachable_loop.rb +14 -8
- data/lib/rubocop/cop/lint/unused_method_argument.rb +18 -2
- data/lib/rubocop/cop/lint/uri_escape_unescape.rb +2 -0
- data/lib/rubocop/cop/lint/uri_regexp.rb +25 -7
- data/lib/rubocop/cop/lint/useless_access_modifier.rb +36 -10
- data/lib/rubocop/cop/lint/useless_assignment.rb +21 -16
- data/lib/rubocop/cop/lint/useless_constant_scoping.rb +71 -0
- data/lib/rubocop/cop/lint/useless_default_value_argument.rb +90 -0
- data/lib/rubocop/cop/lint/useless_defined.rb +55 -0
- data/lib/rubocop/cop/lint/useless_else_without_rescue.rb +4 -4
- data/lib/rubocop/cop/lint/useless_method_definition.rb +1 -1
- data/lib/rubocop/cop/lint/useless_numeric_operation.rb +79 -0
- data/lib/rubocop/cop/lint/useless_or.rb +98 -0
- data/lib/rubocop/cop/lint/useless_rescue.rb +2 -2
- data/lib/rubocop/cop/lint/useless_ruby2_keywords.rb +5 -5
- data/lib/rubocop/cop/lint/useless_setter_call.rb +14 -29
- data/lib/rubocop/cop/lint/useless_times.rb +2 -2
- data/lib/rubocop/cop/lint/utils/nil_receiver_checker.rb +121 -0
- data/lib/rubocop/cop/lint/void.rb +92 -18
- data/lib/rubocop/cop/message_annotator.rb +7 -3
- data/lib/rubocop/cop/metrics/abc_size.rb +4 -4
- data/lib/rubocop/cop/metrics/block_length.rb +7 -5
- data/lib/rubocop/cop/metrics/block_nesting.rb +20 -8
- data/lib/rubocop/cop/metrics/class_length.rb +21 -15
- data/lib/rubocop/cop/metrics/collection_literal_length.rb +7 -0
- data/lib/rubocop/cop/metrics/cyclomatic_complexity.rb +5 -2
- data/lib/rubocop/cop/metrics/method_length.rb +15 -6
- data/lib/rubocop/cop/metrics/module_length.rb +7 -6
- data/lib/rubocop/cop/metrics/perceived_complexity.rb +1 -1
- data/lib/rubocop/cop/metrics/utils/abc_size_calculator.rb +1 -1
- data/lib/rubocop/cop/metrics/utils/code_length_calculator.rb +8 -9
- data/lib/rubocop/cop/metrics/utils/repeated_attribute_discount.rb +7 -7
- data/lib/rubocop/cop/mixin/alignment.rb +8 -4
- data/lib/rubocop/cop/mixin/allowed_methods.rb +7 -1
- data/lib/rubocop/cop/mixin/allowed_pattern.rb +15 -3
- data/lib/rubocop/cop/mixin/annotation_comment.rb +0 -2
- data/lib/rubocop/cop/mixin/check_assignment.rb +4 -12
- data/lib/rubocop/cop/mixin/check_line_breakable.rb +22 -12
- data/lib/rubocop/cop/mixin/check_single_line_suitability.rb +49 -0
- data/lib/rubocop/cop/mixin/code_length.rb +12 -1
- data/lib/rubocop/cop/mixin/comments_help.rb +23 -14
- data/lib/rubocop/cop/mixin/configurable_formatting.rb +1 -0
- data/lib/rubocop/cop/mixin/configurable_max.rb +5 -1
- data/lib/rubocop/cop/mixin/def_node.rb +1 -1
- data/lib/rubocop/cop/mixin/dig_help.rb +27 -0
- data/lib/rubocop/cop/mixin/empty_lines_around_body.rb +1 -1
- data/lib/rubocop/cop/mixin/end_keyword_alignment.rb +1 -7
- data/lib/rubocop/cop/mixin/endless_method_rewriter.rb +24 -0
- data/lib/rubocop/cop/mixin/forbidden_identifiers.rb +20 -0
- data/lib/rubocop/cop/mixin/forbidden_pattern.rb +16 -0
- data/lib/rubocop/cop/mixin/frozen_string_literal.rb +23 -12
- data/lib/rubocop/cop/mixin/gemspec_help.rb +22 -0
- data/lib/rubocop/cop/mixin/hash_alignment_styles.rb +15 -14
- data/lib/rubocop/cop/mixin/hash_shorthand_syntax.rb +45 -35
- data/lib/rubocop/cop/mixin/hash_subset.rb +203 -0
- data/lib/rubocop/cop/mixin/hash_transform_method.rb +74 -74
- data/lib/rubocop/cop/mixin/line_length_help.rb +34 -12
- data/lib/rubocop/cop/mixin/method_complexity.rb +17 -7
- data/lib/rubocop/cop/mixin/multiline_expression_indentation.rb +7 -9
- data/lib/rubocop/cop/mixin/ordered_gem_node.rb +1 -1
- data/lib/rubocop/cop/mixin/percent_array.rb +1 -1
- data/lib/rubocop/cop/mixin/percent_literal.rb +1 -1
- data/lib/rubocop/cop/mixin/preceding_following_alignment.rb +68 -30
- data/lib/rubocop/cop/mixin/range_help.rb +15 -4
- data/lib/rubocop/cop/mixin/rescue_node.rb +4 -0
- data/lib/rubocop/cop/mixin/safe_assignment.rb +1 -1
- data/lib/rubocop/cop/mixin/statement_modifier.rb +11 -5
- data/lib/rubocop/cop/mixin/string_help.rb +2 -2
- data/lib/rubocop/cop/mixin/string_literals_help.rb +12 -0
- data/lib/rubocop/cop/mixin/target_ruby_version.rb +17 -1
- data/lib/rubocop/cop/mixin/trailing_comma.rb +21 -5
- data/lib/rubocop/cop/naming/accessor_method_name.rb +11 -6
- data/lib/rubocop/cop/naming/block_forwarding.rb +39 -8
- data/lib/rubocop/cop/naming/constant_name.rb +7 -9
- data/lib/rubocop/cop/naming/file_name.rb +4 -6
- data/lib/rubocop/cop/naming/inclusive_language.rb +13 -5
- data/lib/rubocop/cop/naming/memoized_instance_variable_name.rb +13 -14
- data/lib/rubocop/cop/naming/method_name.rb +185 -15
- data/lib/rubocop/cop/naming/predicate_method.rb +319 -0
- data/lib/rubocop/cop/naming/predicate_prefix.rb +204 -0
- data/lib/rubocop/cop/naming/rescued_exceptions_variable_name.rb +14 -13
- data/lib/rubocop/cop/naming/variable_name.rb +50 -6
- data/lib/rubocop/cop/naming/variable_number.rb +2 -3
- data/lib/rubocop/cop/offense.rb +4 -5
- data/lib/rubocop/cop/registry.rb +9 -6
- data/lib/rubocop/cop/security/compound_hash.rb +4 -2
- data/lib/rubocop/cop/security/eval.rb +2 -1
- data/lib/rubocop/cop/security/json_load.rb +33 -11
- data/lib/rubocop/cop/security/open.rb +3 -2
- data/lib/rubocop/cop/security/yaml_load.rb +3 -2
- data/lib/rubocop/cop/style/access_modifier_declarations.rb +172 -32
- data/lib/rubocop/cop/style/accessor_grouping.rb +43 -9
- data/lib/rubocop/cop/style/alias.rb +2 -1
- data/lib/rubocop/cop/style/ambiguous_endless_method_definition.rb +79 -0
- data/lib/rubocop/cop/style/and_or.rb +1 -1
- data/lib/rubocop/cop/style/arguments_forwarding.rb +228 -36
- data/lib/rubocop/cop/style/array_first_last.rb +80 -0
- data/lib/rubocop/cop/style/array_intersect.rb +115 -39
- data/lib/rubocop/cop/style/array_intersect_with_single_element.rb +47 -0
- data/lib/rubocop/cop/style/auto_resource_cleanup.rb +21 -14
- data/lib/rubocop/cop/style/bisected_attr_accessor.rb +2 -2
- data/lib/rubocop/cop/style/bitwise_predicate.rb +107 -0
- data/lib/rubocop/cop/style/block_delimiters.rb +52 -21
- data/lib/rubocop/cop/style/case_like_if.rb +14 -17
- data/lib/rubocop/cop/style/class_and_module_children.rb +52 -11
- data/lib/rubocop/cop/style/class_check.rb +1 -0
- data/lib/rubocop/cop/style/class_equality_comparison.rb +1 -1
- data/lib/rubocop/cop/style/class_vars.rb +3 -3
- data/lib/rubocop/cop/style/collection_compact.rb +25 -15
- data/lib/rubocop/cop/style/collection_methods.rb +2 -1
- data/lib/rubocop/cop/style/collection_querying.rb +167 -0
- data/lib/rubocop/cop/style/combinable_defined.rb +115 -0
- data/lib/rubocop/cop/style/combinable_loops.rb +22 -8
- data/lib/rubocop/cop/style/command_literal.rb +1 -1
- data/lib/rubocop/cop/style/commented_keyword.rb +30 -4
- data/lib/rubocop/cop/style/comparable_between.rb +78 -0
- data/lib/rubocop/cop/style/concat_array_literals.rb +2 -1
- data/lib/rubocop/cop/style/conditional_assignment.rb +57 -40
- data/lib/rubocop/cop/style/constant_visibility.rb +3 -12
- data/lib/rubocop/cop/style/copyright.rb +31 -21
- data/lib/rubocop/cop/style/data_inheritance.rb +8 -1
- data/lib/rubocop/cop/style/date_time.rb +5 -4
- data/lib/rubocop/cop/style/def_with_parentheses.rb +18 -7
- data/lib/rubocop/cop/style/dig_chain.rb +89 -0
- data/lib/rubocop/cop/style/documentation.rb +25 -25
- data/lib/rubocop/cop/style/documentation_method.rb +20 -0
- data/lib/rubocop/cop/style/double_negation.rb +5 -5
- data/lib/rubocop/cop/style/each_for_simple_loop.rb +11 -15
- data/lib/rubocop/cop/style/each_with_object.rb +3 -4
- data/lib/rubocop/cop/style/empty_else.rb +10 -7
- data/lib/rubocop/cop/style/empty_heredoc.rb +1 -14
- data/lib/rubocop/cop/style/empty_literal.rb +36 -23
- data/lib/rubocop/cop/style/empty_method.rb +1 -1
- data/lib/rubocop/cop/style/empty_string_inside_interpolation.rb +100 -0
- data/lib/rubocop/cop/style/endless_method.rb +163 -18
- data/lib/rubocop/cop/style/eval_with_location.rb +23 -31
- data/lib/rubocop/cop/style/exact_regexp_match.rb +6 -5
- data/lib/rubocop/cop/style/expand_path_arguments.rb +2 -7
- data/lib/rubocop/cop/style/explicit_block_argument.rb +19 -6
- data/lib/rubocop/cop/style/exponential_notation.rb +6 -5
- data/lib/rubocop/cop/style/fetch_env_var.rb +34 -7
- data/lib/rubocop/cop/style/file_null.rb +89 -0
- data/lib/rubocop/cop/style/file_read.rb +2 -5
- data/lib/rubocop/cop/style/file_touch.rb +75 -0
- data/lib/rubocop/cop/style/file_write.rb +2 -5
- data/lib/rubocop/cop/style/float_division.rb +8 -4
- data/lib/rubocop/cop/style/for.rb +3 -1
- data/lib/rubocop/cop/style/format_string.rb +9 -9
- data/lib/rubocop/cop/style/format_string_token.rb +38 -11
- data/lib/rubocop/cop/style/frozen_string_literal_comment.rb +3 -2
- data/lib/rubocop/cop/style/global_std_stream.rb +10 -1
- data/lib/rubocop/cop/style/global_vars.rb +1 -3
- data/lib/rubocop/cop/style/guard_clause.rb +20 -4
- data/lib/rubocop/cop/style/hash_conversion.rb +16 -9
- data/lib/rubocop/cop/style/hash_each_methods.rb +110 -12
- data/lib/rubocop/cop/style/hash_except.rb +38 -146
- data/lib/rubocop/cop/style/hash_fetch_chain.rb +104 -0
- data/lib/rubocop/cop/style/hash_slice.rb +80 -0
- data/lib/rubocop/cop/style/hash_syntax.rb +35 -7
- data/lib/rubocop/cop/style/hash_transform_keys.rb +2 -2
- data/lib/rubocop/cop/style/hash_transform_values.rb +2 -2
- data/lib/rubocop/cop/style/identical_conditional_branches.rb +37 -7
- data/lib/rubocop/cop/style/if_inside_else.rb +11 -15
- data/lib/rubocop/cop/style/if_unless_modifier.rb +36 -9
- data/lib/rubocop/cop/style/if_unless_modifier_of_if_unless.rb +4 -7
- data/lib/rubocop/cop/style/if_with_boolean_literal_branches.rb +8 -8
- data/lib/rubocop/cop/style/if_with_semicolon.rb +60 -6
- data/lib/rubocop/cop/style/in_pattern_then.rb +6 -2
- data/lib/rubocop/cop/style/infinite_loop.rb +1 -1
- data/lib/rubocop/cop/style/inverse_methods.rb +22 -18
- data/lib/rubocop/cop/style/invertible_unless_condition.rb +48 -6
- data/lib/rubocop/cop/style/ip_addresses.rb +2 -2
- data/lib/rubocop/cop/style/it_assignment.rb +93 -0
- data/lib/rubocop/cop/style/it_block_parameter.rb +121 -0
- data/lib/rubocop/cop/style/keyword_arguments_merging.rb +67 -0
- data/lib/rubocop/cop/style/keyword_parameters_order.rb +14 -8
- data/lib/rubocop/cop/style/lambda.rb +2 -1
- data/lib/rubocop/cop/style/lambda_call.rb +10 -4
- data/lib/rubocop/cop/style/line_end_concatenation.rb +10 -4
- data/lib/rubocop/cop/style/magic_comment_format.rb +1 -1
- data/lib/rubocop/cop/style/map_compact_with_conditional_block.rb +82 -50
- data/lib/rubocop/cop/style/map_into_array.rb +236 -0
- data/lib/rubocop/cop/style/map_to_hash.rb +29 -10
- data/lib/rubocop/cop/style/map_to_set.rb +4 -5
- data/lib/rubocop/cop/style/method_call_with_args_parentheses/omit_parentheses.rb +52 -25
- data/lib/rubocop/cop/style/method_call_with_args_parentheses.rb +21 -5
- data/lib/rubocop/cop/style/method_call_without_args_parentheses.rb +30 -13
- data/lib/rubocop/cop/style/method_called_on_do_end_block.rb +3 -4
- data/lib/rubocop/cop/style/method_def_parentheses.rb +2 -2
- data/lib/rubocop/cop/style/min_max_comparison.rb +13 -5
- data/lib/rubocop/cop/style/missing_else.rb +2 -4
- data/lib/rubocop/cop/style/missing_respond_to_missing.rb +35 -5
- data/lib/rubocop/cop/style/multiline_block_chain.rb +3 -2
- data/lib/rubocop/cop/style/multiline_if_modifier.rb +2 -0
- data/lib/rubocop/cop/style/multiline_memoization.rb +2 -2
- data/lib/rubocop/cop/style/multiline_method_signature.rb +10 -9
- data/lib/rubocop/cop/style/multiline_ternary_operator.rb +5 -3
- data/lib/rubocop/cop/style/multiline_when_then.rb +0 -4
- data/lib/rubocop/cop/style/multiple_comparison.rb +53 -60
- data/lib/rubocop/cop/style/mutable_constant.rb +7 -8
- data/lib/rubocop/cop/style/negated_if_else_condition.rb +7 -5
- data/lib/rubocop/cop/style/nested_modifier.rb +1 -1
- data/lib/rubocop/cop/style/nested_parenthesized_calls.rb +2 -2
- data/lib/rubocop/cop/style/nested_ternary_operator.rb +5 -4
- data/lib/rubocop/cop/style/next.rb +45 -1
- data/lib/rubocop/cop/style/nil_comparison.rb +11 -7
- data/lib/rubocop/cop/style/not.rb +1 -1
- data/lib/rubocop/cop/style/numeric_literal_prefix.rb +1 -1
- data/lib/rubocop/cop/style/numeric_predicate.rb +12 -4
- data/lib/rubocop/cop/style/object_then.rb +16 -14
- data/lib/rubocop/cop/style/one_line_conditional.rb +48 -15
- data/lib/rubocop/cop/style/open_struct_use.rb +5 -5
- data/lib/rubocop/cop/style/operator_method_call.rb +27 -9
- data/lib/rubocop/cop/style/or_assignment.rb +3 -6
- data/lib/rubocop/cop/style/parallel_assignment.rb +47 -45
- data/lib/rubocop/cop/style/parentheses_around_condition.rb +8 -0
- data/lib/rubocop/cop/style/percent_literal_delimiters.rb +1 -1
- data/lib/rubocop/cop/style/percent_q_literals.rb +1 -1
- data/lib/rubocop/cop/style/proc.rb +2 -2
- data/lib/rubocop/cop/style/quoted_symbols.rb +2 -4
- data/lib/rubocop/cop/style/raise_args.rb +19 -14
- data/lib/rubocop/cop/style/random_with_offset.rb +3 -3
- data/lib/rubocop/cop/style/redundant_argument.rb +29 -3
- data/lib/rubocop/cop/style/redundant_array_flatten.rb +50 -0
- data/lib/rubocop/cop/style/redundant_assignment.rb +11 -3
- data/lib/rubocop/cop/style/redundant_begin.rb +41 -2
- data/lib/rubocop/cop/style/redundant_condition.rb +97 -25
- data/lib/rubocop/cop/style/redundant_current_directory_in_path.rb +19 -7
- data/lib/rubocop/cop/style/redundant_double_splat_hash_braces.rb +17 -14
- data/lib/rubocop/cop/style/redundant_each.rb +7 -4
- data/lib/rubocop/cop/style/redundant_exception.rb +2 -2
- data/lib/rubocop/cop/style/redundant_fetch_block.rb +4 -12
- data/lib/rubocop/cop/style/redundant_file_extension_in_require.rb +1 -1
- data/lib/rubocop/cop/style/redundant_filter_chain.rb +5 -4
- data/lib/rubocop/cop/style/redundant_format.rb +283 -0
- data/lib/rubocop/cop/style/redundant_freeze.rb +4 -4
- data/lib/rubocop/cop/style/redundant_initialize.rb +12 -3
- data/lib/rubocop/cop/style/redundant_interpolation.rb +12 -3
- data/lib/rubocop/cop/style/redundant_interpolation_unfreeze.rb +46 -0
- data/lib/rubocop/cop/style/redundant_line_continuation.rb +72 -19
- data/lib/rubocop/cop/style/redundant_parentheses.rb +149 -49
- data/lib/rubocop/cop/style/redundant_percent_q.rb +1 -1
- data/lib/rubocop/cop/style/redundant_regexp_argument.rb +12 -1
- data/lib/rubocop/cop/style/redundant_regexp_character_class.rb +1 -1
- data/lib/rubocop/cop/style/redundant_regexp_escape.rb +16 -24
- data/lib/rubocop/cop/style/redundant_return.rb +9 -3
- data/lib/rubocop/cop/style/redundant_self.rb +32 -20
- data/lib/rubocop/cop/style/redundant_self_assignment.rb +20 -32
- data/lib/rubocop/cop/style/redundant_self_assignment_branch.rb +4 -4
- data/lib/rubocop/cop/style/redundant_sort.rb +10 -9
- data/lib/rubocop/cop/style/redundant_sort_by.rb +19 -3
- data/lib/rubocop/cop/style/redundant_string_escape.rb +3 -3
- data/lib/rubocop/cop/style/regexp_literal.rb +1 -1
- data/lib/rubocop/cop/style/require_order.rb +2 -2
- data/lib/rubocop/cop/style/rescue_modifier.rb +18 -4
- data/lib/rubocop/cop/style/return_nil.rb +2 -2
- data/lib/rubocop/cop/style/return_nil_in_predicate_method_definition.rb +54 -12
- data/lib/rubocop/cop/style/safe_navigation.rb +163 -62
- data/lib/rubocop/cop/style/safe_navigation_chain_length.rb +52 -0
- data/lib/rubocop/cop/style/sample.rb +3 -4
- data/lib/rubocop/cop/style/select_by_regexp.rb +20 -13
- data/lib/rubocop/cop/style/self_assignment.rb +12 -18
- data/lib/rubocop/cop/style/semicolon.rb +30 -7
- data/lib/rubocop/cop/style/send.rb +4 -4
- data/lib/rubocop/cop/style/send_with_literal_method_name.rb +105 -0
- data/lib/rubocop/cop/style/signal_exception.rb +2 -3
- data/lib/rubocop/cop/style/single_argument_dig.rb +16 -8
- data/lib/rubocop/cop/style/single_line_block_params.rb +1 -1
- data/lib/rubocop/cop/style/single_line_do_end_block.rb +18 -5
- data/lib/rubocop/cop/style/single_line_methods.rb +13 -11
- data/lib/rubocop/cop/style/slicing_with_range.rb +105 -10
- data/lib/rubocop/cop/style/sole_nested_conditional.rb +72 -87
- data/lib/rubocop/cop/style/special_global_vars.rb +2 -3
- data/lib/rubocop/cop/style/stabby_lambda_parentheses.rb +1 -1
- data/lib/rubocop/cop/style/string_chars.rb +1 -0
- data/lib/rubocop/cop/style/string_concatenation.rb +21 -17
- data/lib/rubocop/cop/style/string_literals.rb +1 -1
- data/lib/rubocop/cop/style/string_methods.rb +1 -1
- data/lib/rubocop/cop/style/strip.rb +7 -4
- data/lib/rubocop/cop/style/struct_inheritance.rb +9 -2
- data/lib/rubocop/cop/style/super_arguments.rb +221 -0
- data/lib/rubocop/cop/style/super_with_args_parentheses.rb +35 -0
- data/lib/rubocop/cop/style/swap_values.rb +4 -15
- data/lib/rubocop/cop/style/symbol_array.rb +1 -1
- data/lib/rubocop/cop/style/symbol_proc.rb +78 -6
- data/lib/rubocop/cop/style/ternary_parentheses.rb +26 -5
- data/lib/rubocop/cop/style/top_level_method_definition.rb +2 -1
- data/lib/rubocop/cop/style/trailing_comma_in_arguments.rb +56 -2
- data/lib/rubocop/cop/style/trailing_comma_in_array_literal.rb +47 -6
- data/lib/rubocop/cop/style/trailing_comma_in_block_args.rb +1 -1
- data/lib/rubocop/cop/style/trailing_comma_in_hash_literal.rb +48 -6
- data/lib/rubocop/cop/style/trailing_underscore_variable.rb +4 -4
- data/lib/rubocop/cop/style/trivial_accessors.rb +2 -2
- data/lib/rubocop/cop/style/unless_else.rb +10 -9
- data/lib/rubocop/cop/style/unpack_first.rb +11 -14
- data/lib/rubocop/cop/style/variable_interpolation.rb +1 -2
- data/lib/rubocop/cop/style/while_until_do.rb +0 -2
- data/lib/rubocop/cop/style/while_until_modifier.rb +0 -2
- data/lib/rubocop/cop/style/yoda_condition.rb +8 -4
- data/lib/rubocop/cop/style/yoda_expression.rb +2 -1
- data/lib/rubocop/cop/style/zero_length_predicate.rb +32 -24
- data/lib/rubocop/cop/team.rb +28 -4
- data/lib/rubocop/cop/util.rb +19 -6
- data/lib/rubocop/cop/utils/format_string.rb +20 -5
- data/lib/rubocop/cop/variable_force/assignment.rb +24 -5
- data/lib/rubocop/cop/variable_force/branch.rb +1 -1
- data/lib/rubocop/cop/variable_force/scope.rb +1 -1
- data/lib/rubocop/cop/variable_force/variable.rb +14 -3
- data/lib/rubocop/cop/variable_force/variable_table.rb +5 -5
- data/lib/rubocop/cop/variable_force.rb +43 -20
- data/lib/rubocop/cops_documentation_generator.rb +135 -58
- data/lib/rubocop/core_ext/string.rb +2 -6
- data/lib/rubocop/directive_comment.rb +54 -18
- data/lib/rubocop/ext/regexp_node.rb +17 -35
- data/lib/rubocop/ext/regexp_parser.rb +4 -21
- data/lib/rubocop/file_finder.rb +9 -4
- data/lib/rubocop/formatter/clang_style_formatter.rb +3 -7
- data/lib/rubocop/formatter/disabled_config_formatter.rb +43 -14
- data/lib/rubocop/formatter/formatter_set.rb +8 -2
- data/lib/rubocop/formatter/fuubar_style_formatter.rb +1 -1
- data/lib/rubocop/formatter/html_formatter.rb +38 -15
- data/lib/rubocop/formatter/json_formatter.rb +0 -1
- data/lib/rubocop/formatter/junit_formatter.rb +70 -23
- data/lib/rubocop/formatter/markdown_formatter.rb +1 -0
- data/lib/rubocop/formatter/offense_count_formatter.rb +13 -3
- data/lib/rubocop/formatter/pacman_formatter.rb +2 -1
- data/lib/rubocop/formatter/tap_formatter.rb +3 -7
- data/lib/rubocop/formatter.rb +1 -1
- data/lib/rubocop/lockfile.rb +58 -7
- data/lib/rubocop/lsp/diagnostic.rb +190 -0
- data/lib/rubocop/lsp/logger.rb +3 -3
- data/lib/rubocop/lsp/routes.rb +77 -40
- data/lib/rubocop/lsp/runtime.rb +20 -50
- data/lib/rubocop/lsp/server.rb +6 -4
- data/lib/rubocop/lsp/severity.rb +1 -1
- data/lib/rubocop/lsp/stdin_runner.rb +69 -0
- data/lib/rubocop/lsp.rb +36 -0
- data/lib/rubocop/magic_comment.rb +12 -4
- data/lib/rubocop/options.rb +43 -22
- data/lib/rubocop/path_util.rb +21 -10
- data/lib/rubocop/pending_cops_reporter.rb +56 -0
- data/lib/rubocop/plugin/configuration_integrator.rb +143 -0
- data/lib/rubocop/plugin/load_error.rb +26 -0
- data/lib/rubocop/plugin/loader.rb +100 -0
- data/lib/rubocop/plugin/not_supported_error.rb +29 -0
- data/lib/rubocop/plugin.rb +46 -0
- data/lib/rubocop/rake_task.rb +5 -2
- data/lib/rubocop/remote_config.rb +5 -1
- data/lib/rubocop/result_cache.rb +29 -34
- data/lib/rubocop/rspec/cop_helper.rb +20 -2
- data/lib/rubocop/rspec/expect_offense.rb +31 -12
- data/lib/rubocop/rspec/shared_contexts.rb +112 -18
- data/lib/rubocop/rspec/support.rb +7 -2
- data/lib/rubocop/runner.rb +40 -13
- data/lib/rubocop/server/cache.rb +63 -11
- data/lib/rubocop/server/cli.rb +2 -2
- data/lib/rubocop/server/client_command/base.rb +10 -0
- data/lib/rubocop/server/client_command/exec.rb +3 -3
- data/lib/rubocop/server/client_command/start.rb +11 -1
- data/lib/rubocop/server/core.rb +5 -0
- data/lib/rubocop/server/server_command/exec.rb +0 -1
- data/lib/rubocop/target_finder.rb +93 -82
- data/lib/rubocop/target_ruby.rb +111 -81
- data/lib/rubocop/version.rb +67 -9
- data/lib/rubocop/yaml_duplication_checker.rb +20 -26
- data/lib/rubocop.rb +61 -3
- data/lib/ruby_lsp/rubocop/addon.rb +90 -0
- data/lib/ruby_lsp/rubocop/runtime_adapter.rb +99 -0
- metadata +103 -51
- data/lib/rubocop/cop/naming/predicate_name.rb +0 -134
- data/lib/rubocop/cop/utils/regexp_ranges.rb +0 -113
- data/lib/rubocop/rspec/host_environment_simulation_helper.rb +0 -28
- /data/lib/rubocop/formatter/{git_hub_actions_formatter.rb → github_actions_formatter.rb} +0 -0
|
@@ -5,7 +5,10 @@ module RuboCop
|
|
|
5
5
|
module Layout
|
|
6
6
|
# Checks the indentation of the first element in an array literal
|
|
7
7
|
# where the opening bracket and the first element are on separate lines.
|
|
8
|
-
# The other elements' indentations are handled by
|
|
8
|
+
# The other elements' indentations are handled by `Layout/ArrayAlignment` cop.
|
|
9
|
+
#
|
|
10
|
+
# This cop will respect `Layout/ArrayAlignment` and will not work when
|
|
11
|
+
# `EnforcedStyle: with_fixed_indentation` is specified for `Layout/ArrayAlignment`.
|
|
9
12
|
#
|
|
10
13
|
# By default, array literals that are arguments in a method call with
|
|
11
14
|
# parentheses, and where the opening square bracket of the array is on the
|
|
@@ -25,7 +28,7 @@ module RuboCop
|
|
|
25
28
|
# # element are on separate lines is indented one step (two spaces) more
|
|
26
29
|
# # than the position inside the opening parenthesis.
|
|
27
30
|
#
|
|
28
|
-
# #bad
|
|
31
|
+
# # bad
|
|
29
32
|
# array = [
|
|
30
33
|
# :value
|
|
31
34
|
# ]
|
|
@@ -33,7 +36,7 @@ module RuboCop
|
|
|
33
36
|
# :no_difference
|
|
34
37
|
# ])
|
|
35
38
|
#
|
|
36
|
-
# #good
|
|
39
|
+
# # good
|
|
37
40
|
# array = [
|
|
38
41
|
# :value
|
|
39
42
|
# ]
|
|
@@ -47,8 +50,7 @@ module RuboCop
|
|
|
47
50
|
# # separate lines is indented the same as an array literal which is not
|
|
48
51
|
# # defined inside a method call.
|
|
49
52
|
#
|
|
50
|
-
# #bad
|
|
51
|
-
# # consistent
|
|
53
|
+
# # bad
|
|
52
54
|
# array = [
|
|
53
55
|
# :value
|
|
54
56
|
# ]
|
|
@@ -56,7 +58,7 @@ module RuboCop
|
|
|
56
58
|
# :its_like_this
|
|
57
59
|
# ])
|
|
58
60
|
#
|
|
59
|
-
# #good
|
|
61
|
+
# # good
|
|
60
62
|
# array = [
|
|
61
63
|
# :value
|
|
62
64
|
# ]
|
|
@@ -68,14 +70,12 @@ module RuboCop
|
|
|
68
70
|
# # The `align_brackets` style enforces that the opening and closing
|
|
69
71
|
# # brackets are indented to the same position.
|
|
70
72
|
#
|
|
71
|
-
# #bad
|
|
72
|
-
# # align_brackets
|
|
73
|
+
# # bad
|
|
73
74
|
# and_now_for_something = [
|
|
74
75
|
# :completely_different
|
|
75
76
|
# ]
|
|
76
77
|
#
|
|
77
|
-
# #good
|
|
78
|
-
# # align_brackets
|
|
78
|
+
# # good
|
|
79
79
|
# and_now_for_something = [
|
|
80
80
|
# :completely_different
|
|
81
81
|
# ]
|
|
@@ -89,10 +89,14 @@ module RuboCop
|
|
|
89
89
|
'in an array, relative to %<base_description>s.'
|
|
90
90
|
|
|
91
91
|
def on_array(node)
|
|
92
|
+
return if style != :consistent && enforce_first_argument_with_fixed_indentation?
|
|
93
|
+
|
|
92
94
|
check(node, nil) if node.loc.begin
|
|
93
95
|
end
|
|
94
96
|
|
|
95
97
|
def on_send(node)
|
|
98
|
+
return if style != :consistent && enforce_first_argument_with_fixed_indentation?
|
|
99
|
+
|
|
96
100
|
each_argument_node(node, :array) do |array_node, left_parenthesis|
|
|
97
101
|
check(array_node, left_parenthesis)
|
|
98
102
|
end
|
|
@@ -174,6 +178,11 @@ module RuboCop
|
|
|
174
178
|
'where the left bracket is.'
|
|
175
179
|
end
|
|
176
180
|
end
|
|
181
|
+
|
|
182
|
+
def enforce_first_argument_with_fixed_indentation?
|
|
183
|
+
argument_alignment_config = config.for_enabled_cop('Layout/ArrayAlignment')
|
|
184
|
+
argument_alignment_config['EnforcedStyle'] == 'with_fixed_indentation'
|
|
185
|
+
end
|
|
177
186
|
end
|
|
178
187
|
end
|
|
179
188
|
end
|
|
@@ -7,7 +7,7 @@ module RuboCop
|
|
|
7
7
|
# where the opening brace and the first key are on separate lines. The
|
|
8
8
|
# other keys' indentations are handled by the HashAlignment cop.
|
|
9
9
|
#
|
|
10
|
-
# By default, Hash literals that are arguments in a method call with
|
|
10
|
+
# By default, `Hash` literals that are arguments in a method call with
|
|
11
11
|
# parentheses, and where the opening curly brace of the hash is on the
|
|
12
12
|
# same line as the opening parenthesis of the method call, shall have
|
|
13
13
|
# their first key indented one step (two spaces) more than the position
|
|
@@ -225,14 +225,9 @@ module RuboCop
|
|
|
225
225
|
end
|
|
226
226
|
|
|
227
227
|
def enforce_first_argument_with_fixed_indentation?
|
|
228
|
-
|
|
229
|
-
|
|
228
|
+
argument_alignment_config = config.for_enabled_cop('Layout/ArgumentAlignment')
|
|
230
229
|
argument_alignment_config['EnforcedStyle'] == 'with_fixed_indentation'
|
|
231
230
|
end
|
|
232
|
-
|
|
233
|
-
def argument_alignment_config
|
|
234
|
-
config.for_cop('Layout/ArgumentAlignment')
|
|
235
|
-
end
|
|
236
231
|
end
|
|
237
232
|
end
|
|
238
233
|
end
|
|
@@ -51,7 +51,7 @@ module RuboCop
|
|
|
51
51
|
|
|
52
52
|
def on_hash(node)
|
|
53
53
|
# node.loc.begin tells us whether the hash opens with a {
|
|
54
|
-
# If it doesn't,
|
|
54
|
+
# If it doesn't, Layout/FirstMethodArgumentLineBreak will handle it
|
|
55
55
|
return unless node.loc.begin
|
|
56
56
|
|
|
57
57
|
check_children_line_break(node, node.children, ignore_last: ignore_last_element?)
|
|
@@ -63,13 +63,21 @@ module RuboCop
|
|
|
63
63
|
# }
|
|
64
64
|
# )
|
|
65
65
|
#
|
|
66
|
+
# @example AllowedMethods: ['some_method']
|
|
67
|
+
#
|
|
68
|
+
# # good
|
|
69
|
+
# some_method(foo, bar,
|
|
70
|
+
# baz)
|
|
66
71
|
class FirstMethodArgumentLineBreak < Base
|
|
67
72
|
include FirstElementLineBreak
|
|
73
|
+
include AllowedMethods
|
|
68
74
|
extend AutoCorrector
|
|
69
75
|
|
|
70
76
|
MSG = 'Add a line break before the first argument of a multi-line method argument list.'
|
|
71
77
|
|
|
72
78
|
def on_send(node)
|
|
79
|
+
return if allowed_method?(node.method_name)
|
|
80
|
+
|
|
73
81
|
args = node.arguments.dup
|
|
74
82
|
|
|
75
83
|
# If there is a trailing hash arg without explicit braces, like this:
|
|
@@ -5,10 +5,10 @@ module RuboCop
|
|
|
5
5
|
module Layout
|
|
6
6
|
# Checks the indentation of the first parameter in a method
|
|
7
7
|
# definition. Parameters after the first one are checked by
|
|
8
|
-
# Layout/ParameterAlignment
|
|
8
|
+
# `Layout/ParameterAlignment`, not by this cop.
|
|
9
9
|
#
|
|
10
10
|
# For indenting the first argument of method _calls_, check out
|
|
11
|
-
# Layout/FirstArgumentIndentation
|
|
11
|
+
# `Layout/FirstArgumentIndentation`, which supports options related to
|
|
12
12
|
# nesting that are irrelevant for method _definitions_.
|
|
13
13
|
#
|
|
14
14
|
# @example
|
|
@@ -72,7 +72,7 @@ module RuboCop
|
|
|
72
72
|
return if ignored_node?(def_node)
|
|
73
73
|
|
|
74
74
|
left_parenthesis = def_node.arguments.loc.begin
|
|
75
|
-
first_elem = def_node.
|
|
75
|
+
first_elem = def_node.first_argument
|
|
76
76
|
return unless first_elem
|
|
77
77
|
return if same_line?(first_elem, left_parenthesis)
|
|
78
78
|
|
|
@@ -19,7 +19,7 @@ module RuboCop
|
|
|
19
19
|
# * ignore_implicit (without curly braces)
|
|
20
20
|
#
|
|
21
21
|
# Alternatively you can specify multiple allowed styles. That's done by
|
|
22
|
-
# passing a list of styles to
|
|
22
|
+
# passing a list of styles to EnforcedHashRocketStyle and EnforcedColonStyle.
|
|
23
23
|
#
|
|
24
24
|
# @example EnforcedHashRocketStyle: key (default)
|
|
25
25
|
# # bad
|
|
@@ -193,7 +193,6 @@ module RuboCop
|
|
|
193
193
|
SEPARATOR_ALIGNMENT_STYLES = %w[EnforcedColonStyle EnforcedHashRocketStyle].freeze
|
|
194
194
|
|
|
195
195
|
def on_send(node)
|
|
196
|
-
return if double_splat?(node)
|
|
197
196
|
return unless node.arguments?
|
|
198
197
|
|
|
199
198
|
last_argument = node.last_argument
|
|
@@ -202,6 +201,7 @@ module RuboCop
|
|
|
202
201
|
|
|
203
202
|
ignore_node(last_argument)
|
|
204
203
|
end
|
|
204
|
+
alias on_csend on_send
|
|
205
205
|
alias on_super on_send
|
|
206
206
|
alias on_yield on_send
|
|
207
207
|
|
|
@@ -227,6 +227,7 @@ module RuboCop
|
|
|
227
227
|
left_sibling = argument_before_hash(node)
|
|
228
228
|
parent_loc = node.parent.loc
|
|
229
229
|
selector = left_sibling || parent_loc.selector || parent_loc.expression
|
|
230
|
+
|
|
230
231
|
same_line?(selector, node.pairs.first)
|
|
231
232
|
end
|
|
232
233
|
|
|
@@ -239,16 +240,12 @@ module RuboCop
|
|
|
239
240
|
self.column_deltas = Hash.new { |hash, key| hash[key] = {} }
|
|
240
241
|
end
|
|
241
242
|
|
|
242
|
-
def double_splat?(node)
|
|
243
|
-
node.children.last.is_a?(Symbol)
|
|
244
|
-
end
|
|
245
|
-
|
|
246
243
|
def check_pairs(node)
|
|
247
244
|
first_pair = node.pairs.first
|
|
248
245
|
reset!
|
|
249
246
|
|
|
250
247
|
alignment_for(first_pair).each do |alignment|
|
|
251
|
-
delta = alignment.deltas_for_first_pair(first_pair
|
|
248
|
+
delta = alignment.deltas_for_first_pair(first_pair)
|
|
252
249
|
check_delta delta, node: first_pair, alignment: alignment
|
|
253
250
|
end
|
|
254
251
|
|
|
@@ -382,13 +379,13 @@ module RuboCop
|
|
|
382
379
|
end
|
|
383
380
|
|
|
384
381
|
def enforce_first_argument_with_fixed_indentation?
|
|
385
|
-
|
|
386
|
-
|
|
382
|
+
argument_alignment_config = config.for_enabled_cop('Layout/ArgumentAlignment')
|
|
387
383
|
argument_alignment_config['EnforcedStyle'] == 'with_fixed_indentation'
|
|
388
384
|
end
|
|
389
385
|
|
|
390
|
-
def
|
|
391
|
-
|
|
386
|
+
def same_line?(node1, node2)
|
|
387
|
+
# Override `Util#same_line?`
|
|
388
|
+
super || node1.last_line == line(node2)
|
|
392
389
|
end
|
|
393
390
|
end
|
|
394
391
|
end
|
|
@@ -75,6 +75,7 @@ module RuboCop
|
|
|
75
75
|
autocorrect(corrector, outermost_send)
|
|
76
76
|
end
|
|
77
77
|
end
|
|
78
|
+
alias on_csend on_send
|
|
78
79
|
|
|
79
80
|
private
|
|
80
81
|
|
|
@@ -161,7 +162,7 @@ module RuboCop
|
|
|
161
162
|
|
|
162
163
|
def end_keyword_before_closing_parenthesis?(parenthesized_send_node)
|
|
163
164
|
parenthesized_send_node.ancestors.any? do |ancestor|
|
|
164
|
-
ancestor.
|
|
165
|
+
ancestor.loc_is?(:end, 'end')
|
|
165
166
|
end
|
|
166
167
|
end
|
|
167
168
|
|
|
@@ -182,7 +183,7 @@ module RuboCop
|
|
|
182
183
|
end
|
|
183
184
|
|
|
184
185
|
def add_correct_closing_paren(node, corrector)
|
|
185
|
-
corrector.insert_after(node.
|
|
186
|
+
corrector.insert_after(node.last_argument, ')')
|
|
186
187
|
end
|
|
187
188
|
|
|
188
189
|
def remove_incorrect_closing_paren(node, corrector)
|
|
@@ -271,7 +272,7 @@ module RuboCop
|
|
|
271
272
|
def add_correct_external_trailing_comma(node, corrector)
|
|
272
273
|
return unless external_trailing_comma?(node)
|
|
273
274
|
|
|
274
|
-
corrector.insert_after(node.
|
|
275
|
+
corrector.insert_after(node.last_argument, ',')
|
|
275
276
|
end
|
|
276
277
|
|
|
277
278
|
def remove_incorrect_external_trailing_comma(node, corrector)
|
|
@@ -6,9 +6,9 @@ module RuboCop
|
|
|
6
6
|
# Checks the indentation of the here document bodies. The bodies
|
|
7
7
|
# are indented one step.
|
|
8
8
|
#
|
|
9
|
-
#
|
|
9
|
+
# NOTE: When ``Layout/LineLength``'s `AllowHeredoc` is false (not default),
|
|
10
10
|
# this cop does not add any offenses for long here documents to
|
|
11
|
-
# avoid
|
|
11
|
+
# avoid ``Layout/LineLength``'s offenses.
|
|
12
12
|
#
|
|
13
13
|
# @example
|
|
14
14
|
# # bad
|
|
@@ -3,13 +3,12 @@
|
|
|
3
3
|
module RuboCop
|
|
4
4
|
module Cop
|
|
5
5
|
module Layout
|
|
6
|
-
# Checks for indentation that doesn't use the specified number
|
|
7
|
-
#
|
|
6
|
+
# Checks for indentation that doesn't use the specified number of spaces.
|
|
7
|
+
# The indentation width can be configured using the `Width` setting. The default width is 2.
|
|
8
8
|
#
|
|
9
|
-
# See also the IndentationConsistency cop which is the companion to this
|
|
10
|
-
# one.
|
|
9
|
+
# See also the `Layout/IndentationConsistency` cop which is the companion to this one.
|
|
11
10
|
#
|
|
12
|
-
# @example
|
|
11
|
+
# @example Width: 2 (default)
|
|
13
12
|
# # bad
|
|
14
13
|
# class A
|
|
15
14
|
# def test
|
|
@@ -59,16 +58,17 @@ module RuboCop
|
|
|
59
58
|
PATTERN
|
|
60
59
|
|
|
61
60
|
def on_rescue(node)
|
|
62
|
-
|
|
63
|
-
check_indentation(node.loc.else, else_node)
|
|
61
|
+
check_indentation(node.loc.else, node.else_branch)
|
|
64
62
|
end
|
|
65
63
|
|
|
66
|
-
def
|
|
64
|
+
def on_resbody(node)
|
|
67
65
|
check_indentation(node.loc.keyword, node.body)
|
|
68
66
|
end
|
|
67
|
+
alias on_for on_resbody
|
|
69
68
|
|
|
70
|
-
|
|
71
|
-
|
|
69
|
+
def on_ensure(node)
|
|
70
|
+
check_indentation(node.loc.keyword, node.branch)
|
|
71
|
+
end
|
|
72
72
|
|
|
73
73
|
def on_kwbegin(node)
|
|
74
74
|
# Check indentation against end keyword but only if it's first on its
|
|
@@ -91,6 +91,7 @@ module RuboCop
|
|
|
91
91
|
end
|
|
92
92
|
|
|
93
93
|
alias on_numblock on_block
|
|
94
|
+
alias on_itblock on_block
|
|
94
95
|
|
|
95
96
|
def on_class(node)
|
|
96
97
|
base = node.loc.keyword
|
|
@@ -136,7 +137,7 @@ module RuboCop
|
|
|
136
137
|
alias on_until on_while
|
|
137
138
|
|
|
138
139
|
def on_case(case_node)
|
|
139
|
-
case_node.
|
|
140
|
+
case_node.when_branches.each do |when_node|
|
|
140
141
|
check_indentation(when_node.loc.keyword, when_node.body)
|
|
141
142
|
end
|
|
142
143
|
|
|
@@ -326,8 +327,7 @@ module RuboCop
|
|
|
326
327
|
if body_node.rescue_type?
|
|
327
328
|
check_rescue?(body_node)
|
|
328
329
|
elsif body_node.ensure_type?
|
|
329
|
-
block_body, = *body_node
|
|
330
|
-
|
|
330
|
+
block_body, = *body_node # rubocop:disable InternalAffairs/NodeDestructuring
|
|
331
331
|
if block_body&.rescue_type?
|
|
332
332
|
check_rescue?(block_body)
|
|
333
333
|
else
|
|
@@ -49,18 +49,70 @@ module RuboCop
|
|
|
49
49
|
# #ruby=2.7.0
|
|
50
50
|
# #ruby-gemset=myproject
|
|
51
51
|
#
|
|
52
|
+
# @example AllowRBSInlineAnnotation: false (default)
|
|
53
|
+
#
|
|
54
|
+
# # bad
|
|
55
|
+
#
|
|
56
|
+
# include Enumerable #[Integer]
|
|
57
|
+
#
|
|
58
|
+
# attr_reader :name #: String
|
|
59
|
+
# attr_reader :age #: Integer?
|
|
60
|
+
#
|
|
61
|
+
# #: (
|
|
62
|
+
# #| Integer,
|
|
63
|
+
# #| String
|
|
64
|
+
# #| ) -> void
|
|
65
|
+
# def foo; end
|
|
66
|
+
#
|
|
67
|
+
# @example AllowRBSInlineAnnotation: true
|
|
68
|
+
#
|
|
69
|
+
# # good
|
|
70
|
+
#
|
|
71
|
+
# include Enumerable #[Integer]
|
|
72
|
+
#
|
|
73
|
+
# attr_reader :name #: String
|
|
74
|
+
# attr_reader :age #: Integer?
|
|
75
|
+
#
|
|
76
|
+
# #: (
|
|
77
|
+
# #| Integer,
|
|
78
|
+
# #| String
|
|
79
|
+
# #| ) -> void
|
|
80
|
+
# def foo; end
|
|
81
|
+
#
|
|
82
|
+
# @example AllowSteepAnnotation: false (default)
|
|
83
|
+
#
|
|
84
|
+
# # bad
|
|
85
|
+
# [1, 2, 3].each_with_object([]) do |n, list| #$ Array[Integer]
|
|
86
|
+
# list << n
|
|
87
|
+
# end
|
|
88
|
+
#
|
|
89
|
+
# name = 'John' #: String
|
|
90
|
+
#
|
|
91
|
+
# @example AllowSteepAnnotation: true
|
|
92
|
+
#
|
|
93
|
+
# # good
|
|
94
|
+
#
|
|
95
|
+
# [1, 2, 3].each_with_object([]) do |n, list| #$ Array[Integer]
|
|
96
|
+
# list << n
|
|
97
|
+
# end
|
|
98
|
+
#
|
|
99
|
+
# name = 'John' #: String
|
|
100
|
+
#
|
|
52
101
|
class LeadingCommentSpace < Base
|
|
53
102
|
include RangeHelp
|
|
54
103
|
extend AutoCorrector
|
|
55
104
|
|
|
56
105
|
MSG = 'Missing space after `#`.'
|
|
57
106
|
|
|
58
|
-
def on_new_investigation
|
|
107
|
+
def on_new_investigation # rubocop:disable Metrics/AbcSize, Metrics/CyclomaticComplexity, Metrics/PerceivedComplexity
|
|
59
108
|
processed_source.comments.each do |comment|
|
|
60
109
|
next unless /\A(?!#\+\+|#--)(#+[^#\s=])/.match?(comment.text)
|
|
61
110
|
next if comment.loc.line == 1 && allowed_on_first_line?(comment)
|
|
111
|
+
next if shebang_continuation?(comment)
|
|
62
112
|
next if doxygen_comment_style?(comment)
|
|
63
113
|
next if gemfile_ruby_comment?(comment)
|
|
114
|
+
next if rbs_inline_annotation?(comment)
|
|
115
|
+
next if steep_annotation?(comment)
|
|
64
116
|
|
|
65
117
|
add_offense(comment) do |corrector|
|
|
66
118
|
expr = comment.source_range
|
|
@@ -84,6 +136,20 @@ module RuboCop
|
|
|
84
136
|
comment.text.start_with?('#!')
|
|
85
137
|
end
|
|
86
138
|
|
|
139
|
+
def shebang_continuation?(comment)
|
|
140
|
+
return false unless shebang?(comment)
|
|
141
|
+
return true if comment.loc.line == 1
|
|
142
|
+
|
|
143
|
+
previous_line_comment = processed_source.comment_at_line(comment.loc.line - 1)
|
|
144
|
+
return false unless previous_line_comment
|
|
145
|
+
|
|
146
|
+
# If the comment is a shebang but not on the first line, check if the previous
|
|
147
|
+
# line has a shebang comment that wasn't marked as an offense; if so, this comment
|
|
148
|
+
# continues the shebang and is acceptable.
|
|
149
|
+
shebang?(previous_line_comment) &&
|
|
150
|
+
!current_offense_locations.include?(previous_line_comment.source_range)
|
|
151
|
+
end
|
|
152
|
+
|
|
87
153
|
def rackup_options?(comment)
|
|
88
154
|
comment.text.start_with?('#\\')
|
|
89
155
|
end
|
|
@@ -115,6 +181,22 @@ module RuboCop
|
|
|
115
181
|
def gemfile_ruby_comment?(comment)
|
|
116
182
|
allow_gemfile_ruby_comment? && ruby_comment_in_gemfile?(comment)
|
|
117
183
|
end
|
|
184
|
+
|
|
185
|
+
def allow_rbs_inline_annotation?
|
|
186
|
+
cop_config['AllowRBSInlineAnnotation']
|
|
187
|
+
end
|
|
188
|
+
|
|
189
|
+
def rbs_inline_annotation?(comment)
|
|
190
|
+
allow_rbs_inline_annotation? && comment.text.start_with?(/#:|#\[.+\]|#\|/)
|
|
191
|
+
end
|
|
192
|
+
|
|
193
|
+
def allow_steep_annotation?
|
|
194
|
+
cop_config['AllowSteepAnnotation']
|
|
195
|
+
end
|
|
196
|
+
|
|
197
|
+
def steep_annotation?(comment)
|
|
198
|
+
allow_steep_annotation? && comment.text.start_with?(/#[$:]/)
|
|
199
|
+
end
|
|
118
200
|
end
|
|
119
201
|
end
|
|
120
202
|
end
|
|
@@ -51,6 +51,15 @@ module RuboCop
|
|
|
51
51
|
private_constant :LINE_1_ENDING, :LINE_2_BEGINNING,
|
|
52
52
|
:LEADING_STYLE_OFFENSE, :TRAILING_STYLE_OFFENSE
|
|
53
53
|
|
|
54
|
+
# When both cops are activated and run in the same iteration of the correction loop,
|
|
55
|
+
# `Style/StringLiterals` undoes the moving of spaces that
|
|
56
|
+
# `Layout/LineContinuationLeadingSpace` performs. This is because `Style/StringLiterals`
|
|
57
|
+
# takes the original string content and transforms it, rather than just modifying the
|
|
58
|
+
# delimiters, in order to handle escaping for quotes within the string.
|
|
59
|
+
def self.autocorrect_incompatible_with
|
|
60
|
+
[Style::StringLiterals]
|
|
61
|
+
end
|
|
62
|
+
|
|
54
63
|
def on_dstr(node)
|
|
55
64
|
# Quick check if we possibly have line continuations.
|
|
56
65
|
return unless node.source.include?('\\')
|
|
@@ -107,7 +116,7 @@ module RuboCop
|
|
|
107
116
|
return false unless line.end_with?("\\\n")
|
|
108
117
|
|
|
109
118
|
# Ensure backslash isn't part of a token spanning to the next line.
|
|
110
|
-
node.children.none? { |c| c.first_line
|
|
119
|
+
node.children.none? { |c| (c.first_line...c.last_line).cover?(line_num) && c.multiline? }
|
|
111
120
|
end
|
|
112
121
|
|
|
113
122
|
def autocorrect(corrector, offense_range, insert_pos, spaces)
|
|
@@ -129,9 +138,9 @@ module RuboCop
|
|
|
129
138
|
|
|
130
139
|
def message(_range)
|
|
131
140
|
if enforced_style_leading?
|
|
132
|
-
'Move trailing spaces to the start of next line.'
|
|
141
|
+
'Move trailing spaces to the start of the next line.'
|
|
133
142
|
else
|
|
134
|
-
'Move leading spaces to the end of previous line.'
|
|
143
|
+
'Move leading spaces to the end of the previous line.'
|
|
135
144
|
end
|
|
136
145
|
end
|
|
137
146
|
|
|
@@ -101,7 +101,7 @@ module RuboCop
|
|
|
101
101
|
ranges << loc.expression
|
|
102
102
|
elsif literal.heredoc?
|
|
103
103
|
ranges << loc.heredoc_body
|
|
104
|
-
elsif loc.respond_to?(:begin) && loc.begin
|
|
104
|
+
elsif (loc.respond_to?(:begin) && loc.begin) || ignored_parent?(literal)
|
|
105
105
|
ranges << loc.expression
|
|
106
106
|
end
|
|
107
107
|
end
|
|
@@ -127,6 +127,12 @@ module RuboCop
|
|
|
127
127
|
comment_ranges(processed_source.comments)
|
|
128
128
|
end
|
|
129
129
|
|
|
130
|
+
def ignored_parent?(node)
|
|
131
|
+
return false unless node.parent
|
|
132
|
+
|
|
133
|
+
node.parent.type?(:regexp, :xstr)
|
|
134
|
+
end
|
|
135
|
+
|
|
130
136
|
def no_space_style?
|
|
131
137
|
cop_config['EnforcedStyle'] == 'no_space'
|
|
132
138
|
end
|
|
@@ -102,7 +102,7 @@ module RuboCop
|
|
|
102
102
|
|
|
103
103
|
def strings_concatenated_with_backslash?(dstr_node)
|
|
104
104
|
dstr_node.multiline? &&
|
|
105
|
-
dstr_node.children.all? { |c| c.
|
|
105
|
+
dstr_node.children.all? { |c| c.type?(:str, :dstr) } &&
|
|
106
106
|
dstr_node.children.none?(&:multiline?)
|
|
107
107
|
end
|
|
108
108
|
|
|
@@ -127,7 +127,7 @@ module RuboCop
|
|
|
127
127
|
|
|
128
128
|
def base_column(child)
|
|
129
129
|
grandparent = child.parent.parent
|
|
130
|
-
if grandparent&.
|
|
130
|
+
if grandparent&.pair_type?
|
|
131
131
|
grandparent.loc.column
|
|
132
132
|
else
|
|
133
133
|
child.source_range.source_line =~ /\S/
|