rubocop 1.84.2 → 1.87.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (256) hide show
  1. checksums.yaml +4 -4
  2. data/config/default.yml +106 -16
  3. data/config/obsoletion.yml +5 -0
  4. data/lib/rubocop/cache_config.rb +1 -1
  5. data/lib/rubocop/cli/command/auto_generate_config.rb +28 -2
  6. data/lib/rubocop/cli/command/list_enabled_cops_for.rb +40 -0
  7. data/lib/rubocop/cli/command/mcp.rb +19 -0
  8. data/lib/rubocop/cli/command/show_cops.rb +2 -2
  9. data/lib/rubocop/cli/command/show_docs_url.rb +4 -8
  10. data/lib/rubocop/cli/command/suggest_extensions.rb +1 -1
  11. data/lib/rubocop/cli.rb +9 -7
  12. data/lib/rubocop/comment_config.rb +12 -15
  13. data/lib/rubocop/config.rb +14 -10
  14. data/lib/rubocop/config_finder.rb +1 -1
  15. data/lib/rubocop/config_loader.rb +17 -2
  16. data/lib/rubocop/config_loader_resolver.rb +13 -4
  17. data/lib/rubocop/config_obsoletion/extracted_cop.rb +4 -2
  18. data/lib/rubocop/config_store.rb +2 -2
  19. data/lib/rubocop/config_validator.rb +1 -1
  20. data/lib/rubocop/cop/autocorrect_logic.rb +2 -1
  21. data/lib/rubocop/cop/base.rb +8 -2
  22. data/lib/rubocop/cop/correctors/condition_corrector.rb +1 -1
  23. data/lib/rubocop/cop/correctors/multiline_literal_brace_corrector.rb +1 -5
  24. data/lib/rubocop/cop/correctors/parentheses_corrector.rb +33 -2
  25. data/lib/rubocop/cop/correctors/percent_literal_corrector.rb +2 -2
  26. data/lib/rubocop/cop/correctors.rb +28 -0
  27. data/lib/rubocop/cop/documentation.rb +2 -3
  28. data/lib/rubocop/cop/exclude_limit.rb +31 -5
  29. data/lib/rubocop/cop/gemspec/duplicated_assignment.rb +2 -2
  30. data/lib/rubocop/cop/gemspec/require_mfa.rb +5 -5
  31. data/lib/rubocop/cop/gemspec/ruby_version_globals_usage.rb +3 -3
  32. data/lib/rubocop/cop/internal_affairs/itblock_handler.rb +69 -0
  33. data/lib/rubocop/cop/internal_affairs/location_line_equality_comparison.rb +1 -0
  34. data/lib/rubocop/cop/internal_affairs.rb +1 -0
  35. data/lib/rubocop/cop/layout/argument_alignment.rb +2 -2
  36. data/lib/rubocop/cop/layout/array_alignment.rb +1 -1
  37. data/lib/rubocop/cop/layout/begin_end_alignment.rb +1 -1
  38. data/lib/rubocop/cop/layout/class_structure.rb +1 -1
  39. data/lib/rubocop/cop/layout/dot_position.rb +1 -1
  40. data/lib/rubocop/cop/layout/empty_line_after_guard_clause.rb +23 -7
  41. data/lib/rubocop/cop/layout/empty_line_between_defs.rb +1 -1
  42. data/lib/rubocop/cop/layout/empty_lines_around_attribute_accessor.rb +1 -0
  43. data/lib/rubocop/cop/layout/empty_lines_around_block_body.rb +12 -2
  44. data/lib/rubocop/cop/layout/empty_lines_around_class_body.rb +16 -2
  45. data/lib/rubocop/cop/layout/empty_lines_around_module_body.rb +16 -2
  46. data/lib/rubocop/cop/layout/end_alignment.rb +8 -5
  47. data/lib/rubocop/cop/layout/first_hash_element_indentation.rb +7 -1
  48. data/lib/rubocop/cop/layout/hash_alignment.rb +1 -1
  49. data/lib/rubocop/cop/layout/indentation_width.rb +12 -0
  50. data/lib/rubocop/cop/layout/line_length.rb +5 -3
  51. data/lib/rubocop/cop/layout/multiline_assignment_layout.rb +9 -2
  52. data/lib/rubocop/cop/layout/multiline_method_call_brace_layout.rb +1 -1
  53. data/lib/rubocop/cop/layout/multiline_method_call_indentation.rb +53 -3
  54. data/lib/rubocop/cop/layout/parameter_alignment.rb +1 -1
  55. data/lib/rubocop/cop/layout/redundant_line_break.rb +3 -1
  56. data/lib/rubocop/cop/layout/space_around_block_parameters.rb +1 -1
  57. data/lib/rubocop/cop/layout/space_around_keyword.rb +3 -1
  58. data/lib/rubocop/cop/layout/space_before_brackets.rb +1 -1
  59. data/lib/rubocop/cop/layout/space_in_lambda_literal.rb +1 -0
  60. data/lib/rubocop/cop/lint/ambiguous_block_association.rb +1 -1
  61. data/lib/rubocop/cop/lint/constant_overwritten_in_rescue.rb +1 -1
  62. data/lib/rubocop/cop/lint/constant_reassignment.rb +93 -11
  63. data/lib/rubocop/cop/lint/constant_resolution.rb +6 -6
  64. data/lib/rubocop/cop/lint/data_define_override.rb +63 -0
  65. data/lib/rubocop/cop/lint/deprecated_constants.rb +1 -1
  66. data/lib/rubocop/cop/lint/duplicate_methods.rb +55 -8
  67. data/lib/rubocop/cop/lint/empty_block.rb +1 -1
  68. data/lib/rubocop/cop/lint/empty_conditional_body.rb +6 -1
  69. data/lib/rubocop/cop/lint/empty_in_pattern.rb +8 -1
  70. data/lib/rubocop/cop/lint/empty_when.rb +8 -1
  71. data/lib/rubocop/cop/lint/erb_new_arguments.rb +1 -1
  72. data/lib/rubocop/cop/lint/interpolation_check.rb +7 -2
  73. data/lib/rubocop/cop/lint/missing_cop_enable_directive.rb +1 -1
  74. data/lib/rubocop/cop/lint/multiple_comparison.rb +2 -2
  75. data/lib/rubocop/cop/lint/next_without_accumulator.rb +2 -0
  76. data/lib/rubocop/cop/lint/non_deterministic_require_order.rb +4 -2
  77. data/lib/rubocop/cop/lint/number_conversion.rb +6 -6
  78. data/lib/rubocop/cop/lint/numbered_parameter_assignment.rb +1 -1
  79. data/lib/rubocop/cop/lint/parentheses_as_grouped_expression.rb +3 -13
  80. data/lib/rubocop/cop/lint/redundant_cop_enable_directive.rb +2 -11
  81. data/lib/rubocop/cop/lint/redundant_safe_navigation.rb +23 -6
  82. data/lib/rubocop/cop/lint/redundant_type_conversion.rb +3 -3
  83. data/lib/rubocop/cop/lint/require_relative_self_path.rb +3 -1
  84. data/lib/rubocop/cop/lint/safe_navigation_chain.rb +17 -0
  85. data/lib/rubocop/cop/lint/safe_navigation_consistency.rb +7 -1
  86. data/lib/rubocop/cop/lint/shadowed_exception.rb +1 -1
  87. data/lib/rubocop/cop/lint/syntax.rb +25 -1
  88. data/lib/rubocop/cop/lint/trailing_comma_in_attribute_declaration.rb +1 -0
  89. data/lib/rubocop/cop/lint/unescaped_bracket_in_regexp.rb +1 -1
  90. data/lib/rubocop/cop/lint/unmodified_reduce_accumulator.rb +1 -0
  91. data/lib/rubocop/cop/lint/unreachable_code.rb +2 -2
  92. data/lib/rubocop/cop/lint/unreachable_pattern_branch.rb +113 -0
  93. data/lib/rubocop/cop/lint/unused_method_argument.rb +10 -0
  94. data/lib/rubocop/cop/lint/useless_assignment.rb +4 -9
  95. data/lib/rubocop/cop/lint/useless_constant_scoping.rb +4 -4
  96. data/lib/rubocop/cop/lint/useless_default_value_argument.rb +2 -0
  97. data/lib/rubocop/cop/lint/useless_ruby2_keywords.rb +1 -1
  98. data/lib/rubocop/cop/lint/utils/nil_receiver_checker.rb +35 -9
  99. data/lib/rubocop/cop/lint/void.rb +32 -12
  100. data/lib/rubocop/cop/metrics/block_length.rb +1 -1
  101. data/lib/rubocop/cop/metrics/block_nesting.rb +23 -0
  102. data/lib/rubocop/cop/metrics/method_length.rb +1 -1
  103. data/lib/rubocop/cop/metrics/utils/iterating_block.rb +1 -1
  104. data/lib/rubocop/cop/migration/department_name.rb +12 -1
  105. data/lib/rubocop/cop/mixin/check_line_breakable.rb +1 -1
  106. data/lib/rubocop/cop/mixin/check_single_line_suitability.rb +2 -2
  107. data/lib/rubocop/cop/mixin/configurable_max.rb +6 -5
  108. data/lib/rubocop/cop/mixin/hash_transform_method/autocorrection.rb +63 -0
  109. data/lib/rubocop/cop/mixin/hash_transform_method.rb +10 -60
  110. data/lib/rubocop/cop/mixin/project_index_help.rb +48 -0
  111. data/lib/rubocop/cop/mixin.rb +86 -0
  112. data/lib/rubocop/cop/naming/binary_operator_parameter_name.rb +1 -1
  113. data/lib/rubocop/cop/naming/block_parameter_name.rb +1 -1
  114. data/lib/rubocop/cop/naming/memoized_instance_variable_name.rb +1 -1
  115. data/lib/rubocop/cop/naming/predicate_method.rb +2 -2
  116. data/lib/rubocop/cop/naming/predicate_prefix.rb +1 -1
  117. data/lib/rubocop/cop/naming/rescued_exceptions_variable_name.rb +1 -1
  118. data/lib/rubocop/cop/offense.rb +8 -0
  119. data/lib/rubocop/cop/registry.rb +62 -38
  120. data/lib/rubocop/cop/security/eval.rb +15 -2
  121. data/lib/rubocop/cop/security/io_methods.rb +1 -1
  122. data/lib/rubocop/cop/style/access_modifier_declarations.rb +14 -2
  123. data/lib/rubocop/cop/style/accessor_grouping.rb +4 -2
  124. data/lib/rubocop/cop/style/alias.rb +14 -2
  125. data/lib/rubocop/cop/style/and_or.rb +1 -0
  126. data/lib/rubocop/cop/style/arguments_forwarding.rb +25 -7
  127. data/lib/rubocop/cop/style/array_join.rb +4 -2
  128. data/lib/rubocop/cop/style/ascii_comments.rb +6 -3
  129. data/lib/rubocop/cop/style/attr.rb +5 -2
  130. data/lib/rubocop/cop/style/bare_percent_literals.rb +3 -1
  131. data/lib/rubocop/cop/style/begin_block.rb +3 -1
  132. data/lib/rubocop/cop/style/block_delimiters.rb +25 -33
  133. data/lib/rubocop/cop/style/case_equality.rb +4 -0
  134. data/lib/rubocop/cop/style/character_literal.rb +2 -2
  135. data/lib/rubocop/cop/style/class_and_module_children.rb +18 -2
  136. data/lib/rubocop/cop/style/collection_compact.rb +36 -16
  137. data/lib/rubocop/cop/style/colon_method_call.rb +3 -1
  138. data/lib/rubocop/cop/style/concat_array_literals.rb +2 -0
  139. data/lib/rubocop/cop/style/conditional_assignment.rb +0 -4
  140. data/lib/rubocop/cop/style/copyright.rb +22 -11
  141. data/lib/rubocop/cop/style/date_time.rb +2 -2
  142. data/lib/rubocop/cop/style/disable_cops_within_source_code_directive.rb +1 -1
  143. data/lib/rubocop/cop/style/document_dynamic_eval_definition.rb +6 -1
  144. data/lib/rubocop/cop/style/each_for_simple_loop.rb +1 -1
  145. data/lib/rubocop/cop/style/each_with_object.rb +2 -0
  146. data/lib/rubocop/cop/style/empty_block_parameter.rb +1 -1
  147. data/lib/rubocop/cop/style/empty_class_definition.rb +43 -20
  148. data/lib/rubocop/cop/style/empty_lambda_parameter.rb +1 -1
  149. data/lib/rubocop/cop/style/encoding.rb +7 -1
  150. data/lib/rubocop/cop/style/end_block.rb +3 -1
  151. data/lib/rubocop/cop/style/endless_method.rb +8 -3
  152. data/lib/rubocop/cop/style/file_open.rb +84 -0
  153. data/lib/rubocop/cop/style/file_write.rb +18 -16
  154. data/lib/rubocop/cop/style/for.rb +3 -0
  155. data/lib/rubocop/cop/style/format_string.rb +4 -3
  156. data/lib/rubocop/cop/style/format_string_token.rb +29 -2
  157. data/lib/rubocop/cop/style/global_vars.rb +5 -2
  158. data/lib/rubocop/cop/style/guard_clause.rb +9 -6
  159. data/lib/rubocop/cop/style/hash_as_last_array_item.rb +21 -5
  160. data/lib/rubocop/cop/style/hash_conversion.rb +1 -1
  161. data/lib/rubocop/cop/style/hash_lookup_method.rb +19 -7
  162. data/lib/rubocop/cop/style/hash_transform_keys.rb +17 -7
  163. data/lib/rubocop/cop/style/hash_transform_values.rb +17 -7
  164. data/lib/rubocop/cop/style/if_inside_else.rb +16 -7
  165. data/lib/rubocop/cop/style/if_unless_modifier.rb +14 -3
  166. data/lib/rubocop/cop/style/if_with_semicolon.rb +7 -5
  167. data/lib/rubocop/cop/style/inline_comment.rb +4 -1
  168. data/lib/rubocop/cop/style/ip_addresses.rb +1 -2
  169. data/lib/rubocop/cop/style/magic_comment_format.rb +3 -3
  170. data/lib/rubocop/cop/style/map_join.rb +123 -0
  171. data/lib/rubocop/cop/style/method_call_with_args_parentheses/require_parentheses.rb +5 -3
  172. data/lib/rubocop/cop/style/min_max_comparison.rb +1 -1
  173. data/lib/rubocop/cop/style/module_member_existence_check.rb +7 -14
  174. data/lib/rubocop/cop/style/multiline_if_then.rb +3 -1
  175. data/lib/rubocop/cop/style/mutable_constant.rb +1 -1
  176. data/lib/rubocop/cop/style/nil_comparison.rb +2 -3
  177. data/lib/rubocop/cop/style/nil_lambda.rb +1 -1
  178. data/lib/rubocop/cop/style/non_nil_check.rb +5 -11
  179. data/lib/rubocop/cop/style/not.rb +2 -0
  180. data/lib/rubocop/cop/style/numeric_literals.rb +3 -2
  181. data/lib/rubocop/cop/style/one_class_per_file.rb +115 -0
  182. data/lib/rubocop/cop/style/one_line_conditional.rb +4 -3
  183. data/lib/rubocop/cop/style/parallel_assignment.rb +4 -0
  184. data/lib/rubocop/cop/style/partition_instead_of_double_select.rb +270 -0
  185. data/lib/rubocop/cop/style/percent_literal_delimiters.rb +2 -0
  186. data/lib/rubocop/cop/style/predicate_with_kind.rb +84 -0
  187. data/lib/rubocop/cop/style/proc.rb +3 -2
  188. data/lib/rubocop/cop/style/raise_args.rb +1 -1
  189. data/lib/rubocop/cop/style/reduce_to_hash.rb +200 -0
  190. data/lib/rubocop/cop/style/redundant_array_constructor.rb +2 -2
  191. data/lib/rubocop/cop/style/redundant_begin.rb +3 -3
  192. data/lib/rubocop/cop/style/redundant_constant_base.rb +5 -5
  193. data/lib/rubocop/cop/style/redundant_each.rb +3 -3
  194. data/lib/rubocop/cop/style/redundant_fetch_block.rb +1 -1
  195. data/lib/rubocop/cop/style/redundant_interpolation_unfreeze.rb +26 -10
  196. data/lib/rubocop/cop/style/redundant_line_continuation.rb +16 -0
  197. data/lib/rubocop/cop/style/redundant_min_max_by.rb +93 -0
  198. data/lib/rubocop/cop/style/redundant_parentheses.rb +25 -22
  199. data/lib/rubocop/cop/style/redundant_percent_q.rb +4 -1
  200. data/lib/rubocop/cop/style/redundant_regexp_constructor.rb +2 -2
  201. data/lib/rubocop/cop/style/redundant_return.rb +3 -1
  202. data/lib/rubocop/cop/style/redundant_self.rb +2 -2
  203. data/lib/rubocop/cop/style/redundant_self_assignment_branch.rb +0 -5
  204. data/lib/rubocop/cop/style/redundant_struct_keyword_init.rb +114 -0
  205. data/lib/rubocop/cop/style/regexp_literal.rb +31 -2
  206. data/lib/rubocop/cop/style/rescue_modifier.rb +3 -3
  207. data/lib/rubocop/cop/style/safe_navigation.rb +7 -7
  208. data/lib/rubocop/cop/style/select_by_kind.rb +158 -0
  209. data/lib/rubocop/cop/style/select_by_range.rb +197 -0
  210. data/lib/rubocop/cop/style/select_by_regexp.rb +51 -21
  211. data/lib/rubocop/cop/style/self_assignment.rb +1 -1
  212. data/lib/rubocop/cop/style/semicolon.rb +2 -0
  213. data/lib/rubocop/cop/style/single_line_block_params.rb +2 -2
  214. data/lib/rubocop/cop/style/single_line_do_end_block.rb +1 -1
  215. data/lib/rubocop/cop/style/single_line_methods.rb +3 -1
  216. data/lib/rubocop/cop/style/sole_nested_conditional.rb +4 -2
  217. data/lib/rubocop/cop/style/special_global_vars.rb +6 -1
  218. data/lib/rubocop/cop/style/struct_inheritance.rb +13 -0
  219. data/lib/rubocop/cop/style/symbol_proc.rb +7 -6
  220. data/lib/rubocop/cop/style/tally_method.rb +181 -0
  221. data/lib/rubocop/cop/style/top_level_method_definition.rb +2 -2
  222. data/lib/rubocop/cop/style/trailing_comma_in_block_args.rb +1 -1
  223. data/lib/rubocop/cop/style/trailing_method_end_statement.rb +1 -0
  224. data/lib/rubocop/cop/style/unless_logical_operators.rb +3 -3
  225. data/lib/rubocop/cop/style/while_until_modifier.rb +16 -0
  226. data/lib/rubocop/cop/style/yoda_condition.rb +1 -1
  227. data/lib/rubocop/cop/style/yoda_expression.rb +1 -1
  228. data/lib/rubocop/cop/team.rb +86 -35
  229. data/lib/rubocop/cop/variable_force/branch.rb +2 -2
  230. data/lib/rubocop/directive_comment.rb +2 -1
  231. data/lib/rubocop/file_patterns.rb +9 -1
  232. data/lib/rubocop/formatter/disabled_config_formatter.rb +5 -2
  233. data/lib/rubocop/formatter/formatter_set.rb +1 -1
  234. data/lib/rubocop/formatter/junit_formatter.rb +1 -1
  235. data/lib/rubocop/formatter/simple_text_formatter.rb +0 -2
  236. data/lib/rubocop/formatter/worst_offenders_formatter.rb +1 -1
  237. data/lib/rubocop/formatter.rb +22 -21
  238. data/lib/rubocop/lsp/diagnostic.rb +1 -0
  239. data/lib/rubocop/lsp/routes.rb +10 -3
  240. data/lib/rubocop/lsp/runtime.rb +1 -2
  241. data/lib/rubocop/mcp/server.rb +200 -0
  242. data/lib/rubocop/options.rb +35 -4
  243. data/lib/rubocop/path_util.rb +14 -2
  244. data/lib/rubocop/plugin/loader.rb +1 -1
  245. data/lib/rubocop/project_index_loader.rb +66 -0
  246. data/lib/rubocop/result_cache.rb +22 -10
  247. data/lib/rubocop/rspec/cop_helper.rb +8 -0
  248. data/lib/rubocop/rspec/shared_contexts.rb +32 -2
  249. data/lib/rubocop/runner.rb +124 -53
  250. data/lib/rubocop/server/cache.rb +5 -7
  251. data/lib/rubocop/server/core.rb +2 -0
  252. data/lib/rubocop/target_finder.rb +14 -7
  253. data/lib/rubocop/target_ruby.rb +18 -12
  254. data/lib/rubocop/version.rb +21 -3
  255. data/lib/rubocop.rb +22 -96
  256. metadata +27 -5
