rubocop 1.69.2 → 1.75.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 (349) hide show
  1. checksums.yaml +4 -4
  2. data/LICENSE.txt +1 -1
  3. data/README.md +4 -4
  4. data/config/default.yml +154 -23
  5. data/config/internal_affairs.yml +20 -0
  6. data/config/obsoletion.yml +3 -1
  7. data/lib/rubocop/cli/command/execute_runner.rb +3 -3
  8. data/lib/rubocop/cli/command/show_cops.rb +24 -2
  9. data/lib/rubocop/cli/command/suggest_extensions.rb +7 -1
  10. data/lib/rubocop/cli.rb +1 -1
  11. data/lib/rubocop/comment_config.rb +2 -2
  12. data/lib/rubocop/config.rb +52 -10
  13. data/lib/rubocop/config_loader.rb +52 -9
  14. data/lib/rubocop/config_loader_resolver.rb +36 -10
  15. data/lib/rubocop/config_obsoletion/extracted_cop.rb +4 -3
  16. data/lib/rubocop/config_obsoletion/renamed_cop.rb +18 -3
  17. data/lib/rubocop/config_obsoletion.rb +46 -2
  18. data/lib/rubocop/config_validator.rb +20 -9
  19. data/lib/rubocop/cop/autocorrect_logic.rb +1 -1
  20. data/lib/rubocop/cop/base.rb +6 -0
  21. data/lib/rubocop/cop/bundler/duplicated_gem.rb +1 -1
  22. data/lib/rubocop/cop/bundler/gem_comment.rb +1 -1
  23. data/lib/rubocop/cop/internal_affairs/cop_enabled.rb +85 -0
  24. data/lib/rubocop/cop/internal_affairs/example_description.rb +7 -3
  25. data/lib/rubocop/cop/internal_affairs/location_exists.rb +116 -0
  26. data/lib/rubocop/cop/internal_affairs/location_expression.rb +2 -1
  27. data/lib/rubocop/cop/internal_affairs/node_first_or_last_argument.rb +3 -2
  28. data/lib/rubocop/cop/internal_affairs/node_matcher_directive.rb +1 -1
  29. data/lib/rubocop/cop/internal_affairs/node_pattern_groups/ast_processor.rb +63 -0
  30. data/lib/rubocop/cop/internal_affairs/node_pattern_groups/ast_walker.rb +131 -0
  31. data/lib/rubocop/cop/internal_affairs/node_pattern_groups.rb +229 -0
  32. data/lib/rubocop/cop/internal_affairs/node_type_group.rb +91 -0
  33. data/lib/rubocop/cop/internal_affairs/node_type_multiple_predicates.rb +126 -0
  34. data/lib/rubocop/cop/internal_affairs/node_type_predicate.rb +4 -3
  35. data/lib/rubocop/cop/internal_affairs/on_send_without_on_csend.rb +90 -0
  36. data/lib/rubocop/cop/internal_affairs/plugin.rb +33 -0
  37. data/lib/rubocop/cop/internal_affairs/redundant_described_class_as_subject.rb +6 -5
  38. data/lib/rubocop/cop/internal_affairs/redundant_source_range.rb +3 -1
  39. data/lib/rubocop/cop/internal_affairs/single_line_comparison.rb +5 -4
  40. data/lib/rubocop/cop/internal_affairs/undefined_config.rb +7 -1
  41. data/lib/rubocop/cop/internal_affairs.rb +6 -16
  42. data/lib/rubocop/cop/layout/access_modifier_indentation.rb +1 -1
  43. data/lib/rubocop/cop/layout/argument_alignment.rb +2 -8
  44. data/lib/rubocop/cop/layout/block_alignment.rb +4 -1
  45. data/lib/rubocop/cop/layout/block_end_newline.rb +1 -0
  46. data/lib/rubocop/cop/layout/class_structure.rb +9 -9
  47. data/lib/rubocop/cop/layout/closing_parenthesis_indentation.rb +4 -4
  48. data/lib/rubocop/cop/layout/dot_position.rb +1 -1
  49. data/lib/rubocop/cop/layout/else_alignment.rb +2 -2
  50. data/lib/rubocop/cop/layout/empty_line_after_guard_clause.rb +1 -1
  51. data/lib/rubocop/cop/layout/empty_line_between_defs.rb +7 -11
  52. data/lib/rubocop/cop/layout/empty_lines_around_access_modifier.rb +28 -1
  53. data/lib/rubocop/cop/layout/empty_lines_around_block_body.rb +1 -0
  54. data/lib/rubocop/cop/layout/empty_lines_around_exception_handling_keywords.rb +1 -1
  55. data/lib/rubocop/cop/layout/empty_lines_around_method_body.rb +22 -2
  56. data/lib/rubocop/cop/layout/end_alignment.rb +1 -1
  57. data/lib/rubocop/cop/layout/extra_spacing.rb +1 -1
  58. data/lib/rubocop/cop/layout/first_argument_indentation.rb +3 -8
  59. data/lib/rubocop/cop/layout/first_array_element_indentation.rb +2 -7
  60. data/lib/rubocop/cop/layout/first_hash_element_indentation.rb +2 -7
  61. data/lib/rubocop/cop/layout/first_hash_element_line_break.rb +1 -1
  62. data/lib/rubocop/cop/layout/first_parameter_indentation.rb +2 -2
  63. data/lib/rubocop/cop/layout/hash_alignment.rb +6 -4
  64. data/lib/rubocop/cop/layout/heredoc_argument_closing_parenthesis.rb +2 -1
  65. data/lib/rubocop/cop/layout/indentation_width.rb +1 -0
  66. data/lib/rubocop/cop/layout/line_continuation_spacing.rb +7 -1
  67. data/lib/rubocop/cop/layout/line_end_string_concatenation_indentation.rb +2 -2
  68. data/lib/rubocop/cop/layout/line_length.rb +9 -4
  69. data/lib/rubocop/cop/layout/multiline_block_layout.rb +1 -0
  70. data/lib/rubocop/cop/layout/multiline_hash_key_line_breaks.rb +1 -1
  71. data/lib/rubocop/cop/layout/multiline_method_argument_line_breaks.rb +25 -0
  72. data/lib/rubocop/cop/layout/multiline_method_call_brace_layout.rb +1 -0
  73. data/lib/rubocop/cop/layout/multiline_method_call_indentation.rb +4 -4
  74. data/lib/rubocop/cop/layout/multiline_method_parameter_line_breaks.rb +1 -0
  75. data/lib/rubocop/cop/layout/redundant_line_break.rb +16 -11
  76. data/lib/rubocop/cop/layout/rescue_ensure_alignment.rb +2 -2
  77. data/lib/rubocop/cop/layout/single_line_block_chain.rb +1 -1
  78. data/lib/rubocop/cop/layout/space_after_colon.rb +2 -2
  79. data/lib/rubocop/cop/layout/space_after_comma.rb +1 -1
  80. data/lib/rubocop/cop/layout/space_after_method_name.rb +1 -1
  81. data/lib/rubocop/cop/layout/space_after_semicolon.rb +1 -1
  82. data/lib/rubocop/cop/layout/space_around_keyword.rb +1 -0
  83. data/lib/rubocop/cop/layout/space_around_method_call_operator.rb +1 -1
  84. data/lib/rubocop/cop/layout/space_around_operators.rb +7 -4
  85. data/lib/rubocop/cop/layout/space_before_block_braces.rb +1 -0
  86. data/lib/rubocop/cop/layout/space_before_comma.rb +1 -1
  87. data/lib/rubocop/cop/layout/space_before_semicolon.rb +1 -1
  88. data/lib/rubocop/cop/layout/space_inside_block_braces.rb +1 -0
  89. data/lib/rubocop/cop/layout/trailing_whitespace.rb +5 -3
  90. data/lib/rubocop/cop/lint/ambiguous_block_association.rb +1 -1
  91. data/lib/rubocop/cop/lint/array_literal_in_regexp.rb +119 -0
  92. data/lib/rubocop/cop/lint/assignment_in_condition.rb +1 -3
  93. data/lib/rubocop/cop/lint/binary_operator_with_identical_operands.rb +1 -1
  94. data/lib/rubocop/cop/lint/constant_definition_in_block.rb +3 -3
  95. data/lib/rubocop/cop/lint/constant_reassignment.rb +148 -0
  96. data/lib/rubocop/cop/lint/cop_directive_syntax.rb +84 -0
  97. data/lib/rubocop/cop/lint/debugger.rb +3 -3
  98. data/lib/rubocop/cop/lint/duplicate_match_pattern.rb +1 -1
  99. data/lib/rubocop/cop/lint/duplicate_methods.rb +0 -14
  100. data/lib/rubocop/cop/lint/duplicate_regexp_character_class_element.rb +1 -1
  101. data/lib/rubocop/cop/lint/duplicate_set_element.rb +20 -7
  102. data/lib/rubocop/cop/lint/empty_conditional_body.rb +14 -64
  103. data/lib/rubocop/cop/lint/empty_expression.rb +0 -2
  104. data/lib/rubocop/cop/lint/erb_new_arguments.rb +0 -6
  105. data/lib/rubocop/cop/lint/float_comparison.rb +6 -8
  106. data/lib/rubocop/cop/lint/float_out_of_range.rb +1 -1
  107. data/lib/rubocop/cop/lint/format_parameter_mismatch.rb +2 -2
  108. data/lib/rubocop/cop/lint/implicit_string_concatenation.rb +1 -1
  109. data/lib/rubocop/cop/lint/literal_as_condition.rb +103 -9
  110. data/lib/rubocop/cop/lint/literal_in_interpolation.rb +24 -6
  111. data/lib/rubocop/cop/lint/missing_super.rb +2 -2
  112. data/lib/rubocop/cop/lint/mixed_case_range.rb +3 -3
  113. data/lib/rubocop/cop/lint/mixed_regexp_capture_types.rb +1 -1
  114. data/lib/rubocop/cop/lint/nested_method_definition.rb +8 -4
  115. data/lib/rubocop/cop/lint/next_without_accumulator.rb +1 -1
  116. data/lib/rubocop/cop/lint/non_atomic_file_operation.rb +4 -3
  117. data/lib/rubocop/cop/lint/non_local_exit_from_iterator.rb +3 -3
  118. data/lib/rubocop/cop/lint/numeric_operation_with_constant_result.rb +18 -31
  119. data/lib/rubocop/cop/lint/out_of_range_regexp_ref.rb +2 -1
  120. data/lib/rubocop/cop/lint/parentheses_as_grouped_expression.rb +1 -5
  121. data/lib/rubocop/cop/lint/raise_exception.rb +29 -10
  122. data/lib/rubocop/cop/lint/redundant_regexp_quantifiers.rb +1 -1
  123. data/lib/rubocop/cop/lint/redundant_require_statement.rb +0 -21
  124. data/lib/rubocop/cop/lint/redundant_string_coercion.rb +2 -2
  125. data/lib/rubocop/cop/lint/redundant_type_conversion.rb +258 -0
  126. data/lib/rubocop/cop/lint/redundant_with_index.rb +3 -0
  127. data/lib/rubocop/cop/lint/redundant_with_object.rb +3 -0
  128. data/lib/rubocop/cop/lint/rescue_exception.rb +1 -1
  129. data/lib/rubocop/cop/lint/return_in_void_context.rb +4 -11
  130. data/lib/rubocop/cop/lint/safe_navigation_chain.rb +8 -1
  131. data/lib/rubocop/cop/lint/shadowing_outer_local_variable.rb +8 -1
  132. data/lib/rubocop/cop/lint/shared_mutable_default.rb +76 -0
  133. data/lib/rubocop/cop/lint/suppressed_exception.rb +1 -1
  134. data/lib/rubocop/cop/lint/suppressed_exception_in_number_conversion.rb +111 -0
  135. data/lib/rubocop/cop/lint/symbol_conversion.rb +1 -1
  136. data/lib/rubocop/cop/lint/syntax.rb +4 -1
  137. data/lib/rubocop/cop/lint/unescaped_bracket_in_regexp.rb +1 -4
  138. data/lib/rubocop/cop/lint/unexpected_block_arity.rb +3 -1
  139. data/lib/rubocop/cop/lint/unmodified_reduce_accumulator.rb +1 -1
  140. data/lib/rubocop/cop/lint/unreachable_code.rb +2 -1
  141. data/lib/rubocop/cop/lint/unreachable_loop.rb +6 -6
  142. data/lib/rubocop/cop/lint/useless_access_modifier.rb +5 -4
  143. data/lib/rubocop/cop/lint/useless_assignment.rb +1 -1
  144. data/lib/rubocop/cop/lint/useless_constant_scoping.rb +71 -0
  145. data/lib/rubocop/cop/lint/useless_method_definition.rb +1 -1
  146. data/lib/rubocop/cop/lint/useless_numeric_operation.rb +2 -1
  147. data/lib/rubocop/cop/lint/useless_ruby2_keywords.rb +2 -2
  148. data/lib/rubocop/cop/lint/void.rb +12 -9
  149. data/lib/rubocop/cop/metrics/block_length.rb +1 -0
  150. data/lib/rubocop/cop/metrics/block_nesting.rb +1 -1
  151. data/lib/rubocop/cop/metrics/collection_literal_length.rb +7 -0
  152. data/lib/rubocop/cop/metrics/cyclomatic_complexity.rb +1 -1
  153. data/lib/rubocop/cop/metrics/method_length.rb +9 -1
  154. data/lib/rubocop/cop/metrics/module_length.rb +1 -1
  155. data/lib/rubocop/cop/metrics/perceived_complexity.rb +1 -1
  156. data/lib/rubocop/cop/metrics/utils/code_length_calculator.rb +1 -1
  157. data/lib/rubocop/cop/metrics/utils/repeated_attribute_discount.rb +7 -7
  158. data/lib/rubocop/cop/mixin/alignment.rb +2 -2
  159. data/lib/rubocop/cop/mixin/allowed_pattern.rb +4 -4
  160. data/lib/rubocop/cop/mixin/check_line_breakable.rb +13 -13
  161. data/lib/rubocop/cop/mixin/check_single_line_suitability.rb +1 -1
  162. data/lib/rubocop/cop/mixin/comments_help.rb +4 -2
  163. data/lib/rubocop/cop/mixin/dig_help.rb +1 -1
  164. data/lib/rubocop/cop/mixin/forbidden_identifiers.rb +20 -0
  165. data/lib/rubocop/cop/mixin/forbidden_pattern.rb +16 -0
  166. data/lib/rubocop/cop/mixin/frozen_string_literal.rb +1 -1
  167. data/lib/rubocop/cop/mixin/hash_shorthand_syntax.rb +22 -22
  168. data/lib/rubocop/cop/mixin/hash_subset.rb +203 -0
  169. data/lib/rubocop/cop/mixin/hash_transform_method.rb +74 -74
  170. data/lib/rubocop/cop/mixin/method_complexity.rb +2 -1
  171. data/lib/rubocop/cop/mixin/percent_literal.rb +1 -1
  172. data/lib/rubocop/cop/mixin/preceding_following_alignment.rb +48 -24
  173. data/lib/rubocop/cop/mixin/range_help.rb +15 -3
  174. data/lib/rubocop/cop/mixin/space_before_punctuation.rb +1 -1
  175. data/lib/rubocop/cop/mixin/statement_modifier.rb +8 -3
  176. data/lib/rubocop/cop/mixin/string_help.rb +2 -2
  177. data/lib/rubocop/cop/mixin/string_literals_help.rb +1 -1
  178. data/lib/rubocop/cop/mixin/target_ruby_version.rb +1 -1
  179. data/lib/rubocop/cop/mixin/trailing_comma.rb +15 -3
  180. data/lib/rubocop/cop/naming/block_forwarding.rb +19 -15
  181. data/lib/rubocop/cop/naming/method_name.rb +64 -8
  182. data/lib/rubocop/cop/naming/predicate_name.rb +44 -0
  183. data/lib/rubocop/cop/naming/rescued_exceptions_variable_name.rb +3 -3
  184. data/lib/rubocop/cop/naming/variable_name.rb +51 -6
  185. data/lib/rubocop/cop/registry.rb +9 -6
  186. data/lib/rubocop/cop/security/compound_hash.rb +1 -0
  187. data/lib/rubocop/cop/style/access_modifier_declarations.rb +34 -5
  188. data/lib/rubocop/cop/style/accessor_grouping.rb +19 -5
  189. data/lib/rubocop/cop/style/and_or.rb +1 -1
  190. data/lib/rubocop/cop/style/arguments_forwarding.rb +39 -23
  191. data/lib/rubocop/cop/style/array_first_last.rb +18 -2
  192. data/lib/rubocop/cop/style/array_intersect.rb +39 -28
  193. data/lib/rubocop/cop/style/block_delimiters.rb +9 -21
  194. data/lib/rubocop/cop/style/class_and_module_children.rb +35 -10
  195. data/lib/rubocop/cop/style/collection_methods.rb +2 -1
  196. data/lib/rubocop/cop/style/combinable_defined.rb +1 -1
  197. data/lib/rubocop/cop/style/combinable_loops.rb +3 -2
  198. data/lib/rubocop/cop/style/commented_keyword.rb +10 -3
  199. data/lib/rubocop/cop/style/comparable_between.rb +75 -0
  200. data/lib/rubocop/cop/style/concat_array_literals.rb +1 -1
  201. data/lib/rubocop/cop/style/conditional_assignment.rb +6 -4
  202. data/lib/rubocop/cop/style/documentation.rb +1 -1
  203. data/lib/rubocop/cop/style/double_negation.rb +4 -4
  204. data/lib/rubocop/cop/style/each_for_simple_loop.rb +4 -7
  205. data/lib/rubocop/cop/style/each_with_object.rb +2 -3
  206. data/lib/rubocop/cop/style/empty_else.rb +4 -2
  207. data/lib/rubocop/cop/style/empty_literal.rb +1 -1
  208. data/lib/rubocop/cop/style/empty_method.rb +1 -1
  209. data/lib/rubocop/cop/style/endless_method.rb +163 -18
  210. data/lib/rubocop/cop/style/eval_with_location.rb +1 -1
  211. data/lib/rubocop/cop/style/exact_regexp_match.rb +3 -10
  212. data/lib/rubocop/cop/style/expand_path_arguments.rb +2 -7
  213. data/lib/rubocop/cop/style/explicit_block_argument.rb +15 -2
  214. data/lib/rubocop/cop/style/exponential_notation.rb +3 -3
  215. data/lib/rubocop/cop/style/fetch_env_var.rb +1 -1
  216. data/lib/rubocop/cop/style/float_division.rb +8 -4
  217. data/lib/rubocop/cop/style/for.rb +1 -0
  218. data/lib/rubocop/cop/style/format_string_token.rb +38 -11
  219. data/lib/rubocop/cop/style/frozen_string_literal_comment.rb +1 -1
  220. data/lib/rubocop/cop/style/guard_clause.rb +2 -1
  221. data/lib/rubocop/cop/style/hash_each_methods.rb +6 -8
  222. data/lib/rubocop/cop/style/hash_except.rb +24 -148
  223. data/lib/rubocop/cop/style/hash_fetch_chain.rb +105 -0
  224. data/lib/rubocop/cop/style/hash_slice.rb +80 -0
  225. data/lib/rubocop/cop/style/hash_syntax.rb +6 -3
  226. data/lib/rubocop/cop/style/identical_conditional_branches.rb +22 -3
  227. data/lib/rubocop/cop/style/if_inside_else.rb +10 -13
  228. data/lib/rubocop/cop/style/if_unless_modifier.rb +5 -5
  229. data/lib/rubocop/cop/style/if_with_boolean_literal_branches.rb +1 -1
  230. data/lib/rubocop/cop/style/if_with_semicolon.rb +2 -2
  231. data/lib/rubocop/cop/style/infinite_loop.rb +1 -1
  232. data/lib/rubocop/cop/style/inverse_methods.rb +15 -11
  233. data/lib/rubocop/cop/style/invertible_unless_condition.rb +2 -2
  234. data/lib/rubocop/cop/style/ip_addresses.rb +2 -2
  235. data/lib/rubocop/cop/style/it_assignment.rb +36 -0
  236. data/lib/rubocop/cop/style/it_block_parameter.rb +100 -0
  237. data/lib/rubocop/cop/style/keyword_parameters_order.rb +14 -8
  238. data/lib/rubocop/cop/style/lambda.rb +1 -0
  239. data/lib/rubocop/cop/style/line_end_concatenation.rb +10 -4
  240. data/lib/rubocop/cop/style/map_into_array.rb +2 -1
  241. data/lib/rubocop/cop/style/map_to_hash.rb +1 -1
  242. data/lib/rubocop/cop/style/map_to_set.rb +3 -2
  243. data/lib/rubocop/cop/style/method_call_with_args_parentheses/omit_parentheses.rb +22 -15
  244. data/lib/rubocop/cop/style/method_call_with_args_parentheses.rb +2 -0
  245. data/lib/rubocop/cop/style/method_call_without_args_parentheses.rb +2 -1
  246. data/lib/rubocop/cop/style/method_called_on_do_end_block.rb +3 -4
  247. data/lib/rubocop/cop/style/method_def_parentheses.rb +1 -1
  248. data/lib/rubocop/cop/style/missing_else.rb +2 -0
  249. data/lib/rubocop/cop/style/multiline_block_chain.rb +3 -2
  250. data/lib/rubocop/cop/style/multiline_method_signature.rb +1 -9
  251. data/lib/rubocop/cop/style/multiple_comparison.rb +26 -20
  252. data/lib/rubocop/cop/style/mutable_constant.rb +3 -3
  253. data/lib/rubocop/cop/style/negated_if_else_condition.rb +1 -1
  254. data/lib/rubocop/cop/style/nested_parenthesized_calls.rb +1 -1
  255. data/lib/rubocop/cop/style/next.rb +44 -0
  256. data/lib/rubocop/cop/style/object_then.rb +14 -15
  257. data/lib/rubocop/cop/style/open_struct_use.rb +5 -5
  258. data/lib/rubocop/cop/style/parallel_assignment.rb +1 -5
  259. data/lib/rubocop/cop/style/parentheses_around_condition.rb +2 -2
  260. data/lib/rubocop/cop/style/percent_literal_delimiters.rb +1 -1
  261. data/lib/rubocop/cop/style/proc.rb +2 -2
  262. data/lib/rubocop/cop/style/quoted_symbols.rb +1 -1
  263. data/lib/rubocop/cop/style/raise_args.rb +14 -12
  264. data/lib/rubocop/cop/style/random_with_offset.rb +3 -3
  265. data/lib/rubocop/cop/style/redundant_begin.rb +2 -1
  266. data/lib/rubocop/cop/style/redundant_condition.rb +47 -2
  267. data/lib/rubocop/cop/style/redundant_current_directory_in_path.rb +16 -5
  268. data/lib/rubocop/cop/style/redundant_double_splat_hash_braces.rb +6 -10
  269. data/lib/rubocop/cop/style/redundant_each.rb +1 -1
  270. data/lib/rubocop/cop/style/redundant_exception.rb +2 -2
  271. data/lib/rubocop/cop/style/redundant_format.rb +257 -0
  272. data/lib/rubocop/cop/style/redundant_freeze.rb +3 -3
  273. data/lib/rubocop/cop/style/redundant_initialize.rb +12 -3
  274. data/lib/rubocop/cop/style/redundant_line_continuation.rb +34 -13
  275. data/lib/rubocop/cop/style/redundant_parentheses.rb +30 -15
  276. data/lib/rubocop/cop/style/redundant_regexp_argument.rb +3 -0
  277. data/lib/rubocop/cop/style/redundant_regexp_character_class.rb +1 -1
  278. data/lib/rubocop/cop/style/redundant_regexp_escape.rb +1 -1
  279. data/lib/rubocop/cop/style/redundant_self.rb +1 -0
  280. data/lib/rubocop/cop/style/redundant_self_assignment.rb +14 -28
  281. data/lib/rubocop/cop/style/redundant_sort.rb +2 -2
  282. data/lib/rubocop/cop/style/redundant_sort_by.rb +17 -1
  283. data/lib/rubocop/cop/style/redundant_string_escape.rb +2 -2
  284. data/lib/rubocop/cop/style/rescue_modifier.rb +3 -0
  285. data/lib/rubocop/cop/style/return_nil.rb +1 -1
  286. data/lib/rubocop/cop/style/safe_navigation.rb +2 -2
  287. data/lib/rubocop/cop/style/select_by_regexp.rb +4 -1
  288. data/lib/rubocop/cop/style/semicolon.rb +1 -1
  289. data/lib/rubocop/cop/style/send_with_literal_method_name.rb +2 -1
  290. data/lib/rubocop/cop/style/single_line_block_params.rb +1 -1
  291. data/lib/rubocop/cop/style/single_line_do_end_block.rb +4 -3
  292. data/lib/rubocop/cop/style/single_line_methods.rb +6 -7
  293. data/lib/rubocop/cop/style/slicing_with_range.rb +40 -11
  294. data/lib/rubocop/cop/style/sole_nested_conditional.rb +41 -106
  295. data/lib/rubocop/cop/style/string_concatenation.rb +2 -2
  296. data/lib/rubocop/cop/style/string_literals.rb +1 -1
  297. data/lib/rubocop/cop/style/string_methods.rb +1 -1
  298. data/lib/rubocop/cop/style/super_arguments.rb +65 -17
  299. data/lib/rubocop/cop/style/symbol_proc.rb +2 -0
  300. data/lib/rubocop/cop/style/ternary_parentheses.rb +1 -1
  301. data/lib/rubocop/cop/style/top_level_method_definition.rb +2 -1
  302. data/lib/rubocop/cop/style/trailing_comma_in_arguments.rb +4 -1
  303. data/lib/rubocop/cop/style/trailing_comma_in_array_literal.rb +47 -6
  304. data/lib/rubocop/cop/style/trailing_comma_in_hash_literal.rb +48 -6
  305. data/lib/rubocop/cop/style/trivial_accessors.rb +1 -1
  306. data/lib/rubocop/cop/style/while_until_modifier.rb +0 -1
  307. data/lib/rubocop/cop/style/yoda_condition.rb +8 -4
  308. data/lib/rubocop/cop/style/yoda_expression.rb +2 -1
  309. data/lib/rubocop/cop/util.rb +12 -5
  310. data/lib/rubocop/cop/utils/format_string.rb +10 -5
  311. data/lib/rubocop/cop/variable_force/scope.rb +1 -1
  312. data/lib/rubocop/cop/variable_force/variable.rb +9 -2
  313. data/lib/rubocop/cop/variable_force/variable_table.rb +3 -3
  314. data/lib/rubocop/cop/variable_force.rb +1 -1
  315. data/lib/rubocop/cops_documentation_generator.rb +25 -14
  316. data/lib/rubocop/directive_comment.rb +45 -11
  317. data/lib/rubocop/ext/regexp_node.rb +0 -1
  318. data/lib/rubocop/formatter/formatter_set.rb +1 -1
  319. data/lib/rubocop/lsp/diagnostic.rb +189 -0
  320. data/lib/rubocop/lsp/logger.rb +2 -2
  321. data/lib/rubocop/lsp/routes.rb +7 -23
  322. data/lib/rubocop/lsp/runtime.rb +18 -50
  323. data/lib/rubocop/lsp/server.rb +0 -2
  324. data/lib/rubocop/lsp/stdin_runner.rb +85 -0
  325. data/lib/rubocop/options.rb +28 -12
  326. data/lib/rubocop/path_util.rb +15 -8
  327. data/lib/rubocop/plugin/configuration_integrator.rb +143 -0
  328. data/lib/rubocop/plugin/load_error.rb +26 -0
  329. data/lib/rubocop/plugin/loader.rb +100 -0
  330. data/lib/rubocop/plugin/not_supported_error.rb +29 -0
  331. data/lib/rubocop/plugin.rb +46 -0
  332. data/lib/rubocop/rake_task.rb +4 -1
  333. data/lib/rubocop/result_cache.rb +13 -13
  334. data/lib/rubocop/rspec/cop_helper.rb +13 -1
  335. data/lib/rubocop/rspec/expect_offense.rb +6 -2
  336. data/lib/rubocop/rspec/shared_contexts.rb +39 -1
  337. data/lib/rubocop/rspec/support.rb +4 -2
  338. data/lib/rubocop/runner.rb +10 -7
  339. data/lib/rubocop/server/cache.rb +35 -2
  340. data/lib/rubocop/server/cli.rb +2 -2
  341. data/lib/rubocop/target_finder.rb +1 -0
  342. data/lib/rubocop/target_ruby.rb +16 -1
  343. data/lib/rubocop/version.rb +30 -8
  344. data/lib/rubocop.rb +16 -1
  345. data/lib/ruby_lsp/rubocop/addon.rb +75 -0
  346. data/lib/ruby_lsp/rubocop/runtime_adapter.rb +65 -0
  347. metadata +59 -16
  348. data/lib/rubocop/cop/utils/regexp_ranges.rb +0 -113
  349. data/lib/rubocop/rspec/host_environment_simulation_helper.rb +0 -28
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.75.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-03-26 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.43.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.43.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,17 @@ 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_group.rb
301
+ - lib/rubocop/cop/internal_affairs/node_type_multiple_predicates.rb
282
302
  - lib/rubocop/cop/internal_affairs/node_type_predicate.rb
