rubocop 1.68.0 → 1.69.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/README.md +1 -1
- data/config/default.yml +41 -6
- data/lib/rubocop/cop/base.rb +1 -1
- data/lib/rubocop/cop/bundler/gem_filename.rb +0 -1
- data/lib/rubocop/cop/bundler/insecure_protocol_source.rb +0 -1
- data/lib/rubocop/cop/correctors/for_to_each_corrector.rb +1 -1
- data/lib/rubocop/cop/gemspec/deprecated_attribute_assignment.rb +1 -2
- data/lib/rubocop/cop/gemspec/required_ruby_version.rb +0 -2
- data/lib/rubocop/cop/generator.rb +6 -0
- data/lib/rubocop/cop/internal_affairs/location_line_equality_comparison.rb +3 -4
- data/lib/rubocop/cop/internal_affairs/numblock_handler.rb +1 -1
- data/lib/rubocop/cop/internal_affairs/operator_keyword.rb +46 -0
- data/lib/rubocop/cop/internal_affairs/style_detected_api_use.rb +0 -2
- data/lib/rubocop/cop/internal_affairs.rb +1 -0
- data/lib/rubocop/cop/layout/argument_alignment.rb +1 -2
- data/lib/rubocop/cop/layout/array_alignment.rb +1 -1
- data/lib/rubocop/cop/layout/begin_end_alignment.rb +0 -1
- data/lib/rubocop/cop/layout/block_alignment.rb +1 -2
- data/lib/rubocop/cop/layout/empty_line_after_guard_clause.rb +1 -1
- data/lib/rubocop/cop/layout/empty_lines_around_access_modifier.rb +2 -3
- data/lib/rubocop/cop/layout/empty_lines_around_exception_handling_keywords.rb +3 -4
- data/lib/rubocop/cop/layout/empty_lines_around_method_body.rb +3 -1
- data/lib/rubocop/cop/layout/indentation_width.rb +7 -7
- data/lib/rubocop/cop/layout/leading_comment_space.rb +15 -0
- data/lib/rubocop/cop/layout/line_length.rb +118 -4
- data/lib/rubocop/cop/layout/multiline_method_call_brace_layout.rb +1 -1
- data/lib/rubocop/cop/layout/multiline_method_definition_brace_layout.rb +1 -1
- data/lib/rubocop/cop/layout/multiline_operation_indentation.rb +2 -3
- data/lib/rubocop/cop/layout/parameter_alignment.rb +3 -4
- data/lib/rubocop/cop/layout/redundant_line_break.rb +3 -35
- data/lib/rubocop/cop/layout/rescue_ensure_alignment.rb +3 -2
- data/lib/rubocop/cop/layout/space_around_keyword.rb +1 -1
- data/lib/rubocop/cop/layout/space_around_operators.rb +16 -17
- data/lib/rubocop/cop/layout/space_inside_array_literal_brackets.rb +6 -0
- data/lib/rubocop/cop/layout/space_inside_hash_literal_braces.rb +4 -0
- data/lib/rubocop/cop/layout/space_inside_string_interpolation.rb +0 -1
- data/lib/rubocop/cop/lint/binary_operator_with_identical_operands.rb +10 -12
- data/lib/rubocop/cop/lint/circular_argument_reference.rb +6 -0
- data/lib/rubocop/cop/lint/deprecated_open_ssl_constant.rb +2 -1
- data/lib/rubocop/cop/lint/empty_ensure.rb +1 -1
- data/lib/rubocop/cop/lint/empty_file.rb +0 -2
- data/lib/rubocop/cop/lint/ensure_return.rb +1 -1
- data/lib/rubocop/cop/lint/float_comparison.rb +14 -6
- data/lib/rubocop/cop/lint/float_out_of_range.rb +1 -3
- data/lib/rubocop/cop/lint/hash_new_with_keyword_arguments_as_default.rb +55 -0
- data/lib/rubocop/cop/lint/interpolation_check.rb +9 -0
- data/lib/rubocop/cop/lint/it_without_arguments_in_block.rb +3 -0
- data/lib/rubocop/cop/lint/literal_as_condition.rb +1 -0
- data/lib/rubocop/cop/lint/literal_assignment_in_condition.rb +1 -1
- data/lib/rubocop/cop/lint/mixed_case_range.rb +2 -5
- data/lib/rubocop/cop/lint/nested_method_definition.rb +1 -1
- data/lib/rubocop/cop/lint/no_return_in_begin_end_blocks.rb +2 -2
- data/lib/rubocop/cop/lint/non_atomic_file_operation.rb +1 -1
- data/lib/rubocop/cop/lint/non_deterministic_require_order.rb +3 -3
- data/lib/rubocop/cop/lint/number_conversion.rb +0 -1
- data/lib/rubocop/cop/lint/numbered_parameter_assignment.rb +1 -2
- data/lib/rubocop/cop/lint/numeric_operation_with_constant_result.rb +106 -0
- data/lib/rubocop/cop/lint/or_assignment_to_constant.rb +1 -2
- data/lib/rubocop/cop/lint/out_of_range_regexp_ref.rb +1 -1
- data/lib/rubocop/cop/lint/redundant_cop_enable_directive.rb +1 -1
- data/lib/rubocop/cop/lint/redundant_safe_navigation.rb +12 -7
- data/lib/rubocop/cop/lint/redundant_splat_expansion.rb +8 -7
- 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/rescue_type.rb +3 -7
- data/lib/rubocop/cop/lint/safe_navigation_consistency.rb +2 -0
- data/lib/rubocop/cop/lint/self_assignment.rb +8 -10
- data/lib/rubocop/cop/lint/shadowed_exception.rb +1 -1
- data/lib/rubocop/cop/lint/unescaped_bracket_in_regexp.rb +3 -0
- data/lib/rubocop/cop/lint/unreachable_code.rb +51 -2
- data/lib/rubocop/cop/lint/unused_method_argument.rb +18 -2
- data/lib/rubocop/cop/lint/useless_defined.rb +55 -0
- data/lib/rubocop/cop/lint/useless_else_without_rescue.rb +4 -0
- data/lib/rubocop/cop/lint/useless_rescue.rb +1 -1
- data/lib/rubocop/cop/lint/useless_setter_call.rb +14 -25
- data/lib/rubocop/cop/lint/void.rb +3 -2
- data/lib/rubocop/cop/metrics/class_length.rb +7 -7
- data/lib/rubocop/cop/metrics/utils/abc_size_calculator.rb +1 -1
- data/lib/rubocop/cop/metrics/utils/code_length_calculator.rb +2 -3
- data/lib/rubocop/cop/mixin/check_assignment.rb +4 -12
- data/lib/rubocop/cop/mixin/check_single_line_suitability.rb +49 -0
- data/lib/rubocop/cop/mixin/dig_help.rb +27 -0
- data/lib/rubocop/cop/mixin/multiline_expression_indentation.rb +5 -9
- data/lib/rubocop/cop/mixin/range_help.rb +0 -1
- data/lib/rubocop/cop/mixin/target_ruby_version.rb +17 -1
- data/lib/rubocop/cop/naming/accessor_method_name.rb +6 -6
- data/lib/rubocop/cop/naming/constant_name.rb +6 -7
- data/lib/rubocop/cop/naming/file_name.rb +0 -2
- data/lib/rubocop/cop/naming/memoized_instance_variable_name.rb +11 -12
- data/lib/rubocop/cop/naming/rescued_exceptions_variable_name.rb +3 -11
- data/lib/rubocop/cop/naming/variable_name.rb +3 -4
- data/lib/rubocop/cop/naming/variable_number.rb +2 -3
- data/lib/rubocop/cop/security/compound_hash.rb +1 -0
- data/lib/rubocop/cop/security/yaml_load.rb +3 -2
- data/lib/rubocop/cop/style/access_modifier_declarations.rb +54 -25
- data/lib/rubocop/cop/style/ambiguous_endless_method_definition.rb +1 -1
- data/lib/rubocop/cop/style/array_intersect.rb +5 -4
- data/lib/rubocop/cop/style/bitwise_predicate.rb +1 -1
- data/lib/rubocop/cop/style/block_delimiters.rb +10 -2
- data/lib/rubocop/cop/style/case_like_if.rb +8 -11
- data/lib/rubocop/cop/style/commented_keyword.rb +11 -1
- data/lib/rubocop/cop/style/conditional_assignment.rb +19 -21
- data/lib/rubocop/cop/style/constant_visibility.rb +3 -12
- data/lib/rubocop/cop/style/dig_chain.rb +89 -0
- data/lib/rubocop/cop/style/fetch_env_var.rb +1 -0
- data/lib/rubocop/cop/style/file_null.rb +73 -0
- data/lib/rubocop/cop/style/file_touch.rb +75 -0
- data/lib/rubocop/cop/style/for.rb +0 -1
- data/lib/rubocop/cop/style/global_vars.rb +1 -3
- data/lib/rubocop/cop/style/guard_clause.rb +1 -1
- data/lib/rubocop/cop/style/hash_conversion.rb +1 -2
- data/lib/rubocop/cop/style/hash_except.rb +19 -7
- data/lib/rubocop/cop/style/if_inside_else.rb +0 -1
- data/lib/rubocop/cop/style/if_with_boolean_literal_branches.rb +1 -2
- data/lib/rubocop/cop/style/if_with_semicolon.rb +14 -5
- data/lib/rubocop/cop/style/inverse_methods.rb +0 -1
- data/lib/rubocop/cop/style/keyword_arguments_merging.rb +2 -2
- data/lib/rubocop/cop/style/lambda_call.rb +3 -2
- data/lib/rubocop/cop/style/method_call_with_args_parentheses/omit_parentheses.rb +1 -1
- data/lib/rubocop/cop/style/method_call_without_args_parentheses.rb +7 -11
- data/lib/rubocop/cop/style/missing_respond_to_missing.rb +33 -3
- data/lib/rubocop/cop/style/multiline_memoization.rb +1 -1
- data/lib/rubocop/cop/style/mutable_constant.rb +4 -5
- data/lib/rubocop/cop/style/negated_if_else_condition.rb +6 -4
- data/lib/rubocop/cop/style/nested_ternary_operator.rb +5 -4
- data/lib/rubocop/cop/style/not.rb +1 -1
- data/lib/rubocop/cop/style/object_then.rb +1 -0
- data/lib/rubocop/cop/style/one_line_conditional.rb +25 -4
- data/lib/rubocop/cop/style/operator_method_call.rb +5 -6
- data/lib/rubocop/cop/style/or_assignment.rb +3 -6
- data/lib/rubocop/cop/style/parallel_assignment.rb +8 -13
- data/lib/rubocop/cop/style/raise_args.rb +1 -1
- data/lib/rubocop/cop/style/redundant_argument.rb +3 -1
- data/lib/rubocop/cop/style/redundant_assignment.rb +1 -1
- data/lib/rubocop/cop/style/redundant_condition.rb +36 -21
- data/lib/rubocop/cop/style/redundant_line_continuation.rb +7 -6
- data/lib/rubocop/cop/style/redundant_parentheses.rb +2 -2
- data/lib/rubocop/cop/style/redundant_regexp_argument.rb +1 -0
- data/lib/rubocop/cop/style/redundant_return.rb +2 -2
- data/lib/rubocop/cop/style/redundant_self.rb +8 -15
- data/lib/rubocop/cop/style/redundant_self_assignment.rb +7 -5
- data/lib/rubocop/cop/style/redundant_self_assignment_branch.rb +4 -4
- data/lib/rubocop/cop/style/redundant_sort.rb +1 -1
- data/lib/rubocop/cop/style/rescue_modifier.rb +2 -3
- data/lib/rubocop/cop/style/safe_navigation.rb +1 -1
- data/lib/rubocop/cop/style/select_by_regexp.rb +1 -1
- data/lib/rubocop/cop/style/self_assignment.rb +11 -17
- data/lib/rubocop/cop/style/signal_exception.rb +2 -3
- data/lib/rubocop/cop/style/single_argument_dig.rb +9 -5
- data/lib/rubocop/cop/style/single_line_do_end_block.rb +13 -3
- data/lib/rubocop/cop/style/sole_nested_conditional.rb +2 -3
- data/lib/rubocop/cop/style/special_global_vars.rb +1 -1
- data/lib/rubocop/cop/style/string_concatenation.rb +13 -12
- data/lib/rubocop/cop/style/swap_values.rb +4 -15
- data/lib/rubocop/cop/style/trailing_underscore_variable.rb +4 -4
- data/lib/rubocop/cop/style/variable_interpolation.rb +1 -2
- data/lib/rubocop/cop/variable_force.rb +4 -10
- data/lib/rubocop/cops_documentation_generator.rb +9 -1
- data/lib/rubocop/version.rb +1 -1
- data/lib/rubocop.rb +8 -0
- metadata +23 -14
| @@ -37,33 +37,29 @@ module RuboCop | |
| 37 37 | 
             
                    private
         | 