@@ -45,6 +45,8 @@ module RuboCop
45
45
  write_port_and_token_files
46
46
 
47
47
  pid = fork do
48
+ # NOTE: As of Ruby 4.0.0, ZJIT is still under development, while YJIT is production-ready,
49
+ # so support for ZJIT is deferred.
48
50
  if defined?(RubyVM::YJIT.enable)
49
51
  RubyVM::YJIT.enable
50
52
  end
@@ -38,16 +38,16 @@ module RuboCop
38
38
  # @param base_dir Root directory under which to search for
39
39
  # ruby source files
40
40
  # @return [Array] Array of filenames
41
- def target_files_in_dir(base_dir = Dir.pwd)
41
+ def target_files_in_dir(base_dir = PathUtil.pwd)
42
42
  # Support Windows: Backslashes from command-line -> forward slashes
43
43
  base_dir = base_dir.gsub(File::ALT_SEPARATOR, File::SEPARATOR) if File::ALT_SEPARATOR
44
44
  all_files = find_files(base_dir, File::FNM_DOTMATCH)
45
45
  base_dir_config = @config_store.for(base_dir)
46
46
 
47
- target_files = if hidden_path?(base_dir)
47
+ target_files = if hidden_dir?(base_dir)
48
48
  all_files.select { |file| ruby_file?(file) }