283
303
  - lib/rubocop/cop/internal_affairs/numblock_handler.rb
284
304
  - lib/rubocop/cop/internal_affairs/offense_location_keyword.rb
305
+ - lib/rubocop/cop/internal_affairs/on_send_without_on_csend.rb
285
306
  - lib/rubocop/cop/internal_affairs/operator_keyword.rb
307
+ - lib/rubocop/cop/internal_affairs/plugin.rb
286
308
  - lib/rubocop/cop/internal_affairs/processed_source_buffer_name.rb
287
309
  - lib/rubocop/cop/internal_affairs/redundant_context_config_parameter.rb
288
310
  - lib/rubocop/cop/internal_affairs/redundant_described_class_as_subject.rb
@@ -404,6 +426,7 @@ files:
404
426
  - lib/rubocop/cop/lint/ambiguous_operator_precedence.rb
405
427
  - lib/rubocop/cop/lint/ambiguous_range.rb
406
428
  - lib/rubocop/cop/lint/ambiguous_regexp_literal.rb
429
+ - lib/rubocop/cop/lint/array_literal_in_regexp.rb
407
430
  - lib/rubocop/cop/lint/assignment_in_condition.rb
408
431
  - lib/rubocop/cop/lint/big_decimal_new.rb
409
432
  - lib/rubocop/cop/lint/binary_operator_with_identical_operands.rb