| 38 38 |  | 
| 39 39 | 
             
                    def check(node, var_type)
         | 
| 40 | 
            -
                       | 
| 41 | 
            -
                      return unless rhs
         | 
| 40 | 
            +
                      return unless (rhs = node.expression)
         | 
| 42 41 |  | 
| 43 | 
            -
                      if rhs.send_type?
         | 
| 44 | 
            -
                        check_send_node(node, rhs,  | 
| 42 | 
            +
                      if rhs.send_type? && rhs.arguments.one?
         | 
| 43 | 
            +
                        check_send_node(node, rhs, node.name, var_type)
         | 
| 45 44 | 
             
                      elsif rhs.operator_keyword?
         | 
| 46 | 
            -
                        check_boolean_node(node, rhs,  | 
| 45 | 
            +
                        check_boolean_node(node, rhs, node.name, var_type)
         | 
| 47 46 | 
             
                      end
         | 
| 48 47 | 
             
                    end
         | 
| 49 48 |  | 
| 50 49 | 
             
                    def check_send_node(node, rhs, var_name, var_type)
         | 
| 51 | 
            -
                       | 
| 52 | 
            -
                      return unless OPS.include?(method_name)
         | 
| 50 | 
            +
                      return unless OPS.include?(rhs.method_name)
         | 
| 53 51 |  | 
| 54 52 | 
             
                      target_node = s(var_type, var_name)
         | 
| 55 | 
            -
                      return unless receiver == target_node
         | 
| 53 | 
            +
                      return unless rhs.receiver == target_node
         | 
| 56 54 |  | 
| 57 | 
            -
                      add_offense(node, message: format(MSG, method: method_name)) do |corrector|
         | 
| 55 | 
            +
                      add_offense(node, message: format(MSG, method: rhs.method_name)) do |corrector|
         | 
| 58 56 | 
             
                        autocorrect(corrector, node)
         | 
| 59 57 | 
             
                      end
         | 
| 60 58 | 
             
                    end
         | 
| 61 59 |  | 
| 62 60 | 
             
                    def check_boolean_node(node, rhs, var_name, var_type)
         | 
| 63 | 
            -
                      first_operand, _second_operand = *rhs
         | 
| 64 | 
            -
             | 
| 65 61 | 
             
                      target_node = s(var_type, var_name)
         | 
| 66 | 
            -
                      return unless  | 
| 62 | 
            +
                      return unless rhs.lhs == target_node
         | 
| 67 63 |  | 
| 68 64 | 
             
                      operator = rhs.loc.operator.source
         | 
| 69 65 | 
             
                      add_offense(node, message: format(MSG, method: operator)) do |corrector|
         | 
| @@ -72,7 +68,7 @@ module RuboCop | |
| 72 68 | 
             
                    end
         | 
| 73 69 |  | 
| 74 70 | 
             
                    def autocorrect(corrector, node)
         | 
| 75 | 
            -
                       | 
| 71 | 
            +
                      rhs = node.expression
         | 
| 76 72 |  | 
| 77 73 | 
             
                      if rhs.send_type?
         | 
| 78 74 | 
             
                        autocorrect_send_node(corrector, node, rhs)
         | 
| @@ -82,13 +78,11 @@ module RuboCop | |
| 82 78 | 
             
                    end
         | 
| 83 79 |  | 
| 84 80 | 
             
                    def autocorrect_send_node(corrector, node, rhs)
         | 
| 85 | 
            -
                       | 
| 86 | 
            -
                      apply_autocorrect(corrector, node, rhs, method_name.to_s, args)
         | 
| 81 | 
            +
                      apply_autocorrect(corrector, node, rhs, rhs.method_name, rhs.first_argument)
         | 
| 87 82 | 
             
                    end
         | 
| 88 83 |  | 
| 89 84 | 
             
                    def autocorrect_boolean_node(corrector, node, rhs)
         | 
| 90 | 
            -
                       | 
| 91 | 
            -
                      apply_autocorrect(corrector, node, rhs, rhs.loc.operator.source, second_operand)
         | 
| 85 | 
            +
                      apply_autocorrect(corrector, node, rhs, rhs.loc.operator.source, rhs.rhs)
         | 
| 92 86 | 
             
                    end
         | 
| 93 87 |  | 
| 94 88 | 
             
                    def apply_autocorrect(corrector, node, rhs, operator, new_rhs)
         | 
| @@ -122,10 +122,9 @@ module RuboCop | |
| 122 122 | 
             
                    def on_rescue(node)
         | 
| 123 123 | 
             
                      return unless style == :semantic
         | 
| 124 124 |  | 
| 125 | 
            -
                       | 
| 126 | 
            -
                      check_scope(:raise, begin_node)
         | 
| 125 | 
            +
                      check_scope(:raise, node.body)
         | 
| 127 126 |  | 
| 128 | 
            -
                       | 
| 127 | 
            +
                      node.resbody_branches.each do |rescue_node|
         | 
| 129 128 | 
             
                        check_scope(:fail, rescue_node)
         | 
| 130 129 | 
             
                        allow(:raise, rescue_node)
         | 
| 131 130 | 
             
                      end
         | 
| @@ -33,22 +33,19 @@ module RuboCop | |
| 33 33 | 
             
                  #
         | 
| 34 34 | 
             
                  class SingleArgumentDig < Base
         | 
| 35 35 | 
             
                    extend AutoCorrector
         | 
| 36 | 
            +
                    include DigHelp
         | 
| 36 37 |  | 
| 37 38 | 
             
                    MSG = 'Use `%<receiver>s[%<argument>s]` instead of `%<original>s`.'
         | 
| 38 39 | 
             
                    RESTRICT_ON_SEND = %i[dig].freeze
         | 
| 39 40 | 
             
                    IGNORED_ARGUMENT_TYPES = %i[block_pass forwarded_restarg forwarded_args hash].freeze
         | 
| 40 41 |  | 
| 41 | 
            -
                    # @!method single_argument_dig?(node)
         | 
| 42 | 
            -
                    def_node_matcher :single_argument_dig?, <<~PATTERN
         | 
| 43 | 
            -
                      (send _ :dig $!splat)
         | 
| 44 | 
            -
                    PATTERN
         | 
| 45 | 
            -
             | 
| 46 42 | 
             
                    def on_send(node)
         | 
| 47 43 | 
             
                      return unless node.receiver
         | 
| 48 44 |  | 
| 49 45 | 
             
                      expression = single_argument_dig?(node)
         | 
| 50 46 | 
             
                      return unless expression
         | 
| 51 47 | 
             
                      return if IGNORED_ARGUMENT_TYPES.include?(expression.type)
         | 
| 48 | 
            +
                      return if ignore_dig_chain?(node)
         | 
| 52 49 |  | 
| 53 50 | 
             
                      receiver = node.receiver.source
         | 
| 54 51 | 
             
                      argument = expression.source
         | 
| @@ -63,6 +60,13 @@ module RuboCop | |
| 63 60 |  | 
| 64 61 | 
             
                      ignore_node(node)
         | 
| 65 62 | 
             
                    end
         | 
| 63 | 
            +
             | 
| 64 | 
            +
                    private
         | 
| 65 | 
            +
             | 
| 66 | 
            +
                    def ignore_dig_chain?(node)
         | 
| 67 | 
            +
                      dig_chain_enabled? &&
         | 
| 68 | 
            +
                        (dig?(node.receiver) || dig?(node.parent))
         | 
| 69 | 
            +
                    end
         | 
| 66 70 | 
             
                  end
         | 
| 67 71 | 
             
                end
         | 
| 68 72 | 
             
              end
         | 
| @@ -6,8 +6,13 @@ module RuboCop | |
| 6 6 | 
             
                  # Checks for single-line `do`...`end` block.
         | 
| 7 7 | 
             
                  #
         | 
| 8 8 | 
             
                  # In practice a single line `do`...`end` is autocorrected when `EnforcedStyle: semantic`
         | 
| 9 | 
            -
                  #  | 
| 10 | 
            -
                  # preserve semantics and does not change it to `{`...`}` block.
         | 
| 9 | 
            +
                  # is configured for `Style/BlockDelimiters`. The autocorrection maintains the
         | 
| 10 | 
            +
                  # `do` ... `end` syntax to preserve semantics and does not change it to `{`...`}` block.
         | 
| 11 | 
            +
                  #
         | 
| 12 | 
            +
                  # NOTE: If `InspectBlocks` is set to `true` for `Layout/RedundantLineBreak`, blocks will
         | 
| 13 | 
            +
                  # be autocorrected to be on a single line if possible. This cop respects that configuration
         | 
| 14 | 
            +
                  # by not registering an offense if it would subsequently cause a
         | 
| 15 | 
            +
                  # `Layout/RedundantLineBreak` offense.
         | 
| 11 16 | 
             
                  #
         | 
| 12 17 | 
             
                  # @example
         | 
| 13 18 | 
             
                  #
         | 
| @@ -27,12 +32,14 @@ module RuboCop | |
| 27 32 | 
             
                  #
         | 
| 28 33 | 
             
                  class SingleLineDoEndBlock < Base
         | 
| 29 34 | 
             
                    extend AutoCorrector
         | 
| 35 | 
            +
                    include CheckSingleLineSuitability
         | 
| 30 36 |  | 
| 31 37 | 
             
                    MSG = 'Prefer multiline `do`...`end` block.'
         | 
| 32 38 |  | 
| 33 39 | 
             
                    # rubocop:disable Metrics/AbcSize
         | 
| 34 40 | 
             
                    def on_block(node)
         | 
| 35 41 | 
             
                      return if !node.single_line? || node.braces?
         | 
| 42 | 
            +
                      return if single_line_blocks_preferred? && suitable_as_single_line?(node)
         | 
| 36 43 |  | 
| 37 44 | 
             
                      add_offense(node) do |corrector|
         | 
| 38 45 | 
             
                        corrector.insert_after(do_line(node), "\n")
         | 
| @@ -60,7 +67,10 @@ module RuboCop | |
| 60 67 | 
             
                      end
         | 
| 61 68 | 
             
                    end
         | 
| 62 69 |  | 
| 63 | 
            -
                    def  | 
| 70 | 
            +
                    def single_line_blocks_preferred?
         | 
| 71 | 
            +
                      redundant_line_break_config = @config.for_cop('Layout/RedundantLineBreak')
         | 
| 72 | 
            +
                      redundant_line_break_config['Enabled'] && redundant_line_break_config['InspectBlocks']
         | 
| 73 | 
            +
                    end
         | 
| 64 74 | 
             
                  end
         | 
| 65 75 | 
             
                end
         | 
| 66 76 | 
             
              end
         | 
| @@ -214,7 +214,7 @@ module RuboCop | |
| 214 214 | 
             
                    end
         | 
| 215 215 |  | 
| 216 216 | 
             
                    def insert_bang_for_and(corrector, node)
         | 
| 217 | 
            -
                      lhs, rhs = *node
         | 
| 217 | 
            +
                      lhs, rhs = *node # rubocop:disable InternalAffairs/NodeDestructuring
         | 
| 218 218 |  | 
| 219 219 | 
             
                      if lhs.and_type?
         | 
| 220 220 | 
             
                        insert_bang_for_and(corrector, lhs)
         | 
| @@ -237,8 +237,7 @@ module RuboCop | |
| 237 237 | 
             
                    end
         | 
| 238 238 |  | 
| 239 239 | 
             
                    def wrap_condition?(node)
         | 
| 240 | 
            -
                      node. | 
| 241 | 
            -
                        (node.call_type? && node.arguments.any? && !node.parenthesized?)
         | 
| 240 | 
            +
                      node.operator_keyword? || (node.call_type? && node.arguments.any? && !node.parenthesized?)
         | 
| 242 241 | 
             
                    end
         | 
| 243 242 |  | 
| 244 243 | 
             
                    def replace_condition(condition)
         | 
| @@ -51,7 +51,6 @@ module RuboCop | |
| 51 51 | 
             
                  #   Pathname.new('/') + 'test'
         | 
| 52 52 | 
             
                  #
         | 
| 53 53 | 
             
                  class StringConcatenation < Base
         | 
| 54 | 
            -
                    include Util
         | 
| 55 54 | 
             
                    include RangeHelp
         | 
| 56 55 | 
             
                    extend AutoCorrector
         | 
| 57 56 |  | 
| @@ -143,22 +142,24 @@ module RuboCop | |
| 143 142 | 
             
                    end
         | 
| 144 143 |  | 
| 145 144 | 
             
                    def replacement(parts)
         | 
| 146 | 
            -
                      interpolated_parts =
         | 
| 147 | 
            -
                         | 
| 148 | 
            -
             | 
| 149 | 
            -
                           | 
| 150 | 
            -
             | 
| 151 | 
            -
             | 
| 152 | 
            -
             | 
| 153 | 
            -
             | 
| 154 | 
            -
                          else
         | 
| 155 | 
            -
                            "\#{#{part.source}}"
         | 
| 156 | 
            -
                          end
         | 
| 145 | 
            +
                      interpolated_parts = parts.map do |part|
         | 
| 146 | 
            +
                        case part.type
         | 
| 147 | 
            +
                        when :str
         | 
| 148 | 
            +
                          adjust_str(part)
         | 
| 149 | 
            +
                        when :dstr
         | 
| 150 | 
            +
                          part.children.all?(&:str_type?) ? adjust_str(part) : contents_range(part).source
         | 
| 151 | 
            +
                        else
         | 
| 152 | 
            +
                          "\#{#{part.source}}"
         | 
| 157 153 | 
             
                        end
         | 
| 154 | 
            +
                      end
         | 
| 158 155 |  | 
| 159 156 | 
             
                      "\"#{handle_quotes(interpolated_parts).join}\""
         | 
| 160 157 | 
             
                    end
         | 
| 161 158 |  | 
| 159 | 
            +
                    def adjust_str(node)
         | 
| 160 | 
            +
                      single_quoted?(node) ? node.value.gsub(/(\\|")/, '\\\\\&') : node.value.inspect[1..-2]
         | 
| 161 | 
            +
                    end
         | 
| 162 | 
            +
             | 
| 162 163 | 
             
                    def handle_quotes(parts)
         | 
| 163 164 | 
             
                      parts.map do |part|
         | 
| 164 165 | 
             
                        part == '"' ? '\"' : part
         | 
| @@ -79,26 +79,15 @@ module RuboCop | |
| 79 79 | 
             
                    end
         | 
| 80 80 |  | 
| 81 81 | 
             
                    def lhs(node)
         | 
| 82 | 
            -
                       | 
| 83 | 
            -
             | 
| 84 | 
            -
                        namespace, name, = *node
         | 
| 85 | 
            -
                        if namespace
         | 
| 86 | 
            -
                          "#{namespace.const_name}::#{name}"
         | 
| 87 | 
            -
                        else
         | 
| 88 | 
            -
                          name.to_s
         | 
| 89 | 
            -
                        end
         | 
| 82 | 
            +
                      if node.casgn_type?
         | 
| 83 | 
            +
                        "#{'::' if node.absolute?}#{node.const_name}"
         | 
| 90 84 | 
             
                      else
         | 
| 91 | 
            -
                        node. | 
| 85 | 
            +
                        node.name.to_s
         | 
| 92 86 | 
             
                      end
         | 
| 93 87 | 
             
                    end
         | 
| 94 88 |  | 
| 95 89 | 
             
                    def rhs(node)
         | 
| 96 | 
            -
                       | 
| 97 | 
            -
                      when :casgn
         | 
| 98 | 
            -
                        node.children[2].source
         | 
| 99 | 
            -
                      else
         | 
| 100 | 
            -
                        node.children[1].source
         | 
| 101 | 
            -
                      end
         | 
| 90 | 
            +
                      node.expression.source
         | 
| 102 91 | 
             
                    end
         | 
| 103 92 |  | 
| 104 93 | 
             
                    def correction_range(tmp_assign, y_assign)
         | 
| @@ -94,7 +94,7 @@ module RuboCop | |
| 94 94 | 
             
                    end
         | 
| 95 95 |  | 
| 96 96 | 
             
                    def unneeded_ranges(node)
         | 
| 97 | 
            -
                      node.masgn_type? ?  | 
| 97 | 
            +
                      mlhs_node = node.masgn_type? ? node.lhs : node
         | 
| 98 98 | 
             
                      variables = *mlhs_node
         | 
| 99 99 |  | 
| 100 100 | 
             
                      main_offense = main_node_offense(node)
         | 
| @@ -106,15 +106,15 @@ module RuboCop | |
| 106 106 | 
             
                    end
         | 
| 107 107 |  | 
| 108 108 | 
             
                    def main_node_offense(node)
         | 
| 109 | 
            -
                      node.masgn_type? ?  | 
| 110 | 
            -
             | 
| 109 | 
            +
                      mlhs_node = node.masgn_type? ? node.lhs : node
         | 
| 111 110 | 
             
                      variables = *mlhs_node
         | 
| 111 | 
            +
             | 
| 112 112 | 
             
                      first_offense = find_first_offense(variables)
         | 
| 113 113 |  | 
| 114 114 | 
             
                      return unless first_offense
         | 
| 115 115 |  | 
| 116 116 | 
             
                      if unused_variables_only?(first_offense, variables)
         | 
| 117 | 
            -
                        return unused_range(node.type, mlhs_node,  | 
| 117 | 
            +
                        return unused_range(node.type, mlhs_node, node.rhs)
         | 
| 118 118 | 
             
                      end
         | 
| 119 119 |  | 
| 120 120 | 
             
                      return range_for_parentheses(first_offense, mlhs_node) if Util.parentheses?(mlhs_node)
         | 
| @@ -19,8 +19,7 @@ module RuboCop | |
| 19 19 | 
             
                    include Interpolation
         | 
| 20 20 | 
             
                    extend AutoCorrector
         | 
| 21 21 |  | 
| 22 | 
            -
                    MSG = 'Replace interpolated variable `%<variable>s` ' | 
| 23 | 
            -
                          'with expression `#{%<variable>s}`.' # rubocop:disable Lint/InterpolationCheck
         | 
| 22 | 
            +
                    MSG = 'Replace interpolated variable `%<variable>s` with expression `#{%<variable>s}`.'
         | 
| 24 23 |  | 
| 25 24 | 
             
                    def on_node_with_interpolations(node)
         | 
| 26 25 | 
             
                      var_nodes(node.children).each do |var_node|
         | 
| @@ -194,15 +194,10 @@ module RuboCop | |
| 194 194 | 
             
                  end
         | 
| 195 195 |  | 
| 196 196 | 
             
                  def process_variable_operator_assignment(node)
         | 
| 197 | 
            -
                     | 
| 198 | 
            -
                      asgn_node, rhs_node = *node
         | 
| 199 | 
            -
                    else
         | 
| 200 | 
            -
                      asgn_node, _operator, rhs_node = *node
         | 
| 201 | 
            -
                    end
         | 
| 202 | 
            -
             | 
| 197 | 
            +
                    asgn_node = node.lhs
         | 
| 203 198 | 
             
                    return unless asgn_node.lvasgn_type?
         | 
| 204 199 |  | 
| 205 | 
            -
                    name = asgn_node. | 
| 200 | 
            +
                    name = asgn_node.name
         | 
| 206 201 |  | 
| 207 202 | 
             
                    variable_table.declare_variable(name, asgn_node) unless variable_table.variable_exist?(name)
         | 
| 208 203 |  | 
| @@ -222,7 +217,7 @@ module RuboCop | |
| 222 217 | 
             
                    # before processing rhs nodes.
         | 
| 223 218 |  | 
| 224 219 | 
             
                    variable_table.reference_variable(name, node)
         | 
| 225 | 
            -
                    process_node( | 
| 220 | 
            +
                    process_node(node.rhs)
         | 
| 226 221 | 
             
                    variable_table.assign_to_variable(name, asgn_node)
         | 
| 227 222 |  | 
| 228 223 | 
             
                    skip_children!
         | 
| @@ -355,8 +350,7 @@ module RuboCop | |
| 355 350 | 
             
                    when :lvasgn
         | 
| 356 351 | 
             
                      AssignmentReference.new(node)
         | 
| 357 352 | 
             
                    when *OPERATOR_ASSIGNMENT_TYPES
         | 
| 358 | 
            -
                       | 
| 359 | 
            -
                      VariableReference.new(asgn_node.children.first) if asgn_node.lvasgn_type?
         | 
| 353 | 
            +
                      VariableReference.new(node.lhs.name) if node.lhs.lvasgn_type?
         | 
| 360 354 | 
             
                    end
         | 
| 361 355 | 
             
                  end
         | 
| 362 356 |  | 
| @@ -114,7 +114,15 @@ class CopsDocumentationGenerator # rubocop:disable Metrics/ClassLength | |
| 114 114 | 
             
              def required_ruby_version(cop)
         | 
| 115 115 | 
             
                return '' unless cop.respond_to?(:required_minimum_ruby_version)
         | 
| 116 116 |  | 
| 117 | 
            -
                 | 
| 117 | 
            +
                if cop.required_minimum_ruby_version
         | 
| 118 | 
            +
                  requirement = cop.required_minimum_ruby_version
         | 
| 119 | 
            +
                elsif cop.required_maximum_ruby_version
         | 
| 120 | 
            +
                  requirement = "<= #{cop.required_maximum_ruby_version}"
         | 
| 121 | 
            +
                else
         | 
| 122 | 
            +
                  return ''
         | 
| 123 | 
            +
                end
         | 
| 124 | 
            +
             | 
| 125 | 
            +
                "NOTE: Requires Ruby version #{requirement}\n\n"
         | 
| 118 126 | 
             
              end
         | 
| 119 127 |  | 
| 120 128 | 
             
              # rubocop:disable Metrics/MethodLength
         | 
    
        data/lib/rubocop/version.rb
    CHANGED
    
    
    
        data/lib/rubocop.rb
    CHANGED
    
    | @@ -78,12 +78,14 @@ require_relative 'rubocop/cop/mixin/allowed_receivers' | |
| 78 78 | 
             
            require_relative 'rubocop/cop/mixin/auto_corrector' # rubocop:todo Naming/InclusiveLanguage
         | 
| 79 79 | 
             
            require_relative 'rubocop/cop/mixin/check_assignment'
         | 
| 80 80 | 
             
            require_relative 'rubocop/cop/mixin/check_line_breakable'
         | 
| 81 | 
            +
            require_relative 'rubocop/cop/mixin/check_single_line_suitability'
         | 
| 81 82 | 
             
            require_relative 'rubocop/cop/mixin/configurable_max'
         | 
| 82 83 | 
             
            require_relative 'rubocop/cop/mixin/code_length' # relies on configurable_max
         | 
| 83 84 | 
             
            require_relative 'rubocop/cop/mixin/configurable_enforced_style'
         | 
| 84 85 | 
             
            require_relative 'rubocop/cop/mixin/configurable_formatting'
         | 
| 85 86 | 
             
            require_relative 'rubocop/cop/mixin/configurable_naming'
         | 
| 86 87 | 
             
            require_relative 'rubocop/cop/mixin/configurable_numbering'
         | 
| 88 | 
            +
            require_relative 'rubocop/cop/mixin/dig_help'
         | 
| 87 89 | 
             
            require_relative 'rubocop/cop/mixin/documentation_comment'
         | 
| 88 90 | 
             
            require_relative 'rubocop/cop/mixin/duplication'
         | 
| 89 91 | 
             
            require_relative 'rubocop/cop/mixin/range_help'
         | 
| @@ -333,6 +335,7 @@ require_relative 'rubocop/cop/lint/float_comparison' | |
| 333 335 | 
             
            require_relative 'rubocop/cop/lint/float_out_of_range'
         | 
| 334 336 | 
             
            require_relative 'rubocop/cop/lint/format_parameter_mismatch'
         | 
| 335 337 | 
             
            require_relative 'rubocop/cop/lint/hash_compare_by_identity'
         | 
| 338 | 
            +
            require_relative 'rubocop/cop/lint/hash_new_with_keyword_arguments_as_default'
         | 
| 336 339 | 
             
            require_relative 'rubocop/cop/lint/heredoc_method_call_position'
         | 
| 337 340 | 
             
            require_relative 'rubocop/cop/lint/identity_comparison'
         | 
| 338 341 | 
             
            require_relative 'rubocop/cop/lint/implicit_string_concatenation'
         | 
| @@ -360,6 +363,7 @@ require_relative 'rubocop/cop/lint/non_deterministic_require_order' | |
| 360 363 | 
             
            require_relative 'rubocop/cop/lint/non_local_exit_from_iterator'
         | 
| 361 364 | 
             
            require_relative 'rubocop/cop/lint/number_conversion'
         | 
| 362 365 | 
             
            require_relative 'rubocop/cop/lint/numbered_parameter_assignment'
         | 
| 366 | 
            +
            require_relative 'rubocop/cop/lint/numeric_operation_with_constant_result'
         | 
| 363 367 | 
             
            require_relative 'rubocop/cop/lint/or_assignment_to_constant'
         | 
| 364 368 | 
             
            require_relative 'rubocop/cop/lint/ordered_magic_comments'
         | 
| 365 369 | 
             
            require_relative 'rubocop/cop/lint/out_of_range_regexp_ref'
         | 
| @@ -417,6 +421,7 @@ require_relative 'rubocop/cop/lint/uri_escape_unescape' | |
| 417 421 | 
             
            require_relative 'rubocop/cop/lint/uri_regexp'
         | 
| 418 422 | 
             
            require_relative 'rubocop/cop/lint/useless_access_modifier'
         | 
| 419 423 | 
             
            require_relative 'rubocop/cop/lint/useless_assignment'
         | 
| 424 | 
            +
            require_relative 'rubocop/cop/lint/useless_defined'
         | 
| 420 425 | 
             
            require_relative 'rubocop/cop/lint/useless_else_without_rescue'
         | 
| 421 426 | 
             
            require_relative 'rubocop/cop/lint/useless_method_definition'
         | 
| 422 427 | 
             
            require_relative 'rubocop/cop/lint/useless_numeric_operation'
         | 
| @@ -505,6 +510,7 @@ require_relative 'rubocop/cop/style/copyright' | |
| 505 510 | 
             
            require_relative 'rubocop/cop/style/data_inheritance'
         | 
| 506 511 | 
             
            require_relative 'rubocop/cop/style/date_time'
         | 
| 507 512 | 
             
            require_relative 'rubocop/cop/style/def_with_parentheses'
         | 
| 513 | 
            +
            require_relative 'rubocop/cop/style/dig_chain'
         | 
| 508 514 | 
             
            require_relative 'rubocop/cop/style/dir'
         | 
| 509 515 | 
             
            require_relative 'rubocop/cop/style/dir_empty'
         | 
| 510 516 | 
             
            require_relative 'rubocop/cop/style/disable_cops_within_source_code_directive'
         | 
| @@ -534,7 +540,9 @@ require_relative 'rubocop/cop/style/explicit_block_argument' | |
| 534 540 | 
             
            require_relative 'rubocop/cop/style/exponential_notation'
         | 
| 535 541 | 
             
            require_relative 'rubocop/cop/style/fetch_env_var'
         | 
| 536 542 | 
             
            require_relative 'rubocop/cop/style/file_empty'
         | 
| 543 | 
            +
            require_relative 'rubocop/cop/style/file_null'
         | 
| 537 544 | 
             
            require_relative 'rubocop/cop/style/file_read'
         | 
| 545 | 
            +
            require_relative 'rubocop/cop/style/file_touch'
         | 
| 538 546 | 
             
            require_relative 'rubocop/cop/style/file_write'
         | 
| 539 547 | 
             
            require_relative 'rubocop/cop/style/float_division'
         | 
| 540 548 | 
             
            require_relative 'rubocop/cop/style/for'
         | 
    
        metadata
    CHANGED
    
    | @@ -1,16 +1,16 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: rubocop
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version: 1. | 
| 4 | 
            +
              version: 1.69.1
         | 
| 5 5 | 
             
            platform: ruby
         | 
| 6 6 | 
             
            authors:
         | 
| 7 7 | 
             
            - Bozhidar Batsov
         | 
| 8 8 | 
             
            - Jonas Arvidsson
         | 
| 9 9 | 
             
            - Yuji Nakayama
         | 
| 10 | 
            -
            autorequire: | 
| 10 | 
            +
            autorequire:
         | 
| 11 11 | 
             
            bindir: exe
         | 
| 12 12 | 
             
            cert_chain: []
         | 
| 13 | 
            -
            date: 2024- | 
| 13 | 
            +
            date: 2024-12-03 00:00:00.000000000 Z
         | 
| 14 14 | 
             
            dependencies:
         | 
| 15 15 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 16 16 | 
             
              name: json
         | 
| @@ -94,7 +94,7 @@ dependencies: | |
| 94 94 | 
             
                requirements:
         | 
| 95 95 | 
             
                - - ">="
         | 
| 96 96 | 
             
                  - !ruby/object:Gem::Version
         | 
| 97 | 
            -
                    version:  | 
| 97 | 
            +
                    version: 2.9.3
         | 
| 98 98 | 
             
                - - "<"
         | 
| 99 99 | 
             
                  - !ruby/object:Gem::Version
         | 
| 100 100 | 
             
                    version: '3.0'
         | 
| @@ -104,7 +104,7 @@ dependencies: | |
| 104 104 | 
             
                requirements:
         | 
| 105 105 | 
             
                - - ">="
         | 
| 106 106 | 
             
                  - !ruby/object:Gem::Version
         | 
| 107 | 
            -
                    version:  | 
| 107 | 
            +
                    version: 2.9.3
         | 
| 108 108 | 
             
                - - "<"
         | 
| 109 109 | 
             
                  - !ruby/object:Gem::Version
         | 
| 110 110 | 
             
                    version: '3.0'
         | 
| @@ -114,7 +114,7 @@ dependencies: | |
| 114 114 | 
             
                requirements:
         | 
| 115 115 | 
             
                - - ">="
         | 
| 116 116 | 
             
                  - !ruby/object:Gem::Version
         | 
| 117 | 
            -
                    version: 1. | 
| 117 | 
            +
                    version: 1.36.2
         | 
| 118 118 | 
             
                - - "<"
         | 
| 119 119 | 
             
                  - !ruby/object:Gem::Version
         | 
| 120 120 | 
             
                    version: '2.0'
         | 
| @@ -124,7 +124,7 @@ dependencies: | |
| 124 124 | 
             
                requirements:
         | 
| 125 125 | 
             
                - - ">="
         | 
| 126 126 | 
             
                  - !ruby/object:Gem::Version
         | 
| 127 | 
            -
                    version: 1. | 
| 127 | 
            +
                    version: 1.36.2
         | 
| 128 128 | 
             
                - - "<"
         | 
| 129 129 | 
             
                  - !ruby/object:Gem::Version
         | 
| 130 130 | 
             
                    version: '2.0'
         | 
| @@ -151,7 +151,7 @@ dependencies: | |
| 151 151 | 
             
                    version: 2.4.0
         | 
| 152 152 | 
             
                - - "<"
         | 
| 153 153 | 
             
                  - !ruby/object:Gem::Version
         | 
| 154 | 
            -
                    version: ' | 
| 154 | 
            +
                    version: '4.0'
         | 
| 155 155 | 
             
              type: :runtime
         | 
| 156 156 | 
             
              prerelease: false
         | 
| 157 157 | 
             
              version_requirements: !ruby/object:Gem::Requirement
         | 
| @@ -161,7 +161,7 @@ dependencies: | |
| 161 161 | 
             
                    version: 2.4.0
         | 
| 162 162 | 
             
                - - "<"
         | 
| 163 163 | 
             
                  - !ruby/object:Gem::Version
         | 
| 164 | 
            -
                    version: ' | 
| 164 | 
            +
                    version: '4.0'
         | 
| 165 165 | 
             
            description: |
         | 
| 166 166 | 
             
              RuboCop is a Ruby code style checking and code formatting tool.
         | 
| 167 167 | 
             
              It aims to enforce the community-driven Ruby Style Guide.
         | 
| @@ -282,6 +282,7 @@ files: | |
| 282 282 | 
             
            - lib/rubocop/cop/internal_affairs/node_type_predicate.rb
         | 
| 283 283 | 
             
            - lib/rubocop/cop/internal_affairs/numblock_handler.rb
         | 
| 284 284 | 
             
            - lib/rubocop/cop/internal_affairs/offense_location_keyword.rb
         | 
| 285 | 
            +
            - lib/rubocop/cop/internal_affairs/operator_keyword.rb
         | 
| 285 286 | 
             
            - lib/rubocop/cop/internal_affairs/processed_source_buffer_name.rb
         | 
| 286 287 | 
             
            - lib/rubocop/cop/internal_affairs/redundant_context_config_parameter.rb
         | 
| 287 288 | 
             
            - lib/rubocop/cop/internal_affairs/redundant_described_class_as_subject.rb
         | 
| @@ -445,6 +446,7 @@ files: | |
| 445 446 | 
             
            - lib/rubocop/cop/lint/float_out_of_range.rb
         | 
| 446 447 | 
             
            - lib/rubocop/cop/lint/format_parameter_mismatch.rb
         | 
| 447 448 | 
             
            - lib/rubocop/cop/lint/hash_compare_by_identity.rb
         | 
| 449 | 
            +
            - lib/rubocop/cop/lint/hash_new_with_keyword_arguments_as_default.rb
         | 
| 448 450 | 
             
            - lib/rubocop/cop/lint/heredoc_method_call_position.rb
         | 
| 449 451 | 
             
            - lib/rubocop/cop/lint/identity_comparison.rb
         | 
| 450 452 | 
             
            - lib/rubocop/cop/lint/implicit_string_concatenation.rb
         | 
| @@ -472,6 +474,7 @@ files: | |
| 472 474 | 
             
            - lib/rubocop/cop/lint/non_local_exit_from_iterator.rb
         | 
| 473 475 | 
             
            - lib/rubocop/cop/lint/number_conversion.rb
         | 
| 474 476 | 
             
            - lib/rubocop/cop/lint/numbered_parameter_assignment.rb
         | 
| 477 | 
            +
            - lib/rubocop/cop/lint/numeric_operation_with_constant_result.rb
         | 
| 475 478 | 
             
            - lib/rubocop/cop/lint/or_assignment_to_constant.rb
         | 
| 476 479 | 
             
            - lib/rubocop/cop/lint/ordered_magic_comments.rb
         | 
| 477 480 | 
             
            - lib/rubocop/cop/lint/out_of_range_regexp_ref.rb
         | 
| @@ -529,6 +532,7 @@ files: | |
| 529 532 | 
             
            - lib/rubocop/cop/lint/uri_regexp.rb
         | 
| 530 533 | 
             
            - lib/rubocop/cop/lint/useless_access_modifier.rb
         | 
| 531 534 | 
             
            - lib/rubocop/cop/lint/useless_assignment.rb
         | 
| 535 | 
            +
            - lib/rubocop/cop/lint/useless_defined.rb
         | 
| 532 536 | 
             
            - lib/rubocop/cop/lint/useless_else_without_rescue.rb
         | 
| 533 537 | 
             
            - lib/rubocop/cop/lint/useless_method_definition.rb
         | 
| 534 538 | 
             
            - lib/rubocop/cop/lint/useless_numeric_operation.rb
         | 
| @@ -565,6 +569,7 @@ files: | |
| 565 569 | 
             
            - lib/rubocop/cop/mixin/auto_corrector.rb
         | 
| 566 570 | 
             
            - lib/rubocop/cop/mixin/check_assignment.rb
         | 
| 567 571 | 
             
            - lib/rubocop/cop/mixin/check_line_breakable.rb
         | 
| 572 | 
            +
            - lib/rubocop/cop/mixin/check_single_line_suitability.rb
         | 
| 568 573 | 
             
            - lib/rubocop/cop/mixin/code_length.rb
         | 
| 569 574 | 
             
            - lib/rubocop/cop/mixin/comments_help.rb
         | 
| 570 575 | 
             
            - lib/rubocop/cop/mixin/configurable_enforced_style.rb
         | 
| @@ -573,6 +578,7 @@ files: | |
| 573 578 | 
             
            - lib/rubocop/cop/mixin/configurable_naming.rb
         | 
| 574 579 | 
             
            - lib/rubocop/cop/mixin/configurable_numbering.rb
         | 
| 575 580 | 
             
            - lib/rubocop/cop/mixin/def_node.rb
         | 
| 581 | 
            +
            - lib/rubocop/cop/mixin/dig_help.rb
         | 
| 576 582 | 
             
            - lib/rubocop/cop/mixin/documentation_comment.rb
         | 
| 577 583 | 
             
            - lib/rubocop/cop/mixin/duplication.rb
         | 
| 578 584 | 
             
            - lib/rubocop/cop/mixin/empty_lines_around_body.rb
         | 
| @@ -701,6 +707,7 @@ files: | |
| 701 707 | 
             
            - lib/rubocop/cop/style/data_inheritance.rb
         | 
| 702 708 | 
             
            - lib/rubocop/cop/style/date_time.rb
         | 
| 703 709 | 
             
            - lib/rubocop/cop/style/def_with_parentheses.rb
         | 
| 710 | 
            +
            - lib/rubocop/cop/style/dig_chain.rb
         | 
| 704 711 | 
             
            - lib/rubocop/cop/style/dir.rb
         | 
| 705 712 | 
             
            - lib/rubocop/cop/style/dir_empty.rb
         | 
| 706 713 | 
             
            - lib/rubocop/cop/style/disable_cops_within_source_code_directive.rb
         | 
| @@ -730,7 +737,9 @@ files: | |
| 730 737 | 
             
            - lib/rubocop/cop/style/exponential_notation.rb
         | 
| 731 738 | 
             
            - lib/rubocop/cop/style/fetch_env_var.rb
         | 
| 732 739 | 
             
            - lib/rubocop/cop/style/file_empty.rb
         | 
| 740 | 
            +
            - lib/rubocop/cop/style/file_null.rb
         | 
| 733 741 | 
             
            - lib/rubocop/cop/style/file_read.rb
         | 
| 742 | 
            +
            - lib/rubocop/cop/style/file_touch.rb
         | 
| 734 743 | 
             
            - lib/rubocop/cop/style/file_write.rb
         | 
| 735 744 | 
             
            - lib/rubocop/cop/style/float_division.rb
         | 
| 736 745 | 
             
            - lib/rubocop/cop/style/for.rb
         | 
| @@ -1026,12 +1035,12 @@ licenses: | |
| 1026 1035 | 
             
            - MIT
         | 
| 1027 1036 | 
             
            metadata:
         | 
| 1028 1037 | 
             
              homepage_uri: https://rubocop.org/
         | 
| 1029 | 
            -
              changelog_uri: https://github.com/rubocop/rubocop/releases/tag/v1. | 
| 1038 | 
            +
              changelog_uri: https://github.com/rubocop/rubocop/releases/tag/v1.69.1
         | 
| 1030 1039 | 
             
              source_code_uri: https://github.com/rubocop/rubocop/
         | 
| 1031 | 
            -
              documentation_uri: https://docs.rubocop.org/rubocop/1. | 
| 1040 | 
            +
              documentation_uri: https://docs.rubocop.org/rubocop/1.69/
         | 
| 1032 1041 | 
             
              bug_tracker_uri: https://github.com/rubocop/rubocop/issues
         | 
| 1033 1042 | 
             
              rubygems_mfa_required: 'true'
         | 
| 1034 | 
            -
            post_install_message: | 
| 1043 | 
            +
            post_install_message:
         | 
| 1035 1044 | 
             
            rdoc_options: []
         | 
| 1036 1045 | 
             
            require_paths:
         | 
| 1037 1046 | 
             
            - lib
         | 
| @@ -1046,8 +1055,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement | |
| 1046 1055 | 
             
                - !ruby/object:Gem::Version
         | 
| 1047 1056 | 
             
                  version: '0'
         | 
| 1048 1057 | 
             
            requirements: []
         | 
| 1049 | 
            -
            rubygems_version: 3. | 
| 1050 | 
            -
            signing_key: | 
| 1058 | 
            +
            rubygems_version: 3.3.7
         | 
| 1059 | 
            +
            signing_key:
         | 
| 1051 1060 | 
             
            specification_version: 4
         | 
| 1052 1061 | 
             
            summary: Automatic Ruby code style checking tool.
         | 
| 1053 1062 | 
             
            test_files: []
         |