49
49
  else
50
- all_files.select { |file| to_inspect?(file, base_dir_config) }
50
+ all_files.select { |file| to_inspect?(file, base_dir, base_dir_config) }
51
51
  end
52
52
 
53
53
  target_files.sort_by!(&order)
@@ -72,15 +72,22 @@ module RuboCop
72
72
 
73
73
  private
74
74
 
75
- def to_inspect?(file, base_dir_config)
75
+ def to_inspect?(file, base_dir, base_dir_config)
76
76
  return false if base_dir_config.file_to_exclude?(file)
77
- return true if !hidden_path?(file) && ruby_file?(file)
77
+ return true if !hidden_file_in_dir?(file, base_dir) && ruby_file?(file)
78
78
 
79
79
  base_dir_config.file_to_include?(file)
80
80
  end
81
81
 
82
- def hidden_path?(path)
83
- path.include?(HIDDEN_PATH_SUBSTRING)
82
+ def hidden_dir?(dir)
83
+ basename = File.basename(dir)
84
+ basename.start_with?('.') && basename != '.' && basename != '..'
85
+ end
86
+
87
+ def hidden_file_in_dir?(file, base_dir)
88
+ base_dir = "#{base_dir}#{File::SEPARATOR}" unless base_dir.end_with?(File::SEPARATOR)
89
+ relative = file.delete_prefix(base_dir)
90
+ relative.start_with?('.') || relative.include?(HIDDEN_PATH_SUBSTRING)
84
91
  end