@@ -411,7 +434,9 @@ files:
411
434
  - lib/rubocop/cop/lint/circular_argument_reference.rb
412
435
  - lib/rubocop/cop/lint/constant_definition_in_block.rb
413
436
  - lib/rubocop/cop/lint/constant_overwritten_in_rescue.rb
437
+ - lib/rubocop/cop/lint/constant_reassignment.rb
414
438
  - lib/rubocop/cop/lint/constant_resolution.rb
439
+ - lib/rubocop/cop/lint/cop_directive_syntax.rb
415
440
  - lib/rubocop/cop/lint/debugger.rb
416
441
  - lib/rubocop/cop/lint/deprecated_class_methods.rb
417
442
  - lib/rubocop/cop/lint/deprecated_constants.rb
@@ -491,6 +516,7 @@ files:
491
516
  - lib/rubocop/cop/lint/redundant_safe_navigation.rb
492
517
  - lib/rubocop/cop/lint/redundant_splat_expansion.rb
493
518
  - lib/rubocop/cop/lint/redundant_string_coercion.rb
519
+ - lib/rubocop/cop/lint/redundant_type_conversion.rb
494
520
  - lib/rubocop/cop/lint/redundant_with_index.rb
495
521
  - lib/rubocop/cop/lint/redundant_with_object.rb
