rubocop 1.71.2 → 1.75.2

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.
Files changed (205) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +3 -3
  3. data/config/default.yml +118 -21
  4. data/config/internal_affairs.yml +20 -0
  5. data/config/obsoletion.yml +3 -1
  6. data/lib/rubocop/cli/command/suggest_extensions.rb +7 -1
  7. data/lib/rubocop/cli.rb +1 -1
  8. data/lib/rubocop/comment_config.rb +1 -1
  9. data/lib/rubocop/config.rb +39 -6
  10. data/lib/rubocop/config_loader.rb +48 -9
  11. data/lib/rubocop/config_loader_resolver.rb +24 -9
  12. data/lib/rubocop/config_obsoletion/extracted_cop.rb +4 -3
  13. data/lib/rubocop/config_obsoletion/renamed_cop.rb +18 -3
  14. data/lib/rubocop/config_obsoletion.rb +46 -2
  15. data/lib/rubocop/config_validator.rb +2 -1
  16. data/lib/rubocop/cop/internal_affairs/example_description.rb +7 -3
  17. data/lib/rubocop/cop/internal_affairs/location_exists.rb +116 -0
  18. data/lib/rubocop/cop/internal_affairs/node_pattern_groups/ast_walker.rb +1 -1
  19. data/lib/rubocop/cop/internal_affairs/node_pattern_groups.rb +2 -1
  20. data/lib/rubocop/cop/internal_affairs/node_type_group.rb +91 -0
  21. data/lib/rubocop/cop/internal_affairs/plugin.rb +33 -0
  22. data/lib/rubocop/cop/internal_affairs/redundant_described_class_as_subject.rb +6 -5
  23. data/lib/rubocop/cop/internal_affairs/undefined_config.rb +7 -1
  24. data/lib/rubocop/cop/internal_affairs.rb +2 -16
  25. data/lib/rubocop/cop/layout/block_alignment.rb +2 -0
  26. data/lib/rubocop/cop/layout/block_end_newline.rb +1 -0
  27. data/lib/rubocop/cop/layout/closing_parenthesis_indentation.rb +4 -4
  28. data/lib/rubocop/cop/layout/def_end_alignment.rb +1 -1
  29. data/lib/rubocop/cop/layout/else_alignment.rb +2 -2
  30. data/lib/rubocop/cop/layout/empty_line_after_guard_clause.rb +1 -1
  31. data/lib/rubocop/cop/layout/empty_line_between_defs.rb +3 -3
  32. data/lib/rubocop/cop/layout/empty_lines_around_access_modifier.rb +27 -1
  33. data/lib/rubocop/cop/layout/empty_lines_around_block_body.rb +1 -0
  34. data/lib/rubocop/cop/layout/empty_lines_around_method_body.rb +22 -2
  35. data/lib/rubocop/cop/layout/heredoc_argument_closing_parenthesis.rb +1 -1
  36. data/lib/rubocop/cop/layout/indentation_width.rb +1 -0
  37. data/lib/rubocop/cop/layout/line_length.rb +8 -4
  38. data/lib/rubocop/cop/layout/multiline_block_layout.rb +1 -0
  39. data/lib/rubocop/cop/layout/multiline_method_call_indentation.rb +2 -2
  40. data/lib/rubocop/cop/layout/multiline_method_parameter_line_breaks.rb +1 -0
  41. data/lib/rubocop/cop/layout/redundant_line_break.rb +9 -5
  42. data/lib/rubocop/cop/layout/rescue_ensure_alignment.rb +3 -5
  43. data/lib/rubocop/cop/layout/space_around_method_call_operator.rb +1 -1
  44. data/lib/rubocop/cop/layout/space_around_operators.rb +4 -1
  45. data/lib/rubocop/cop/layout/space_before_block_braces.rb +1 -0
  46. data/lib/rubocop/cop/layout/space_inside_block_braces.rb +1 -0
  47. data/lib/rubocop/cop/lint/cop_directive_syntax.rb +84 -0
  48. data/lib/rubocop/cop/lint/debugger.rb +2 -2
  49. data/lib/rubocop/cop/lint/deprecated_open_ssl_constant.rb +1 -1
  50. data/lib/rubocop/cop/lint/duplicate_methods.rb +2 -17
  51. data/lib/rubocop/cop/lint/empty_conditional_body.rb +14 -64
  52. data/lib/rubocop/cop/lint/erb_new_arguments.rb +0 -6
  53. data/lib/rubocop/cop/lint/float_comparison.rb +1 -6
  54. data/lib/rubocop/cop/lint/format_parameter_mismatch.rb +1 -1
  55. data/lib/rubocop/cop/lint/literal_as_condition.rb +103 -9
  56. data/lib/rubocop/cop/lint/mixed_case_range.rb +2 -2
  57. data/lib/rubocop/cop/lint/nested_method_definition.rb +1 -1
  58. data/lib/rubocop/cop/lint/non_local_exit_from_iterator.rb +3 -3
  59. data/lib/rubocop/cop/lint/or_assignment_to_constant.rb +1 -1
  60. data/lib/rubocop/cop/lint/raise_exception.rb +29 -10
  61. data/lib/rubocop/cop/lint/redundant_require_statement.rb +0 -21
  62. data/lib/rubocop/cop/lint/redundant_type_conversion.rb +261 -0
  63. data/lib/rubocop/cop/lint/redundant_with_index.rb +3 -0
  64. data/lib/rubocop/cop/lint/redundant_with_object.rb +3 -0
  65. data/lib/rubocop/cop/lint/return_in_void_context.rb +9 -11
  66. data/lib/rubocop/cop/lint/shadowing_outer_local_variable.rb +8 -1
  67. data/lib/rubocop/cop/lint/shared_mutable_default.rb +12 -1
  68. data/lib/rubocop/cop/lint/suppressed_exception.rb +1 -1
  69. data/lib/rubocop/cop/lint/suppressed_exception_in_number_conversion.rb +111 -0
  70. data/lib/rubocop/cop/lint/to_enum_arguments.rb +1 -1
  71. data/lib/rubocop/cop/lint/top_level_return_with_argument.rb +1 -1
  72. data/lib/rubocop/cop/lint/unexpected_block_arity.rb +2 -0
  73. data/lib/rubocop/cop/lint/unreachable_code.rb +1 -0
  74. data/lib/rubocop/cop/lint/unreachable_loop.rb +5 -5
  75. data/lib/rubocop/cop/lint/useless_access_modifier.rb +1 -0
  76. data/lib/rubocop/cop/lint/useless_constant_scoping.rb +71 -0
  77. data/lib/rubocop/cop/lint/void.rb +7 -0
  78. data/lib/rubocop/cop/metrics/block_length.rb +1 -0
  79. data/lib/rubocop/cop/metrics/method_length.rb +1 -0
  80. data/lib/rubocop/cop/metrics/utils/code_length_calculator.rb +1 -1
  81. data/lib/rubocop/cop/metrics/utils/repeated_attribute_discount.rb +7 -7
  82. data/lib/rubocop/cop/mixin/alignment.rb +2 -2
  83. data/lib/rubocop/cop/mixin/allowed_pattern.rb +4 -4
  84. data/lib/rubocop/cop/mixin/check_line_breakable.rb +2 -2
  85. data/lib/rubocop/cop/mixin/check_single_line_suitability.rb +2 -2
  86. data/lib/rubocop/cop/mixin/comments_help.rb +1 -1
  87. data/lib/rubocop/cop/mixin/def_node.rb +1 -1
  88. data/lib/rubocop/cop/mixin/empty_lines_around_body.rb +1 -1
  89. data/lib/rubocop/cop/mixin/forbidden_identifiers.rb +20 -0
  90. data/lib/rubocop/cop/mixin/forbidden_pattern.rb +16 -0
  91. data/lib/rubocop/cop/mixin/frozen_string_literal.rb +0 -1
  92. data/lib/rubocop/cop/mixin/hash_shorthand_syntax.rb +18 -18
  93. data/lib/rubocop/cop/mixin/hash_subset.rb +19 -4
  94. data/lib/rubocop/cop/mixin/hash_transform_method.rb +74 -74
  95. data/lib/rubocop/cop/mixin/method_complexity.rb +1 -0
  96. data/lib/rubocop/cop/mixin/percent_literal.rb +1 -1
  97. data/lib/rubocop/cop/mixin/range_help.rb +15 -3
  98. data/lib/rubocop/cop/mixin/string_help.rb +1 -1
  99. data/lib/rubocop/cop/mixin/target_ruby_version.rb +1 -1
  100. data/lib/rubocop/cop/mixin/trailing_comma.rb +12 -0
  101. data/lib/rubocop/cop/naming/block_forwarding.rb +3 -3
  102. data/lib/rubocop/cop/naming/memoized_instance_variable_name.rb +1 -1
  103. data/lib/rubocop/cop/naming/method_name.rb +64 -8
  104. data/lib/rubocop/cop/naming/predicate_name.rb +44 -0
  105. data/lib/rubocop/cop/naming/variable_name.rb +51 -6
  106. data/lib/rubocop/cop/registry.rb +9 -6
  107. data/lib/rubocop/cop/style/accessor_grouping.rb +19 -5
  108. data/lib/rubocop/cop/style/arguments_forwarding.rb +3 -3
  109. data/lib/rubocop/cop/style/array_intersect.rb +39 -28
  110. data/lib/rubocop/cop/style/block_delimiters.rb +2 -1
  111. data/lib/rubocop/cop/style/class_and_module_children.rb +29 -7
  112. data/lib/rubocop/cop/style/class_equality_comparison.rb +1 -1
  113. data/lib/rubocop/cop/style/collection_methods.rb +1 -0
  114. data/lib/rubocop/cop/style/combinable_loops.rb +1 -0
  115. data/lib/rubocop/cop/style/commented_keyword.rb +10 -3
  116. data/lib/rubocop/cop/style/comparable_between.rb +75 -0
  117. data/lib/rubocop/cop/style/conditional_assignment.rb +3 -0
  118. data/lib/rubocop/cop/style/double_negation.rb +2 -2
  119. data/lib/rubocop/cop/style/empty_literal.rb +4 -0
  120. data/lib/rubocop/cop/style/endless_method.rb +163 -18
  121. data/lib/rubocop/cop/style/expand_path_arguments.rb +2 -7
  122. data/lib/rubocop/cop/style/explicit_block_argument.rb +2 -2
  123. data/lib/rubocop/cop/style/exponential_notation.rb +2 -2
  124. data/lib/rubocop/cop/style/for.rb +1 -0
  125. data/lib/rubocop/cop/style/format_string_token.rb +38 -11
  126. data/lib/rubocop/cop/style/frozen_string_literal_comment.rb +3 -2
  127. data/lib/rubocop/cop/style/global_std_stream.rb +3 -0
  128. data/lib/rubocop/cop/style/guard_clause.rb +2 -1
  129. data/lib/rubocop/cop/style/hash_each_methods.rb +3 -2
  130. data/lib/rubocop/cop/style/hash_fetch_chain.rb +105 -0
  131. data/lib/rubocop/cop/style/hash_syntax.rb +3 -0
  132. data/lib/rubocop/cop/style/if_inside_else.rb +10 -13
  133. data/lib/rubocop/cop/style/if_unless_modifier.rb +2 -2
  134. data/lib/rubocop/cop/style/inverse_methods.rb +9 -5
  135. data/lib/rubocop/cop/style/invertible_unless_condition.rb +2 -2
  136. data/lib/rubocop/cop/style/ip_addresses.rb +2 -2
  137. data/lib/rubocop/cop/style/it_block_parameter.rb +100 -0
  138. data/lib/rubocop/cop/style/keyword_parameters_order.rb +13 -7
  139. data/lib/rubocop/cop/style/lambda.rb +1 -0
  140. data/lib/rubocop/cop/style/line_end_concatenation.rb +10 -4
  141. data/lib/rubocop/cop/style/map_into_array.rb +1 -0
  142. data/lib/rubocop/cop/style/method_call_with_args_parentheses/omit_parentheses.rb +4 -4
  143. data/lib/rubocop/cop/style/method_called_on_do_end_block.rb +2 -1
  144. data/lib/rubocop/cop/style/multiline_block_chain.rb +2 -1
  145. data/lib/rubocop/cop/style/multiline_method_signature.rb +1 -9
  146. data/lib/rubocop/cop/style/next.rb +44 -0
  147. data/lib/rubocop/cop/style/object_then.rb +1 -0
  148. data/lib/rubocop/cop/style/proc.rb +1 -0
  149. data/lib/rubocop/cop/style/raise_args.rb +8 -8
  150. data/lib/rubocop/cop/style/redundant_begin.rb +1 -0
  151. data/lib/rubocop/cop/style/redundant_condition.rb +57 -0
  152. data/lib/rubocop/cop/style/redundant_current_directory_in_path.rb +14 -4
  153. data/lib/rubocop/cop/style/redundant_format.rb +257 -0
  154. data/lib/rubocop/cop/style/redundant_freeze.rb +1 -1
  155. data/lib/rubocop/cop/style/redundant_parentheses.rb +20 -5
  156. data/lib/rubocop/cop/style/redundant_self.rb +1 -0
  157. data/lib/rubocop/cop/style/redundant_self_assignment.rb +1 -1
  158. data/lib/rubocop/cop/style/redundant_sort_by.rb +17 -1
  159. data/lib/rubocop/cop/style/rescue_modifier.rb +3 -0
  160. data/lib/rubocop/cop/style/return_nil.rb +2 -2
  161. data/lib/rubocop/cop/style/select_by_regexp.rb +4 -1
  162. data/lib/rubocop/cop/style/single_line_do_end_block.rb +3 -1
  163. data/lib/rubocop/cop/style/single_line_methods.rb +3 -3
  164. data/lib/rubocop/cop/style/sole_nested_conditional.rb +41 -106
  165. data/lib/rubocop/cop/style/string_concatenation.rb +1 -1
  166. data/lib/rubocop/cop/style/super_arguments.rb +1 -2
  167. data/lib/rubocop/cop/style/symbol_proc.rb +2 -0
  168. data/lib/rubocop/cop/style/top_level_method_definition.rb +1 -0
  169. data/lib/rubocop/cop/style/trailing_comma_in_array_literal.rb +47 -6
  170. data/lib/rubocop/cop/style/trailing_comma_in_hash_literal.rb +48 -6
  171. data/lib/rubocop/cop/style/trivial_accessors.rb +1 -1
  172. data/lib/rubocop/cop/util.rb +2 -2
  173. data/lib/rubocop/cop/utils/format_string.rb +10 -5
  174. data/lib/rubocop/cop/variable_force/scope.rb +1 -1
  175. data/lib/rubocop/cop/variable_force/variable.rb +2 -7
  176. data/lib/rubocop/cop/variable_force.rb +1 -1
  177. data/lib/rubocop/cops_documentation_generator.rb +12 -1
  178. data/lib/rubocop/directive_comment.rb +36 -3
  179. data/lib/rubocop/ext/regexp_node.rb +0 -1
  180. data/lib/rubocop/lsp/runtime.rb +6 -4
  181. data/lib/rubocop/lsp/server.rb +0 -2
  182. data/lib/rubocop/lsp/stdin_runner.rb +3 -1
  183. data/lib/rubocop/magic_comment.rb +8 -0
  184. data/lib/rubocop/options.rb +26 -11
  185. data/lib/rubocop/path_util.rb +4 -0
  186. data/lib/rubocop/plugin/configuration_integrator.rb +143 -0
  187. data/lib/rubocop/plugin/load_error.rb +26 -0
  188. data/lib/rubocop/plugin/loader.rb +100 -0
  189. data/lib/rubocop/plugin/not_supported_error.rb +29 -0
  190. data/lib/rubocop/plugin.rb +46 -0
  191. data/lib/rubocop/rake_task.rb +4 -1
  192. data/lib/rubocop/rspec/cop_helper.rb +13 -1
  193. data/lib/rubocop/rspec/shared_contexts.rb +35 -0
  194. data/lib/rubocop/rspec/support.rb +3 -0
  195. data/lib/rubocop/runner.rb +5 -1
  196. data/lib/rubocop/server/cache.rb +47 -11
  197. data/lib/rubocop/server/cli.rb +2 -2
  198. data/lib/rubocop/target_finder.rb +1 -1
  199. data/lib/rubocop/target_ruby.rb +1 -1
  200. data/lib/rubocop/version.rb +30 -8
  201. data/lib/rubocop.rb +10 -1
  202. data/lib/ruby_lsp/rubocop/addon.rb +7 -10
  203. data/lib/ruby_lsp/rubocop/{wraps_built_in_lsp_runtime.rb → runtime_adapter.rb} +25 -10
  204. metadata +43 -12
  205. data/lib/rubocop/cop/utils/regexp_ranges.rb +0 -113