85
92
 
86
93
  def wanted_dir_patterns(base_dir, exclude_pattern, flags)
@@ -160,21 +160,18 @@ module RuboCop
160
160
  # The target ruby version may be found in a .ruby-version file.
161
161
  # @api private
162
162
  class RubyVersionFile < Source
163
- RUBY_VERSION_FILENAME = '.ruby-version'
164
- RUBY_VERSION_PATTERN = /\A(?:ruby-)?(?<version>\d+\.\d+)/.freeze
165
-
166
163
  def name
167
- "`#{RUBY_VERSION_FILENAME}`"
164
+ "`#{filename}`"
168
165
  end
169
166
 
170
167
  private
171
168
 
172
169
  def filename
173
- RUBY_VERSION_FILENAME
170
+ '.ruby-version'
174
171
  end
175
172
 
176
173
  def pattern
177
- RUBY_VERSION_PATTERN
174
+ /\A(?:ruby-)?(?<version>\d+\.\d+)/.freeze
178
175
  end
179
176
 
180
177
  def find_version
@@ -193,21 +190,29 @@ module RuboCop
193
190
  # starting with `ruby`.
194
191
  # @api private
195
192
  class ToolVersionsFile < RubyVersionFile
196
- TOOL_VERSIONS_FILENAME = '.tool-versions'
197
- TOOL_VERSIONS_PATTERN = /^(?:ruby )(?<version>\d+\.\d+)/.freeze
193
+ private
198
194
 
199
- def name
200
- "`#{TOOL_VERSIONS_FILENAME}`"
195
+ def filename
196
+ '.tool-versions'
201
197
  end
202
198
 
199
+ def pattern
200
+ /^(?:ruby )(?<version>\d+\.\d+)/.freeze
201
+ end
202
+ end
203
+
204
+ # The target ruby version may be found in a mise.toml file, in a line
205
+ # starting with `ruby = "`.
206
+ # @api private
207
+ class MiseTomlFile < RubyVersionFile
203
208
  private
204
209
 
205
210
  def filename
206
- TOOL_VERSIONS_FILENAME
211
+ 'mise.toml'
207
212
  end
208
213
 
209
214
  def pattern
210
- TOOL_VERSIONS_PATTERN
215
+ /^ruby = "(?<version>\d+\.\d+)/.freeze
211
216
  end
212
217
  end
213
218
 
@@ -275,6 +280,7 @@ module RuboCop
275
280
  RuboCopConfig,
276
281
  GemspecFile,
277
282
  RubyVersionFile,
283
+ MiseTomlFile,
278
284
  ToolVersionsFile,
279
285
  BundlerLockFile,
280
286
  Default
@@ -3,12 +3,13 @@
3
3
  module RuboCop
4
4
  # This module holds the RuboCop version information.
5
5
  module Version
6
- STRING = '1.84.2'
6
+ STRING = '1.87.0'
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
- 'running on %<ruby_engine>s %<ruby_version>s)%<server_mode>s [%<ruby_platform>s]'
11
+ 'running on %<ruby_engine>s %<ruby_version>s)' \
12
+ '%<rubydex_indicator>s%<server_mode>s [%<ruby_platform>s]'
12
13
 
13
14
  MINIMUM_PARSABLE_PRISM_VERSION = 3.3
14
15
 
@@ -31,6 +32,7 @@ module RuboCop
31
32
  rubocop_ast_version: RuboCop::AST::Version::STRING,
32
33
  target_ruby_version: target_ruby_version,
33
34
  ruby_engine: RUBY_ENGINE, ruby_version: RUBY_VERSION,
35
+ rubydex_indicator: rubydex_indicator(env),
34
36
  server_mode: server_mode,
35
37
  ruby_platform: RUBY_PLATFORM)
36
38
  return verbose_version unless env
@@ -55,7 +57,7 @@ module RuboCop
55
57
 
56
58
  # @api private
57
59
  def self.parser_version(target_ruby_version)
58
- config_path = ConfigFinder.find_config_path(Dir.pwd)
60
+ config_path = ConfigFinder.find_config_path(PathUtil.pwd)
59
61
  yaml = Util.silence_warnings do
60
62
  ConfigLoader.load_yaml_configuration(config_path)
61
63
  end
@@ -152,6 +154,22 @@ module RuboCop
152
154
  STRING.match('\d+\.\d+').to_s
153
155
  end
154
156
 
157
+ # @api private
158
+ def self.rubydex_indicator(env)
159
+ env && rubydex_enabled?(env) && ProjectIndexLoader.available? ? ' +Rubydex' : ''
160
+ end
161
+
162
+ # @api private
163
+ def self.rubydex_enabled?(env)
164
+ config_for_pwd(env).for_all_cops['UseProjectIndex']
165
+ rescue StandardError
166
+ # Keep `rubocop -V` usable when the config cannot be loaded (broken YAML,
167
+ # missing `inherit_from` target, etc). It is the first command users run to
168
+ # diagnose a broken setup, so the indicator just hides rather than letting
169
+ # the version banner crash.
170
+ false
171
+ end
172
+
155
173
  # @api private
156
174
  def self.server_mode
157
175
  RuboCop.const_defined?(:Server) && Server.running? ? ' +server' : ''
data/lib/rubocop.rb CHANGED
@@ -39,6 +39,7 @@ require_relative 'rubocop/warning'
39
39
 