496
522
  - lib/rubocop/cop/lint/refinement_import_methods.rb
@@ -510,8 +536,10 @@ files:
510
536
  - lib/rubocop/cop/lint/shadowed_argument.rb
511
537
  - lib/rubocop/cop/lint/shadowed_exception.rb
512
538
  - lib/rubocop/cop/lint/shadowing_outer_local_variable.rb
539
+ - lib/rubocop/cop/lint/shared_mutable_default.rb
513
540
  - lib/rubocop/cop/lint/struct_new_override.rb
514
541
  - lib/rubocop/cop/lint/suppressed_exception.rb
542
+ - lib/rubocop/cop/lint/suppressed_exception_in_number_conversion.rb
515
543
  - lib/rubocop/cop/lint/symbol_conversion.rb
516
544
  - lib/rubocop/cop/lint/syntax.rb
517
545
  - lib/rubocop/cop/lint/to_enum_arguments.rb
@@ -532,6 +560,7 @@ files:
532
560
  - lib/rubocop/cop/lint/uri_regexp.rb
533
561
  - lib/rubocop/cop/lint/useless_access_modifier.rb
534
562
  - lib/rubocop/cop/lint/useless_assignment.rb
563
+ - lib/rubocop/cop/lint/useless_constant_scoping.rb
535
564
  - lib/rubocop/cop/lint/useless_defined.rb
