rubocop 1.69.2 → 1.73.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.
Files changed (299) hide show
  1. checksums.yaml +4 -4
  2. data/LICENSE.txt +1 -1
  3. data/README.md +4 -4
  4. data/config/default.yml +90 -13
  5. data/config/internal_affairs.yml +16 -0
  6. data/lib/rubocop/cli/command/execute_runner.rb +3 -3
  7. data/lib/rubocop/cli/command/show_cops.rb +24 -2
  8. data/lib/rubocop/cli/command/suggest_extensions.rb +7 -1
  9. data/lib/rubocop/comment_config.rb +2 -2
  10. data/lib/rubocop/config.rb +17 -4
  11. data/lib/rubocop/config_loader.rb +48 -8
  12. data/lib/rubocop/config_loader_resolver.rb +35 -10
  13. data/lib/rubocop/config_validator.rb +19 -9
  14. data/lib/rubocop/cop/autocorrect_logic.rb +1 -1
  15. data/lib/rubocop/cop/base.rb +6 -0
  16. data/lib/rubocop/cop/bundler/duplicated_gem.rb +1 -1
  17. data/lib/rubocop/cop/bundler/gem_comment.rb +1 -1
  18. data/lib/rubocop/cop/internal_affairs/cop_enabled.rb +85 -0
  19. data/lib/rubocop/cop/internal_affairs/example_description.rb +4 -2
  20. data/lib/rubocop/cop/internal_affairs/location_exists.rb +116 -0
  21. data/lib/rubocop/cop/internal_affairs/location_expression.rb +2 -1
  22. data/lib/rubocop/cop/internal_affairs/node_first_or_last_argument.rb +3 -2
  23. data/lib/rubocop/cop/internal_affairs/node_matcher_directive.rb +1 -1
  24. data/lib/rubocop/cop/internal_affairs/node_pattern_groups/ast_processor.rb +63 -0
  25. data/lib/rubocop/cop/internal_affairs/node_pattern_groups/ast_walker.rb +131 -0
  26. data/lib/rubocop/cop/internal_affairs/node_pattern_groups.rb +229 -0
  27. data/lib/rubocop/cop/internal_affairs/node_type_multiple_predicates.rb +126 -0
  28. data/lib/rubocop/cop/internal_affairs/node_type_predicate.rb +4 -3
  29. data/lib/rubocop/cop/internal_affairs/on_send_without_on_csend.rb +90 -0
  30. data/lib/rubocop/cop/internal_affairs/plugin.rb +33 -0
  31. data/lib/rubocop/cop/internal_affairs/redundant_source_range.rb +3 -1
  32. data/lib/rubocop/cop/internal_affairs/single_line_comparison.rb +5 -4
  33. data/lib/rubocop/cop/internal_affairs/undefined_config.rb +7 -1
  34. data/lib/rubocop/cop/internal_affairs.rb +5 -16
  35. data/lib/rubocop/cop/layout/access_modifier_indentation.rb +1 -1
  36. data/lib/rubocop/cop/layout/argument_alignment.rb +2 -8
  37. data/lib/rubocop/cop/layout/block_alignment.rb +3 -1
  38. data/lib/rubocop/cop/layout/class_structure.rb +9 -9
  39. data/lib/rubocop/cop/layout/closing_parenthesis_indentation.rb +4 -4
  40. data/lib/rubocop/cop/layout/dot_position.rb +1 -1
  41. data/lib/rubocop/cop/layout/else_alignment.rb +2 -2
  42. data/lib/rubocop/cop/layout/empty_line_after_guard_clause.rb +1 -1
  43. data/lib/rubocop/cop/layout/empty_line_between_defs.rb +7 -11
  44. data/lib/rubocop/cop/layout/empty_lines_around_access_modifier.rb +27 -1
  45. data/lib/rubocop/cop/layout/empty_lines_around_exception_handling_keywords.rb +1 -1
  46. data/lib/rubocop/cop/layout/empty_lines_around_method_body.rb +22 -2
  47. data/lib/rubocop/cop/layout/end_alignment.rb +1 -1
  48. data/lib/rubocop/cop/layout/extra_spacing.rb +1 -1
  49. data/lib/rubocop/cop/layout/first_argument_indentation.rb +3 -8
  50. data/lib/rubocop/cop/layout/first_array_element_indentation.rb +2 -7
  51. data/lib/rubocop/cop/layout/first_hash_element_indentation.rb +2 -7
  52. data/lib/rubocop/cop/layout/first_hash_element_line_break.rb +1 -1
  53. data/lib/rubocop/cop/layout/first_parameter_indentation.rb +2 -2
  54. data/lib/rubocop/cop/layout/hash_alignment.rb +6 -4
  55. data/lib/rubocop/cop/layout/heredoc_argument_closing_parenthesis.rb +2 -1
  56. data/lib/rubocop/cop/layout/line_continuation_spacing.rb +7 -1
  57. data/lib/rubocop/cop/layout/line_end_string_concatenation_indentation.rb +2 -2
  58. data/lib/rubocop/cop/layout/line_length.rb +4 -3
  59. data/lib/rubocop/cop/layout/multiline_hash_key_line_breaks.rb +1 -1
  60. data/lib/rubocop/cop/layout/multiline_method_argument_line_breaks.rb +25 -0
  61. data/lib/rubocop/cop/layout/multiline_method_call_brace_layout.rb +1 -0
  62. data/lib/rubocop/cop/layout/multiline_method_call_indentation.rb +4 -4
  63. data/lib/rubocop/cop/layout/redundant_line_break.rb +7 -6
  64. data/lib/rubocop/cop/layout/rescue_ensure_alignment.rb +1 -1
  65. data/lib/rubocop/cop/layout/single_line_block_chain.rb +1 -1
  66. data/lib/rubocop/cop/layout/space_after_colon.rb +2 -2
  67. data/lib/rubocop/cop/layout/space_after_comma.rb +1 -1
  68. data/lib/rubocop/cop/layout/space_after_method_name.rb +1 -1
  69. data/lib/rubocop/cop/layout/space_after_semicolon.rb +1 -1
  70. data/lib/rubocop/cop/layout/space_around_keyword.rb +1 -0
  71. data/lib/rubocop/cop/layout/space_around_method_call_operator.rb +1 -1
  72. data/lib/rubocop/cop/layout/space_around_operators.rb +3 -3
  73. data/lib/rubocop/cop/layout/space_before_comma.rb +1 -1
  74. data/lib/rubocop/cop/layout/space_before_semicolon.rb +1 -1
  75. data/lib/rubocop/cop/layout/trailing_whitespace.rb +5 -3
  76. data/lib/rubocop/cop/lint/ambiguous_block_association.rb +1 -1
  77. data/lib/rubocop/cop/lint/array_literal_in_regexp.rb +119 -0
  78. data/lib/rubocop/cop/lint/assignment_in_condition.rb +1 -3
  79. data/lib/rubocop/cop/lint/binary_operator_with_identical_operands.rb +1 -1
  80. data/lib/rubocop/cop/lint/constant_definition_in_block.rb +3 -3
  81. data/lib/rubocop/cop/lint/constant_reassignment.rb +148 -0
  82. data/lib/rubocop/cop/lint/cop_directive_syntax.rb +84 -0
  83. data/lib/rubocop/cop/lint/debugger.rb +1 -1
  84. data/lib/rubocop/cop/lint/duplicate_match_pattern.rb +1 -1
  85. data/lib/rubocop/cop/lint/duplicate_methods.rb +0 -14
  86. data/lib/rubocop/cop/lint/duplicate_regexp_character_class_element.rb +1 -1
  87. data/lib/rubocop/cop/lint/duplicate_set_element.rb +20 -7
  88. data/lib/rubocop/cop/lint/empty_conditional_body.rb +10 -5
  89. data/lib/rubocop/cop/lint/empty_expression.rb +0 -2
  90. data/lib/rubocop/cop/lint/float_comparison.rb +6 -8
  91. data/lib/rubocop/cop/lint/float_out_of_range.rb +1 -1
  92. data/lib/rubocop/cop/lint/format_parameter_mismatch.rb +2 -2
  93. data/lib/rubocop/cop/lint/implicit_string_concatenation.rb +1 -1
  94. data/lib/rubocop/cop/lint/literal_as_condition.rb +99 -9
  95. data/lib/rubocop/cop/lint/literal_in_interpolation.rb +24 -6
  96. data/lib/rubocop/cop/lint/missing_super.rb +2 -2
  97. data/lib/rubocop/cop/lint/mixed_case_range.rb +3 -3
  98. data/lib/rubocop/cop/lint/mixed_regexp_capture_types.rb +1 -1
  99. data/lib/rubocop/cop/lint/nested_method_definition.rb +8 -4
  100. data/lib/rubocop/cop/lint/next_without_accumulator.rb +1 -1
  101. data/lib/rubocop/cop/lint/non_atomic_file_operation.rb +4 -3
  102. data/lib/rubocop/cop/lint/non_local_exit_from_iterator.rb +1 -1
  103. data/lib/rubocop/cop/lint/numeric_operation_with_constant_result.rb +18 -31
  104. data/lib/rubocop/cop/lint/out_of_range_regexp_ref.rb +2 -1
  105. data/lib/rubocop/cop/lint/parentheses_as_grouped_expression.rb +1 -5
  106. data/lib/rubocop/cop/lint/redundant_regexp_quantifiers.rb +1 -1
  107. data/lib/rubocop/cop/lint/redundant_require_statement.rb +0 -21
  108. data/lib/rubocop/cop/lint/redundant_string_coercion.rb +2 -2
  109. data/lib/rubocop/cop/lint/redundant_type_conversion.rb +252 -0
  110. data/lib/rubocop/cop/lint/rescue_exception.rb +1 -1
  111. data/lib/rubocop/cop/lint/safe_navigation_chain.rb +8 -1
  112. data/lib/rubocop/cop/lint/shared_mutable_default.rb +65 -0
  113. data/lib/rubocop/cop/lint/suppressed_exception.rb +1 -1
  114. data/lib/rubocop/cop/lint/suppressed_exception_in_number_conversion.rb +111 -0
  115. data/lib/rubocop/cop/lint/symbol_conversion.rb +1 -1
  116. data/lib/rubocop/cop/lint/syntax.rb +4 -1
  117. data/lib/rubocop/cop/lint/unescaped_bracket_in_regexp.rb +1 -4
  118. data/lib/rubocop/cop/lint/unexpected_block_arity.rb +1 -1
  119. data/lib/rubocop/cop/lint/unmodified_reduce_accumulator.rb +1 -1
  120. data/lib/rubocop/cop/lint/unreachable_code.rb +1 -1
  121. data/lib/rubocop/cop/lint/unreachable_loop.rb +1 -1
  122. data/lib/rubocop/cop/lint/useless_access_modifier.rb +4 -4
  123. data/lib/rubocop/cop/lint/useless_assignment.rb +1 -1
  124. data/lib/rubocop/cop/lint/useless_constant_scoping.rb +80 -0
  125. data/lib/rubocop/cop/lint/useless_method_definition.rb +1 -1
  126. data/lib/rubocop/cop/lint/useless_numeric_operation.rb +2 -1
  127. data/lib/rubocop/cop/lint/useless_ruby2_keywords.rb +2 -2
  128. data/lib/rubocop/cop/lint/void.rb +11 -9
  129. data/lib/rubocop/cop/metrics/block_nesting.rb +1 -1
  130. data/lib/rubocop/cop/metrics/collection_literal_length.rb +7 -0
  131. data/lib/rubocop/cop/metrics/cyclomatic_complexity.rb +1 -1
  132. data/lib/rubocop/cop/metrics/method_length.rb +8 -1
  133. data/lib/rubocop/cop/metrics/module_length.rb +1 -1
  134. data/lib/rubocop/cop/metrics/perceived_complexity.rb +1 -1
  135. data/lib/rubocop/cop/metrics/utils/repeated_attribute_discount.rb +7 -7
  136. data/lib/rubocop/cop/mixin/alignment.rb +2 -2
  137. data/lib/rubocop/cop/mixin/allowed_pattern.rb +4 -4
  138. data/lib/rubocop/cop/mixin/check_line_breakable.rb +11 -11
  139. data/lib/rubocop/cop/mixin/comments_help.rb +4 -2
  140. data/lib/rubocop/cop/mixin/dig_help.rb +1 -1
  141. data/lib/rubocop/cop/mixin/frozen_string_literal.rb +1 -1
  142. data/lib/rubocop/cop/mixin/hash_shorthand_syntax.rb +22 -22
  143. data/lib/rubocop/cop/mixin/hash_subset.rb +203 -0
  144. data/lib/rubocop/cop/mixin/hash_transform_method.rb +74 -74
  145. data/lib/rubocop/cop/mixin/method_complexity.rb +1 -1
  146. data/lib/rubocop/cop/mixin/percent_literal.rb +1 -1
  147. data/lib/rubocop/cop/mixin/preceding_following_alignment.rb +48 -24
  148. data/lib/rubocop/cop/mixin/range_help.rb +3 -3
  149. data/lib/rubocop/cop/mixin/space_before_punctuation.rb +1 -1
  150. data/lib/rubocop/cop/mixin/statement_modifier.rb +8 -3
  151. data/lib/rubocop/cop/mixin/string_help.rb +2 -2
  152. data/lib/rubocop/cop/mixin/string_literals_help.rb +1 -1
  153. data/lib/rubocop/cop/mixin/trailing_comma.rb +15 -3
  154. data/lib/rubocop/cop/naming/block_forwarding.rb +19 -15
  155. data/lib/rubocop/cop/naming/predicate_name.rb +44 -0
  156. data/lib/rubocop/cop/naming/rescued_exceptions_variable_name.rb +3 -3
  157. data/lib/rubocop/cop/naming/variable_name.rb +64 -6
  158. data/lib/rubocop/cop/security/compound_hash.rb +1 -0
  159. data/lib/rubocop/cop/style/access_modifier_declarations.rb +34 -5
  160. data/lib/rubocop/cop/style/accessor_grouping.rb +19 -5
  161. data/lib/rubocop/cop/style/and_or.rb +1 -1
  162. data/lib/rubocop/cop/style/arguments_forwarding.rb +39 -23
  163. data/lib/rubocop/cop/style/array_first_last.rb +18 -2
  164. data/lib/rubocop/cop/style/block_delimiters.rb +7 -20
  165. data/lib/rubocop/cop/style/class_and_module_children.rb +6 -3
  166. data/lib/rubocop/cop/style/collection_methods.rb +1 -1
  167. data/lib/rubocop/cop/style/combinable_defined.rb +1 -1
  168. data/lib/rubocop/cop/style/combinable_loops.rb +2 -2
  169. data/lib/rubocop/cop/style/commented_keyword.rb +1 -1
  170. data/lib/rubocop/cop/style/concat_array_literals.rb +1 -1
  171. data/lib/rubocop/cop/style/conditional_assignment.rb +6 -4
  172. data/lib/rubocop/cop/style/documentation.rb +1 -1
  173. data/lib/rubocop/cop/style/double_negation.rb +3 -3
  174. data/lib/rubocop/cop/style/each_for_simple_loop.rb +4 -7
  175. data/lib/rubocop/cop/style/each_with_object.rb +2 -3
  176. data/lib/rubocop/cop/style/empty_else.rb +4 -2
  177. data/lib/rubocop/cop/style/empty_literal.rb +1 -1
  178. data/lib/rubocop/cop/style/empty_method.rb +1 -1
  179. data/lib/rubocop/cop/style/endless_method.rb +163 -18
  180. data/lib/rubocop/cop/style/eval_with_location.rb +1 -1
  181. data/lib/rubocop/cop/style/exact_regexp_match.rb +3 -10
  182. data/lib/rubocop/cop/style/explicit_block_argument.rb +15 -2
  183. data/lib/rubocop/cop/style/exponential_notation.rb +1 -1
  184. data/lib/rubocop/cop/style/fetch_env_var.rb +1 -1
  185. data/lib/rubocop/cop/style/float_division.rb +8 -4
  186. data/lib/rubocop/cop/style/frozen_string_literal_comment.rb +1 -1
  187. data/lib/rubocop/cop/style/hash_each_methods.rb +3 -6
  188. data/lib/rubocop/cop/style/hash_except.rb +24 -148
  189. data/lib/rubocop/cop/style/hash_slice.rb +80 -0
  190. data/lib/rubocop/cop/style/hash_syntax.rb +6 -3
  191. data/lib/rubocop/cop/style/identical_conditional_branches.rb +22 -3
  192. data/lib/rubocop/cop/style/if_unless_modifier.rb +3 -3
  193. data/lib/rubocop/cop/style/if_with_boolean_literal_branches.rb +1 -1
  194. data/lib/rubocop/cop/style/if_with_semicolon.rb +2 -2
  195. data/lib/rubocop/cop/style/infinite_loop.rb +1 -1
  196. data/lib/rubocop/cop/style/inverse_methods.rb +6 -6
  197. data/lib/rubocop/cop/style/it_assignment.rb +36 -0
  198. data/lib/rubocop/cop/style/keyword_parameters_order.rb +1 -1
  199. data/lib/rubocop/cop/style/line_end_concatenation.rb +10 -4
  200. data/lib/rubocop/cop/style/map_into_array.rb +1 -1
  201. data/lib/rubocop/cop/style/map_to_hash.rb +1 -1
  202. data/lib/rubocop/cop/style/map_to_set.rb +3 -2
  203. data/lib/rubocop/cop/style/method_call_with_args_parentheses/omit_parentheses.rb +19 -12
  204. data/lib/rubocop/cop/style/method_call_with_args_parentheses.rb +2 -0
  205. data/lib/rubocop/cop/style/method_call_without_args_parentheses.rb +2 -1
  206. data/lib/rubocop/cop/style/method_called_on_do_end_block.rb +2 -4
  207. data/lib/rubocop/cop/style/method_def_parentheses.rb +1 -1
  208. data/lib/rubocop/cop/style/missing_else.rb +2 -0
  209. data/lib/rubocop/cop/style/multiline_block_chain.rb +1 -1
  210. data/lib/rubocop/cop/style/multiple_comparison.rb +26 -20
  211. data/lib/rubocop/cop/style/mutable_constant.rb +3 -3
  212. data/lib/rubocop/cop/style/negated_if_else_condition.rb +1 -1
  213. data/lib/rubocop/cop/style/nested_parenthesized_calls.rb +1 -1
  214. data/lib/rubocop/cop/style/object_then.rb +13 -15
  215. data/lib/rubocop/cop/style/open_struct_use.rb +5 -5
  216. data/lib/rubocop/cop/style/parallel_assignment.rb +1 -5
  217. data/lib/rubocop/cop/style/parentheses_around_condition.rb +2 -2
  218. data/lib/rubocop/cop/style/percent_literal_delimiters.rb +1 -1
  219. data/lib/rubocop/cop/style/proc.rb +1 -2
  220. data/lib/rubocop/cop/style/quoted_symbols.rb +1 -1
  221. data/lib/rubocop/cop/style/raise_args.rb +6 -4
  222. data/lib/rubocop/cop/style/random_with_offset.rb +3 -3
  223. data/lib/rubocop/cop/style/redundant_begin.rb +1 -1
  224. data/lib/rubocop/cop/style/redundant_condition.rb +48 -2
  225. data/lib/rubocop/cop/style/redundant_current_directory_in_path.rb +2 -1
  226. data/lib/rubocop/cop/style/redundant_double_splat_hash_braces.rb +6 -10
  227. data/lib/rubocop/cop/style/redundant_each.rb +1 -1
  228. data/lib/rubocop/cop/style/redundant_exception.rb +2 -2
  229. data/lib/rubocop/cop/style/redundant_format.rb +250 -0
  230. data/lib/rubocop/cop/style/redundant_freeze.rb +2 -2
  231. data/lib/rubocop/cop/style/redundant_initialize.rb +12 -3
  232. data/lib/rubocop/cop/style/redundant_line_continuation.rb +34 -13
  233. data/lib/rubocop/cop/style/redundant_parentheses.rb +28 -14
  234. data/lib/rubocop/cop/style/redundant_regexp_argument.rb +3 -0
  235. data/lib/rubocop/cop/style/redundant_regexp_character_class.rb +1 -1
  236. data/lib/rubocop/cop/style/redundant_regexp_escape.rb +1 -1
  237. data/lib/rubocop/cop/style/redundant_self_assignment.rb +14 -28
  238. data/lib/rubocop/cop/style/redundant_sort.rb +2 -2
  239. data/lib/rubocop/cop/style/redundant_string_escape.rb +2 -2
  240. data/lib/rubocop/cop/style/return_nil.rb +1 -1
  241. data/lib/rubocop/cop/style/safe_navigation.rb +2 -2
  242. data/lib/rubocop/cop/style/semicolon.rb +1 -1
  243. data/lib/rubocop/cop/style/send_with_literal_method_name.rb +2 -1
  244. data/lib/rubocop/cop/style/single_line_block_params.rb +1 -1
  245. data/lib/rubocop/cop/style/single_line_do_end_block.rb +1 -2
  246. data/lib/rubocop/cop/style/single_line_methods.rb +6 -7
  247. data/lib/rubocop/cop/style/slicing_with_range.rb +40 -11
  248. data/lib/rubocop/cop/style/sole_nested_conditional.rb +2 -2
  249. data/lib/rubocop/cop/style/string_concatenation.rb +2 -2
  250. data/lib/rubocop/cop/style/string_literals.rb +1 -1
  251. data/lib/rubocop/cop/style/string_methods.rb +1 -1
  252. data/lib/rubocop/cop/style/super_arguments.rb +65 -17
  253. data/lib/rubocop/cop/style/ternary_parentheses.rb +1 -1
  254. data/lib/rubocop/cop/style/top_level_method_definition.rb +1 -1
  255. data/lib/rubocop/cop/style/trailing_comma_in_arguments.rb +4 -1
  256. data/lib/rubocop/cop/style/trailing_comma_in_array_literal.rb +47 -6
  257. data/lib/rubocop/cop/style/trailing_comma_in_hash_literal.rb +48 -6
  258. data/lib/rubocop/cop/style/trivial_accessors.rb +1 -1
  259. data/lib/rubocop/cop/style/while_until_modifier.rb +0 -1
  260. data/lib/rubocop/cop/style/yoda_condition.rb +8 -4
  261. data/lib/rubocop/cop/style/yoda_expression.rb +2 -1
  262. data/lib/rubocop/cop/util.rb +12 -5
  263. data/lib/rubocop/cop/utils/format_string.rb +7 -5
  264. data/lib/rubocop/cop/variable_force/variable.rb +14 -2
  265. data/lib/rubocop/cop/variable_force/variable_table.rb +3 -3
  266. data/lib/rubocop/cops_documentation_generator.rb +25 -14
  267. data/lib/rubocop/directive_comment.rb +44 -10
  268. data/lib/rubocop/formatter/formatter_set.rb +1 -1
  269. data/lib/rubocop/lsp/diagnostic.rb +189 -0
  270. data/lib/rubocop/lsp/logger.rb +2 -2
  271. data/lib/rubocop/lsp/routes.rb +7 -23
  272. data/lib/rubocop/lsp/runtime.rb +17 -49
  273. data/lib/rubocop/lsp/server.rb +0 -2
  274. data/lib/rubocop/lsp/stdin_runner.rb +83 -0
  275. data/lib/rubocop/options.rb +28 -12
  276. data/lib/rubocop/path_util.rb +15 -8
  277. data/lib/rubocop/plugin/configuration_integrator.rb +143 -0
  278. data/lib/rubocop/plugin/load_error.rb +26 -0
  279. data/lib/rubocop/plugin/loader.rb +100 -0
  280. data/lib/rubocop/plugin/not_supported_error.rb +29 -0
  281. data/lib/rubocop/plugin.rb +46 -0
  282. data/lib/rubocop/rake_task.rb +4 -1
  283. data/lib/rubocop/result_cache.rb +13 -13
  284. data/lib/rubocop/rspec/cop_helper.rb +9 -0
  285. data/lib/rubocop/rspec/expect_offense.rb +6 -2
  286. data/lib/rubocop/rspec/shared_contexts.rb +19 -1
  287. data/lib/rubocop/rspec/support.rb +2 -2
  288. data/lib/rubocop/runner.rb +5 -6
  289. data/lib/rubocop/server/cache.rb +35 -2
  290. data/lib/rubocop/server/cli.rb +2 -2
  291. data/lib/rubocop/target_finder.rb +1 -0
  292. data/lib/rubocop/target_ruby.rb +15 -0
  293. data/lib/rubocop/version.rb +17 -2
  294. data/lib/rubocop.rb +11 -1
  295. data/lib/ruby_lsp/rubocop/addon.rb +75 -0
  296. data/lib/ruby_lsp/rubocop/runtime_adapter.rb +47 -0
  297. metadata +53 -16
  298. data/lib/rubocop/cop/utils/regexp_ranges.rb +0 -113
  299. data/lib/rubocop/rspec/host_environment_simulation_helper.rb +0 -28
