rubocop 1.71.1 → 1.88.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (590) hide show
  1. checksums.yaml +4 -4
  2. data/LICENSE.txt +1 -1
  3. data/README.md +23 -19
  4. data/config/default.yml +513 -149
  5. data/config/internal_affairs.yml +20 -0
  6. data/config/obsoletion.yml +38 -4
  7. data/exe/rubocop +1 -8
  8. data/lib/rubocop/cache_config.rb +29 -0
  9. data/lib/rubocop/cli/command/auto_generate_config.rb +36 -4
  10. data/lib/rubocop/cli/command/list_enabled_cops_for.rb +40 -0
  11. data/lib/rubocop/cli/command/lsp.rb +1 -1
  12. data/lib/rubocop/cli/command/mcp.rb +19 -0
  13. data/lib/rubocop/cli/command/show_cops.rb +2 -2
  14. data/lib/rubocop/cli/command/show_docs_url.rb +4 -8
  15. data/lib/rubocop/cli/command/suggest_extensions.rb +8 -2
  16. data/lib/rubocop/cli.rb +48 -11
  17. data/lib/rubocop/comment_config.rb +60 -18
  18. data/lib/rubocop/config.rb +53 -16
  19. data/lib/rubocop/config_finder.rb +1 -1
  20. data/lib/rubocop/config_loader.rb +65 -49
  21. data/lib/rubocop/config_loader_resolver.rb +44 -19
  22. data/lib/rubocop/config_obsoletion/extracted_cop.rb +6 -3
  23. data/lib/rubocop/config_obsoletion/renamed_cop.rb +18 -3
  24. data/lib/rubocop/config_obsoletion.rb +46 -2
  25. data/lib/rubocop/config_store.rb +7 -2
  26. data/lib/rubocop/config_validator.rb +7 -6
  27. data/lib/rubocop/cop/autocorrect_logic.rb +27 -14
  28. data/lib/rubocop/cop/base.rb +38 -12
  29. data/lib/rubocop/cop/bundler/gem_comment.rb +5 -3
  30. data/lib/rubocop/cop/bundler/gem_version.rb +28 -28
  31. data/lib/rubocop/cop/bundler/ordered_gems.rb +2 -3
  32. data/lib/rubocop/cop/commissioner.rb +13 -11
  33. data/lib/rubocop/cop/correctors/alignment_corrector.rb +26 -7
  34. data/lib/rubocop/cop/correctors/condition_corrector.rb +1 -1
  35. data/lib/rubocop/cop/correctors/each_to_for_corrector.rb +1 -1
  36. data/lib/rubocop/cop/correctors/for_to_each_corrector.rb +7 -2
  37. data/lib/rubocop/cop/correctors/lambda_literal_to_method_corrector.rb +7 -1
  38. data/lib/rubocop/cop/correctors/multiline_literal_brace_corrector.rb +1 -5
  39. data/lib/rubocop/cop/correctors/ordered_gem_corrector.rb +8 -1
  40. data/lib/rubocop/cop/correctors/parentheses_corrector.rb +36 -2
  41. data/lib/rubocop/cop/correctors/percent_literal_corrector.rb +2 -2
  42. data/lib/rubocop/cop/correctors.rb +28 -0
  43. data/lib/rubocop/cop/documentation.rb +2 -3
  44. data/lib/rubocop/cop/exclude_limit.rb +31 -5
  45. data/lib/rubocop/cop/gemspec/attribute_assignment.rb +91 -0
  46. data/lib/rubocop/cop/gemspec/development_dependencies.rb +1 -1
  47. data/lib/rubocop/cop/gemspec/duplicated_assignment.rb +49 -17
  48. data/lib/rubocop/cop/gemspec/ordered_dependencies.rb +2 -3
  49. data/lib/rubocop/cop/gemspec/require_mfa.rb +22 -5
  50. data/lib/rubocop/cop/gemspec/ruby_version_globals_usage.rb +12 -7
  51. data/lib/rubocop/cop/internal_affairs/example_description.rb +9 -5
  52. data/lib/rubocop/cop/internal_affairs/example_heredoc_delimiter.rb +8 -8
  53. data/lib/rubocop/cop/internal_affairs/itblock_handler.rb +69 -0
  54. data/lib/rubocop/cop/internal_affairs/location_exists.rb +142 -0
  55. data/lib/rubocop/cop/internal_affairs/location_line_equality_comparison.rb +1 -0
  56. data/lib/rubocop/cop/internal_affairs/node_matcher_directive.rb +13 -13
  57. data/lib/rubocop/cop/internal_affairs/node_pattern_groups/ast_processor.rb +1 -1
  58. data/lib/rubocop/cop/internal_affairs/node_pattern_groups/ast_walker.rb +1 -1
  59. data/lib/rubocop/cop/internal_affairs/node_pattern_groups.rb +6 -2
  60. data/lib/rubocop/cop/internal_affairs/node_type_group.rb +92 -0
  61. data/lib/rubocop/cop/internal_affairs/on_send_without_on_csend.rb +1 -1
  62. data/lib/rubocop/cop/internal_affairs/plugin.rb +33 -0
  63. data/lib/rubocop/cop/internal_affairs/redundant_described_class_as_subject.rb +6 -5
  64. data/lib/rubocop/cop/internal_affairs/redundant_let_rubocop_config_new.rb +5 -3
  65. data/lib/rubocop/cop/internal_affairs/undefined_config.rb +13 -2
  66. data/lib/rubocop/cop/internal_affairs/useless_message_assertion.rb +4 -4
  67. data/lib/rubocop/cop/internal_affairs/useless_restrict_on_send.rb +1 -1
  68. data/lib/rubocop/cop/internal_affairs.rb +3 -16
  69. data/lib/rubocop/cop/layout/argument_alignment.rb +2 -2
  70. data/lib/rubocop/cop/layout/array_alignment.rb +1 -1
  71. data/lib/rubocop/cop/layout/begin_end_alignment.rb +1 -1
  72. data/lib/rubocop/cop/layout/block_alignment.rb +60 -4
  73. data/lib/rubocop/cop/layout/block_end_newline.rb +1 -0
  74. data/lib/rubocop/cop/layout/case_indentation.rb +3 -1
  75. data/lib/rubocop/cop/layout/class_structure.rb +56 -10
  76. data/lib/rubocop/cop/layout/closing_parenthesis_indentation.rb +5 -5
  77. data/lib/rubocop/cop/layout/comment_indentation.rb +9 -2
  78. data/lib/rubocop/cop/layout/condition_position.rb +13 -3
  79. data/lib/rubocop/cop/layout/def_end_alignment.rb +1 -1
  80. data/lib/rubocop/cop/layout/dot_position.rb +2 -2
  81. data/lib/rubocop/cop/layout/else_alignment.rb +2 -15
  82. data/lib/rubocop/cop/layout/empty_comment.rb +8 -10
  83. data/lib/rubocop/cop/layout/empty_line_after_guard_clause.rb +28 -9
  84. data/lib/rubocop/cop/layout/empty_line_between_defs.rb +46 -21
  85. data/lib/rubocop/cop/layout/empty_lines_after_module_inclusion.rb +101 -0
  86. data/lib/rubocop/cop/layout/empty_lines_around_access_modifier.rb +34 -4
  87. data/lib/rubocop/cop/layout/empty_lines_around_arguments.rb +8 -29
  88. data/lib/rubocop/cop/layout/empty_lines_around_attribute_accessor.rb +1 -0
  89. data/lib/rubocop/cop/layout/empty_lines_around_block_body.rb +13 -2
  90. data/lib/rubocop/cop/layout/empty_lines_around_class_body.rb +17 -3
  91. data/lib/rubocop/cop/layout/empty_lines_around_method_body.rb +22 -2
  92. data/lib/rubocop/cop/layout/empty_lines_around_module_body.rb +16 -2
  93. data/lib/rubocop/cop/layout/end_alignment.rb +10 -3
  94. data/lib/rubocop/cop/layout/first_argument_indentation.rb +35 -2
  95. data/lib/rubocop/cop/layout/first_array_element_line_break.rb +26 -0
  96. data/lib/rubocop/cop/layout/first_hash_element_indentation.rb +20 -15
  97. data/lib/rubocop/cop/layout/first_hash_element_line_break.rb +25 -25
  98. data/lib/rubocop/cop/layout/hash_alignment.rb +5 -8
  99. data/lib/rubocop/cop/layout/heredoc_argument_closing_parenthesis.rb +3 -3
  100. data/lib/rubocop/cop/layout/heredoc_indentation.rb +33 -3
  101. data/lib/rubocop/cop/layout/indentation_style.rb +1 -1
  102. data/lib/rubocop/cop/layout/indentation_width.rb +152 -7
  103. data/lib/rubocop/cop/layout/leading_comment_space.rb +13 -1
  104. data/lib/rubocop/cop/layout/line_continuation_spacing.rb +1 -1
  105. data/lib/rubocop/cop/layout/line_length.rb +62 -15
  106. data/lib/rubocop/cop/layout/multiline_array_brace_layout.rb +57 -57
  107. data/lib/rubocop/cop/layout/multiline_assignment_layout.rb +9 -2
  108. data/lib/rubocop/cop/layout/multiline_block_layout.rb +3 -0
  109. data/lib/rubocop/cop/layout/multiline_hash_brace_layout.rb +56 -56
  110. data/lib/rubocop/cop/layout/multiline_method_call_brace_layout.rb +1 -1
  111. data/lib/rubocop/cop/layout/multiline_method_call_indentation.rb +236 -41
  112. data/lib/rubocop/cop/layout/multiline_method_parameter_line_breaks.rb +1 -0
  113. data/lib/rubocop/cop/layout/multiline_operation_indentation.rb +9 -5
  114. data/lib/rubocop/cop/layout/parameter_alignment.rb +1 -1
  115. data/lib/rubocop/cop/layout/redundant_line_break.rb +12 -6
  116. data/lib/rubocop/cop/layout/rescue_ensure_alignment.rb +15 -7
  117. data/lib/rubocop/cop/layout/space_after_comma.rb +2 -10
  118. data/lib/rubocop/cop/layout/space_after_semicolon.rb +11 -1
  119. data/lib/rubocop/cop/layout/space_around_block_parameters.rb +1 -1
  120. data/lib/rubocop/cop/layout/space_around_keyword.rb +10 -3
  121. data/lib/rubocop/cop/layout/space_around_method_call_operator.rb +1 -1
  122. data/lib/rubocop/cop/layout/space_around_operators.rb +18 -3
  123. data/lib/rubocop/cop/layout/space_before_block_braces.rb +1 -0
  124. data/lib/rubocop/cop/layout/space_before_brackets.rb +6 -39
  125. data/lib/rubocop/cop/layout/space_in_lambda_literal.rb +9 -8
  126. data/lib/rubocop/cop/layout/space_inside_array_literal_brackets.rb +12 -3
  127. data/lib/rubocop/cop/layout/space_inside_block_braces.rb +1 -0
  128. data/lib/rubocop/cop/layout/space_inside_hash_literal_braces.rb +3 -0
  129. data/lib/rubocop/cop/layout/trailing_whitespace.rb +1 -1
  130. data/lib/rubocop/cop/lint/ambiguous_assignment.rb +1 -11
  131. data/lib/rubocop/cop/lint/ambiguous_block_association.rb +1 -1
  132. data/lib/rubocop/cop/lint/ambiguous_operator_precedence.rb +1 -10
  133. data/lib/rubocop/cop/lint/ambiguous_range.rb +5 -0
  134. data/lib/rubocop/cop/lint/array_literal_in_regexp.rb +2 -3
  135. data/lib/rubocop/cop/lint/assignment_in_condition.rb +13 -1
  136. data/lib/rubocop/cop/lint/boolean_symbol.rb +1 -1
  137. data/lib/rubocop/cop/lint/circular_argument_reference.rb +47 -8
  138. data/lib/rubocop/cop/lint/constant_overwritten_in_rescue.rb +4 -3
  139. data/lib/rubocop/cop/lint/constant_reassignment.rb +93 -11
  140. data/lib/rubocop/cop/lint/constant_resolution.rb +6 -6
  141. data/lib/rubocop/cop/lint/cop_directive_syntax.rb +90 -0
  142. data/lib/rubocop/cop/lint/data_define_override.rb +63 -0
  143. data/lib/rubocop/cop/lint/debugger.rb +13 -4
  144. data/lib/rubocop/cop/lint/deprecated_class_methods.rb +1 -1
  145. data/lib/rubocop/cop/lint/deprecated_constants.rb +2 -8
  146. data/lib/rubocop/cop/lint/deprecated_open_ssl_constant.rb +5 -2
  147. data/lib/rubocop/cop/lint/duplicate_match_pattern.rb +4 -4
  148. data/lib/rubocop/cop/lint/duplicate_methods.rb +219 -32
  149. data/lib/rubocop/cop/lint/duplicate_regexp_character_class_element.rb +5 -42
  150. data/lib/rubocop/cop/lint/else_layout.rb +19 -0
  151. data/lib/rubocop/cop/lint/empty_block.rb +4 -4
  152. data/lib/rubocop/cop/lint/empty_conditional_body.rb +20 -65
  153. data/lib/rubocop/cop/lint/empty_expression.rb +0 -2
  154. data/lib/rubocop/cop/lint/empty_in_pattern.rb +8 -1
  155. data/lib/rubocop/cop/lint/empty_interpolation.rb +14 -1
  156. data/lib/rubocop/cop/lint/empty_when.rb +8 -1
  157. data/lib/rubocop/cop/lint/ensure_return.rb +19 -1
  158. data/lib/rubocop/cop/lint/erb_new_arguments.rb +4 -8
  159. data/lib/rubocop/cop/lint/float_comparison.rb +33 -10
  160. data/lib/rubocop/cop/lint/format_parameter_mismatch.rb +1 -1
  161. data/lib/rubocop/cop/lint/identity_comparison.rb +19 -15
  162. data/lib/rubocop/cop/lint/incompatible_io_select_with_fiber_scheduler.rb +5 -1
  163. data/lib/rubocop/cop/lint/interpolation_check.rb +25 -5
  164. data/lib/rubocop/cop/lint/lambda_without_literal_block.rb +1 -1
  165. data/lib/rubocop/cop/lint/literal_as_condition.rb +129 -11
  166. data/lib/rubocop/cop/lint/literal_assignment_in_condition.rb +11 -1
  167. data/lib/rubocop/cop/lint/literal_in_interpolation.rb +9 -12
  168. data/lib/rubocop/cop/lint/missing_cop_enable_directive.rb +19 -10
  169. data/lib/rubocop/cop/lint/mixed_case_range.rb +2 -2
  170. data/lib/rubocop/cop/lint/multiple_comparison.rb +2 -2
  171. data/lib/rubocop/cop/lint/nested_method_definition.rb +1 -1
  172. data/lib/rubocop/cop/lint/next_without_accumulator.rb +2 -0
  173. data/lib/rubocop/cop/lint/no_return_in_begin_end_blocks.rb +20 -0
  174. data/lib/rubocop/cop/lint/non_deterministic_require_order.rb +4 -2
  175. data/lib/rubocop/cop/lint/non_local_exit_from_iterator.rb +4 -4
  176. data/lib/rubocop/cop/lint/number_conversion.rb +19 -10
  177. data/lib/rubocop/cop/lint/numbered_parameter_assignment.rb +1 -1
  178. data/lib/rubocop/cop/lint/numeric_operation_with_constant_result.rb +11 -0
  179. data/lib/rubocop/cop/lint/or_assignment_to_constant.rb +1 -1
  180. data/lib/rubocop/cop/lint/ordered_magic_comments.rb +7 -7
  181. data/lib/rubocop/cop/lint/parentheses_as_grouped_expression.rb +3 -13
  182. data/lib/rubocop/cop/lint/raise_exception.rb +30 -11
  183. data/lib/rubocop/cop/lint/rand_one.rb +1 -1
  184. data/lib/rubocop/cop/lint/redundant_cop_disable_directive.rb +27 -10
  185. data/lib/rubocop/cop/lint/redundant_cop_enable_directive.rb +6 -12
  186. data/lib/rubocop/cop/lint/redundant_dir_glob_sort.rb +15 -4
  187. data/lib/rubocop/cop/lint/redundant_regexp_quantifiers.rb +1 -1
  188. data/lib/rubocop/cop/lint/redundant_require_statement.rb +4 -23
  189. data/lib/rubocop/cop/lint/redundant_safe_navigation.rb +134 -11
  190. data/lib/rubocop/cop/lint/redundant_splat_expansion.rb +12 -2
  191. data/lib/rubocop/cop/lint/redundant_type_conversion.rb +268 -0
  192. data/lib/rubocop/cop/lint/redundant_with_index.rb +4 -1
  193. data/lib/rubocop/cop/lint/redundant_with_object.rb +8 -0
  194. data/lib/rubocop/cop/lint/refinement_import_methods.rb +8 -1
  195. data/lib/rubocop/cop/lint/regexp_as_condition.rb +9 -1
  196. data/lib/rubocop/cop/lint/require_parentheses.rb +13 -4
  197. data/lib/rubocop/cop/lint/require_range_parentheses.rb +3 -2
  198. data/lib/rubocop/cop/lint/require_relative_self_path.rb +7 -5
  199. data/lib/rubocop/cop/lint/rescue_exception.rb +1 -4
  200. data/lib/rubocop/cop/lint/rescue_type.rb +2 -2
  201. data/lib/rubocop/cop/lint/return_in_void_context.rb +9 -11
  202. data/lib/rubocop/cop/lint/safe_navigation_chain.rb +22 -4
  203. data/lib/rubocop/cop/lint/safe_navigation_consistency.rb +7 -1
  204. data/lib/rubocop/cop/lint/safe_navigation_with_empty.rb +1 -1
  205. data/lib/rubocop/cop/lint/script_permission.rb +5 -1
  206. data/lib/rubocop/cop/lint/self_assignment.rb +63 -6
  207. data/lib/rubocop/cop/lint/send_with_mixin_argument.rb +1 -1
  208. data/lib/rubocop/cop/lint/shadowed_argument.rb +7 -7
  209. data/lib/rubocop/cop/lint/shadowed_exception.rb +1 -1
  210. data/lib/rubocop/cop/lint/shadowing_outer_local_variable.rb +27 -1
  211. data/lib/rubocop/cop/lint/shared_mutable_default.rb +14 -1
  212. data/lib/rubocop/cop/lint/struct_new_override.rb +17 -1
  213. data/lib/rubocop/cop/lint/suppressed_exception.rb +1 -1
  214. data/lib/rubocop/cop/lint/suppressed_exception_in_number_conversion.rb +123 -0
  215. data/lib/rubocop/cop/lint/symbol_conversion.rb +21 -4
  216. data/lib/rubocop/cop/lint/syntax.rb +25 -1
  217. data/lib/rubocop/cop/lint/to_enum_arguments.rb +36 -3
  218. data/lib/rubocop/cop/lint/to_json.rb +20 -17
  219. data/lib/rubocop/cop/lint/top_level_return_with_argument.rb +1 -1
  220. data/lib/rubocop/cop/lint/trailing_comma_in_attribute_declaration.rb +5 -1
  221. data/lib/rubocop/cop/lint/unescaped_bracket_in_regexp.rb +36 -10
  222. data/lib/rubocop/cop/lint/unexpected_block_arity.rb +2 -0
  223. data/lib/rubocop/cop/lint/unmodified_reduce_accumulator.rb +2 -1
  224. data/lib/rubocop/cop/lint/unreachable_code.rb +17 -9
  225. data/lib/rubocop/cop/lint/unreachable_loop.rb +5 -5
  226. data/lib/rubocop/cop/lint/unreachable_pattern_branch.rb +113 -0
  227. data/lib/rubocop/cop/lint/unused_method_argument.rb +10 -0
  228. data/lib/rubocop/cop/lint/uri_escape_unescape.rb +2 -0
  229. data/lib/rubocop/cop/lint/useless_access_modifier.rb +30 -4
  230. data/lib/rubocop/cop/lint/useless_assignment.rb +55 -25
  231. data/lib/rubocop/cop/lint/useless_constant_scoping.rb +71 -0
  232. data/lib/rubocop/cop/lint/useless_default_value_argument.rb +92 -0
  233. data/lib/rubocop/cop/lint/useless_numeric_operation.rb +11 -10
  234. data/lib/rubocop/cop/lint/useless_or.rb +111 -0
  235. data/lib/rubocop/cop/lint/useless_rescue.rb +1 -1
  236. data/lib/rubocop/cop/lint/useless_ruby2_keywords.rb +11 -7
  237. data/lib/rubocop/cop/lint/useless_setter_call.rb +4 -1
  238. data/lib/rubocop/cop/lint/useless_times.rb +22 -1
  239. data/lib/rubocop/cop/lint/utils/nil_receiver_checker.rb +147 -0
  240. data/lib/rubocop/cop/lint/void.rb +50 -21
  241. data/lib/rubocop/cop/message_annotator.rb +7 -3
  242. data/lib/rubocop/cop/metrics/abc_size.rb +1 -1
  243. data/lib/rubocop/cop/metrics/block_length.rb +2 -1
  244. data/lib/rubocop/cop/metrics/block_nesting.rb +23 -0
  245. data/lib/rubocop/cop/metrics/collection_literal_length.rb +1 -1
  246. data/lib/rubocop/cop/metrics/method_length.rb +3 -2
  247. data/lib/rubocop/cop/metrics/perceived_complexity.rb +38 -7
  248. data/lib/rubocop/cop/metrics/utils/abc_size_calculator.rb +4 -3
  249. data/lib/rubocop/cop/metrics/utils/code_length_calculator.rb +1 -1
  250. data/lib/rubocop/cop/metrics/utils/iterating_block.rb +1 -1
  251. data/lib/rubocop/cop/metrics/utils/repeated_attribute_discount.rb +7 -7
  252. data/lib/rubocop/cop/migration/department_name.rb +12 -1
  253. data/lib/rubocop/cop/mixin/alignment.rb +3 -3
  254. data/lib/rubocop/cop/mixin/allowed_methods.rb +5 -5
  255. data/lib/rubocop/cop/mixin/allowed_pattern.rb +9 -5
  256. data/lib/rubocop/cop/mixin/check_line_breakable.rb +4 -4
  257. data/lib/rubocop/cop/mixin/check_single_line_suitability.rb +5 -7
  258. data/lib/rubocop/cop/mixin/code_length.rb +1 -1
  259. data/lib/rubocop/cop/mixin/comments_help.rb +1 -1
  260. data/lib/rubocop/cop/mixin/configurable_max.rb +6 -5
  261. data/lib/rubocop/cop/mixin/def_node.rb +1 -1
  262. data/lib/rubocop/cop/mixin/empty_lines_around_body.rb +1 -1
  263. data/lib/rubocop/cop/mixin/end_keyword_alignment.rb +1 -7
  264. data/lib/rubocop/cop/mixin/forbidden_identifiers.rb +20 -0
  265. data/lib/rubocop/cop/mixin/forbidden_pattern.rb +20 -0
  266. data/lib/rubocop/cop/mixin/frozen_string_literal.rb +1 -2
  267. data/lib/rubocop/cop/mixin/gemspec_help.rb +22 -0
  268. data/lib/rubocop/cop/mixin/hash_alignment_styles.rb +15 -14
  269. data/lib/rubocop/cop/mixin/hash_shorthand_syntax.rb +22 -22
  270. data/lib/rubocop/cop/mixin/hash_subset.rb +27 -4
  271. data/lib/rubocop/cop/mixin/hash_transform_method/autocorrection.rb +63 -0
  272. data/lib/rubocop/cop/mixin/hash_transform_method.rb +32 -78
  273. data/lib/rubocop/cop/mixin/line_length_help.rb +45 -10
  274. data/lib/rubocop/cop/mixin/method_complexity.rb +2 -1
  275. data/lib/rubocop/cop/mixin/multiline_expression_indentation.rb +3 -1
  276. data/lib/rubocop/cop/mixin/multiline_literal_brace_layout.rb +1 -1
  277. data/lib/rubocop/cop/mixin/ordered_gem_node.rb +1 -1
  278. data/lib/rubocop/cop/mixin/percent_literal.rb +1 -1
  279. data/lib/rubocop/cop/mixin/project_index_help.rb +48 -0
  280. data/lib/rubocop/cop/mixin/range_help.rb +15 -3
  281. data/lib/rubocop/cop/mixin/space_after_punctuation.rb +5 -4
  282. data/lib/rubocop/cop/mixin/statement_modifier.rb +1 -7
  283. data/lib/rubocop/cop/mixin/string_help.rb +1 -1
  284. data/lib/rubocop/cop/mixin/target_ruby_version.rb +1 -1
  285. data/lib/rubocop/cop/mixin/trailing_comma.rb +25 -6
  286. data/lib/rubocop/cop/mixin.rb +86 -0
  287. data/lib/rubocop/cop/naming/binary_operator_parameter_name.rb +1 -1
  288. data/lib/rubocop/cop/naming/block_forwarding.rb +3 -3
  289. data/lib/rubocop/cop/naming/block_parameter_name.rb +1 -1
  290. data/lib/rubocop/cop/naming/file_name.rb +6 -5
  291. data/lib/rubocop/cop/naming/inclusive_language.rb +8 -2
  292. data/lib/rubocop/cop/naming/memoized_instance_variable_name.rb +11 -2
  293. data/lib/rubocop/cop/naming/method_name.rb +187 -15
  294. data/lib/rubocop/cop/naming/predicate_method.rb +330 -0
  295. data/lib/rubocop/cop/naming/{predicate_name.rb → predicate_prefix.rb} +48 -4
  296. data/lib/rubocop/cop/naming/rescued_exceptions_variable_name.rb +10 -4
  297. data/lib/rubocop/cop/naming/variable_name.rb +51 -6
  298. data/lib/rubocop/cop/offense.rb +17 -1
  299. data/lib/rubocop/cop/registry.rb +66 -39
  300. data/lib/rubocop/cop/security/eval.rb +17 -3
  301. data/lib/rubocop/cop/security/io_methods.rb +2 -2
  302. data/lib/rubocop/cop/security/json_load.rb +33 -11
  303. data/lib/rubocop/cop/security/marshal_load.rb +1 -1
  304. data/lib/rubocop/cop/security/open.rb +1 -0
  305. data/lib/rubocop/cop/style/access_modifier_declarations.rb +45 -12
  306. data/lib/rubocop/cop/style/accessor_grouping.rb +46 -8
  307. data/lib/rubocop/cop/style/alias.rb +15 -3
  308. data/lib/rubocop/cop/style/and_or.rb +2 -1
  309. data/lib/rubocop/cop/style/arguments_forwarding.rb +46 -31
  310. data/lib/rubocop/cop/style/array_first_last.rb +12 -1
  311. data/lib/rubocop/cop/style/array_intersect.rb +117 -38
  312. data/lib/rubocop/cop/style/array_intersect_with_single_element.rb +50 -0
  313. data/lib/rubocop/cop/style/array_join.rb +4 -2
  314. data/lib/rubocop/cop/style/ascii_comments.rb +6 -3
  315. data/lib/rubocop/cop/style/attr.rb +5 -2
  316. data/lib/rubocop/cop/style/bare_percent_literals.rb +4 -3
  317. data/lib/rubocop/cop/style/begin_block.rb +3 -1
  318. data/lib/rubocop/cop/style/bitwise_predicate.rb +8 -1
  319. data/lib/rubocop/cop/style/block_delimiters.rb +42 -34
  320. data/lib/rubocop/cop/style/case_equality.rb +29 -15
  321. data/lib/rubocop/cop/style/case_like_if.rb +1 -1
  322. data/lib/rubocop/cop/style/character_literal.rb +2 -2
  323. data/lib/rubocop/cop/style/class_and_module_children.rb +67 -12
  324. data/lib/rubocop/cop/style/class_equality_comparison.rb +22 -14
  325. data/lib/rubocop/cop/style/class_methods_definitions.rb +11 -5
  326. data/lib/rubocop/cop/style/collection_compact.rb +37 -17
  327. data/lib/rubocop/cop/style/collection_methods.rb +1 -0
  328. data/lib/rubocop/cop/style/collection_querying.rb +167 -0
  329. data/lib/rubocop/cop/style/colon_method_call.rb +16 -7
  330. data/lib/rubocop/cop/style/combinable_loops.rb +6 -0
  331. data/lib/rubocop/cop/style/command_literal.rb +1 -1
  332. data/lib/rubocop/cop/style/commented_keyword.rb +12 -5
  333. data/lib/rubocop/cop/style/comparable_between.rb +78 -0
  334. data/lib/rubocop/cop/style/comparable_clamp.rb +12 -1
  335. data/lib/rubocop/cop/style/concat_array_literals.rb +7 -1
  336. data/lib/rubocop/cop/style/conditional_assignment.rb +33 -24
  337. data/lib/rubocop/cop/style/constant_visibility.rb +20 -12
  338. data/lib/rubocop/cop/style/copyright.rb +22 -11
  339. data/lib/rubocop/cop/style/data_inheritance.rb +11 -0
  340. data/lib/rubocop/cop/style/date_time.rb +4 -4
  341. data/lib/rubocop/cop/style/def_with_parentheses.rb +22 -5
  342. data/lib/rubocop/cop/style/dig_chain.rb +6 -1
  343. data/lib/rubocop/cop/style/dir_empty.rb +4 -0
  344. data/lib/rubocop/cop/style/disable_cops_within_source_code_directive.rb +1 -1
  345. data/lib/rubocop/cop/style/document_dynamic_eval_definition.rb +6 -1
  346. data/lib/rubocop/cop/style/documentation.rb +6 -6
  347. data/lib/rubocop/cop/style/documentation_method.rb +12 -8
  348. data/lib/rubocop/cop/style/double_negation.rb +3 -3
  349. data/lib/rubocop/cop/style/each_for_simple_loop.rb +1 -1
  350. data/lib/rubocop/cop/style/each_with_object.rb +4 -3
  351. data/lib/rubocop/cop/style/empty_block_parameter.rb +1 -1
  352. data/lib/rubocop/cop/style/empty_case_condition.rb +12 -2
  353. data/lib/rubocop/cop/style/empty_class_definition.rb +126 -0
  354. data/lib/rubocop/cop/style/empty_heredoc.rb +4 -0
  355. data/lib/rubocop/cop/style/empty_lambda_parameter.rb +1 -1
  356. data/lib/rubocop/cop/style/empty_literal.rb +11 -2
  357. data/lib/rubocop/cop/style/empty_method.rb +0 -6
  358. data/lib/rubocop/cop/style/empty_string_inside_interpolation.rb +110 -0
  359. data/lib/rubocop/cop/style/encoding.rb +7 -1
  360. data/lib/rubocop/cop/style/end_block.rb +3 -1
  361. data/lib/rubocop/cop/style/endless_method.rb +181 -18
  362. data/lib/rubocop/cop/style/env_home.rb +4 -0
  363. data/lib/rubocop/cop/style/eval_with_location.rb +3 -3
  364. data/lib/rubocop/cop/style/even_odd.rb +11 -1
  365. data/lib/rubocop/cop/style/exact_regexp_match.rb +8 -1
  366. data/lib/rubocop/cop/style/expand_path_arguments.rb +2 -7
  367. data/lib/rubocop/cop/style/explicit_block_argument.rb +16 -3
  368. data/lib/rubocop/cop/style/exponential_notation.rb +5 -4
  369. data/lib/rubocop/cop/style/fetch_env_var.rb +33 -7
  370. data/lib/rubocop/cop/style/file_null.rb +4 -2
  371. data/lib/rubocop/cop/style/file_open.rb +84 -0
  372. data/lib/rubocop/cop/style/file_write.rb +21 -16
  373. data/lib/rubocop/cop/style/float_division.rb +15 -1
  374. data/lib/rubocop/cop/style/for.rb +4 -0
  375. data/lib/rubocop/cop/style/format_string.rb +17 -4
  376. data/lib/rubocop/cop/style/format_string_token.rb +85 -14
  377. data/lib/rubocop/cop/style/frozen_string_literal_comment.rb +3 -2
  378. data/lib/rubocop/cop/style/global_std_stream.rb +3 -0
  379. data/lib/rubocop/cop/style/global_vars.rb +5 -2
  380. data/lib/rubocop/cop/style/guard_clause.rb +29 -23
  381. data/lib/rubocop/cop/style/hash_as_last_array_item.rb +27 -9
  382. data/lib/rubocop/cop/style/hash_conversion.rb +28 -12
  383. data/lib/rubocop/cop/style/hash_each_methods.rb +3 -2
  384. data/lib/rubocop/cop/style/hash_fetch_chain.rb +104 -0
  385. data/lib/rubocop/cop/style/hash_lookup_method.rb +102 -0
  386. data/lib/rubocop/cop/style/hash_slice.rb +16 -0
  387. data/lib/rubocop/cop/style/hash_syntax.rb +6 -1
  388. data/lib/rubocop/cop/style/hash_transform_keys.rb +19 -9
  389. data/lib/rubocop/cop/style/hash_transform_values.rb +19 -9
  390. data/lib/rubocop/cop/style/identical_conditional_branches.rb +18 -7
  391. data/lib/rubocop/cop/style/if_inside_else.rb +26 -20
  392. data/lib/rubocop/cop/style/if_unless_modifier.rb +83 -16
  393. data/lib/rubocop/cop/style/if_unless_modifier_of_if_unless.rb +16 -19
  394. data/lib/rubocop/cop/style/if_with_boolean_literal_branches.rb +5 -2
  395. data/lib/rubocop/cop/style/if_with_semicolon.rb +16 -6
  396. data/lib/rubocop/cop/style/infinite_loop.rb +1 -1
  397. data/lib/rubocop/cop/style/inline_comment.rb +5 -2
  398. data/lib/rubocop/cop/style/inverse_methods.rb +10 -6
  399. data/lib/rubocop/cop/style/invertible_unless_condition.rb +27 -7
  400. data/lib/rubocop/cop/style/ip_addresses.rb +3 -4
  401. data/lib/rubocop/cop/style/it_assignment.rb +69 -12
  402. data/lib/rubocop/cop/style/it_block_parameter.rb +121 -0
  403. data/lib/rubocop/cop/style/keyword_arguments_merging.rb +4 -0
  404. data/lib/rubocop/cop/style/keyword_parameters_order.rb +20 -10
  405. data/lib/rubocop/cop/style/lambda.rb +8 -1
  406. data/lib/rubocop/cop/style/lambda_call.rb +26 -10
  407. data/lib/rubocop/cop/style/line_end_concatenation.rb +10 -4
  408. data/lib/rubocop/cop/style/magic_comment_format.rb +3 -3
  409. data/lib/rubocop/cop/style/map_compact_with_conditional_block.rb +11 -0
  410. data/lib/rubocop/cop/style/map_into_array.rb +5 -2
  411. data/lib/rubocop/cop/style/map_join.rb +123 -0
  412. data/lib/rubocop/cop/style/map_to_hash.rb +12 -3
  413. data/lib/rubocop/cop/style/map_to_set.rb +1 -3
  414. data/lib/rubocop/cop/style/method_call_with_args_parentheses/omit_parentheses.rb +9 -8
  415. data/lib/rubocop/cop/style/method_call_with_args_parentheses/require_parentheses.rb +15 -2
  416. data/lib/rubocop/cop/style/method_call_with_args_parentheses.rb +33 -4
  417. data/lib/rubocop/cop/style/method_call_without_args_parentheses.rb +11 -5
  418. data/lib/rubocop/cop/style/method_called_on_do_end_block.rb +2 -1
  419. data/lib/rubocop/cop/style/method_def_parentheses.rb +7 -5
  420. data/lib/rubocop/cop/style/min_max_comparison.rb +17 -6
  421. data/lib/rubocop/cop/style/missing_respond_to_missing.rb +10 -7
  422. data/lib/rubocop/cop/style/mixin_usage.rb +1 -1
  423. data/lib/rubocop/cop/style/module_function.rb +4 -2
  424. data/lib/rubocop/cop/style/module_member_existence_check.rb +110 -0
  425. data/lib/rubocop/cop/style/multiline_block_chain.rb +2 -1
  426. data/lib/rubocop/cop/style/multiline_if_modifier.rb +2 -0
  427. data/lib/rubocop/cop/style/multiline_if_then.rb +4 -4
  428. data/lib/rubocop/cop/style/multiline_memoization.rb +7 -1
  429. data/lib/rubocop/cop/style/multiline_method_signature.rb +13 -16
  430. data/lib/rubocop/cop/style/mutable_constant.rb +106 -12
  431. data/lib/rubocop/cop/style/negative_array_index.rb +220 -0
  432. data/lib/rubocop/cop/style/next.rb +44 -0
  433. data/lib/rubocop/cop/style/nil_comparison.rb +11 -10
  434. data/lib/rubocop/cop/style/nil_lambda.rb +9 -1
  435. data/lib/rubocop/cop/style/non_nil_check.rb +5 -11
  436. data/lib/rubocop/cop/style/not.rb +2 -0
  437. data/lib/rubocop/cop/style/numeric_literals.rb +3 -2
  438. data/lib/rubocop/cop/style/numeric_predicate.rb +1 -1
  439. data/lib/rubocop/cop/style/object_then.rb +1 -0
  440. data/lib/rubocop/cop/style/one_class_per_file.rb +115 -0
  441. data/lib/rubocop/cop/style/one_line_conditional.rb +21 -12
  442. data/lib/rubocop/cop/style/open_struct_use.rb +1 -1
  443. data/lib/rubocop/cop/style/operator_method_call.rb +11 -2
  444. data/lib/rubocop/cop/style/option_hash.rb +1 -1
  445. data/lib/rubocop/cop/style/optional_arguments.rb +1 -0
  446. data/lib/rubocop/cop/style/parallel_assignment.rb +57 -25
  447. data/lib/rubocop/cop/style/partition_instead_of_double_select.rb +270 -0
  448. data/lib/rubocop/cop/style/percent_literal_delimiters.rb +4 -0
  449. data/lib/rubocop/cop/style/percent_q_literals.rb +1 -1
  450. data/lib/rubocop/cop/style/perl_backrefs.rb +5 -3
  451. data/lib/rubocop/cop/style/predicate_with_kind.rb +84 -0
  452. data/lib/rubocop/cop/style/preferred_hash_methods.rb +12 -12
  453. data/lib/rubocop/cop/style/proc.rb +4 -2
  454. data/lib/rubocop/cop/style/raise_args.rb +9 -9
  455. data/lib/rubocop/cop/style/reduce_to_hash.rb +200 -0
  456. data/lib/rubocop/cop/style/redundant_argument.rb +2 -0
  457. data/lib/rubocop/cop/style/redundant_array_constructor.rb +2 -2
  458. data/lib/rubocop/cop/style/redundant_array_flatten.rb +50 -0
  459. data/lib/rubocop/cop/style/redundant_begin.rb +38 -3
  460. data/lib/rubocop/cop/style/redundant_condition.rb +61 -1
  461. data/lib/rubocop/cop/style/redundant_constant_base.rb +5 -5
  462. data/lib/rubocop/cop/style/redundant_current_directory_in_path.rb +26 -4
  463. data/lib/rubocop/cop/style/redundant_each.rb +3 -3
  464. data/lib/rubocop/cop/style/redundant_exception.rb +7 -1
  465. data/lib/rubocop/cop/style/redundant_fetch_block.rb +2 -10
  466. data/lib/rubocop/cop/style/redundant_filter_chain.rb +1 -1
  467. data/lib/rubocop/cop/style/redundant_format.rb +312 -0
  468. data/lib/rubocop/cop/style/redundant_freeze.rb +2 -2
  469. data/lib/rubocop/cop/style/redundant_heredoc_delimiter_quotes.rb +6 -1
  470. data/lib/rubocop/cop/style/redundant_interpolation.rb +12 -3
  471. data/lib/rubocop/cop/style/redundant_interpolation_unfreeze.rb +26 -10
  472. data/lib/rubocop/cop/style/redundant_line_continuation.rb +28 -7
  473. data/lib/rubocop/cop/style/redundant_min_max_by.rb +93 -0
  474. data/lib/rubocop/cop/style/redundant_parentheses.rb +111 -37
  475. data/lib/rubocop/cop/style/redundant_percent_q.rb +5 -3
  476. data/lib/rubocop/cop/style/redundant_regexp_argument.rb +9 -0
  477. data/lib/rubocop/cop/style/redundant_regexp_constructor.rb +2 -2
  478. data/lib/rubocop/cop/style/redundant_regexp_escape.rb +12 -0
  479. data/lib/rubocop/cop/style/redundant_return.rb +3 -1
  480. data/lib/rubocop/cop/style/redundant_self.rb +20 -7
  481. data/lib/rubocop/cop/style/redundant_self_assignment.rb +1 -1
  482. data/lib/rubocop/cop/style/redundant_self_assignment_branch.rb +0 -5
  483. data/lib/rubocop/cop/style/redundant_sort.rb +7 -7
  484. data/lib/rubocop/cop/style/redundant_sort_by.rb +17 -1
  485. data/lib/rubocop/cop/style/redundant_struct_keyword_init.rb +133 -0
  486. data/lib/rubocop/cop/style/regexp_literal.rb +32 -3
  487. data/lib/rubocop/cop/style/rescue_modifier.rb +6 -3
  488. data/lib/rubocop/cop/style/return_nil.rb +2 -2
  489. data/lib/rubocop/cop/style/reverse_find.rb +51 -0
  490. data/lib/rubocop/cop/style/safe_navigation.rb +67 -20
  491. data/lib/rubocop/cop/style/select_by_kind.rb +158 -0
  492. data/lib/rubocop/cop/style/select_by_range.rb +197 -0
  493. data/lib/rubocop/cop/style/select_by_regexp.rb +53 -20
  494. data/lib/rubocop/cop/style/self_assignment.rb +1 -1
  495. data/lib/rubocop/cop/style/semicolon.rb +45 -12
  496. data/lib/rubocop/cop/style/single_line_block_params.rb +2 -2
  497. data/lib/rubocop/cop/style/single_line_do_end_block.rb +21 -6
  498. data/lib/rubocop/cop/style/single_line_methods.rb +13 -8
  499. data/lib/rubocop/cop/style/sole_nested_conditional.rb +77 -101
  500. data/lib/rubocop/cop/style/special_global_vars.rb +6 -1
  501. data/lib/rubocop/cop/style/stabby_lambda_parentheses.rb +1 -1
  502. data/lib/rubocop/cop/style/string_concatenation.rb +18 -15
  503. data/lib/rubocop/cop/style/string_hash_keys.rb +1 -0
  504. data/lib/rubocop/cop/style/struct_inheritance.rb +24 -2
  505. data/lib/rubocop/cop/style/super_arguments.rb +3 -4
  506. data/lib/rubocop/cop/style/symbol_array.rb +1 -1
  507. data/lib/rubocop/cop/style/symbol_proc.rb +10 -7
  508. data/lib/rubocop/cop/style/tally_method.rb +181 -0
  509. data/lib/rubocop/cop/style/ternary_parentheses.rb +11 -0
  510. data/lib/rubocop/cop/style/top_level_method_definition.rb +3 -2
  511. data/lib/rubocop/cop/style/trailing_comma_in_arguments.rb +52 -1
  512. data/lib/rubocop/cop/style/trailing_comma_in_array_literal.rb +47 -6
  513. data/lib/rubocop/cop/style/trailing_comma_in_block_args.rb +2 -2
  514. data/lib/rubocop/cop/style/trailing_comma_in_hash_literal.rb +48 -6
  515. data/lib/rubocop/cop/style/trailing_method_end_statement.rb +1 -0
  516. data/lib/rubocop/cop/style/trailing_underscore_variable.rb +18 -19
  517. data/lib/rubocop/cop/style/trivial_accessors.rb +2 -2
  518. data/lib/rubocop/cop/style/unless_else.rb +10 -9
  519. data/lib/rubocop/cop/style/unless_logical_operators.rb +3 -3
  520. data/lib/rubocop/cop/style/while_until_do.rb +7 -0
  521. data/lib/rubocop/cop/style/while_until_modifier.rb +16 -1
  522. data/lib/rubocop/cop/style/word_array.rb +1 -0
  523. data/lib/rubocop/cop/style/yoda_condition.rb +1 -1
  524. data/lib/rubocop/cop/style/yoda_expression.rb +1 -1
  525. data/lib/rubocop/cop/style/zero_length_predicate.rb +6 -3
  526. data/lib/rubocop/cop/team.rb +105 -40
  527. data/lib/rubocop/cop/util.rb +4 -5
  528. data/lib/rubocop/cop/utils/format_string.rb +20 -5
  529. data/lib/rubocop/cop/variable_force/assignment.rb +7 -3
  530. data/lib/rubocop/cop/variable_force/branch.rb +30 -6
  531. data/lib/rubocop/cop/variable_force/scope.rb +1 -1
  532. data/lib/rubocop/cop/variable_force/variable.rb +10 -3
  533. data/lib/rubocop/cop/variable_force.rb +26 -9
  534. data/lib/rubocop/cops_documentation_generator.rb +23 -7
  535. data/lib/rubocop/directive_comment.rb +80 -3
  536. data/lib/rubocop/ext/regexp_node.rb +0 -1
  537. data/lib/rubocop/file_patterns.rb +9 -1
  538. data/lib/rubocop/formatter/clang_style_formatter.rb +5 -2
  539. data/lib/rubocop/formatter/disabled_config_formatter.rb +38 -13
  540. data/lib/rubocop/formatter/formatter_set.rb +2 -2
  541. data/lib/rubocop/formatter/fuubar_style_formatter.rb +1 -1
  542. data/lib/rubocop/formatter/html_formatter.rb +1 -1
  543. data/lib/rubocop/formatter/junit_formatter.rb +1 -1
  544. data/lib/rubocop/formatter/markdown_formatter.rb +1 -0
  545. data/lib/rubocop/formatter/offense_count_formatter.rb +1 -1
  546. data/lib/rubocop/formatter/pacman_formatter.rb +2 -1
  547. data/lib/rubocop/formatter/simple_text_formatter.rb +0 -2
  548. data/lib/rubocop/formatter/tap_formatter.rb +5 -2
  549. data/lib/rubocop/formatter/worst_offenders_formatter.rb +1 -1
  550. data/lib/rubocop/formatter.rb +22 -21
  551. data/lib/rubocop/lsp/diagnostic.rb +22 -37
  552. data/lib/rubocop/lsp/disable_comment_edits.rb +135 -0
  553. data/lib/rubocop/lsp/routes.rb +47 -11
  554. data/lib/rubocop/lsp/runtime.rb +19 -8
  555. data/lib/rubocop/lsp/server.rb +0 -2
  556. data/lib/rubocop/lsp/stdin_runner.rb +11 -18
  557. data/lib/rubocop/magic_comment.rb +28 -0
  558. data/lib/rubocop/mcp/server.rb +200 -0
  559. data/lib/rubocop/options.rb +60 -14
  560. data/lib/rubocop/path_util.rb +18 -2
  561. data/lib/rubocop/pending_cops_reporter.rb +56 -0
  562. data/lib/rubocop/plugin/configuration_integrator.rb +143 -0
  563. data/lib/rubocop/plugin/load_error.rb +26 -0
  564. data/lib/rubocop/plugin/loader.rb +100 -0
  565. data/lib/rubocop/plugin/not_supported_error.rb +29 -0
  566. data/lib/rubocop/plugin.rb +46 -0
  567. data/lib/rubocop/project_index_loader.rb +66 -0
  568. data/lib/rubocop/rake_task.rb +5 -2
  569. data/lib/rubocop/remote_config.rb +10 -8
  570. data/lib/rubocop/result_cache.rb +72 -47
  571. data/lib/rubocop/rspec/cop_helper.rb +21 -1
  572. data/lib/rubocop/rspec/expect_offense.rb +9 -3
  573. data/lib/rubocop/rspec/shared_contexts.rb +71 -3
  574. data/lib/rubocop/rspec/support.rb +4 -0
  575. data/lib/rubocop/runner.rb +188 -65
  576. data/lib/rubocop/server/cache.rb +56 -41
  577. data/lib/rubocop/server/cli.rb +2 -2
  578. data/lib/rubocop/server/client_command/base.rb +10 -0
  579. data/lib/rubocop/server/client_command/exec.rb +2 -1
  580. data/lib/rubocop/server/client_command/start.rb +11 -1
  581. data/lib/rubocop/server/core.rb +8 -0
  582. data/lib/rubocop/target_finder.rb +21 -10
  583. data/lib/rubocop/target_ruby.rb +31 -14
  584. data/lib/rubocop/version.rb +50 -10
  585. data/lib/rubocop.rb +47 -96
  586. data/lib/ruby_lsp/rubocop/addon.rb +29 -17
  587. data/lib/ruby_lsp/rubocop/runtime_adapter.rb +99 -0
  588. metadata +86 -16
  589. data/lib/rubocop/cop/utils/regexp_ranges.rb +0 -113
  590. data/lib/ruby_lsp/rubocop/wraps_built_in_lsp_runtime.rb +0 -50