536
565
  - lib/rubocop/cop/lint/useless_else_without_rescue.rb
537
566
  - lib/rubocop/cop/lint/useless_method_definition.rb
@@ -587,11 +616,14 @@ files:
587
616
  - lib/rubocop/cop/mixin/endless_method_rewriter.rb
588
617
  - lib/rubocop/cop/mixin/enforce_superclass.rb
589
618
  - lib/rubocop/cop/mixin/first_element_line_break.rb
619
+ - lib/rubocop/cop/mixin/forbidden_identifiers.rb
620
+ - lib/rubocop/cop/mixin/forbidden_pattern.rb
590
621
  - lib/rubocop/cop/mixin/frozen_string_literal.rb
591
622
  - lib/rubocop/cop/mixin/gem_declaration.rb
592
623
  - lib/rubocop/cop/mixin/gemspec_help.rb
593
624
  - lib/rubocop/cop/mixin/hash_alignment_styles.rb
594
625
  - lib/rubocop/cop/mixin/hash_shorthand_syntax.rb
626
+ - lib/rubocop/cop/mixin/hash_subset.rb
595
627
  - lib/rubocop/cop/mixin/hash_transform_method.rb
596
628
  - lib/rubocop/cop/mixin/heredoc.rb
597
629
  - lib/rubocop/cop/mixin/integer_node.rb