40
40
  # rubocop:disable Style/RequireOrder
41
41
 
42
+ require_relative 'rubocop/project_index_loader'
42
43
  require_relative 'rubocop/cop/util'
43
44
  require_relative 'rubocop/cop/offense'
44
45
  require_relative 'rubocop/cop/message_annotator'
@@ -52,6 +53,7 @@ require_relative 'rubocop/cop/cop'
52
53
  require_relative 'rubocop/cop/commissioner'
53
54
  require_relative 'rubocop/cop/documentation'
54
55
  require_relative 'rubocop/cop/corrector'
56
+ require_relative 'rubocop/cop/correctors'
55
57
  require_relative 'rubocop/cop/force'
56
58
  require_relative 'rubocop/cop/severity'
57
59
  require_relative 'rubocop/cop/generator'
@@ -68,109 +70,18 @@ require_relative 'rubocop/cop/variable_force/reference'
68
70
  require_relative 'rubocop/cop/variable_force/scope'
69
71
  require_relative 'rubocop/cop/variable_force/variable_table'
70
72
 
71
- require_relative 'rubocop/cop/mixin/array_min_size'
72
- require_relative 'rubocop/cop/mixin/array_syntax'
73
- require_relative 'rubocop/cop/mixin/alignment'
74
- require_relative 'rubocop/cop/mixin/allowed_identifiers'
75
- require_relative 'rubocop/cop/mixin/allowed_methods'
76
- require_relative 'rubocop/cop/mixin/allowed_pattern'
77
- require_relative 'rubocop/cop/mixin/allowed_receivers'
78
- require_relative 'rubocop/cop/mixin/forbidden_identifiers'
79
- require_relative 'rubocop/cop/mixin/forbidden_pattern'
80
- require_relative 'rubocop/cop/mixin/auto_corrector' # rubocop:todo Naming/InclusiveLanguage
81
- require_relative 'rubocop/cop/mixin/check_assignment'
82
- require_relative 'rubocop/cop/mixin/check_line_breakable'
83
- require_relative 'rubocop/cop/mixin/check_single_line_suitability'
84
- require_relative 'rubocop/cop/mixin/configurable_max'
85
- require_relative 'rubocop/cop/mixin/code_length' # relies on configurable_max
86
- require_relative 'rubocop/cop/mixin/configurable_enforced_style'
87
- require_relative 'rubocop/cop/mixin/configurable_formatting'
88
- require_relative 'rubocop/cop/mixin/configurable_naming'
89
- require_relative 'rubocop/cop/mixin/configurable_numbering'
90
- require_relative 'rubocop/cop/mixin/dig_help'
91
- require_relative 'rubocop/cop/mixin/documentation_comment'
92
- require_relative 'rubocop/cop/mixin/duplication'
93
- require_relative 'rubocop/cop/mixin/range_help'
94
- require_relative 'rubocop/cop/mixin/annotation_comment' # relies on range
95
- require_relative 'rubocop/cop/mixin/empty_lines_around_body' # relies on range
96
- require_relative 'rubocop/cop/mixin/empty_parameter'
97
- require_relative 'rubocop/cop/mixin/end_keyword_alignment'
98
- require_relative 'rubocop/cop/mixin/endless_method_rewriter'
99
- require_relative 'rubocop/cop/mixin/enforce_superclass'
100
- require_relative 'rubocop/cop/mixin/first_element_line_break'
101
- require_relative 'rubocop/cop/mixin/frozen_string_literal'
102
- require_relative 'rubocop/cop/mixin/gem_declaration'
103
- require_relative 'rubocop/cop/mixin/gemspec_help'
104
- require_relative 'rubocop/cop/mixin/hash_alignment_styles'
105
- require_relative 'rubocop/cop/mixin/hash_subset'
106
- require_relative 'rubocop/cop/mixin/hash_transform_method'
107
- require_relative 'rubocop/cop/mixin/integer_node'
108
- require_relative 'rubocop/cop/mixin/interpolation'
109
- require_relative 'rubocop/cop/mixin/line_length_help'
110
- require_relative 'rubocop/cop/mixin/match_range'
73
+ require_relative 'rubocop/cop/mixin'
74
+ # TODO: move to Layout module once cop lazy loading is implemented
75
+ require_relative 'rubocop/cop/mixin/empty_lines_around_body'
76
+ # TODO: move to Lint module once cop lazy loading is implemented
77
+ require_relative 'rubocop/cop/mixin/unused_argument'
111
78
  require_relative 'rubocop/cop/metrics/utils/repeated_csend_discount'
112
79
  require_relative 'rubocop/cop/metrics/utils/repeated_attribute_discount'
113
- require_relative 'rubocop/cop/mixin/hash_shorthand_syntax'
114
- require_relative 'rubocop/cop/mixin/method_complexity'
115
- require_relative 'rubocop/cop/mixin/method_preference'
116
- require_relative 'rubocop/cop/mixin/min_body_length'
117
- require_relative 'rubocop/cop/mixin/min_branches_count'
118
- require_relative 'rubocop/cop/mixin/multiline_element_indentation'
119
- require_relative 'rubocop/cop/mixin/multiline_element_line_breaks'
120
- require_relative 'rubocop/cop/mixin/multiline_expression_indentation'
121
- require_relative 'rubocop/cop/mixin/multiline_literal_brace_layout'
122
- require_relative 'rubocop/cop/mixin/negative_conditional'
123
- require_relative 'rubocop/cop/mixin/heredoc'
124
- require_relative 'rubocop/cop/mixin/nil_methods'
125
- require_relative 'rubocop/cop/mixin/on_normal_if_unless'
126
- require_relative 'rubocop/cop/mixin/ordered_gem_node'
127
- require_relative 'rubocop/cop/mixin/parentheses'
128
- require_relative 'rubocop/cop/mixin/percent_array'
129
- require_relative 'rubocop/cop/mixin/percent_literal'
130
- require_relative 'rubocop/cop/mixin/preceding_following_alignment'
131
- require_relative 'rubocop/cop/mixin/preferred_delimiters'
132
- require_relative 'rubocop/cop/mixin/rational_literal'
133
- require_relative 'rubocop/cop/mixin/require_library'
134
- require_relative 'rubocop/cop/mixin/rescue_node'
135
- require_relative 'rubocop/cop/mixin/safe_assignment'
136
- require_relative 'rubocop/cop/mixin/space_after_punctuation'
137
- require_relative 'rubocop/cop/mixin/space_before_punctuation'
138
- require_relative 'rubocop/cop/mixin/surrounding_space'
139
- require_relative 'rubocop/cop/mixin/statement_modifier'
140
- require_relative 'rubocop/cop/mixin/string_help'
141
- require_relative 'rubocop/cop/mixin/string_literals_help'
142
- require_relative 'rubocop/cop/mixin/symbol_help'
143
- require_relative 'rubocop/cop/mixin/target_ruby_version'
144
- require_relative 'rubocop/cop/mixin/trailing_body'
145
- require_relative 'rubocop/cop/mixin/trailing_comma'
146
- require_relative 'rubocop/cop/mixin/uncommunicative_name'
147
- require_relative 'rubocop/cop/mixin/unused_argument'
148
- require_relative 'rubocop/cop/mixin/visibility_help'
149
- require_relative 'rubocop/cop/mixin/comments_help' # relies on visibility_help
150
- require_relative 'rubocop/cop/mixin/def_node' # relies on visibility_help
151
80
 