@@ -2,8 +2,10 @@
2
2
 
3
3
  require 'digest'
4
4
  require 'pathname'
5
+ require 'yaml'
5
6
  require_relative '../cache_config'
6
7
  require_relative '../config_finder'
8
+ require_relative '../path_util'
7
9
 
8
10
  #
9
11
  # This code is based on https://github.com/fohte/rubocop-daemon.
@@ -50,9 +52,12 @@ module RuboCop
50
52
  end.find(&:exist?)
51
53
  version_data = lockfile_path&.read || RuboCop::Version::STRING
52
54
  config_data = Pathname(ConfigFinder.find_config_path(Dir.pwd)).read
53
- todo_data = (rubocop_todo = Pathname('.rubocop_todo.yml')).exist? ? rubocop_todo.read : ''
55
+ yaml = load_erb_templated_yaml(config_data)
54
56
 
55
- Digest::SHA1.hexdigest(version_data + config_data + todo_data)
57
+ inherit_from_data = inherit_from_data(yaml)
58
+ require_data = require_data(yaml)
59
+
60
+ Digest::SHA1.hexdigest(version_data + config_data + inherit_from_data + require_data)
56
61
  end
57
62
  # rubocop:enable Metrics/AbcSize
58
63
 
@@ -72,7 +77,6 @@ module RuboCop
72
77
  File.expand_path(File.join(cache_root_dir, 'server'))