@@ -699,6 +731,7 @@ files:
699
731
  - lib/rubocop/cop/style/command_literal.rb
700
732
  - lib/rubocop/cop/style/comment_annotation.rb
701
733
  - lib/rubocop/cop/style/commented_keyword.rb
734
+ - lib/rubocop/cop/style/comparable_between.rb
702
735
  - lib/rubocop/cop/style/comparable_clamp.rb
703
736
  - lib/rubocop/cop/style/concat_array_literals.rb
704
737
  - lib/rubocop/cop/style/conditional_assignment.rb
@@ -753,7 +786,9 @@ files:
753
786
  - lib/rubocop/cop/style/hash_conversion.rb
754
787
  - lib/rubocop/cop/style/hash_each_methods.rb
755
788
  - lib/rubocop/cop/style/hash_except.rb
789
+ - lib/rubocop/cop/style/hash_fetch_chain.rb
756
790
  - lib/rubocop/cop/style/hash_like_case.rb
791
+ - lib/rubocop/cop/style/hash_slice.rb
757
792
  - lib/rubocop/cop/style/hash_syntax.rb
758
793
  - lib/rubocop/cop/style/hash_transform_keys.rb
759
794
  - lib/rubocop/cop/style/hash_transform_values.rb
@@ -770,6 +805,8 @@ files:
770
805
  - lib/rubocop/cop/style/inverse_methods.rb