152
81
  require_relative 'rubocop/cop/utils/format_string'
153
82
 
154
83
  require_relative 'rubocop/cop/migration/department_name'
155
84
 
156
- require_relative 'rubocop/cop/correctors/alignment_corrector'
157
- require_relative 'rubocop/cop/correctors/condition_corrector'
158
- require_relative 'rubocop/cop/correctors/each_to_for_corrector'
159
- require_relative 'rubocop/cop/correctors/empty_line_corrector'
160
- require_relative 'rubocop/cop/correctors/for_to_each_corrector'
161
- require_relative 'rubocop/cop/correctors/if_then_corrector'
162
- require_relative 'rubocop/cop/correctors/lambda_literal_to_method_corrector'
163
- require_relative 'rubocop/cop/correctors/line_break_corrector'
164
- require_relative 'rubocop/cop/correctors/multiline_literal_brace_corrector'
165
- require_relative 'rubocop/cop/correctors/ordered_gem_corrector'
166
- require_relative 'rubocop/cop/correctors/parentheses_corrector'
167
- require_relative 'rubocop/cop/correctors/percent_literal_corrector'
168
- require_relative 'rubocop/cop/correctors/punctuation_corrector'
169
- require_relative 'rubocop/cop/correctors/require_library_corrector'
170
- require_relative 'rubocop/cop/correctors/space_corrector'
171
- require_relative 'rubocop/cop/correctors/string_literal_corrector'
172
- require_relative 'rubocop/cop/correctors/unused_arg_corrector'
173
-
174
85
  require_relative 'rubocop/cop/bundler/duplicated_gem'
175
86
  require_relative 'rubocop/cop/bundler/duplicated_group'
176
87
  require_relative 'rubocop/cop/bundler/gem_comment'
@@ -309,6 +220,7 @@ require_relative 'rubocop/cop/lint/constant_overwritten_in_rescue'
309
220
  require_relative 'rubocop/cop/lint/constant_reassignment'
310
221
  require_relative 'rubocop/cop/lint/constant_resolution'
311
222
  require_relative 'rubocop/cop/lint/cop_directive_syntax'
223
+ require_relative 'rubocop/cop/lint/data_define_override'
312
224
  require_relative 'rubocop/cop/lint/debugger'
313
225
  require_relative 'rubocop/cop/lint/deprecated_class_methods'
314
226
  require_relative 'rubocop/cop/lint/deprecated_constants'
@@ -426,6 +338,7 @@ require_relative 'rubocop/cop/lint/unified_integer'
426
338
  require_relative 'rubocop/cop/lint/unmodified_reduce_accumulator'
427
339
  require_relative 'rubocop/cop/lint/unreachable_code'
428
340
  require_relative 'rubocop/cop/lint/unreachable_loop'
341
+ require_relative 'rubocop/cop/lint/unreachable_pattern_branch'
429
342
  require_relative 'rubocop/cop/lint/unused_block_argument'
430
343
  require_relative 'rubocop/cop/lint/unused_method_argument'
431
344
  require_relative 'rubocop/cop/lint/uri_escape_unescape'
@@ -561,6 +474,7 @@ require_relative 'rubocop/cop/style/exponential_notation'
561
474
  require_relative 'rubocop/cop/style/fetch_env_var'
562
475
  require_relative 'rubocop/cop/style/file_empty'
563
476
  require_relative 'rubocop/cop/style/file_null'
477
+ require_relative 'rubocop/cop/style/file_open'
564
478
  require_relative 'rubocop/cop/style/file_read'
565
479
  require_relative 'rubocop/cop/style/file_touch'
566
480
  require_relative 'rubocop/cop/style/file_write'
@@ -592,6 +506,7 @@ require_relative 'rubocop/cop/style/if_with_semicolon'
592
506
  require_relative 'rubocop/cop/style/implicit_runtime_error'
593
507
  require_relative 'rubocop/cop/style/in_pattern_then'
594
508
  require_relative 'rubocop/cop/style/infinite_loop'
509
+ require_relative 'rubocop/cop/style/reduce_to_hash'
595
510
  require_relative 'rubocop/cop/style/inverse_methods'
596
511
  require_relative 'rubocop/cop/style/inline_comment'
597
512
  require_relative 'rubocop/cop/style/invertible_unless_condition'
@@ -605,6 +520,7 @@ require_relative 'rubocop/cop/style/lambda_call'
605
520
  require_relative 'rubocop/cop/style/line_end_concatenation'
606
521
  require_relative 'rubocop/cop/style/magic_comment_format'
607
522
  require_relative 'rubocop/cop/style/map_into_array'
523
+ require_relative 'rubocop/cop/style/map_join'
608
524
  require_relative 'rubocop/cop/style/map_to_hash'
609
525
  require_relative 'rubocop/cop/style/map_to_set'
610
526
  require_relative 'rubocop/cop/style/method_call_without_args_parentheses'
@@ -613,8 +529,10 @@ require_relative 'rubocop/cop/style/min_max_comparison'
613
529
  require_relative 'rubocop/cop/style/module_member_existence_check'
614
530
  require_relative 'rubocop/cop/style/multiline_in_pattern_then'
615
531
  require_relative 'rubocop/cop/style/numbered_parameters'
532
+ require_relative 'rubocop/cop/style/one_class_per_file'
616
533
  require_relative 'rubocop/cop/style/open_struct_use'
617
534
  require_relative 'rubocop/cop/style/operator_method_call'
535
+ require_relative 'rubocop/cop/style/partition_instead_of_double_select'
618
536
  require_relative 'rubocop/cop/style/redundant_array_constructor'
619
537
  require_relative 'rubocop/cop/style/redundant_array_flatten'
620
538
  require_relative 'rubocop/cop/style/redundant_assignment'
@@ -630,10 +548,12 @@ require_relative 'rubocop/cop/style/redundant_heredoc_delimiter_quotes'
630
548
  require_relative 'rubocop/cop/style/redundant_initialize'
631
549
  require_relative 'rubocop/cop/style/redundant_interpolation_unfreeze'
632
550
  require_relative 'rubocop/cop/style/redundant_line_continuation'
551
+ require_relative 'rubocop/cop/style/redundant_min_max_by'
633
552
  require_relative 'rubocop/cop/style/redundant_regexp_argument'
634
553
  require_relative 'rubocop/cop/style/redundant_regexp_constructor'
635
554
  require_relative 'rubocop/cop/style/redundant_self_assignment'
636
555
  require_relative 'rubocop/cop/style/redundant_self_assignment_branch'
556
+ require_relative 'rubocop/cop/style/redundant_struct_keyword_init'
637
557
  require_relative 'rubocop/cop/style/require_order'
638
558
  require_relative 'rubocop/cop/style/reverse_find'
639
559
  require_relative 'rubocop/cop/style/safe_navigation_chain_length'
@@ -687,6 +607,7 @@ require_relative 'rubocop/cop/style/parentheses_around_condition'
687
607
  require_relative 'rubocop/cop/style/percent_literal_delimiters'
688
608
  require_relative 'rubocop/cop/style/percent_q_literals'
689
609
  require_relative 'rubocop/cop/style/perl_backrefs'
610
+ require_relative 'rubocop/cop/style/predicate_with_kind'
690
611
  require_relative 'rubocop/cop/style/preferred_hash_methods'