73
78
  end
74
79
 
75
- # rubocop:disable Metrics/MethodLength
76
80
  def cache_root_dir_from_config
77
81
  CacheConfig.root_dir do
78
82
  # `RuboCop::ConfigStore` has heavy dependencies, this is a lightweight implementation
@@ -83,13 +87,7 @@ module RuboCop
83
87
  # Returns early if `CacheRootDirectory` is not used before requiring `erb` or `yaml`.
84
88
  next unless file_contents.include?('CacheRootDirectory')
85
89
 
86
- require 'erb'
87
- yaml_code = ERB.new(file_contents).result
88
-
89
- require 'yaml'
90
- config_yaml = YAML.safe_load(
91
- yaml_code, permitted_classes: [Regexp, Symbol], aliases: true
92
- )
90
+ config_yaml = load_erb_templated_yaml(file_contents)
93
91
 
94
92
  # For compatibility with Ruby 3.0 or lower.
95
93
  if Gem::Version.new(Psych::VERSION) < Gem::Version.new('4.0.0')
@@ -99,7 +97,6 @@ module RuboCop
99
97
  config_yaml&.dig('AllCops', 'CacheRootDirectory')
100
98
  end
101
99
  end
102
- # rubocop:enable Metrics/MethodLength
103
100
 
104
101
  def port_path