771
806
  - lib/rubocop/cop/style/invertible_unless_condition.rb
772
807
  - lib/rubocop/cop/style/ip_addresses.rb
808
+ - lib/rubocop/cop/style/it_assignment.rb
809
+ - lib/rubocop/cop/style/it_block_parameter.rb
773
810
  - lib/rubocop/cop/style/keyword_arguments_merging.rb
774
811
  - lib/rubocop/cop/style/keyword_parameters_order.rb
775
812
  - lib/rubocop/cop/style/lambda.rb
@@ -854,6 +891,7 @@ files:
854
891
  - lib/rubocop/cop/style/redundant_fetch_block.rb
855
892
  - lib/rubocop/cop/style/redundant_file_extension_in_require.rb
856
893
  - lib/rubocop/cop/style/redundant_filter_chain.rb
894
+ - lib/rubocop/cop/style/redundant_format.rb
857
895
  - lib/rubocop/cop/style/redundant_freeze.rb
858
896
  - lib/rubocop/cop/style/redundant_heredoc_delimiter_quotes.rb
859
897
  - lib/rubocop/cop/style/redundant_initialize.rb
@@ -939,7 +977,6 @@ files:
939
977
  - lib/rubocop/cop/team.rb
940
978
  - lib/rubocop/cop/util.rb