691
612
  require_relative 'rubocop/cop/style/proc'
692
613
  require_relative 'rubocop/cop/style/quoted_symbols'
@@ -716,6 +637,8 @@ require_relative 'rubocop/cop/style/return_nil'
716
637
  require_relative 'rubocop/cop/style/return_nil_in_predicate_method_definition'
717
638
  require_relative 'rubocop/cop/style/safe_navigation'
718
639
  require_relative 'rubocop/cop/style/sample'
640
+ require_relative 'rubocop/cop/style/select_by_kind'
641
+ require_relative 'rubocop/cop/style/select_by_range'
719
642
  require_relative 'rubocop/cop/style/select_by_regexp'
720
643
  require_relative 'rubocop/cop/style/self_assignment'
721
644
  require_relative 'rubocop/cop/style/semicolon'
@@ -743,6 +666,7 @@ require_relative 'rubocop/cop/style/swap_values'
743
666
  require_relative 'rubocop/cop/style/symbol_array'
744
667
  require_relative 'rubocop/cop/style/symbol_literal'
745
668
  require_relative 'rubocop/cop/style/symbol_proc'
669
+ require_relative 'rubocop/cop/style/tally_method'
746
670
  require_relative 'rubocop/cop/style/ternary_parentheses'
747
671
  require_relative 'rubocop/cop/style/top_level_method_definition'
748
672
  require_relative 'rubocop/cop/style/trailing_body_on_class'
@@ -811,6 +735,8 @@ require_relative 'rubocop/cli/command/auto_generate_config'
811
735
  require_relative 'rubocop/cli/command/execute_runner'
812
736
  require_relative 'rubocop/cli/command/init_dotfile'
813
737
  require_relative 'rubocop/cli/command/lsp'
738
+ require_relative 'rubocop/cli/command/list_enabled_cops_for'
739
+ require_relative 'rubocop/cli/command/mcp'
814
740
  require_relative 'rubocop/cli/command/show_cops'
815
741
  require_relative 'rubocop/cli/command/show_docs_url'
816
742
  require_relative 'rubocop/cli/command/suggest_extensions'
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.84.2
4
+ version: 1.87.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Bozhidar Batsov
@@ -57,14 +57,14 @@ dependencies:
57
57
  name: parallel
58
58
  requirement: !ruby/object:Gem::Requirement
59
59
  requirements:
60
- - - "~>"
60
+ - - ">="
61
61
  - !ruby/object:Gem::Version
62
62
  version: '1.10'
63
63
  type: :runtime
64
64
  prerelease: false
65
65
  version_requirements: !ruby/object:Gem::Requirement
66
66
  requirements:
67
- - - "~>"
67
+ - - ">="
68
68
  - !ruby/object:Gem::Version
69
69
  version: '1.10'
70
70
  - !ruby/object:Gem::Dependency
@@ -207,7 +207,9 @@ files:
207
207
  - lib/rubocop/cli/command/base.rb
208
208
  - lib/rubocop/cli/command/execute_runner.rb
209
209
  - lib/rubocop/cli/command/init_dotfile.rb
210
+ - lib/rubocop/cli/command/list_enabled_cops_for.rb
210
211
  - lib/rubocop/cli/command/lsp.rb
212
+ - lib/rubocop/cli/command/mcp.rb
211
213
  - lib/rubocop/cli/command/show_cops.rb
212
214
  - lib/rubocop/cli/command/show_docs_url.rb
213
215
  - lib/rubocop/cli/command/suggest_extensions.rb
@@ -244,6 +246,7 @@ files:
244
246
  - lib/rubocop/cop/commissioner.rb
245
247
  - lib/rubocop/cop/cop.rb
246
248
  - lib/rubocop/cop/corrector.rb
249
+ - lib/rubocop/cop/correctors.rb
247
250
  - lib/rubocop/cop/correctors/alignment_corrector.rb
248
251
  - lib/rubocop/cop/correctors/condition_corrector.rb
249
252
  - lib/rubocop/cop/correctors/each_to_for_corrector.rb
@@ -286,6 +289,7 @@ files:
286
289
  - lib/rubocop/cop/internal_affairs/example_description.rb
287
290
  - lib/rubocop/cop/internal_affairs/example_heredoc_delimiter.rb
288
291
  - lib/rubocop/cop/internal_affairs/inherit_deprecated_cop_class.rb
292
+ - lib/rubocop/cop/internal_affairs/itblock_handler.rb
289
293
  - lib/rubocop/cop/internal_affairs/lambda_or_proc.rb
290
294
  - lib/rubocop/cop/internal_affairs/location_exists.rb
291
295
  - lib/rubocop/cop/internal_affairs/location_expression.rb
@@ -439,6 +443,7 @@ files:
439
443
  - lib/rubocop/cop/lint/constant_reassignment.rb
440
444
  - lib/rubocop/cop/lint/constant_resolution.rb
441
445
  - lib/rubocop/cop/lint/cop_directive_syntax.rb
446
+ - lib/rubocop/cop/lint/data_define_override.rb
442
447
  - lib/rubocop/cop/lint/debugger.rb
443
448
  - lib/rubocop/cop/lint/deprecated_class_methods.rb
444
449
  - lib/rubocop/cop/lint/deprecated_constants.rb
@@ -556,6 +561,7 @@ files:
556
561
  - lib/rubocop/cop/lint/unmodified_reduce_accumulator.rb
557
562
  - lib/rubocop/cop/lint/unreachable_code.rb
558
563
  - lib/rubocop/cop/lint/unreachable_loop.rb
564
+ - lib/rubocop/cop/lint/unreachable_pattern_branch.rb
559
565
  - lib/rubocop/cop/lint/unused_block_argument.rb
560
566
  - lib/rubocop/cop/lint/unused_method_argument.rb
561
567
  - lib/rubocop/cop/lint/uri_escape_unescape.rb
@@ -592,6 +598,7 @@ files:
592
598
  - lib/rubocop/cop/metrics/utils/repeated_attribute_discount.rb
593
599
  - lib/rubocop/cop/metrics/utils/repeated_csend_discount.rb
594
600
  - lib/rubocop/cop/migration/department_name.rb
601
+ - lib/rubocop/cop/mixin.rb
595
602
  - lib/rubocop/cop/mixin/alignment.rb
596
603
  - lib/rubocop/cop/mixin/allowed_identifiers.rb
597
604
  - lib/rubocop/cop/mixin/allowed_methods.rb
@@ -630,6 +637,7 @@ files:
630
637
  - lib/rubocop/cop/mixin/hash_shorthand_syntax.rb
631
638
  - lib/rubocop/cop/mixin/hash_subset.rb
632
639
  - lib/rubocop/cop/mixin/hash_transform_method.rb
640
+ - lib/rubocop/cop/mixin/hash_transform_method/autocorrection.rb
633
641
  - lib/rubocop/cop/mixin/heredoc.rb
634
642
  - lib/rubocop/cop/mixin/integer_node.rb
635
643
  - lib/rubocop/cop/mixin/interpolation.rb
@@ -652,6 +660,7 @@ files:
652
660
  - lib/rubocop/cop/mixin/percent_literal.rb
653
661
  - lib/rubocop/cop/mixin/preceding_following_alignment.rb
654
662
  - lib/rubocop/cop/mixin/preferred_delimiters.rb