105
102
  dir.join('port')
@@ -164,6 +161,45 @@ module RuboCop
164
161
  def write_version_file(version)
165
162
  version_path.write(version)
166
163
  end
164
+
165
+ def inherit_from_data(yaml)
166
+ return '' unless (inherit_from_paths = yaml['inherit_from'])
167
+
168
+ Array(inherit_from_paths).map do |path|
169
+ next if PathUtil.remote_file?(path)
170
+
171
+ path = Pathname(path)
172
+
173
+ path.exist? ? path.read : ''
174
+ end.join
175
+ end
176
+
177
+ def require_data(yaml)
178
+ return '' unless (require_paths = yaml['require'])
179
+
180
+ Array(require_paths).map do |path|
181
+ # NOTE: This targets only relative or absolute path specifications.
182
+ # For example, specifications like `require: rubocop-performance`,
183
+ # which can be loaded from `$LOAD_PATH`, are ignored.
184
+ next unless path.start_with?('.', '/')
185
+
186
+ # NOTE: `.so` files are not typically specified, so only `.rb` files are targeted.
187
+ path = "#{path}.rb" unless path.end_with?('.rb')
188
+ path = Pathname(path)
189
+
190
+ path.exist? ? path.read : ''
191
+ end.join
192
+ end
193
+
194
+ private
195
+
196
+ def load_erb_templated_yaml(content)
197
+ require 'erb'
198
+ yaml_code = ERB.new(content).result
199
+
200
+ require 'yaml'
201
+ YAML.safe_load(yaml_code, permitted_classes: [Regexp, Symbol], aliases: true)
202
+ end
167
203
  end
168
204
  end
169
205
  end
@@ -86,7 +86,7 @@ module RuboCop
86
86
  end
87
87
  # rubocop:enable Metrics/AbcSize, Metrics/CyclomaticComplexity, Metrics/MethodLength
88
88
 
89
- # rubocop:disable Metrics/CyclomaticComplexity, Metrics/MethodLength:
89
+ # rubocop:disable Metrics/CyclomaticComplexity, Metrics/MethodLength
90
90
  def run_command(server_command, detach:)
91
91
  case server_command
92
92
  when '--server'
@@ -107,7 +107,7 @@ module RuboCop
107
107
  Server::ClientCommand::Status.new.run
108
108
  end
109
109
  end
110
- # rubocop:enable Metrics/CyclomaticComplexity, Metrics/MethodLength:
110
+ # rubocop:enable Metrics/CyclomaticComplexity, Metrics/MethodLength
111
111
 
112
112
  def fetch_cache_root_path_from(arguments)
113
113
  cache_root = arguments.detect { |argument| argument.start_with?('--cache-root') }
@@ -175,7 +175,7 @@ module RuboCop
175
175
  end
176
176
 
177
177
  def ruby_executable?(file)
178
- return false unless File.extname(file).empty? && File.exist?(file)
178
+ return false if !File.extname(file).empty? || !File.exist?(file) || File.empty?(file)
179
179
 
180
180
  first_line = File.open(file, &:readline)
181
181
  /#!.*(#{ruby_interpreters(file).join('|')})/.match?(first_line)
@@ -4,7 +4,7 @@ module RuboCop
4
4
  # The kind of Ruby that code inspected by RuboCop is written in.
5
5
  # @api private
6
6
  class TargetRuby
7
- KNOWN_RUBIES = [2.0, 2.1, 2.2, 2.3, 2.4, 2.5, 2.6, 2.7, 3.0, 3.1, 3.2, 3.3, 3.4].freeze
7
+ KNOWN_RUBIES = [2.0, 2.1, 2.2, 2.3, 2.4, 2.5, 2.6, 2.7, 3.0, 3.1, 3.2, 3.3, 3.4, 3.5].freeze
8
8
  DEFAULT_VERSION = 2.7
9
9
 