941
979
  - lib/rubocop/cop/utils/format_string.rb
942
- - lib/rubocop/cop/utils/regexp_ranges.rb
943
980
  - lib/rubocop/cop/variable_force.rb
944
981
  - lib/rubocop/cop/variable_force/assignment.rb
945
982
  - lib/rubocop/cop/variable_force/branch.rb
@@ -985,22 +1022,28 @@ files:
985
1022
  - lib/rubocop/formatter/worst_offenders_formatter.rb
986
1023
  - lib/rubocop/lockfile.rb
987
1024
  - lib/rubocop/lsp.rb
1025
+ - lib/rubocop/lsp/diagnostic.rb
988
1026
  - lib/rubocop/lsp/logger.rb
989
1027
  - lib/rubocop/lsp/routes.rb
990
1028
  - lib/rubocop/lsp/runtime.rb
991
1029
  - lib/rubocop/lsp/server.rb
992
1030
  - lib/rubocop/lsp/severity.rb
1031
+ - lib/rubocop/lsp/stdin_runner.rb
993
1032
  - lib/rubocop/magic_comment.rb
994
1033
  - lib/rubocop/name_similarity.rb
995
1034
  - lib/rubocop/options.rb
996
1035
  - lib/rubocop/path_util.rb
997
1036
  - lib/rubocop/platform.rb
1037
+ - lib/rubocop/plugin.rb
1038
+ - lib/rubocop/plugin/configuration_integrator.rb
1039
+ - lib/rubocop/plugin/load_error.rb
1040
+ - lib/rubocop/plugin/loader.rb
1041
+ - lib/rubocop/plugin/not_supported_error.rb
998
1042
  - lib/rubocop/rake_task.rb
999
1043
  - lib/rubocop/remote_config.rb
1000
1044
  - lib/rubocop/result_cache.rb
1001
1045
  - lib/rubocop/rspec/cop_helper.rb
1002
1046
  - lib/rubocop/rspec/expect_offense.rb
1003
- - lib/rubocop/rspec/host_environment_simulation_helper.rb
1004
1047
  - lib/rubocop/rspec/parallel_formatter.rb
1005
1048
  - lib/rubocop/rspec/shared_contexts.rb
1006
1049
  - lib/rubocop/rspec/support.rb
@@ -1030,17 +1073,18 @@ files:
1030
1073
  - lib/rubocop/version.rb
1031
1074
  - lib/rubocop/warning.rb
1032
1075
  - lib/rubocop/yaml_duplication_checker.rb
1076
+ - lib/ruby_lsp/rubocop/addon.rb
1077
+ - lib/ruby_lsp/rubocop/runtime_adapter.rb
1033
1078
  homepage: https://github.com/rubocop/rubocop
1034
1079
  licenses:
1035
1080
  - MIT
1036
1081
  metadata:
1037
1082
  homepage_uri: https://rubocop.org/
1038
- changelog_uri: https://github.com/rubocop/rubocop/releases/tag/v1.69.2
1083
+ changelog_uri: https://github.com/rubocop/rubocop/releases/tag/v1.75.1
1039
1084
  source_code_uri: https://github.com/rubocop/rubocop/
1040
- documentation_uri: https://docs.rubocop.org/rubocop/1.69/
1085
+ documentation_uri: https://docs.rubocop.org/rubocop/1.75/
1041
1086
  bug_tracker_uri: https://github.com/rubocop/rubocop/issues
1042
1087
  rubygems_mfa_required: 'true'
1043
- post_install_message:
1044
1088
  rdoc_options: []
1045
1089
  require_paths:
1046
1090
  - lib
@@ -1055,8 +1099,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
1055
1099
  - !ruby/object:Gem::Version
1056
1100
  version: '0'
1057
1101
  requirements: []
1058
- rubygems_version: 3.4.22
1059
- signing_key:
1102
+ rubygems_version: 3.6.2
1060
1103
  specification_version: 4
1061
1104
  summary: Automatic Ruby code style checking tool.
1062
1105
  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
@@ -1,28 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- # RuboCop can be run in contexts where unexpected other libraries are included,
4
- # which may interfere with its normal behavior. In order to test those
5
- # situations, it may be necessary to require another library for the duration
6
- # of one spec
7
- module HostEnvironmentSimulatorHelper
8
- def in_its_own_process_with(*files)
9
- if ::Process.respond_to?(:fork)
10
- pid = ::Process.fork do
11
- # Need to write coverage result under different name
12
- if defined?(SimpleCov)
13
- SimpleCov.command_name "rspec-fork-#{Process.pid}"
14
- SimpleCov.pid = Process.pid
15
- end
16
-
17
- files.each { |file| require file }
18
- yield
19
- end
20
- ::Process.wait(pid)
21
-
22
- # assert that the block did not fail
23
- expect($CHILD_STATUS).to be_success
24
- else
25
- warn 'Process.fork is not available.'
26
- end
27
- end
28
- end