@@ -4,7 +4,9 @@ module RuboCop
4
4
  # The kind of Ruby that code inspected by RuboCop is written in.
5
5
  # @api private
6
6
  class TargetRuby
7
- KNOWN_RUBIES = [2.0, 2.1, 2.2, 2.3, 2.4, 2.5, 2.6, 2.7, 3.0, 3.1, 3.2, 3.3, 3.4].freeze
7
+ KNOWN_RUBIES = [
8
+ 2.0, 2.1, 2.2, 2.3, 2.4, 2.5, 2.6, 2.7, 3.0, 3.1, 3.2, 3.3, 3.4, 4.0, 4.1
9
+ ].freeze
8
10
  DEFAULT_VERSION = 2.7
9
11
 
10
12
  OBSOLETE_RUBIES = {
@@ -110,8 +112,17 @@ module RuboCop
110
112
  end
111
113
 
112
114
  def version_from_gemspec_file(file)
115
+ # When using parser_prism, we need to use a Ruby version that Prism supports (3.3+)
116
+ # for parsing the gemspec file. This doesn't affect the detected Ruby version,
117
+ # it's just for the parsing step.
118
+ ruby_version_for_parsing = if @config.parser_engine == :parser_prism
119
+ 3.3
120
+ else
121
+ DEFAULT_VERSION
122
+ end
123
+
113
124
  processed_source = ProcessedSource.from_file(
114
- file, DEFAULT_VERSION, parser_engine: @config.parser_engine
125
+ file, ruby_version_for_parsing, parser_engine: @config.parser_engine
115
126
  )
116
127
  return unless processed_source.valid_syntax?
117
128
 
@@ -149,21 +160,18 @@ module RuboCop
149
160
  # The target ruby version may be found in a .ruby-version file.
150
161
  # @api private
151
162
  class RubyVersionFile < Source
152
- RUBY_VERSION_FILENAME = '.ruby-version'
153
- RUBY_VERSION_PATTERN = /\A(?:ruby-)?(?<version>\d+\.\d+)/.freeze
154
-
155
163
  def name
156
- "`#{RUBY_VERSION_FILENAME}`"
164
+ "`#{filename}`"
157
165
  end
158
166
 
159
167
  private
160
168
 
161
169
  def filename
162
- RUBY_VERSION_FILENAME
170
+ '.ruby-version'
163
171
  end
164
172
 
165
173
  def pattern
166
- RUBY_VERSION_PATTERN
174
+ /\A(?:ruby-)?(?<version>\d+\.\d+)/.freeze
167
175
  end
168
176
 
169
177
  def find_version
@@ -182,21 +190,29 @@ module RuboCop
182
190
  # starting with `ruby`.
183
191
  # @api private
184
192
  class ToolVersionsFile < RubyVersionFile
185
- TOOL_VERSIONS_FILENAME = '.tool-versions'
186
- TOOL_VERSIONS_PATTERN = /^(?:ruby )(?<version>\d+\.\d+)/.freeze
193
+ private
187
194
 
188
- def name
189
- "`#{TOOL_VERSIONS_FILENAME}`"
195
+ def filename
196
+ '.tool-versions'
190
197
  end
191
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
192
208
  private
193
209
 
194
210
  def filename
195
- TOOL_VERSIONS_FILENAME
211
+ 'mise.toml'
196
212
  end
197
213
 
198
214
  def pattern
199
- TOOL_VERSIONS_PATTERN
215
+ /^ruby = "(?<version>\d+\.\d+)/.freeze
200
216
  end
201
217
  end
202
218
 
@@ -264,6 +280,7 @@ module RuboCop
264
280
  RuboCopConfig,
265
281
  GemspecFile,
266
282
  RubyVersionFile,
283
+ MiseTomlFile,
267
284
  ToolVersionsFile,
268
285
  BundlerLockFile,
269
286
  Default
@@ -3,12 +3,15 @@
3
3
  module RuboCop
4
4
  # This module holds the RuboCop version information.
5
5
  module Version
6
- STRING = '1.71.1'
6
+ STRING = '1.88.2'
7
7
 
8
8
  MSG = '%<version>s (using %<parser_version>s, ' \
9
9
  'rubocop-ast %<rubocop_ast_version>s, ' \
10
10
  'analyzing as Ruby %<target_ruby_version>s, ' \
11
- '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]'
13
+
14
+ MINIMUM_PARSABLE_PRISM_VERSION = 3.3
12
15
 
13
16
  CANONICAL_FEATURE_NAMES = {
14
17
  'Rspec' => 'RSpec', 'Graphql' => 'GraphQL', 'Md' => 'Markdown', 'Factory_bot' => 'FactoryBot',
@@ -20,12 +23,16 @@ module RuboCop
20
23
 
21
24
  # NOTE: Marked as private but used by gems like standard.
22
25
  # @api private
26
+ # rubocop:disable Metrics/MethodLength
23
27
  def self.version(debug: false, env: nil)
24
28
  if debug
25
- verbose_version = format(MSG, version: STRING, parser_version: parser_version,
29
+ target_ruby_version = target_ruby_version(env)
30
+ verbose_version = format(MSG, version: STRING,
31
+ parser_version: parser_version(target_ruby_version),
26
32
  rubocop_ast_version: RuboCop::AST::Version::STRING,
27
- target_ruby_version: target_ruby_version(env),
33
+ target_ruby_version: target_ruby_version,
28
34
  ruby_engine: RUBY_ENGINE, ruby_version: RUBY_VERSION,
35
+ rubydex_indicator: rubydex_indicator(env),
29
36
  server_mode: server_mode,
30
37
  ruby_platform: RUBY_PLATFORM)
31
38
  return verbose_version unless env
@@ -41,6 +48,7 @@ module RuboCop
41
48
  STRING
42
49
  end
43
50
  end
51
+ # rubocop:enable Metrics/MethodLength
44
52
 
45
53
  # @api private
46
54
  def self.verbose(env: nil)
@@ -48,24 +56,37 @@ module RuboCop
48
56
  end
49
57
 
50
58
  # @api private
51
- def self.parser_version
52
- config_path = ConfigFinder.find_config_path(Dir.pwd)
59
+ def self.parser_version(target_ruby_version)
60
+ config_path = ConfigFinder.find_config_path(PathUtil.pwd)
53
61
  yaml = Util.silence_warnings do
54
62
  ConfigLoader.load_yaml_configuration(config_path)
55
63
  end
64
+ parser_engine = yaml.dig('AllCops', 'ParserEngine')
65
+ parser_engine_text = ", #{parser_engine}" if parser_engine
56
66
 
57
- if yaml.dig('AllCops', 'ParserEngine') == 'parser_prism'
58
- require 'prism'
59
- "Prism #{Prism::VERSION}"
67
+ if target_ruby_version >= MINIMUM_PARSABLE_PRISM_VERSION
68
+ "Parser #{Parser::VERSION}, Prism #{Prism::VERSION}#{parser_engine_text}"
60
69
  else
61
70
  "Parser #{Parser::VERSION}"
62
71
  end
63
72
  end
64
73
 
65
74
  # @api private
75
+ # rubocop:disable Metrics/AbcSize, Metrics/CyclomaticComplexity, Metrics/MethodLength, Metrics/PerceivedComplexity
66
76
  def self.extension_versions(env)
77
+ plugins = config_for_pwd(env).loaded_plugins
78
+ plugin_versions = plugins.filter_map do |plugin|
79
+ next if Plugin::BUILTIN_INTERNAL_PLUGINS.key?(plugin.about.name)
80
+ next unless (plugin_name = plugin.about.name)
81
+
82
+ " - #{plugin_name} #{plugin.about.version}"
83
+ end
84
+
85
+ # TODO: It needs to be maintained for a while to ensure compatibility with extensions that
86
+ # don't support plugins. It should be removed in future once the old style becomes obsolete.
67
87
  features = config_for_pwd(env).loaded_features.sort
68
- features.filter_map do |loaded_feature|
88
+ features -= plugins.map { |plugin| plugin.about.name }
89
+ feature_versions = features.filter_map do |loaded_feature|
69
90
  next unless (match = loaded_feature.match(/rubocop-(?<feature>.*)/))
70
91
 
71
92
  # Get the expected name of the folder containing the extension code.
@@ -84,7 +105,10 @@ module RuboCop
84
105
 
85
106
  " - #{loaded_feature} #{feature_version}"
86
107
  end
108
+
109
+ plugin_versions + feature_versions
87
110
  end
111
+ # rubocop:enable Metrics/AbcSize, Metrics/CyclomaticComplexity, Metrics/MethodLength, Metrics/PerceivedComplexity
88
112
 
89
113
  # @api private
90
114
  def self.target_ruby_version(env)
@@ -130,6 +154,22 @@ module RuboCop
130
154
  STRING.match('\d+\.\d+').to_s
131
155
  end
132
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
+
133
173
  # @api private
134
174
  def self.server_mode
135
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,108 +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/auto_corrector' # rubocop:todo Naming/InclusiveLanguage
79
- require_relative 'rubocop/cop/mixin/check_assignment'
80
- require_relative 'rubocop/cop/mixin/check_line_breakable'
81
- require_relative 'rubocop/cop/mixin/check_single_line_suitability'
82
- require_relative 'rubocop/cop/mixin/configurable_max'
83
- require_relative 'rubocop/cop/mixin/code_length' # relies on configurable_max
84
- require_relative 'rubocop/cop/mixin/configurable_enforced_style'
85
- require_relative 'rubocop/cop/mixin/configurable_formatting'
86
- require_relative 'rubocop/cop/mixin/configurable_naming'
87
- require_relative 'rubocop/cop/mixin/configurable_numbering'
88
- require_relative 'rubocop/cop/mixin/dig_help'
89
- require_relative 'rubocop/cop/mixin/documentation_comment'
90
- require_relative 'rubocop/cop/mixin/duplication'
91
- require_relative 'rubocop/cop/mixin/range_help'
92
- require_relative 'rubocop/cop/mixin/annotation_comment' # relies on range
93
- require_relative 'rubocop/cop/mixin/empty_lines_around_body' # relies on range
94
- require_relative 'rubocop/cop/mixin/empty_parameter'
95
- require_relative 'rubocop/cop/mixin/end_keyword_alignment'
96
- require_relative 'rubocop/cop/mixin/endless_method_rewriter'
97
- require_relative 'rubocop/cop/mixin/enforce_superclass'
98
- require_relative 'rubocop/cop/mixin/first_element_line_break'
99
- require_relative 'rubocop/cop/mixin/frozen_string_literal'
100
- require_relative 'rubocop/cop/mixin/gem_declaration'
101
- require_relative 'rubocop/cop/mixin/gemspec_help'
102
- require_relative 'rubocop/cop/mixin/hash_alignment_styles'
103
- require_relative 'rubocop/cop/mixin/hash_subset'
104
- require_relative 'rubocop/cop/mixin/hash_transform_method'
105
- require_relative 'rubocop/cop/mixin/integer_node'
106
- require_relative 'rubocop/cop/mixin/interpolation'
107
- require_relative 'rubocop/cop/mixin/line_length_help'
108
- 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'
109
78
  require_relative 'rubocop/cop/metrics/utils/repeated_csend_discount'
110
79
  require_relative 'rubocop/cop/metrics/utils/repeated_attribute_discount'
111
- require_relative 'rubocop/cop/mixin/hash_shorthand_syntax'
112
- require_relative 'rubocop/cop/mixin/method_complexity'
113
- require_relative 'rubocop/cop/mixin/method_preference'
114
- require_relative 'rubocop/cop/mixin/min_body_length'
115
- require_relative 'rubocop/cop/mixin/min_branches_count'
116
- require_relative 'rubocop/cop/mixin/multiline_element_indentation'
117
- require_relative 'rubocop/cop/mixin/multiline_element_line_breaks'
118
- require_relative 'rubocop/cop/mixin/multiline_expression_indentation'
119
- require_relative 'rubocop/cop/mixin/multiline_literal_brace_layout'
120
- require_relative 'rubocop/cop/mixin/negative_conditional'
121
- require_relative 'rubocop/cop/mixin/heredoc'
122
- require_relative 'rubocop/cop/mixin/nil_methods'
123
- require_relative 'rubocop/cop/mixin/on_normal_if_unless'
124
- require_relative 'rubocop/cop/mixin/ordered_gem_node'
125
- require_relative 'rubocop/cop/mixin/parentheses'
126
- require_relative 'rubocop/cop/mixin/percent_array'
127
- require_relative 'rubocop/cop/mixin/percent_literal'
128
- require_relative 'rubocop/cop/mixin/preceding_following_alignment'
129
- require_relative 'rubocop/cop/mixin/preferred_delimiters'
130
- require_relative 'rubocop/cop/mixin/rational_literal'
131
- require_relative 'rubocop/cop/mixin/require_library'
132
- require_relative 'rubocop/cop/mixin/rescue_node'
133
- require_relative 'rubocop/cop/mixin/safe_assignment'
134
- require_relative 'rubocop/cop/mixin/space_after_punctuation'
135
- require_relative 'rubocop/cop/mixin/space_before_punctuation'
136
- require_relative 'rubocop/cop/mixin/surrounding_space'
137
- require_relative 'rubocop/cop/mixin/statement_modifier'
138
- require_relative 'rubocop/cop/mixin/string_help'
139
- require_relative 'rubocop/cop/mixin/string_literals_help'
140
- require_relative 'rubocop/cop/mixin/symbol_help'
141
- require_relative 'rubocop/cop/mixin/target_ruby_version'
142
- require_relative 'rubocop/cop/mixin/trailing_body'
143
- require_relative 'rubocop/cop/mixin/trailing_comma'
144
- require_relative 'rubocop/cop/mixin/uncommunicative_name'
145
- require_relative 'rubocop/cop/mixin/unused_argument'
146
- require_relative 'rubocop/cop/mixin/visibility_help'
147
- require_relative 'rubocop/cop/mixin/comments_help' # relies on visibility_help
148
- require_relative 'rubocop/cop/mixin/def_node' # relies on visibility_help
149
80
 
150
81
  require_relative 'rubocop/cop/utils/format_string'
151
- require_relative 'rubocop/cop/utils/regexp_ranges'
152
82
 
153
83
  require_relative 'rubocop/cop/migration/department_name'
154
84
 
155
- require_relative 'rubocop/cop/correctors/alignment_corrector'
156
- require_relative 'rubocop/cop/correctors/condition_corrector'
157
- require_relative 'rubocop/cop/correctors/each_to_for_corrector'
158
- require_relative 'rubocop/cop/correctors/empty_line_corrector'
159
- require_relative 'rubocop/cop/correctors/for_to_each_corrector'
160
- require_relative 'rubocop/cop/correctors/if_then_corrector'
161
- require_relative 'rubocop/cop/correctors/lambda_literal_to_method_corrector'
162
- require_relative 'rubocop/cop/correctors/line_break_corrector'
163
- require_relative 'rubocop/cop/correctors/multiline_literal_brace_corrector'
164
- require_relative 'rubocop/cop/correctors/ordered_gem_corrector'
165
- require_relative 'rubocop/cop/correctors/parentheses_corrector'
166
- require_relative 'rubocop/cop/correctors/percent_literal_corrector'
167
- require_relative 'rubocop/cop/correctors/punctuation_corrector'
168
- require_relative 'rubocop/cop/correctors/require_library_corrector'
169
- require_relative 'rubocop/cop/correctors/space_corrector'
170
- require_relative 'rubocop/cop/correctors/string_literal_corrector'
171
- require_relative 'rubocop/cop/correctors/unused_arg_corrector'
172
-
173
85
  require_relative 'rubocop/cop/bundler/duplicated_gem'
174
86
  require_relative 'rubocop/cop/bundler/duplicated_group'
175
87
  require_relative 'rubocop/cop/bundler/gem_comment'
@@ -179,6 +91,7 @@ require_relative 'rubocop/cop/bundler/insecure_protocol_source'
179
91
  require_relative 'rubocop/cop/bundler/ordered_gems'
180
92
 
181
93
  require_relative 'rubocop/cop/gemspec/add_runtime_dependency'
94
+ require_relative 'rubocop/cop/gemspec/attribute_assignment'
182
95
  require_relative 'rubocop/cop/gemspec/dependency_version'
183
96
  require_relative 'rubocop/cop/gemspec/deprecated_attribute_assignment'
184
97
  require_relative 'rubocop/cop/gemspec/development_dependencies'
@@ -209,6 +122,7 @@ require_relative 'rubocop/cop/layout/empty_line_after_guard_clause'
209
122
  require_relative 'rubocop/cop/layout/empty_line_after_magic_comment'
210
123
  require_relative 'rubocop/cop/layout/empty_line_after_multiline_condition'
211
124
  require_relative 'rubocop/cop/layout/empty_line_between_defs'
125
+ require_relative 'rubocop/cop/layout/empty_lines_after_module_inclusion'
212
126
  require_relative 'rubocop/cop/layout/empty_lines_around_access_modifier'
213
127
  require_relative 'rubocop/cop/layout/empty_lines_around_arguments'
214
128
  require_relative 'rubocop/cop/layout/empty_lines_around_attribute_accessor'
@@ -288,6 +202,7 @@ require_relative 'rubocop/cop/layout/space_inside_string_interpolation'
288
202
  require_relative 'rubocop/cop/layout/trailing_empty_lines'
289
203
  require_relative 'rubocop/cop/layout/trailing_whitespace'
290
204
 
205
+ require_relative 'rubocop/cop/lint/utils/nil_receiver_checker'
291
206
  require_relative 'rubocop/cop/lint/ambiguous_assignment'
292
207
  require_relative 'rubocop/cop/lint/ambiguous_block_association'
293
208
  require_relative 'rubocop/cop/lint/ambiguous_operator'
@@ -304,6 +219,8 @@ require_relative 'rubocop/cop/lint/constant_definition_in_block'
304
219
  require_relative 'rubocop/cop/lint/constant_overwritten_in_rescue'
305
220
  require_relative 'rubocop/cop/lint/constant_reassignment'
306
221
  require_relative 'rubocop/cop/lint/constant_resolution'
222
+ require_relative 'rubocop/cop/lint/cop_directive_syntax'
223
+ require_relative 'rubocop/cop/lint/data_define_override'
307
224
  require_relative 'rubocop/cop/lint/debugger'
308
225
  require_relative 'rubocop/cop/lint/deprecated_class_methods'
309
226
  require_relative 'rubocop/cop/lint/deprecated_constants'
@@ -384,6 +301,7 @@ require_relative 'rubocop/cop/lint/redundant_require_statement'
384
301
  require_relative 'rubocop/cop/lint/redundant_safe_navigation'
385
302
  require_relative 'rubocop/cop/lint/redundant_splat_expansion'
386
303
  require_relative 'rubocop/cop/lint/redundant_string_coercion'
304
+ require_relative 'rubocop/cop/lint/redundant_type_conversion'
387
305
  require_relative 'rubocop/cop/lint/redundant_with_index'
388
306
  require_relative 'rubocop/cop/lint/redundant_with_object'
389
307
  require_relative 'rubocop/cop/lint/refinement_import_methods'
@@ -405,6 +323,7 @@ require_relative 'rubocop/cop/lint/shadowed_exception'
405
323
  require_relative 'rubocop/cop/lint/shadowing_outer_local_variable'
406
324
  require_relative 'rubocop/cop/lint/struct_new_override'
407
325
  require_relative 'rubocop/cop/lint/suppressed_exception'
326
+ require_relative 'rubocop/cop/lint/suppressed_exception_in_number_conversion'
408
327
  require_relative 'rubocop/cop/lint/symbol_conversion'
409
328
  require_relative 'rubocop/cop/lint/syntax'
410
329
  require_relative 'rubocop/cop/lint/to_enum_arguments'
@@ -419,16 +338,20 @@ require_relative 'rubocop/cop/lint/unified_integer'
419
338
  require_relative 'rubocop/cop/lint/unmodified_reduce_accumulator'
420
339
  require_relative 'rubocop/cop/lint/unreachable_code'
421
340
  require_relative 'rubocop/cop/lint/unreachable_loop'
341
+ require_relative 'rubocop/cop/lint/unreachable_pattern_branch'
422
342
  require_relative 'rubocop/cop/lint/unused_block_argument'
423
343
  require_relative 'rubocop/cop/lint/unused_method_argument'
424
344
  require_relative 'rubocop/cop/lint/uri_escape_unescape'
425
345
  require_relative 'rubocop/cop/lint/uri_regexp'
426
346
  require_relative 'rubocop/cop/lint/useless_access_modifier'
427
347
  require_relative 'rubocop/cop/lint/useless_assignment'
348
+ require_relative 'rubocop/cop/lint/useless_constant_scoping'
349
+ require_relative 'rubocop/cop/lint/useless_default_value_argument'
428
350
  require_relative 'rubocop/cop/lint/useless_defined'
429
351
  require_relative 'rubocop/cop/lint/useless_else_without_rescue'
430
352
  require_relative 'rubocop/cop/lint/useless_method_definition'
431
353
  require_relative 'rubocop/cop/lint/useless_numeric_operation'
354
+ require_relative 'rubocop/cop/lint/useless_or'
432
355
  require_relative 'rubocop/cop/lint/useless_rescue'
433
356
  require_relative 'rubocop/cop/lint/useless_ruby2_keywords'
434
357
  require_relative 'rubocop/cop/lint/useless_setter_call'
@@ -464,7 +387,8 @@ require_relative 'rubocop/cop/naming/memoized_instance_variable_name'
464
387
  require_relative 'rubocop/cop/naming/method_name'
465
388
  require_relative 'rubocop/cop/naming/method_parameter_name'
466
389
  require_relative 'rubocop/cop/naming/binary_operator_parameter_name'
467
- require_relative 'rubocop/cop/naming/predicate_name'
390
+ require_relative 'rubocop/cop/naming/predicate_method'
391
+ require_relative 'rubocop/cop/naming/predicate_prefix'
468
392
  require_relative 'rubocop/cop/naming/rescued_exceptions_variable_name'
469
393
  require_relative 'rubocop/cop/naming/variable_name'
470
394
  require_relative 'rubocop/cop/naming/variable_number'
@@ -478,6 +402,7 @@ require_relative 'rubocop/cop/style/arguments_forwarding'
478
402
  require_relative 'rubocop/cop/style/array_coercion'
479
403
  require_relative 'rubocop/cop/style/array_first_last'
480
404
  require_relative 'rubocop/cop/style/array_intersect'
405
+ require_relative 'rubocop/cop/style/array_intersect_with_single_element'
481
406
  require_relative 'rubocop/cop/style/array_join'
482
407
  require_relative 'rubocop/cop/style/ascii_comments'
483
408
  require_relative 'rubocop/cop/style/attr'
@@ -499,6 +424,7 @@ require_relative 'rubocop/cop/style/class_methods_definitions'
499
424
  require_relative 'rubocop/cop/style/class_vars'
500
425
  require_relative 'rubocop/cop/style/collection_compact'
501
426
  require_relative 'rubocop/cop/style/collection_methods'
427
+ require_relative 'rubocop/cop/style/collection_querying'
502
428
  require_relative 'rubocop/cop/style/colon_method_call'
503
429
  require_relative 'rubocop/cop/style/colon_method_definition'
504
430
  require_relative 'rubocop/cop/style/combinable_defined'
@@ -506,6 +432,7 @@ require_relative 'rubocop/cop/style/combinable_loops'
506
432
  require_relative 'rubocop/cop/style/command_literal'
507
433
  require_relative 'rubocop/cop/style/comment_annotation'
508
434
  require_relative 'rubocop/cop/style/commented_keyword'
435
+ require_relative 'rubocop/cop/style/comparable_between'
509
436
  require_relative 'rubocop/cop/style/comparable_clamp'
510
437
  require_relative 'rubocop/cop/style/concat_array_literals'
511
438
  require_relative 'rubocop/cop/style/conditional_assignment'
@@ -527,11 +454,13 @@ require_relative 'rubocop/cop/style/each_for_simple_loop'
527
454
  require_relative 'rubocop/cop/style/each_with_object'
528
455
  require_relative 'rubocop/cop/style/empty_block_parameter'
529
456
  require_relative 'rubocop/cop/style/empty_case_condition'
457
+ require_relative 'rubocop/cop/style/empty_class_definition'
530
458
  require_relative 'rubocop/cop/style/empty_else'
531
459
  require_relative 'rubocop/cop/style/empty_heredoc'
532
460
  require_relative 'rubocop/cop/style/empty_lambda_parameter'
533
461
  require_relative 'rubocop/cop/style/empty_literal'
534
462
  require_relative 'rubocop/cop/style/empty_method'
463
+ require_relative 'rubocop/cop/style/empty_string_inside_interpolation'
535
464
  require_relative 'rubocop/cop/style/endless_method'
536
465
  require_relative 'rubocop/cop/style/encoding'
537
466
  require_relative 'rubocop/cop/style/end_block'
@@ -545,6 +474,7 @@ require_relative 'rubocop/cop/style/exponential_notation'
545
474
  require_relative 'rubocop/cop/style/fetch_env_var'
546
475
  require_relative 'rubocop/cop/style/file_empty'
547
476
  require_relative 'rubocop/cop/style/file_null'
477
+ require_relative 'rubocop/cop/style/file_open'
548
478
  require_relative 'rubocop/cop/style/file_read'
549
479
  require_relative 'rubocop/cop/style/file_touch'
550
480
  require_relative 'rubocop/cop/style/file_write'
@@ -560,7 +490,9 @@ require_relative 'rubocop/cop/style/hash_as_last_array_item'
560
490
  require_relative 'rubocop/cop/style/hash_conversion'
561
491
  require_relative 'rubocop/cop/style/hash_each_methods'
562
492
  require_relative 'rubocop/cop/style/hash_except'
493
+ require_relative 'rubocop/cop/style/hash_fetch_chain'
563
494
  require_relative 'rubocop/cop/style/hash_like_case'
495
+ require_relative 'rubocop/cop/style/hash_lookup_method'
564
496
  require_relative 'rubocop/cop/style/hash_slice'
565
497
  require_relative 'rubocop/cop/style/hash_syntax'
566
498
  require_relative 'rubocop/cop/style/hash_transform_keys'
@@ -574,11 +506,13 @@ require_relative 'rubocop/cop/style/if_with_semicolon'
574
506
  require_relative 'rubocop/cop/style/implicit_runtime_error'
575
507
  require_relative 'rubocop/cop/style/in_pattern_then'
576
508
  require_relative 'rubocop/cop/style/infinite_loop'
509
+ require_relative 'rubocop/cop/style/reduce_to_hash'
577
510
  require_relative 'rubocop/cop/style/inverse_methods'
578
511
  require_relative 'rubocop/cop/style/inline_comment'
579
512
  require_relative 'rubocop/cop/style/invertible_unless_condition'
580
513
  require_relative 'rubocop/cop/style/ip_addresses'
581
514
  require_relative 'rubocop/cop/style/it_assignment'
515
+ require_relative 'rubocop/cop/style/it_block_parameter'
582
516
  require_relative 'rubocop/cop/style/keyword_arguments_merging'
583
517
  require_relative 'rubocop/cop/style/keyword_parameters_order'
584
518
  require_relative 'rubocop/cop/style/lambda'
@@ -586,16 +520,21 @@ require_relative 'rubocop/cop/style/lambda_call'
586
520
  require_relative 'rubocop/cop/style/line_end_concatenation'
587
521
  require_relative 'rubocop/cop/style/magic_comment_format'
588
522
  require_relative 'rubocop/cop/style/map_into_array'
523
+ require_relative 'rubocop/cop/style/map_join'
589
524
  require_relative 'rubocop/cop/style/map_to_hash'
590
525
  require_relative 'rubocop/cop/style/map_to_set'
591
526
  require_relative 'rubocop/cop/style/method_call_without_args_parentheses'
592
527
  require_relative 'rubocop/cop/style/method_call_with_args_parentheses'
593
528
  require_relative 'rubocop/cop/style/min_max_comparison'
529
+ require_relative 'rubocop/cop/style/module_member_existence_check'
594
530
  require_relative 'rubocop/cop/style/multiline_in_pattern_then'
595
531
  require_relative 'rubocop/cop/style/numbered_parameters'
532
+ require_relative 'rubocop/cop/style/one_class_per_file'
596
533
  require_relative 'rubocop/cop/style/open_struct_use'
597
534
  require_relative 'rubocop/cop/style/operator_method_call'
535
+ require_relative 'rubocop/cop/style/partition_instead_of_double_select'
598
536
  require_relative 'rubocop/cop/style/redundant_array_constructor'
537
+ require_relative 'rubocop/cop/style/redundant_array_flatten'
599
538
  require_relative 'rubocop/cop/style/redundant_assignment'
600
539
  require_relative 'rubocop/cop/style/redundant_constant_base'
601
540
  require_relative 'rubocop/cop/style/redundant_current_directory_in_path'
@@ -604,15 +543,19 @@ require_relative 'rubocop/cop/style/redundant_each'
604
543
  require_relative 'rubocop/cop/style/redundant_fetch_block'
605
544
  require_relative 'rubocop/cop/style/redundant_file_extension_in_require'
606
545
  require_relative 'rubocop/cop/style/redundant_filter_chain'
546
+ require_relative 'rubocop/cop/style/redundant_format'
607
547
  require_relative 'rubocop/cop/style/redundant_heredoc_delimiter_quotes'
608
548
  require_relative 'rubocop/cop/style/redundant_initialize'
609
549
  require_relative 'rubocop/cop/style/redundant_interpolation_unfreeze'
610
550
  require_relative 'rubocop/cop/style/redundant_line_continuation'
551
+ require_relative 'rubocop/cop/style/redundant_min_max_by'
611
552
  require_relative 'rubocop/cop/style/redundant_regexp_argument'
612
553
  require_relative 'rubocop/cop/style/redundant_regexp_constructor'
613
554
  require_relative 'rubocop/cop/style/redundant_self_assignment'
614
555
  require_relative 'rubocop/cop/style/redundant_self_assignment_branch'
556
+ require_relative 'rubocop/cop/style/redundant_struct_keyword_init'
615
557
  require_relative 'rubocop/cop/style/require_order'
558
+ require_relative 'rubocop/cop/style/reverse_find'
616
559
  require_relative 'rubocop/cop/style/safe_navigation_chain_length'
617
560
  require_relative 'rubocop/cop/style/single_line_do_end_block'
618
561
  require_relative 'rubocop/cop/style/sole_nested_conditional'
@@ -639,6 +582,7 @@ require_relative 'rubocop/cop/style/negated_if'
639
582
  require_relative 'rubocop/cop/style/negated_if_else_condition'
640
583
  require_relative 'rubocop/cop/style/negated_unless'
641
584
  require_relative 'rubocop/cop/style/negated_while'
585
+ require_relative 'rubocop/cop/style/negative_array_index'
642
586
  require_relative 'rubocop/cop/style/nested_file_dirname'
643
587
  require_relative 'rubocop/cop/style/nested_modifier'
644
588
  require_relative 'rubocop/cop/style/nested_parenthesized_calls'
@@ -663,6 +607,7 @@ require_relative 'rubocop/cop/style/parentheses_around_condition'
663
607
  require_relative 'rubocop/cop/style/percent_literal_delimiters'
664
608
  require_relative 'rubocop/cop/style/percent_q_literals'
665
609
  require_relative 'rubocop/cop/style/perl_backrefs'
610
+ require_relative 'rubocop/cop/style/predicate_with_kind'
666
611
  require_relative 'rubocop/cop/style/preferred_hash_methods'
667
612
  require_relative 'rubocop/cop/style/proc'
668
613
  require_relative 'rubocop/cop/style/quoted_symbols'
@@ -692,6 +637,8 @@ require_relative 'rubocop/cop/style/return_nil'
692
637
  require_relative 'rubocop/cop/style/return_nil_in_predicate_method_definition'
693
638
  require_relative 'rubocop/cop/style/safe_navigation'
694
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'
695
642
  require_relative 'rubocop/cop/style/select_by_regexp'
696
643
  require_relative 'rubocop/cop/style/self_assignment'
697
644
  require_relative 'rubocop/cop/style/semicolon'
@@ -719,6 +666,7 @@ require_relative 'rubocop/cop/style/swap_values'
719
666
  require_relative 'rubocop/cop/style/symbol_array'
720
667
  require_relative 'rubocop/cop/style/symbol_literal'
721
668
  require_relative 'rubocop/cop/style/symbol_proc'
669
+ require_relative 'rubocop/cop/style/tally_method'
722
670
  require_relative 'rubocop/cop/style/ternary_parentheses'
723
671
  require_relative 'rubocop/cop/style/top_level_method_definition'
724
672
  require_relative 'rubocop/cop/style/trailing_body_on_class'
@@ -787,6 +735,8 @@ require_relative 'rubocop/cli/command/auto_generate_config'
787
735
  require_relative 'rubocop/cli/command/execute_runner'
788
736
  require_relative 'rubocop/cli/command/init_dotfile'
789
737
  require_relative 'rubocop/cli/command/lsp'
738
+ require_relative 'rubocop/cli/command/list_enabled_cops_for'
739
+ require_relative 'rubocop/cli/command/mcp'
790
740
  require_relative 'rubocop/cli/command/show_cops'
791
741
  require_relative 'rubocop/cli/command/show_docs_url'
792
742
  require_relative 'rubocop/cli/command/suggest_extensions'
@@ -796,6 +746,7 @@ require_relative 'rubocop/options'
796
746
  require_relative 'rubocop/remote_config'
797
747
  require_relative 'rubocop/target_ruby'
798
748
  require_relative 'rubocop/yaml_duplication_checker'
749
+ require_relative 'rubocop/pending_cops_reporter'
799
750
 
800
751
  # rubocop:enable Style/RequireOrder
801
752