10
10
  OBSOLETE_RUBIES = {
@@ -3,13 +3,15 @@
3
3
  module RuboCop
4
4
  # This module holds the RuboCop version information.
5
5
  module Version
6
- STRING = '1.71.2'
6
+ STRING = '1.75.2'
7
7
 
8
8
  MSG = '%<version>s (using %<parser_version>s, ' \
9
9
  'rubocop-ast %<rubocop_ast_version>s, ' \
10
10
  'analyzing as Ruby %<target_ruby_version>s, ' \
11
11
  'running on %<ruby_engine>s %<ruby_version>s)%<server_mode>s [%<ruby_platform>s]'
12
12
 
13
+ MINIMUM_PARSABLE_PRISM_VERSION = 3.3
14
+
13
15
  CANONICAL_FEATURE_NAMES = {
14
16
  'Rspec' => 'RSpec', 'Graphql' => 'GraphQL', 'Md' => 'Markdown', 'Factory_bot' => 'FactoryBot',
15
17
  'Thread_safety' => 'ThreadSafety', 'Rspec_rails' => 'RSpecRails'
@@ -20,11 +22,14 @@ module RuboCop
20
22
 
21
23
  # NOTE: Marked as private but used by gems like standard.
22
24
  # @api private
25
+ # rubocop:disable Metrics/MethodLength
23
26
  def self.version(debug: false, env: nil)
24
27
  if debug
25
- verbose_version = format(MSG, version: STRING, parser_version: parser_version,
28
+ target_ruby_version = target_ruby_version(env)
29
+ verbose_version = format(MSG, version: STRING,
30
+ parser_version: parser_version(target_ruby_version),
26
31
  rubocop_ast_version: RuboCop::AST::Version::STRING,
27
- target_ruby_version: target_ruby_version(env),
32
+ target_ruby_version: target_ruby_version,
28
33
  ruby_engine: RUBY_ENGINE, ruby_version: RUBY_VERSION,
29
34
  server_mode: server_mode,
30
35
  ruby_platform: RUBY_PLATFORM)
@@ -41,6 +46,7 @@ module RuboCop
41
46
  STRING
42
47
  end
43
48
  end
49
+ # rubocop:enable Metrics/MethodLength
44
50
 
45
51
  # @api private
46
52
  def self.verbose(env: nil)
@@ -48,24 +54,37 @@ module RuboCop
48
54
  end
49
55
 
50
56
  # @api private
51
- def self.parser_version
57
+ def self.parser_version(target_ruby_version)
52
58
  config_path = ConfigFinder.find_config_path(Dir.pwd)
53
59
  yaml = Util.silence_warnings do
54
60
  ConfigLoader.load_yaml_configuration(config_path)
55
61
  end
62
+ parser_engine = yaml.dig('AllCops', 'ParserEngine')
63
+ parser_engine_text = ", #{parser_engine}" if parser_engine
56
64
 
57
- if yaml.dig('AllCops', 'ParserEngine') == 'parser_prism'
58
- require 'prism'
59
- "Prism #{Prism::VERSION}"
65
+ if target_ruby_version >= MINIMUM_PARSABLE_PRISM_VERSION
66
+ "Parser #{Parser::VERSION}, Prism #{Prism::VERSION}#{parser_engine_text}"
60
67
  else
61
68
  "Parser #{Parser::VERSION}"
62
69
  end
63
70
  end
64
71
 
65
72
  # @api private
73
+ # rubocop:disable Metrics/AbcSize, Metrics/CyclomaticComplexity, Metrics/MethodLength, Metrics/PerceivedComplexity
66
74
  def self.extension_versions(env)
75
+ plugins = config_for_pwd(env).loaded_plugins
76
+ plugin_versions = plugins.filter_map do |plugin|
77
+ next if Plugin::BUILTIN_INTERNAL_PLUGINS.key?(plugin.about.name)
78
+ next unless (plugin_name = plugin.about.name)
79
+
80
+ " - #{plugin_name} #{plugin.about.version}"
81
+ end
82
+
83
+ # TODO: It needs to be maintained for a while to ensure compatibility with extensions that
84
+ # don't support plugins. It should be removed in future once the old style becomes obsolete.
67
85
  features = config_for_pwd(env).loaded_features.sort
68
- features.filter_map do |loaded_feature|
86
+ features -= plugins.map { |plugin| plugin.about.name }
87
+ feature_versions = features.filter_map do |loaded_feature|
69
88
  next unless (match = loaded_feature.match(/rubocop-(?<feature>.*)/))
70
89
 
71
90
  # Get the expected name of the folder containing the extension code.
@@ -84,7 +103,10 @@ module RuboCop
84
103
 
85
104
  " - #{loaded_feature} #{feature_version}"
86
105
  end
106
+
107
+ plugin_versions + feature_versions
87
108
  end
109
+ # rubocop:enable Metrics/AbcSize, Metrics/CyclomaticComplexity, Metrics/MethodLength, Metrics/PerceivedComplexity
88
110
 
89
111
  # @api private
90
112
  def self.target_ruby_version(env)
data/lib/rubocop.rb CHANGED
@@ -75,6 +75,8 @@ require_relative 'rubocop/cop/mixin/allowed_identifiers'
75
75
  require_relative 'rubocop/cop/mixin/allowed_methods'
76
76
  require_relative 'rubocop/cop/mixin/allowed_pattern'
77
77
  require_relative 'rubocop/cop/mixin/allowed_receivers'
78
+ require_relative 'rubocop/cop/mixin/forbidden_identifiers'
79
+ require_relative 'rubocop/cop/mixin/forbidden_pattern'
78
80
  require_relative 'rubocop/cop/mixin/auto_corrector' # rubocop:todo Naming/InclusiveLanguage
79
81
  require_relative 'rubocop/cop/mixin/check_assignment'
80
82
  require_relative 'rubocop/cop/mixin/check_line_breakable'
@@ -148,7 +150,6 @@ require_relative 'rubocop/cop/mixin/comments_help' # relies on visibility_help
148
150
  require_relative 'rubocop/cop/mixin/def_node' # relies on visibility_help
149
151
 
150
152
  require_relative 'rubocop/cop/utils/format_string'
151
- require_relative 'rubocop/cop/utils/regexp_ranges'
152
153
 
153
154
  require_relative 'rubocop/cop/migration/department_name'
154
155
 
@@ -304,6 +305,7 @@ require_relative 'rubocop/cop/lint/constant_definition_in_block'
304
305
  require_relative 'rubocop/cop/lint/constant_overwritten_in_rescue'
305
306
  require_relative 'rubocop/cop/lint/constant_reassignment'
306
307
  require_relative 'rubocop/cop/lint/constant_resolution'
308
+ require_relative 'rubocop/cop/lint/cop_directive_syntax'
307
309
  require_relative 'rubocop/cop/lint/debugger'
308
310
  require_relative 'rubocop/cop/lint/deprecated_class_methods'
309
311
  require_relative 'rubocop/cop/lint/deprecated_constants'
@@ -384,6 +386,7 @@ require_relative 'rubocop/cop/lint/redundant_require_statement'
384
386
  require_relative 'rubocop/cop/lint/redundant_safe_navigation'
385
387
  require_relative 'rubocop/cop/lint/redundant_splat_expansion'
386
388
  require_relative 'rubocop/cop/lint/redundant_string_coercion'
389
+ require_relative 'rubocop/cop/lint/redundant_type_conversion'
387
390
  require_relative 'rubocop/cop/lint/redundant_with_index'
388
391
  require_relative 'rubocop/cop/lint/redundant_with_object'
389
392
  require_relative 'rubocop/cop/lint/refinement_import_methods'
@@ -405,6 +408,7 @@ require_relative 'rubocop/cop/lint/shadowed_exception'
405
408
  require_relative 'rubocop/cop/lint/shadowing_outer_local_variable'
406
409
  require_relative 'rubocop/cop/lint/struct_new_override'
407
410
  require_relative 'rubocop/cop/lint/suppressed_exception'
411
+ require_relative 'rubocop/cop/lint/suppressed_exception_in_number_conversion'
408
412
  require_relative 'rubocop/cop/lint/symbol_conversion'
409
413
  require_relative 'rubocop/cop/lint/syntax'
410
414
  require_relative 'rubocop/cop/lint/to_enum_arguments'
@@ -425,6 +429,7 @@ require_relative 'rubocop/cop/lint/uri_escape_unescape'
425
429
  require_relative 'rubocop/cop/lint/uri_regexp'
426
430
  require_relative 'rubocop/cop/lint/useless_access_modifier'
427
431
  require_relative 'rubocop/cop/lint/useless_assignment'
432
+ require_relative 'rubocop/cop/lint/useless_constant_scoping'
428
433
  require_relative 'rubocop/cop/lint/useless_defined'
429
434
  require_relative 'rubocop/cop/lint/useless_else_without_rescue'
430
435
  require_relative 'rubocop/cop/lint/useless_method_definition'
@@ -506,6 +511,7 @@ require_relative 'rubocop/cop/style/combinable_loops'
506
511
  require_relative 'rubocop/cop/style/command_literal'
507
512
  require_relative 'rubocop/cop/style/comment_annotation'
508
513
  require_relative 'rubocop/cop/style/commented_keyword'
514
+ require_relative 'rubocop/cop/style/comparable_between'
509
515
  require_relative 'rubocop/cop/style/comparable_clamp'
510
516
  require_relative 'rubocop/cop/style/concat_array_literals'
511
517
  require_relative 'rubocop/cop/style/conditional_assignment'
@@ -560,6 +566,7 @@ require_relative 'rubocop/cop/style/hash_as_last_array_item'
560
566
  require_relative 'rubocop/cop/style/hash_conversion'
561
567
  require_relative 'rubocop/cop/style/hash_each_methods'
562
568
  require_relative 'rubocop/cop/style/hash_except'
569
+ require_relative 'rubocop/cop/style/hash_fetch_chain'
563
570
  require_relative 'rubocop/cop/style/hash_like_case'
564
571
  require_relative 'rubocop/cop/style/hash_slice'
565
572
  require_relative 'rubocop/cop/style/hash_syntax'
@@ -579,6 +586,7 @@ require_relative 'rubocop/cop/style/inline_comment'
579
586
  require_relative 'rubocop/cop/style/invertible_unless_condition'
580
587
  require_relative 'rubocop/cop/style/ip_addresses'
581
588
  require_relative 'rubocop/cop/style/it_assignment'
589
+ require_relative 'rubocop/cop/style/it_block_parameter'
582
590
  require_relative 'rubocop/cop/style/keyword_arguments_merging'
583
591
  require_relative 'rubocop/cop/style/keyword_parameters_order'
584
592
  require_relative 'rubocop/cop/style/lambda'
@@ -604,6 +612,7 @@ require_relative 'rubocop/cop/style/redundant_each'
604
612
  require_relative 'rubocop/cop/style/redundant_fetch_block'
605
613
  require_relative 'rubocop/cop/style/redundant_file_extension_in_require'
606
614
  require_relative 'rubocop/cop/style/redundant_filter_chain'
615
+ require_relative 'rubocop/cop/style/redundant_format'
607
616
  require_relative 'rubocop/cop/style/redundant_heredoc_delimiter_quotes'
608
617
  require_relative 'rubocop/cop/style/redundant_initialize'
609
618
  require_relative 'rubocop/cop/style/redundant_interpolation_unfreeze'
@@ -2,14 +2,14 @@
2
2
 
3
3
  require_relative '../../rubocop'
4
4
  require_relative '../../rubocop/lsp/logger'
5
- require_relative 'wraps_built_in_lsp_runtime'
5
+ require_relative 'runtime_adapter'
6
6
 
7
7
  module RubyLsp
8
8
  module RuboCop
9
9
  # A Ruby LSP add-on for RuboCop.
10
10
  class Addon < RubyLsp::Addon
11
11
  def initializer
12
- @wraps_built_in_lsp_runtime = nil
12
+ @runtime_adapter = nil
13
13
  end
14
14
 
15
15
  def name
@@ -21,11 +21,8 @@ module RubyLsp
21
21
  "Activating RuboCop LSP addon #{::RuboCop::Version::STRING}.", prefix: '[RuboCop]'
22
22
  )
23
23
 
24
- ::RuboCop::LSP.enable
25
- @wraps_built_in_lsp_runtime = WrapsBuiltinLspRuntime.new
26
-
27
- global_state.register_formatter('rubocop', @wraps_built_in_lsp_runtime)
28
-
24
+ @runtime_adapter = RuntimeAdapter.new
25
+ global_state.register_formatter('rubocop', @runtime_adapter)
29
26
  register_additional_file_watchers(global_state, message_queue)
30
27
 
31
28
  ::RuboCop::LSP::Logger.log(
@@ -34,7 +31,7 @@ module RubyLsp
34
31
  end
35
32
 
36
33
  def deactivate
37
- @wraps_built_in_lsp_runtime = nil
34
+ @runtime_adapter = nil
38
35
  end
39
36
 
40
37
  # rubocop:disable Layout/LineLength, Metrics/MethodLength
@@ -67,9 +64,9 @@ module RubyLsp
67
64
  def workspace_did_change_watched_files(changes)
68
65
  return unless changes.any? { |change| change[:uri].end_with?('.rubocop.yml') }
69
66
 
70
- @wraps_built_in_lsp_runtime.init!
67
+ @runtime_adapter = RuntimeAdapter.new
71
68
 
72
- ::RuboCop::LSP::Logger(<<~MESSAGE, prefix: '[RuboCop]')
69
+ ::RuboCop::LSP::Logger.log(<<~MESSAGE, prefix: '[RuboCop]')
73
70
  Re-initialized RuboCop LSP addon #{::RuboCop::Version::STRING} due to .rubocop.yml file change.
74
71
  MESSAGE
75
72
  end
@@ -4,26 +4,33 @@ require_relative '../../rubocop/lsp/runtime'
4
4
 
5
5
  module RubyLsp
6
6
  module RuboCop
7
- # Wrap RuboCop's built-in runtime for Ruby LSP's add-on.
8
- class WrapsBuiltinLspRuntime
7
+ # Provides an adapter to bridge RuboCop's built-in LSP runtime with Ruby LSP's add-on.
8
+ # @api private
9
+ class RuntimeAdapter
9
10
  include RubyLsp::Requests::Support::Formatter
10
11
 
11
12
  def initialize
12
- init!
13
- end
14
-
15
- def init!
16
- config = ::RuboCop::ConfigStore.new
13
+ config_store = ::RuboCop::ConfigStore.new
17
14
 
18
- @runtime = ::RuboCop::LSP::Runtime.new(config)
15
+ @runtime = ::RuboCop::LSP::Runtime.new(config_store)
19
16
  end
20
17
 
21
18
  def run_diagnostic(uri, document)
22
- @runtime.offenses(uri_to_path(uri), document.source, document.encoding)
19
+ @runtime.offenses(
20
+ uri_to_path(uri),
21
+ document.source,
22
+ document.encoding,
23
+ prism_result: prism_result(document)
24
+ )
23
25
  end
24
26
 
25
27
  def run_formatting(uri, document)
26
- @runtime.format(uri_to_path(uri), document.source, command: 'rubocop.formatAutocorrects')
28
+ @runtime.format(
29
+ uri_to_path(uri),
30
+ document.source,
31
+ command: 'rubocop.formatAutocorrects',
32
+ prism_result: prism_result(document)
33
+ )
27
34
  end
28
35
 
29
36
  def run_range_formatting(_uri, _partial_source, _base_indentation)
@@ -45,6 +52,14 @@ module RubyLsp
45
52
  uri.to_s.delete_prefix('file://')
46
53
  end
47
54
  end
55
+
56
+ def prism_result(document)
57
+ prism_result = document.parse_result
58
+
59
+ # NOTE: `prism_result` must be `Prism::ParseLexResult` compatible object.
60
+ # This is for compatibility parsed result unsupported.
61
+ prism_result.is_a?(Prism::ParseLexResult) ? prism_result : nil
62
+ end
48
63
  end
49
64
  end
50
65
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rubocop
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.71.2
4
+ version: 1.75.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Bozhidar Batsov
@@ -9,7 +9,7 @@ authors:
9
9
  - Yuji Nakayama
10
10
  bindir: exe
11
11
  cert_chain: []
12
- date: 2025-02-04 00:00:00.000000000 Z
12
+ date: 2025-04-03 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: json
@@ -29,16 +29,30 @@ dependencies:
29
29
  name: language_server-protocol
30
30
  requirement: !ruby/object:Gem::Requirement
31
31
  requirements:
32
- - - ">="
32
+ - - "~>"
33
33
  - !ruby/object:Gem::Version
34
- version: 3.17.0
34
+ version: 3.17.0.2
35
35
  type: :runtime
36
36
  prerelease: false
37
37
  version_requirements: !ruby/object:Gem::Requirement
38
38
  requirements:
39
- - - ">="
39
+ - - "~>"
40
+ - !ruby/object:Gem::Version
41
+ version: 3.17.0.2
42
+ - !ruby/object:Gem::Dependency
43
+ name: lint_roller
44
+ requirement: !ruby/object:Gem::Requirement
45
+ requirements:
46
+ - - "~>"
47
+ - !ruby/object:Gem::Version
48
+ version: 1.1.0
49
+ type: :runtime
50
+ prerelease: false
51
+ version_requirements: !ruby/object:Gem::Requirement
52
+ requirements:
53
+ - - "~>"
40
54
  - !ruby/object:Gem::Version
41
- version: 3.17.0
55
+ version: 1.1.0
42
56
  - !ruby/object:Gem::Dependency
43
57
  name: parallel
44
58
  requirement: !ruby/object:Gem::Requirement
@@ -113,7 +127,7 @@ dependencies:
113
127
  requirements:
114
128
  - - ">="
115
129
  - !ruby/object:Gem::Version
116
- version: 1.38.0
130
+ version: 1.44.0
117
131
  - - "<"
118
132
  - !ruby/object:Gem::Version
119
133
  version: '2.0'
@@ -123,7 +137,7 @@ dependencies:
123
137
  requirements:
124
138
  - - ">="
125
139
  - !ruby/object:Gem::Version
126
- version: 1.38.0
140
+ version: 1.44.0
127
141
  - - "<"
128
142
  - !ruby/object:Gem::Version
129
143
  version: '2.0'
@@ -272,6 +286,7 @@ files:
272
286
  - lib/rubocop/cop/internal_affairs/example_heredoc_delimiter.rb
273
287
  - lib/rubocop/cop/internal_affairs/inherit_deprecated_cop_class.rb
274
288
  - lib/rubocop/cop/internal_affairs/lambda_or_proc.rb
289
+ - lib/rubocop/cop/internal_affairs/location_exists.rb
275
290
  - lib/rubocop/cop/internal_affairs/location_expression.rb
276
291
  - lib/rubocop/cop/internal_affairs/location_line_equality_comparison.rb
277
292
  - lib/rubocop/cop/internal_affairs/method_name_end_with.rb
@@ -282,12 +297,14 @@ files:
282
297
  - lib/rubocop/cop/internal_affairs/node_pattern_groups.rb
283
298
  - lib/rubocop/cop/internal_affairs/node_pattern_groups/ast_processor.rb
284
299
  - lib/rubocop/cop/internal_affairs/node_pattern_groups/ast_walker.rb
300
+ - lib/rubocop/cop/internal_affairs/node_type_group.rb
285
301
  - lib/rubocop/cop/internal_affairs/node_type_multiple_predicates.rb
286
302
  - lib/rubocop/cop/internal_affairs/node_type_predicate.rb
287
303
  - lib/rubocop/cop/internal_affairs/numblock_handler.rb
288
304
  - lib/rubocop/cop/internal_affairs/offense_location_keyword.rb
289
305
  - lib/rubocop/cop/internal_affairs/on_send_without_on_csend.rb
290
306
  - lib/rubocop/cop/internal_affairs/operator_keyword.rb
307
+ - lib/rubocop/cop/internal_affairs/plugin.rb
291
308
  - lib/rubocop/cop/internal_affairs/processed_source_buffer_name.rb
292
309
  - lib/rubocop/cop/internal_affairs/redundant_context_config_parameter.rb
293
310
  - lib/rubocop/cop/internal_affairs/redundant_described_class_as_subject.rb
@@ -419,6 +436,7 @@ files:
419
436
  - lib/rubocop/cop/lint/constant_overwritten_in_rescue.rb
420
437
  - lib/rubocop/cop/lint/constant_reassignment.rb
421
438
  - lib/rubocop/cop/lint/constant_resolution.rb
439
+ - lib/rubocop/cop/lint/cop_directive_syntax.rb
422
440
  - lib/rubocop/cop/lint/debugger.rb
423
441
  - lib/rubocop/cop/lint/deprecated_class_methods.rb
424
442
  - lib/rubocop/cop/lint/deprecated_constants.rb
@@ -498,6 +516,7 @@ files:
498
516
  - lib/rubocop/cop/lint/redundant_safe_navigation.rb
499
517
  - lib/rubocop/cop/lint/redundant_splat_expansion.rb
500
518
  - lib/rubocop/cop/lint/redundant_string_coercion.rb
519
+ - lib/rubocop/cop/lint/redundant_type_conversion.rb
501
520
  - lib/rubocop/cop/lint/redundant_with_index.rb
502
521
  - lib/rubocop/cop/lint/redundant_with_object.rb
503
522
  - lib/rubocop/cop/lint/refinement_import_methods.rb
@@ -520,6 +539,7 @@ files:
520
539
  - lib/rubocop/cop/lint/shared_mutable_default.rb
521
540
  - lib/rubocop/cop/lint/struct_new_override.rb
522
541
  - lib/rubocop/cop/lint/suppressed_exception.rb
542
+ - lib/rubocop/cop/lint/suppressed_exception_in_number_conversion.rb
523
543
  - lib/rubocop/cop/lint/symbol_conversion.rb
524
544
  - lib/rubocop/cop/lint/syntax.rb
525
545
  - lib/rubocop/cop/lint/to_enum_arguments.rb
@@ -540,6 +560,7 @@ files:
540
560
  - lib/rubocop/cop/lint/uri_regexp.rb
541
561
  - lib/rubocop/cop/lint/useless_access_modifier.rb
542
562
  - lib/rubocop/cop/lint/useless_assignment.rb
563
+ - lib/rubocop/cop/lint/useless_constant_scoping.rb
543
564
  - lib/rubocop/cop/lint/useless_defined.rb
544
565
  - lib/rubocop/cop/lint/useless_else_without_rescue.rb
545
566
  - lib/rubocop/cop/lint/useless_method_definition.rb
@@ -595,6 +616,8 @@ files:
595
616
  - lib/rubocop/cop/mixin/endless_method_rewriter.rb
596
617
  - lib/rubocop/cop/mixin/enforce_superclass.rb
597
618
  - lib/rubocop/cop/mixin/first_element_line_break.rb
619
+ - lib/rubocop/cop/mixin/forbidden_identifiers.rb
620
+ - lib/rubocop/cop/mixin/forbidden_pattern.rb
598
621
  - lib/rubocop/cop/mixin/frozen_string_literal.rb
599
622
  - lib/rubocop/cop/mixin/gem_declaration.rb
600
623
  - lib/rubocop/cop/mixin/gemspec_help.rb
@@ -708,6 +731,7 @@ files:
708
731
  - lib/rubocop/cop/style/command_literal.rb
709
732
  - lib/rubocop/cop/style/comment_annotation.rb
710
733
  - lib/rubocop/cop/style/commented_keyword.rb
734
+ - lib/rubocop/cop/style/comparable_between.rb
711
735
  - lib/rubocop/cop/style/comparable_clamp.rb
712
736
  - lib/rubocop/cop/style/concat_array_literals.rb
713
737
  - lib/rubocop/cop/style/conditional_assignment.rb
@@ -762,6 +786,7 @@ files:
762
786
  - lib/rubocop/cop/style/hash_conversion.rb
763
787
  - lib/rubocop/cop/style/hash_each_methods.rb
764
788
  - lib/rubocop/cop/style/hash_except.rb
789
+ - lib/rubocop/cop/style/hash_fetch_chain.rb
765
790
  - lib/rubocop/cop/style/hash_like_case.rb
766
791
  - lib/rubocop/cop/style/hash_slice.rb
767
792
  - lib/rubocop/cop/style/hash_syntax.rb
@@ -781,6 +806,7 @@ files:
781
806
  - lib/rubocop/cop/style/invertible_unless_condition.rb
782
807
  - lib/rubocop/cop/style/ip_addresses.rb
783
808
  - lib/rubocop/cop/style/it_assignment.rb
809
+ - lib/rubocop/cop/style/it_block_parameter.rb
784
810
  - lib/rubocop/cop/style/keyword_arguments_merging.rb
785
811
  - lib/rubocop/cop/style/keyword_parameters_order.rb
786
812
  - lib/rubocop/cop/style/lambda.rb
@@ -865,6 +891,7 @@ files:
865
891
  - lib/rubocop/cop/style/redundant_fetch_block.rb
866
892
  - lib/rubocop/cop/style/redundant_file_extension_in_require.rb
867
893
  - lib/rubocop/cop/style/redundant_filter_chain.rb
894
+ - lib/rubocop/cop/style/redundant_format.rb
868
895
  - lib/rubocop/cop/style/redundant_freeze.rb
869
896
  - lib/rubocop/cop/style/redundant_heredoc_delimiter_quotes.rb
870
897
  - lib/rubocop/cop/style/redundant_initialize.rb
@@ -950,7 +977,6 @@ files:
950
977
  - lib/rubocop/cop/team.rb
951
978
  - lib/rubocop/cop/util.rb
952
979
  - lib/rubocop/cop/utils/format_string.rb
953
- - lib/rubocop/cop/utils/regexp_ranges.rb
954
980
  - lib/rubocop/cop/variable_force.rb
955
981
  - lib/rubocop/cop/variable_force/assignment.rb
956
982
  - lib/rubocop/cop/variable_force/branch.rb
@@ -1008,6 +1034,11 @@ files:
1008
1034
  - lib/rubocop/options.rb
1009
1035
  - lib/rubocop/path_util.rb
1010
1036
  - lib/rubocop/platform.rb
1037
+ - lib/rubocop/plugin.rb
1038
+ - lib/rubocop/plugin/configuration_integrator.rb
1039
+ - lib/rubocop/plugin/load_error.rb
1040
+ - lib/rubocop/plugin/loader.rb
1041
+ - lib/rubocop/plugin/not_supported_error.rb
1011
1042
  - lib/rubocop/rake_task.rb
1012
1043
  - lib/rubocop/remote_config.rb
1013
1044
  - lib/rubocop/result_cache.rb
@@ -1043,15 +1074,15 @@ files:
1043
1074
  - lib/rubocop/warning.rb
1044
1075
  - lib/rubocop/yaml_duplication_checker.rb
1045
1076
  - lib/ruby_lsp/rubocop/addon.rb
1046
- - lib/ruby_lsp/rubocop/wraps_built_in_lsp_runtime.rb
1077
+ - lib/ruby_lsp/rubocop/runtime_adapter.rb
1047
1078
  homepage: https://github.com/rubocop/rubocop
1048
1079
  licenses:
1049
1080
  - MIT
1050
1081
  metadata:
1051
1082
  homepage_uri: https://rubocop.org/
1052
- changelog_uri: https://github.com/rubocop/rubocop/releases/tag/v1.71.2
1083
+ changelog_uri: https://github.com/rubocop/rubocop/releases/tag/v1.75.2
1053
1084
  source_code_uri: https://github.com/rubocop/rubocop/
1054
- documentation_uri: https://docs.rubocop.org/rubocop/1.71/
1085
+ documentation_uri: https://docs.rubocop.org/rubocop/1.75/
1055
1086
  bug_tracker_uri: https://github.com/rubocop/rubocop/issues
1056
1087
  rubygems_mfa_required: 'true'
1057
1088
  rdoc_options: []