663
+ - lib/rubocop/cop/mixin/project_index_help.rb
655
664
  - lib/rubocop/cop/mixin/range_help.rb
656
665
  - lib/rubocop/cop/mixin/rational_literal.rb
657
666
  - lib/rubocop/cop/mixin/require_library.rb
@@ -781,6 +790,7 @@ files:
781
790
  - lib/rubocop/cop/style/fetch_env_var.rb
782
791
  - lib/rubocop/cop/style/file_empty.rb
783
792
  - lib/rubocop/cop/style/file_null.rb
793
+ - lib/rubocop/cop/style/file_open.rb
784
794
  - lib/rubocop/cop/style/file_read.rb
785
795
  - lib/rubocop/cop/style/file_touch.rb
786
796
  - lib/rubocop/cop/style/file_write.rb
@@ -826,6 +836,7 @@ files:
826
836
  - lib/rubocop/cop/style/magic_comment_format.rb
827
837
  - lib/rubocop/cop/style/map_compact_with_conditional_block.rb
828
838
  - lib/rubocop/cop/style/map_into_array.rb
839
+ - lib/rubocop/cop/style/map_join.rb
829
840
  - lib/rubocop/cop/style/map_to_hash.rb
830
841
  - lib/rubocop/cop/style/map_to_set.rb
831
842
  - lib/rubocop/cop/style/method_call_with_args_parentheses.rb
@@ -872,6 +883,7 @@ files:
872
883
  - lib/rubocop/cop/style/numeric_literals.rb
873
884
  - lib/rubocop/cop/style/numeric_predicate.rb
874
885
  - lib/rubocop/cop/style/object_then.rb
886
+ - lib/rubocop/cop/style/one_class_per_file.rb
875
887
  - lib/rubocop/cop/style/one_line_conditional.rb
876
888
  - lib/rubocop/cop/style/open_struct_use.rb
877
889
  - lib/rubocop/cop/style/operator_method_call.rb
@@ -881,14 +893,17 @@ files:
881
893
  - lib/rubocop/cop/style/or_assignment.rb
882
894
  - lib/rubocop/cop/style/parallel_assignment.rb
883
895
  - lib/rubocop/cop/style/parentheses_around_condition.rb
896
+ - lib/rubocop/cop/style/partition_instead_of_double_select.rb
884
897
  - lib/rubocop/cop/style/percent_literal_delimiters.rb
885
898
  - lib/rubocop/cop/style/percent_q_literals.rb
886
899
  - lib/rubocop/cop/style/perl_backrefs.rb
900
+ - lib/rubocop/cop/style/predicate_with_kind.rb
887
901
  - lib/rubocop/cop/style/preferred_hash_methods.rb
888
902
  - lib/rubocop/cop/style/proc.rb
889
903
  - lib/rubocop/cop/style/quoted_symbols.rb
890
904
  - lib/rubocop/cop/style/raise_args.rb
891
905
  - lib/rubocop/cop/style/random_with_offset.rb
906
+ - lib/rubocop/cop/style/reduce_to_hash.rb
892
907
  - lib/rubocop/cop/style/redundant_argument.rb
893
908
  - lib/rubocop/cop/style/redundant_array_constructor.rb
894
909
  - lib/rubocop/cop/style/redundant_array_flatten.rb
@@ -912,6 +927,7 @@ files:
912
927
  - lib/rubocop/cop/style/redundant_interpolation.rb
913
928
  - lib/rubocop/cop/style/redundant_interpolation_unfreeze.rb
914
929
  - lib/rubocop/cop/style/redundant_line_continuation.rb
930
+ - lib/rubocop/cop/style/redundant_min_max_by.rb
915
931
  - lib/rubocop/cop/style/redundant_parentheses.rb
916
932
  - lib/rubocop/cop/style/redundant_percent_q.rb
917
933
  - lib/rubocop/cop/style/redundant_regexp_argument.rb
@@ -925,6 +941,7 @@ files:
925
941
  - lib/rubocop/cop/style/redundant_sort.rb
926
942
  - lib/rubocop/cop/style/redundant_sort_by.rb
927
943
  - lib/rubocop/cop/style/redundant_string_escape.rb
944
+ - lib/rubocop/cop/style/redundant_struct_keyword_init.rb
928
945
  - lib/rubocop/cop/style/regexp_literal.rb
929
946
  - lib/rubocop/cop/style/require_order.rb
930
947
  - lib/rubocop/cop/style/rescue_modifier.rb
@@ -935,6 +952,8 @@ files:
935
952
  - lib/rubocop/cop/style/safe_navigation.rb
936
953
  - lib/rubocop/cop/style/safe_navigation_chain_length.rb
937
954
  - lib/rubocop/cop/style/sample.rb
955
+ - lib/rubocop/cop/style/select_by_kind.rb
956
+ - lib/rubocop/cop/style/select_by_range.rb
938
957
  - lib/rubocop/cop/style/select_by_regexp.rb
939
958
  - lib/rubocop/cop/style/self_assignment.rb
940
959
  - lib/rubocop/cop/style/semicolon.rb
@@ -965,6 +984,7 @@ files:
965
984
  - lib/rubocop/cop/style/symbol_array.rb
966
985
  - lib/rubocop/cop/style/symbol_literal.rb
967
986
  - lib/rubocop/cop/style/symbol_proc.rb
987
+ - lib/rubocop/cop/style/tally_method.rb
968
988
  - lib/rubocop/cop/style/ternary_parentheses.rb
969
989
  - lib/rubocop/cop/style/top_level_method_definition.rb
970
990
  - lib/rubocop/cop/style/trailing_body_on_class.rb
@@ -1046,6 +1066,7 @@ files:
1046
1066
  - lib/rubocop/lsp/severity.rb
1047
1067
  - lib/rubocop/lsp/stdin_runner.rb
1048
1068
  - lib/rubocop/magic_comment.rb
1069
+ - lib/rubocop/mcp/server.rb
1049
1070
  - lib/rubocop/name_similarity.rb
1050
1071
  - lib/rubocop/options.rb
1051
1072
  - lib/rubocop/path_util.rb
@@ -1056,6 +1077,7 @@ files:
1056
1077
  - lib/rubocop/plugin/load_error.rb
1057
1078
  - lib/rubocop/plugin/loader.rb
1058
1079
  - lib/rubocop/plugin/not_supported_error.rb
1080
+ - lib/rubocop/project_index_loader.rb
1059
1081
  - lib/rubocop/rake_task.rb
1060
1082
  - lib/rubocop/remote_config.rb
1061
1083
  - lib/rubocop/result_cache.rb
@@ -1097,9 +1119,9 @@ licenses:
1097
1119
  - MIT
1098
1120
  metadata:
1099
1121
  homepage_uri: https://rubocop.org/
1100
- changelog_uri: https://github.com/rubocop/rubocop/releases/tag/v1.84.2
1122
+ changelog_uri: https://github.com/rubocop/rubocop/releases/tag/v1.87.0
1101
1123
  source_code_uri: https://github.com/rubocop/rubocop/
1102
- documentation_uri: https://docs.rubocop.org/rubocop/1.84/
1124
+ documentation_uri: https://docs.rubocop.org/rubocop/1.87/
1103
1125
  bug_tracker_uri: https://github.com/rubocop/rubocop/issues
1104
1126
  rubygems_mfa_required: 'true'
1105
1127
  rdoc_options: []