@@ -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') }
@@ -127,6 +127,7 @@ module RuboCop
127
127
  if mode == :only_recognized_file_types || force_exclusion?
128
128
  files.select! { |file| included_file?(file) }
129
129
  end
130
+ files.reject! { |file| FileTest.directory?(file) }
130
131
 
131
132
  force_exclusion? ? without_excluded(files) : files
132
133
  end
@@ -34,6 +34,20 @@ module RuboCop
34
34
  end
35
35
  end
36
36
 
37
+ # The target ruby version may be configured by setting the
38
+ # `RUBOCOP_TARGET_RUBY_VERSION` environment variable.
39
+ class RuboCopEnvVar < Source
40
+ def name
41
+ '`RUBOCOP_TARGET_RUBY_VERSION` environment variable'
42
+ end
43
+
44
+ private
45
+
46
+ def find_version
47
+ ENV.fetch('RUBOCOP_TARGET_RUBY_VERSION', nil)&.to_f
48
+ end
49
+ end
50
+
37
51
  # The target ruby version may be configured in RuboCop's config.
38
52
  # @api private
39
53
  class RuboCopConfig < Source
@@ -246,6 +260,7 @@ module RuboCop
246
260
  end
247
261
 
248
262
  SOURCES = [
263
+ RuboCopEnvVar,
249
264
  RuboCopConfig,
250
265
  GemspecFile,
251
266
  RubyVersionFile,
@@ -3,7 +3,7 @@
3
3
  module RuboCop
4
4
  # This module holds the RuboCop version information.
5
5
  module Version
6
- STRING = '1.69.2'
6
+ STRING = '1.73.1'
7
7
 
8
8
  MSG = '%<version>s (using %<parser_version>s, ' \
9
9
  'rubocop-ast %<rubocop_ast_version>s, ' \
@@ -63,9 +63,21 @@ module RuboCop
63
63
  end
64
64
 
65
65
  # @api private
66
+ # rubocop:disable Metrics/AbcSize, Metrics/CyclomaticComplexity, Metrics/MethodLength, Metrics/PerceivedComplexity
66
67
  def self.extension_versions(env)
68
+ plugins = config_for_pwd(env).loaded_plugins
69
+ plugin_versions = plugins.filter_map do |plugin|
70
+ next if Plugin::BUILTIN_INTERNAL_PLUGINS.key?(plugin.about.name)
71
+ next unless (plugin_name = plugin.about.name)
72
+
73
+ " - #{plugin_name} #{plugin.about.version}"
74
+ end
75
+
76
+ # TODO: It needs to be maintained for a while to ensure compatibility with extensions that
77
+ # don't support plugins. It should be removed in future once the old style becomes obsolete.
67
78
  features = config_for_pwd(env).loaded_features.sort
68
- features.filter_map do |loaded_feature|
79
+ features -= plugins.map { |plugin| plugin.about.name }
80
+ feature_versions = features.filter_map do |loaded_feature|
69
81
  next unless (match = loaded_feature.match(/rubocop-(?<feature>.*)/))
70
82
 
71
83
  # Get the expected name of the folder containing the extension code.
@@ -84,7 +96,10 @@ module RuboCop
84
96
 
85
97
  " - #{loaded_feature} #{feature_version}"
86
98
  end
99
+
100
+ plugin_versions + feature_versions
87
101
  end
102
+ # rubocop:enable Metrics/AbcSize, Metrics/CyclomaticComplexity, Metrics/MethodLength, Metrics/PerceivedComplexity
88
103
 
89
104
  # @api private
90
105
  def self.target_ruby_version(env)
data/lib/rubocop.rb CHANGED
@@ -100,6 +100,7 @@ require_relative 'rubocop/cop/mixin/frozen_string_literal'
100
100
  require_relative 'rubocop/cop/mixin/gem_declaration'
101
101
  require_relative 'rubocop/cop/mixin/gemspec_help'
102
102
  require_relative 'rubocop/cop/mixin/hash_alignment_styles'
103
+ require_relative 'rubocop/cop/mixin/hash_subset'
103
104
  require_relative 'rubocop/cop/mixin/hash_transform_method'
104
105
  require_relative 'rubocop/cop/mixin/integer_node'
105
106
  require_relative 'rubocop/cop/mixin/interpolation'
@@ -147,7 +148,6 @@ require_relative 'rubocop/cop/mixin/comments_help' # relies on visibility_help
147
148
  require_relative 'rubocop/cop/mixin/def_node' # relies on visibility_help
148
149
 
149
150
  require_relative 'rubocop/cop/utils/format_string'
150
- require_relative 'rubocop/cop/utils/regexp_ranges'
151
151
 
152
152
  require_relative 'rubocop/cop/migration/department_name'
153
153
 
@@ -293,6 +293,7 @@ require_relative 'rubocop/cop/lint/ambiguous_operator'
293
293
  require_relative 'rubocop/cop/lint/ambiguous_operator_precedence'
294
294
  require_relative 'rubocop/cop/lint/ambiguous_range'
295
295
  require_relative 'rubocop/cop/lint/ambiguous_regexp_literal'
296
+ require_relative 'rubocop/cop/lint/array_literal_in_regexp'
296
297
  require_relative 'rubocop/cop/lint/assignment_in_condition'
297
298
  require_relative 'rubocop/cop/lint/big_decimal_new'
298
299
  require_relative 'rubocop/cop/lint/binary_operator_with_identical_operands'
@@ -300,7 +301,9 @@ require_relative 'rubocop/cop/lint/boolean_symbol'
300
301
  require_relative 'rubocop/cop/lint/circular_argument_reference'
301
302
  require_relative 'rubocop/cop/lint/constant_definition_in_block'
302
303
  require_relative 'rubocop/cop/lint/constant_overwritten_in_rescue'
304
+ require_relative 'rubocop/cop/lint/constant_reassignment'
303
305
  require_relative 'rubocop/cop/lint/constant_resolution'
306
+ require_relative 'rubocop/cop/lint/cop_directive_syntax'
304
307
  require_relative 'rubocop/cop/lint/debugger'
305
308
  require_relative 'rubocop/cop/lint/deprecated_class_methods'
306
309
  require_relative 'rubocop/cop/lint/deprecated_constants'
@@ -329,6 +332,7 @@ require_relative 'rubocop/cop/lint/empty_in_pattern'
329
332
  require_relative 'rubocop/cop/lint/empty_interpolation'
330
333
  require_relative 'rubocop/cop/lint/empty_when'
331
334
  require_relative 'rubocop/cop/lint/ensure_return'
335
+ require_relative 'rubocop/cop/lint/shared_mutable_default'
332
336
  require_relative 'rubocop/cop/lint/erb_new_arguments'
333
337
  require_relative 'rubocop/cop/lint/flip_flop'
334
338
  require_relative 'rubocop/cop/lint/float_comparison'
@@ -380,6 +384,7 @@ require_relative 'rubocop/cop/lint/redundant_require_statement'
380
384
  require_relative 'rubocop/cop/lint/redundant_safe_navigation'
381
385
  require_relative 'rubocop/cop/lint/redundant_splat_expansion'
382
386
  require_relative 'rubocop/cop/lint/redundant_string_coercion'
387
+ require_relative 'rubocop/cop/lint/redundant_type_conversion'
383
388
  require_relative 'rubocop/cop/lint/redundant_with_index'
384
389
  require_relative 'rubocop/cop/lint/redundant_with_object'
385
390
  require_relative 'rubocop/cop/lint/refinement_import_methods'
@@ -401,6 +406,7 @@ require_relative 'rubocop/cop/lint/shadowed_exception'
401
406
  require_relative 'rubocop/cop/lint/shadowing_outer_local_variable'
402
407
  require_relative 'rubocop/cop/lint/struct_new_override'
403
408
  require_relative 'rubocop/cop/lint/suppressed_exception'
409
+ require_relative 'rubocop/cop/lint/suppressed_exception_in_number_conversion'
404
410
  require_relative 'rubocop/cop/lint/symbol_conversion'
405
411
  require_relative 'rubocop/cop/lint/syntax'
406
412
  require_relative 'rubocop/cop/lint/to_enum_arguments'
@@ -421,6 +427,7 @@ require_relative 'rubocop/cop/lint/uri_escape_unescape'
421
427
  require_relative 'rubocop/cop/lint/uri_regexp'
422
428
  require_relative 'rubocop/cop/lint/useless_access_modifier'
423
429
  require_relative 'rubocop/cop/lint/useless_assignment'
430
+ require_relative 'rubocop/cop/lint/useless_constant_scoping'
424
431
  require_relative 'rubocop/cop/lint/useless_defined'
425
432
  require_relative 'rubocop/cop/lint/useless_else_without_rescue'
426
433
  require_relative 'rubocop/cop/lint/useless_method_definition'
@@ -557,6 +564,7 @@ require_relative 'rubocop/cop/style/hash_conversion'
557
564
  require_relative 'rubocop/cop/style/hash_each_methods'
558
565
  require_relative 'rubocop/cop/style/hash_except'
559
566
  require_relative 'rubocop/cop/style/hash_like_case'
567
+ require_relative 'rubocop/cop/style/hash_slice'
560
568
  require_relative 'rubocop/cop/style/hash_syntax'
561
569
  require_relative 'rubocop/cop/style/hash_transform_keys'
562
570
  require_relative 'rubocop/cop/style/hash_transform_values'
@@ -573,6 +581,7 @@ require_relative 'rubocop/cop/style/inverse_methods'
573
581
  require_relative 'rubocop/cop/style/inline_comment'
574
582
  require_relative 'rubocop/cop/style/invertible_unless_condition'
575
583
  require_relative 'rubocop/cop/style/ip_addresses'
584
+ require_relative 'rubocop/cop/style/it_assignment'
576
585
  require_relative 'rubocop/cop/style/keyword_arguments_merging'
577
586
  require_relative 'rubocop/cop/style/keyword_parameters_order'
578
587
  require_relative 'rubocop/cop/style/lambda'
@@ -598,6 +607,7 @@ require_relative 'rubocop/cop/style/redundant_each'
598
607
  require_relative 'rubocop/cop/style/redundant_fetch_block'
599
608
  require_relative 'rubocop/cop/style/redundant_file_extension_in_require'
600
609
  require_relative 'rubocop/cop/style/redundant_filter_chain'
610
+ require_relative 'rubocop/cop/style/redundant_format'
601
611
  require_relative 'rubocop/cop/style/redundant_heredoc_delimiter_quotes'
602
612
  require_relative 'rubocop/cop/style/redundant_initialize'
603
613
  require_relative 'rubocop/cop/style/redundant_interpolation_unfreeze'
@@ -0,0 +1,75 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative '../../rubocop'
4
+ require_relative '../../rubocop/lsp/logger'
5
+ require_relative 'runtime_adapter'
6
+
7
+ module RubyLsp
8
+ module RuboCop
9
+ # A Ruby LSP add-on for RuboCop.
10
+ class Addon < RubyLsp::Addon
11
+ def initializer
12
+ @runtime_adapter = nil
13
+ end
14
+
15
+ def name
16
+ 'RuboCop'
17
+ end
18
+
19
+ def activate(global_state, message_queue)
20
+ ::RuboCop::LSP::Logger.log(
21
+ "Activating RuboCop LSP addon #{::RuboCop::Version::STRING}.", prefix: '[RuboCop]'
22
+ )
23
+
24
+ @runtime_adapter = RuntimeAdapter.new
25
+ global_state.register_formatter('rubocop', @runtime_adapter)
26
+ register_additional_file_watchers(global_state, message_queue)
27
+
28
+ ::RuboCop::LSP::Logger.log(
29
+ "Initialized RuboCop LSP addon #{::RuboCop::Version::STRING}.", prefix: '[RuboCop]'
30
+ )
31
+ end
32
+
33
+ def deactivate
34
+ @runtime_adapter = nil
35
+ end
36
+
37
+ # rubocop:disable Layout/LineLength, Metrics/MethodLength
38
+ def register_additional_file_watchers(global_state, message_queue)
39
+ return unless global_state.supports_watching_files
40
+
41
+ message_queue << Request.new(
42
+ id: 'rubocop-file-watcher',
43
+ method: 'client/registerCapability',
44
+ params: Interface::RegistrationParams.new(
45
+ registrations: [
46
+ Interface::Registration.new(
47
+ id: 'workspace/didChangeWatchedFilesRuboCop',
48
+ method: 'workspace/didChangeWatchedFiles',
49
+ register_options: Interface::DidChangeWatchedFilesRegistrationOptions.new(
50
+ watchers: [
51
+ Interface::FileSystemWatcher.new(
52
+ glob_pattern: '**/.rubocop{,_todo}.yml',
53
+ kind: Constant::WatchKind::CREATE | Constant::WatchKind::CHANGE | Constant::WatchKind::DELETE
54
+ )
55
+ ]
56
+ )
57
+ )
58
+ ]
59
+ )
60
+ )
61
+ end
62
+ # rubocop:enable Layout/LineLength, Metrics/MethodLength
63
+
64
+ def workspace_did_change_watched_files(changes)
65
+ return unless changes.any? { |change| change[:uri].end_with?('.rubocop.yml') }
66
+
67
+ @runtime_adapter = RuntimeAdapter.new
68
+
69
+ ::RuboCop::LSP::Logger.log(<<~MESSAGE, prefix: '[RuboCop]')
70
+ Re-initialized RuboCop LSP addon #{::RuboCop::Version::STRING} due to .rubocop.yml file change.
71
+ MESSAGE
72
+ end
73
+ end
74
+ end
75
+ end
@@ -0,0 +1,47 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative '../../rubocop/lsp/runtime'
4
+
5
+ module RubyLsp
6
+ module RuboCop
7
+ # Provides an adapter to bridge RuboCop's built-in LSP runtime with Ruby LSP's add-on.
8
+ # @api private
9
+ class RuntimeAdapter
10
+ include RubyLsp::Requests::Support::Formatter
11
+
12
+ def initialize
13
+ config_store = ::RuboCop::ConfigStore.new
14
+
15
+ @runtime = ::RuboCop::LSP::Runtime.new(config_store)
16
+ end
17
+
18
+ def run_diagnostic(uri, document)
19
+ @runtime.offenses(uri_to_path(uri), document.source, document.encoding)
20
+ end
21
+
22
+ def run_formatting(uri, document)
23
+ @runtime.format(uri_to_path(uri), document.source, command: 'rubocop.formatAutocorrects')
24
+ end
25
+
26
+ def run_range_formatting(_uri, _partial_source, _base_indentation)
27
+ # Not yet supported. Should return the formatted version of `partial_source` which is
28
+ # a partial selection of the entire document. For example, it should not try to add
29
+ # a frozen_string_literal magic comment and all style corrections should start from
30
+ # the `base_indentation`.
31
+ nil
32
+ end
33
+
34
+ private
35
+
36
+ # duplicated from: lib/standard/lsp/routes.rb
37
+ # modified to incorporate Ruby LSP's to_standardized_path method
38
+ def uri_to_path(uri)
39
+ if uri.respond_to?(:to_standardized_path) && (standardized_path = uri.to_standardized_path)
40
+ standardized_path
41
+ else
42
+ uri.to_s.delete_prefix('file://')
43
+ end
44
+ end
45
+ end
46
+ end
47
+ end
metadata CHANGED
@@ -1,16 +1,15 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rubocop
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.69.2
4
+ version: 1.73.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Bozhidar Batsov
8
8
  - Jonas Arvidsson
9
9
  - Yuji Nakayama
10
- autorequire:
11
10
  bindir: exe
12
11
  cert_chain: []
13
- date: 2024-12-12 00:00:00.000000000 Z
12
+ date: 2025-02-27 00:00:00.000000000 Z
14
13
  dependencies:
15
14
  - !ruby/object:Gem::Dependency
16
15
  name: json
@@ -30,16 +29,30 @@ dependencies:
30
29
  name: language_server-protocol
31
30
  requirement: !ruby/object:Gem::Requirement
32
31
  requirements:
33
- - - ">="
32
+ - - "~>"
34
33
  - !ruby/object:Gem::Version
35
- version: 3.17.0
34
+ version: 3.17.0.2
36
35
  type: :runtime
37
36
  prerelease: false
38
37
  version_requirements: !ruby/object:Gem::Requirement
39
38
  requirements:
40
- - - ">="
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
+ - - "~>"
41
54
  - !ruby/object:Gem::Version
42
- version: 3.17.0
55
+ version: 1.1.0
43
56
  - !ruby/object:Gem::Dependency
44
57
  name: parallel
45
58
  requirement: !ruby/object:Gem::Requirement
@@ -114,7 +127,7 @@ dependencies:
114
127
  requirements:
115
128
  - - ">="
116
129
  - !ruby/object:Gem::Version
117
- version: 1.36.2
130
+ version: 1.38.0
118
131
  - - "<"
119
132
  - !ruby/object:Gem::Version
120
133
  version: '2.0'
@@ -124,7 +137,7 @@ dependencies:
124
137
  requirements:
125
138
  - - ">="
126
139
  - !ruby/object:Gem::Version
127
- version: 1.36.2
140
+ version: 1.38.0
128
141
  - - "<"
129
142
  - !ruby/object:Gem::Version
130
143
  version: '2.0'
@@ -266,12 +279,14 @@ files:
266
279
  - lib/rubocop/cop/ignored_node.rb
267
280
  - lib/rubocop/cop/internal_affairs.rb
268
281
  - lib/rubocop/cop/internal_affairs/cop_description.rb
282
+ - lib/rubocop/cop/internal_affairs/cop_enabled.rb
269
283
  - lib/rubocop/cop/internal_affairs/create_empty_file.rb
270
284
  - lib/rubocop/cop/internal_affairs/empty_line_between_expect_offense_and_correction.rb
271
285
  - lib/rubocop/cop/internal_affairs/example_description.rb
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
@@ -279,10 +294,16 @@ files:
279
294
  - lib/rubocop/cop/internal_affairs/node_destructuring.rb
280
295
  - lib/rubocop/cop/internal_affairs/node_first_or_last_argument.rb
281
296
  - lib/rubocop/cop/internal_affairs/node_matcher_directive.rb
297
+ - lib/rubocop/cop/internal_affairs/node_pattern_groups.rb
298
+ - lib/rubocop/cop/internal_affairs/node_pattern_groups/ast_processor.rb
299
+ - lib/rubocop/cop/internal_affairs/node_pattern_groups/ast_walker.rb
300
+ - lib/rubocop/cop/internal_affairs/node_type_multiple_predicates.rb
282
301
  - lib/rubocop/cop/internal_affairs/node_type_predicate.rb
283
302
  - lib/rubocop/cop/internal_affairs/numblock_handler.rb
284
303
  - lib/rubocop/cop/internal_affairs/offense_location_keyword.rb
304
+ - lib/rubocop/cop/internal_affairs/on_send_without_on_csend.rb
285
305
  - lib/rubocop/cop/internal_affairs/operator_keyword.rb
306
+ - lib/rubocop/cop/internal_affairs/plugin.rb
286
307
  - lib/rubocop/cop/internal_affairs/processed_source_buffer_name.rb
287
308
  - lib/rubocop/cop/internal_affairs/redundant_context_config_parameter.rb
288
309
  - lib/rubocop/cop/internal_affairs/redundant_described_class_as_subject.rb
@@ -404,6 +425,7 @@ files:
404
425
  - lib/rubocop/cop/lint/ambiguous_operator_precedence.rb
405
426
  - lib/rubocop/cop/lint/ambiguous_range.rb
406
427
  - lib/rubocop/cop/lint/ambiguous_regexp_literal.rb
428
+ - lib/rubocop/cop/lint/array_literal_in_regexp.rb
407
429
  - lib/rubocop/cop/lint/assignment_in_condition.rb
408
430
  - lib/rubocop/cop/lint/big_decimal_new.rb
409
431
  - lib/rubocop/cop/lint/binary_operator_with_identical_operands.rb
@@ -411,7 +433,9 @@ files:
411
433
  - lib/rubocop/cop/lint/circular_argument_reference.rb
412
434
  - lib/rubocop/cop/lint/constant_definition_in_block.rb
413
435
  - lib/rubocop/cop/lint/constant_overwritten_in_rescue.rb
436
+ - lib/rubocop/cop/lint/constant_reassignment.rb
414
437
  - lib/rubocop/cop/lint/constant_resolution.rb
438
+ - lib/rubocop/cop/lint/cop_directive_syntax.rb
415
439
  - lib/rubocop/cop/lint/debugger.rb
416
440
  - lib/rubocop/cop/lint/deprecated_class_methods.rb
417
441
  - lib/rubocop/cop/lint/deprecated_constants.rb
@@ -491,6 +515,7 @@ files:
491
515
  - lib/rubocop/cop/lint/redundant_safe_navigation.rb
492
516
  - lib/rubocop/cop/lint/redundant_splat_expansion.rb
493
517
  - lib/rubocop/cop/lint/redundant_string_coercion.rb
518
+ - lib/rubocop/cop/lint/redundant_type_conversion.rb
494
519
  - lib/rubocop/cop/lint/redundant_with_index.rb
495
520
  - lib/rubocop/cop/lint/redundant_with_object.rb
496
521
  - lib/rubocop/cop/lint/refinement_import_methods.rb
@@ -510,8 +535,10 @@ files:
510
535
  - lib/rubocop/cop/lint/shadowed_argument.rb
511
536
  - lib/rubocop/cop/lint/shadowed_exception.rb
512
537
  - lib/rubocop/cop/lint/shadowing_outer_local_variable.rb
538
+ - lib/rubocop/cop/lint/shared_mutable_default.rb
513
539
  - lib/rubocop/cop/lint/struct_new_override.rb
514
540
  - lib/rubocop/cop/lint/suppressed_exception.rb
541
+ - lib/rubocop/cop/lint/suppressed_exception_in_number_conversion.rb
515
542
  - lib/rubocop/cop/lint/symbol_conversion.rb
516
543
  - lib/rubocop/cop/lint/syntax.rb
517
544
  - lib/rubocop/cop/lint/to_enum_arguments.rb
@@ -532,6 +559,7 @@ files:
532
559
  - lib/rubocop/cop/lint/uri_regexp.rb
533
560
  - lib/rubocop/cop/lint/useless_access_modifier.rb
534
561
  - lib/rubocop/cop/lint/useless_assignment.rb
562
+ - lib/rubocop/cop/lint/useless_constant_scoping.rb
535
563
  - lib/rubocop/cop/lint/useless_defined.rb
536
564
  - lib/rubocop/cop/lint/useless_else_without_rescue.rb
537
565
  - lib/rubocop/cop/lint/useless_method_definition.rb
@@ -592,6 +620,7 @@ files:
592
620
  - lib/rubocop/cop/mixin/gemspec_help.rb
593
621
  - lib/rubocop/cop/mixin/hash_alignment_styles.rb
594
622
  - lib/rubocop/cop/mixin/hash_shorthand_syntax.rb
623
+ - lib/rubocop/cop/mixin/hash_subset.rb
595
624
  - lib/rubocop/cop/mixin/hash_transform_method.rb
596
625
  - lib/rubocop/cop/mixin/heredoc.rb
597
626
  - lib/rubocop/cop/mixin/integer_node.rb
@@ -754,6 +783,7 @@ files:
754
783
  - lib/rubocop/cop/style/hash_each_methods.rb
755
784
  - lib/rubocop/cop/style/hash_except.rb
756
785
  - lib/rubocop/cop/style/hash_like_case.rb
786
+ - lib/rubocop/cop/style/hash_slice.rb
757
787
  - lib/rubocop/cop/style/hash_syntax.rb
758
788
  - lib/rubocop/cop/style/hash_transform_keys.rb
759
789
  - lib/rubocop/cop/style/hash_transform_values.rb
@@ -770,6 +800,7 @@ files:
770
800
  - lib/rubocop/cop/style/inverse_methods.rb
771
801
  - lib/rubocop/cop/style/invertible_unless_condition.rb
772
802
  - lib/rubocop/cop/style/ip_addresses.rb
803
+ - lib/rubocop/cop/style/it_assignment.rb
773
804
  - lib/rubocop/cop/style/keyword_arguments_merging.rb
774
805
  - lib/rubocop/cop/style/keyword_parameters_order.rb
775
806
  - lib/rubocop/cop/style/lambda.rb
@@ -854,6 +885,7 @@ files:
854
885
  - lib/rubocop/cop/style/redundant_fetch_block.rb
855
886
  - lib/rubocop/cop/style/redundant_file_extension_in_require.rb
856
887
  - lib/rubocop/cop/style/redundant_filter_chain.rb
888
+ - lib/rubocop/cop/style/redundant_format.rb
857
889
  - lib/rubocop/cop/style/redundant_freeze.rb
858
890
  - lib/rubocop/cop/style/redundant_heredoc_delimiter_quotes.rb
859
891
  - lib/rubocop/cop/style/redundant_initialize.rb
@@ -939,7 +971,6 @@ files:
939
971
  - lib/rubocop/cop/team.rb
940
972
  - lib/rubocop/cop/util.rb
941
973
  - lib/rubocop/cop/utils/format_string.rb
942
- - lib/rubocop/cop/utils/regexp_ranges.rb
943
974
  - lib/rubocop/cop/variable_force.rb
944
975
  - lib/rubocop/cop/variable_force/assignment.rb
945
976
  - lib/rubocop/cop/variable_force/branch.rb
@@ -985,22 +1016,28 @@ files:
985
1016
  - lib/rubocop/formatter/worst_offenders_formatter.rb
986
1017
  - lib/rubocop/lockfile.rb
987
1018
  - lib/rubocop/lsp.rb
1019
+ - lib/rubocop/lsp/diagnostic.rb
988
1020
  - lib/rubocop/lsp/logger.rb
989
1021
  - lib/rubocop/lsp/routes.rb
990
1022
  - lib/rubocop/lsp/runtime.rb
991
1023
  - lib/rubocop/lsp/server.rb
992
1024
  - lib/rubocop/lsp/severity.rb
1025
+ - lib/rubocop/lsp/stdin_runner.rb
993
1026
  - lib/rubocop/magic_comment.rb
994
1027
  - lib/rubocop/name_similarity.rb
995
1028
  - lib/rubocop/options.rb
996
1029
  - lib/rubocop/path_util.rb
997
1030
  - lib/rubocop/platform.rb
1031
+ - lib/rubocop/plugin.rb
1032
+ - lib/rubocop/plugin/configuration_integrator.rb
1033
+ - lib/rubocop/plugin/load_error.rb
1034
+ - lib/rubocop/plugin/loader.rb
1035
+ - lib/rubocop/plugin/not_supported_error.rb
998
1036
  - lib/rubocop/rake_task.rb
999
1037
  - lib/rubocop/remote_config.rb
1000
1038
  - lib/rubocop/result_cache.rb
1001
1039
  - lib/rubocop/rspec/cop_helper.rb
1002
1040
  - lib/rubocop/rspec/expect_offense.rb
1003
- - lib/rubocop/rspec/host_environment_simulation_helper.rb
1004
1041
  - lib/rubocop/rspec/parallel_formatter.rb
1005
1042
  - lib/rubocop/rspec/shared_contexts.rb
1006
1043
  - lib/rubocop/rspec/support.rb
@@ -1030,17 +1067,18 @@ files:
1030
1067
  - lib/rubocop/version.rb
1031
1068
  - lib/rubocop/warning.rb
1032
1069
  - lib/rubocop/yaml_duplication_checker.rb
1070
+ - lib/ruby_lsp/rubocop/addon.rb
1071
+ - lib/ruby_lsp/rubocop/runtime_adapter.rb
1033
1072
  homepage: https://github.com/rubocop/rubocop
1034
1073
  licenses:
1035
1074
  - MIT
1036
1075
  metadata:
1037
1076
  homepage_uri: https://rubocop.org/
1038
- changelog_uri: https://github.com/rubocop/rubocop/releases/tag/v1.69.2
1077
+ changelog_uri: https://github.com/rubocop/rubocop/releases/tag/v1.73.1
1039
1078
  source_code_uri: https://github.com/rubocop/rubocop/
1040
- documentation_uri: https://docs.rubocop.org/rubocop/1.69/
1079
+ documentation_uri: https://docs.rubocop.org/rubocop/1.73/
1041
1080
  bug_tracker_uri: https://github.com/rubocop/rubocop/issues
1042
1081
  rubygems_mfa_required: 'true'
1043
- post_install_message:
1044
1082
  rdoc_options: []
1045
1083
  require_paths:
1046
1084
  - lib
@@ -1055,8 +1093,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
1055
1093
  - !ruby/object:Gem::Version
1056
1094
  version: '0'
1057
1095
  requirements: []
1058
- rubygems_version: 3.4.22
1059
- signing_key:
1096
+ rubygems_version: 3.6.2
1060
1097
  specification_version: 4
1061
1098
  summary: Automatic Ruby code style checking tool.
1062
1099
  test_files: []
@@ -1,113 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module RuboCop
4
- module Cop
5
- module Utils
6
- # Helper to abstract complexity of building range pairs
7
- # with octal escape reconstruction (needed for regexp_parser < 2.7).
8
- class RegexpRanges
9
- attr_reader :root
10
-
11
- def initialize(root)
12
- @root = root
13
- @compound_token = []
14
- @pairs = []
15
- @populated = false
16
- end
17
-
18
- def compound_token
19
- populate_all unless @populated
20
-
21
- @compound_token
22
- end
23
-
24
- def pairs
25
- populate_all unless @populated
26
-
27
- @pairs
28
- end
29
-
30
- private
31
-
32
- def populate_all
33
- populate(@root)
34
-
35
- # If either bound is a compound the first one is an escape
36
- # and that's all we need to work with.
37
- # If there are any cops that wanted to operate on the compound
38
- # expression we could wrap it with a facade class.
39
- @pairs.map! { |pair| pair.map(&:first) }
40
-
41
- @populated = true
42
- end
43
-
44
- def populate(expr)
45
- expressions = expr.expressions.to_a
46
-
47
- until expressions.empty?
48
- current = expressions.shift
49
-
50
- if escaped_octal?(current)
51
- @compound_token << current
52
- @compound_token.concat(pop_octal_digits(expressions))
53
- # If we have all the digits we can discard.
54
- end
55
-
56
- next unless current.type == :set
57
-
58
- process_set(expressions, current)
59
- @compound_token.clear
60
- end
61
- end
62
-
63
- def process_set(expressions, current)
64
- case current.token
65
- when :range
66
- @pairs << compose_range(expressions, current)
67
- when :character
68
- # Child expressions may include the range we are looking for.
69
- populate(current)
70
- when :intersection
71
- # Each child expression could have child expressions that lead to ranges.
72
- current.expressions.each do |intersected|
73
- populate(intersected)
74
- end
75
- end
76
- end
77
-
78
- def compose_range(expressions, current)
79
- range_start, range_end = current.expressions
80
- range_start = if @compound_token.size.between?(1, 2) && octal_digit?(range_start.text)
81
- @compound_token.dup << range_start
82
- else
83
- [range_start]
84
- end
85
- range_end = [range_end]
86
- range_end.concat(pop_octal_digits(expressions)) if escaped_octal?(range_end.first)
87
- [range_start, range_end]
88
- end
89
-
90
- def escaped_octal?(expr)
91
- expr.text.valid_encoding? && expr.text =~ /^\\[0-7]$/
92
- end
93
-
94
- def octal_digit?(char)
95
- ('0'..'7').cover?(char)
96
- end
97
-
98
- def pop_octal_digits(expressions)
99
- digits = []
100
-
101
- 2.times do
102
- next unless (next_child = expressions.first)
103
- next unless next_child.type == :literal && next_child.text =~ /^[0-7]$/
104
-
105
- digits << expressions.shift
106
- end
107
-
108
- digits
109
- end
110
- end
111
- end
112
- end
113
- end