rubocop 1.69.0 → 1.76.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 (416) hide show
  1. checksums.yaml +4 -4
  2. data/LICENSE.txt +1 -1
  3. data/README.md +22 -16
  4. data/config/default.yml +234 -47
  5. data/config/internal_affairs.yml +20 -0
  6. data/config/obsoletion.yml +8 -3
  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 +25 -14
  19. data/lib/rubocop/cop/autocorrect_logic.rb +44 -39
  20. data/lib/rubocop/cop/base.rb +6 -0
  21. data/lib/rubocop/cop/bundler/duplicated_gem.rb +2 -2
  22. data/lib/rubocop/cop/bundler/gem_comment.rb +1 -1
  23. data/lib/rubocop/cop/bundler/ordered_gems.rb +1 -1
  24. data/lib/rubocop/cop/gemspec/duplicated_assignment.rb +50 -6
  25. data/lib/rubocop/cop/gemspec/ordered_dependencies.rb +1 -1
  26. data/lib/rubocop/cop/generator.rb +6 -0
  27. data/lib/rubocop/cop/internal_affairs/cop_enabled.rb +85 -0
  28. data/lib/rubocop/cop/internal_affairs/example_description.rb +8 -4
  29. data/lib/rubocop/cop/internal_affairs/location_exists.rb +116 -0
  30. data/lib/rubocop/cop/internal_affairs/location_expression.rb +2 -1
  31. data/lib/rubocop/cop/internal_affairs/location_line_equality_comparison.rb +1 -0
  32. data/lib/rubocop/cop/internal_affairs/node_first_or_last_argument.rb +3 -2
  33. data/lib/rubocop/cop/internal_affairs/node_matcher_directive.rb +1 -1
  34. data/lib/rubocop/cop/internal_affairs/node_pattern_groups/ast_processor.rb +63 -0
  35. data/lib/rubocop/cop/internal_affairs/node_pattern_groups/ast_walker.rb +131 -0
  36. data/lib/rubocop/cop/internal_affairs/node_pattern_groups.rb +231 -0
  37. data/lib/rubocop/cop/internal_affairs/node_type_group.rb +91 -0
  38. data/lib/rubocop/cop/internal_affairs/node_type_multiple_predicates.rb +126 -0
  39. data/lib/rubocop/cop/internal_affairs/node_type_predicate.rb +4 -3
  40. data/lib/rubocop/cop/internal_affairs/on_send_without_on_csend.rb +90 -0
  41. data/lib/rubocop/cop/internal_affairs/operator_keyword.rb +4 -2
  42. data/lib/rubocop/cop/internal_affairs/plugin.rb +33 -0
  43. data/lib/rubocop/cop/internal_affairs/redundant_described_class_as_subject.rb +6 -5
  44. data/lib/rubocop/cop/internal_affairs/redundant_source_range.rb +3 -1
  45. data/lib/rubocop/cop/internal_affairs/single_line_comparison.rb +5 -4
  46. data/lib/rubocop/cop/internal_affairs/undefined_config.rb +13 -2
  47. data/lib/rubocop/cop/internal_affairs.rb +6 -16
  48. data/lib/rubocop/cop/layout/access_modifier_indentation.rb +1 -1
  49. data/lib/rubocop/cop/layout/argument_alignment.rb +2 -8
  50. data/lib/rubocop/cop/layout/block_alignment.rb +3 -1
  51. data/lib/rubocop/cop/layout/block_end_newline.rb +1 -0
  52. data/lib/rubocop/cop/layout/class_structure.rb +44 -9
  53. data/lib/rubocop/cop/layout/closing_parenthesis_indentation.rb +4 -4
  54. data/lib/rubocop/cop/layout/def_end_alignment.rb +1 -1
  55. data/lib/rubocop/cop/layout/dot_position.rb +1 -1
  56. data/lib/rubocop/cop/layout/else_alignment.rb +2 -2
  57. data/lib/rubocop/cop/layout/empty_line_after_guard_clause.rb +2 -2
  58. data/lib/rubocop/cop/layout/empty_line_between_defs.rb +7 -11
  59. data/lib/rubocop/cop/layout/empty_lines_around_access_modifier.rb +34 -3
  60. data/lib/rubocop/cop/layout/empty_lines_around_begin_body.rb +5 -6
  61. data/lib/rubocop/cop/layout/empty_lines_around_block_body.rb +1 -0
  62. data/lib/rubocop/cop/layout/empty_lines_around_exception_handling_keywords.rb +1 -1
  63. data/lib/rubocop/cop/layout/empty_lines_around_method_body.rb +22 -2
  64. data/lib/rubocop/cop/layout/end_alignment.rb +1 -1
  65. data/lib/rubocop/cop/layout/extra_spacing.rb +1 -1
  66. data/lib/rubocop/cop/layout/first_argument_indentation.rb +4 -9
  67. data/lib/rubocop/cop/layout/first_array_element_indentation.rb +2 -7
  68. data/lib/rubocop/cop/layout/first_hash_element_indentation.rb +2 -7
  69. data/lib/rubocop/cop/layout/first_hash_element_line_break.rb +1 -1
  70. data/lib/rubocop/cop/layout/first_parameter_indentation.rb +2 -2
  71. data/lib/rubocop/cop/layout/hash_alignment.rb +8 -6
  72. data/lib/rubocop/cop/layout/heredoc_argument_closing_parenthesis.rb +2 -1
  73. data/lib/rubocop/cop/layout/indentation_width.rb +1 -0
  74. data/lib/rubocop/cop/layout/leading_comment_space.rb +13 -1
  75. data/lib/rubocop/cop/layout/line_continuation_leading_space.rb +11 -2
  76. data/lib/rubocop/cop/layout/line_continuation_spacing.rb +7 -1
  77. data/lib/rubocop/cop/layout/line_end_string_concatenation_indentation.rb +2 -2
  78. data/lib/rubocop/cop/layout/line_length.rb +9 -4
  79. data/lib/rubocop/cop/layout/multiline_block_layout.rb +1 -0
  80. data/lib/rubocop/cop/layout/multiline_hash_key_line_breaks.rb +1 -1
  81. data/lib/rubocop/cop/layout/multiline_method_argument_line_breaks.rb +25 -0
  82. data/lib/rubocop/cop/layout/multiline_method_call_brace_layout.rb +1 -0
  83. data/lib/rubocop/cop/layout/multiline_method_call_indentation.rb +4 -4
  84. data/lib/rubocop/cop/layout/multiline_method_parameter_line_breaks.rb +1 -0
  85. data/lib/rubocop/cop/layout/multiline_operation_indentation.rb +1 -1
  86. data/lib/rubocop/cop/layout/redundant_line_break.rb +16 -11
  87. data/lib/rubocop/cop/layout/rescue_ensure_alignment.rb +3 -5
  88. data/lib/rubocop/cop/layout/single_line_block_chain.rb +1 -1
  89. data/lib/rubocop/cop/layout/space_after_colon.rb +2 -2
  90. data/lib/rubocop/cop/layout/space_after_comma.rb +1 -1
  91. data/lib/rubocop/cop/layout/space_after_method_name.rb +1 -1
  92. data/lib/rubocop/cop/layout/space_after_semicolon.rb +11 -1
  93. data/lib/rubocop/cop/layout/space_around_keyword.rb +1 -0
  94. data/lib/rubocop/cop/layout/space_around_method_call_operator.rb +1 -1
  95. data/lib/rubocop/cop/layout/space_around_operators.rb +7 -4
  96. data/lib/rubocop/cop/layout/space_before_block_braces.rb +1 -0
  97. data/lib/rubocop/cop/layout/space_before_brackets.rb +6 -32
  98. data/lib/rubocop/cop/layout/space_before_comma.rb +1 -1
  99. data/lib/rubocop/cop/layout/space_before_semicolon.rb +1 -1
  100. data/lib/rubocop/cop/layout/space_inside_array_literal_brackets.rb +5 -1
  101. data/lib/rubocop/cop/layout/space_inside_block_braces.rb +1 -0
  102. data/lib/rubocop/cop/layout/space_inside_hash_literal_braces.rb +3 -0
  103. data/lib/rubocop/cop/layout/trailing_whitespace.rb +5 -3
  104. data/lib/rubocop/cop/lint/ambiguous_block_association.rb +1 -1
  105. data/lib/rubocop/cop/lint/array_literal_in_regexp.rb +118 -0
  106. data/lib/rubocop/cop/lint/assignment_in_condition.rb +1 -3
  107. data/lib/rubocop/cop/lint/binary_operator_with_identical_operands.rb +2 -3
  108. data/lib/rubocop/cop/lint/boolean_symbol.rb +1 -1
  109. data/lib/rubocop/cop/lint/circular_argument_reference.rb +4 -3
  110. data/lib/rubocop/cop/lint/constant_definition_in_block.rb +3 -3
  111. data/lib/rubocop/cop/lint/constant_reassignment.rb +148 -0
  112. data/lib/rubocop/cop/lint/cop_directive_syntax.rb +84 -0
  113. data/lib/rubocop/cop/lint/debugger.rb +3 -3
  114. data/lib/rubocop/cop/lint/deprecated_class_methods.rb +1 -1
  115. data/lib/rubocop/cop/lint/deprecated_open_ssl_constant.rb +2 -1
  116. data/lib/rubocop/cop/lint/duplicate_match_pattern.rb +1 -1
  117. data/lib/rubocop/cop/lint/duplicate_methods.rb +86 -19
  118. data/lib/rubocop/cop/lint/duplicate_regexp_character_class_element.rb +1 -1
  119. data/lib/rubocop/cop/lint/duplicate_set_element.rb +20 -7
  120. data/lib/rubocop/cop/lint/empty_conditional_body.rb +14 -64
  121. data/lib/rubocop/cop/lint/empty_expression.rb +0 -2
  122. data/lib/rubocop/cop/lint/empty_interpolation.rb +3 -1
  123. data/lib/rubocop/cop/lint/erb_new_arguments.rb +0 -6
  124. data/lib/rubocop/cop/lint/float_comparison.rb +33 -8
  125. data/lib/rubocop/cop/lint/float_out_of_range.rb +1 -1
  126. data/lib/rubocop/cop/lint/format_parameter_mismatch.rb +2 -2
  127. data/lib/rubocop/cop/lint/identity_comparison.rb +19 -15
  128. data/lib/rubocop/cop/lint/implicit_string_concatenation.rb +1 -1
  129. data/lib/rubocop/cop/lint/literal_as_condition.rb +110 -9
  130. data/lib/rubocop/cop/lint/literal_in_interpolation.rb +24 -6
  131. data/lib/rubocop/cop/lint/missing_cop_enable_directive.rb +1 -1
  132. data/lib/rubocop/cop/lint/missing_super.rb +2 -2
  133. data/lib/rubocop/cop/lint/mixed_case_range.rb +3 -3
  134. data/lib/rubocop/cop/lint/mixed_regexp_capture_types.rb +1 -1
  135. data/lib/rubocop/cop/lint/nested_method_definition.rb +9 -5
  136. data/lib/rubocop/cop/lint/next_without_accumulator.rb +1 -1
  137. data/lib/rubocop/cop/lint/non_atomic_file_operation.rb +4 -2
  138. data/lib/rubocop/cop/lint/non_deterministic_require_order.rb +3 -3
  139. data/lib/rubocop/cop/lint/non_local_exit_from_iterator.rb +3 -3
  140. data/lib/rubocop/cop/lint/numeric_operation_with_constant_result.rb +18 -31
  141. data/lib/rubocop/cop/lint/or_assignment_to_constant.rb +1 -1
  142. data/lib/rubocop/cop/lint/out_of_range_regexp_ref.rb +2 -1
  143. data/lib/rubocop/cop/lint/parentheses_as_grouped_expression.rb +1 -5
  144. data/lib/rubocop/cop/lint/raise_exception.rb +29 -10
  145. data/lib/rubocop/cop/lint/redundant_regexp_quantifiers.rb +1 -1
  146. data/lib/rubocop/cop/lint/redundant_require_statement.rb +0 -21
  147. data/lib/rubocop/cop/lint/redundant_string_coercion.rb +2 -2
  148. data/lib/rubocop/cop/lint/redundant_type_conversion.rb +261 -0
  149. data/lib/rubocop/cop/lint/redundant_with_index.rb +3 -0
  150. data/lib/rubocop/cop/lint/redundant_with_object.rb +3 -0
  151. data/lib/rubocop/cop/lint/refinement_import_methods.rb +1 -1
  152. data/lib/rubocop/cop/lint/rescue_exception.rb +1 -1
  153. data/lib/rubocop/cop/lint/return_in_void_context.rb +9 -11
  154. data/lib/rubocop/cop/lint/safe_navigation_chain.rb +8 -1
  155. data/lib/rubocop/cop/lint/shadowing_outer_local_variable.rb +13 -1
  156. data/lib/rubocop/cop/lint/shared_mutable_default.rb +76 -0
  157. data/lib/rubocop/cop/lint/suppressed_exception.rb +1 -1
  158. data/lib/rubocop/cop/lint/suppressed_exception_in_number_conversion.rb +111 -0
  159. data/lib/rubocop/cop/lint/symbol_conversion.rb +1 -1
  160. data/lib/rubocop/cop/lint/syntax.rb +4 -1
  161. data/lib/rubocop/cop/lint/to_enum_arguments.rb +1 -1
  162. data/lib/rubocop/cop/lint/top_level_return_with_argument.rb +1 -1
  163. data/lib/rubocop/cop/lint/unescaped_bracket_in_regexp.rb +1 -1
  164. data/lib/rubocop/cop/lint/unexpected_block_arity.rb +3 -1
  165. data/lib/rubocop/cop/lint/unmodified_reduce_accumulator.rb +1 -1
  166. data/lib/rubocop/cop/lint/unreachable_code.rb +52 -2
  167. data/lib/rubocop/cop/lint/unreachable_loop.rb +6 -6
  168. data/lib/rubocop/cop/lint/useless_access_modifier.rb +5 -4
  169. data/lib/rubocop/cop/lint/useless_assignment.rb +3 -1
  170. data/lib/rubocop/cop/lint/useless_constant_scoping.rb +71 -0
  171. data/lib/rubocop/cop/lint/useless_default_value_argument.rb +87 -0
  172. data/lib/rubocop/cop/lint/useless_else_without_rescue.rb +4 -0
  173. data/lib/rubocop/cop/lint/useless_method_definition.rb +1 -1
  174. data/lib/rubocop/cop/lint/useless_numeric_operation.rb +2 -1
  175. data/lib/rubocop/cop/lint/useless_or.rb +98 -0
  176. data/lib/rubocop/cop/lint/useless_rescue.rb +1 -1
  177. data/lib/rubocop/cop/lint/useless_ruby2_keywords.rb +2 -2
  178. data/lib/rubocop/cop/lint/void.rb +14 -11
  179. data/lib/rubocop/cop/message_annotator.rb +7 -3
  180. data/lib/rubocop/cop/metrics/abc_size.rb +1 -1
  181. data/lib/rubocop/cop/metrics/block_length.rb +1 -0
  182. data/lib/rubocop/cop/metrics/block_nesting.rb +1 -1
  183. data/lib/rubocop/cop/metrics/class_length.rb +9 -9
  184. data/lib/rubocop/cop/metrics/collection_literal_length.rb +7 -0
  185. data/lib/rubocop/cop/metrics/cyclomatic_complexity.rb +1 -1
  186. data/lib/rubocop/cop/metrics/method_length.rb +9 -1
  187. data/lib/rubocop/cop/metrics/module_length.rb +1 -1
  188. data/lib/rubocop/cop/metrics/perceived_complexity.rb +1 -1
  189. data/lib/rubocop/cop/metrics/utils/code_length_calculator.rb +2 -2
  190. data/lib/rubocop/cop/metrics/utils/repeated_attribute_discount.rb +7 -7
  191. data/lib/rubocop/cop/mixin/alignment.rb +2 -2
  192. data/lib/rubocop/cop/mixin/allowed_pattern.rb +4 -4
  193. data/lib/rubocop/cop/mixin/check_line_breakable.rb +13 -13
  194. data/lib/rubocop/cop/mixin/check_single_line_suitability.rb +2 -2
  195. data/lib/rubocop/cop/mixin/comments_help.rb +8 -3
  196. data/lib/rubocop/cop/mixin/def_node.rb +1 -1
  197. data/lib/rubocop/cop/mixin/dig_help.rb +1 -1
  198. data/lib/rubocop/cop/mixin/empty_lines_around_body.rb +1 -1
  199. data/lib/rubocop/cop/mixin/forbidden_identifiers.rb +20 -0
  200. data/lib/rubocop/cop/mixin/forbidden_pattern.rb +16 -0
  201. data/lib/rubocop/cop/mixin/frozen_string_literal.rb +0 -1
  202. data/lib/rubocop/cop/mixin/hash_alignment_styles.rb +15 -14
  203. data/lib/rubocop/cop/mixin/hash_shorthand_syntax.rb +22 -22
  204. data/lib/rubocop/cop/mixin/hash_subset.rb +203 -0
  205. data/lib/rubocop/cop/mixin/hash_transform_method.rb +74 -74
  206. data/lib/rubocop/cop/mixin/line_length_help.rb +5 -4
  207. data/lib/rubocop/cop/mixin/method_complexity.rb +2 -1
  208. data/lib/rubocop/cop/mixin/multiline_expression_indentation.rb +2 -0
  209. data/lib/rubocop/cop/mixin/ordered_gem_node.rb +1 -1
  210. data/lib/rubocop/cop/mixin/percent_literal.rb +1 -1
  211. data/lib/rubocop/cop/mixin/preceding_following_alignment.rb +68 -30
  212. data/lib/rubocop/cop/mixin/range_help.rb +15 -3
  213. data/lib/rubocop/cop/mixin/space_before_punctuation.rb +1 -1
  214. data/lib/rubocop/cop/mixin/statement_modifier.rb +8 -3
  215. data/lib/rubocop/cop/mixin/string_help.rb +2 -2
  216. data/lib/rubocop/cop/mixin/string_literals_help.rb +1 -1
  217. data/lib/rubocop/cop/mixin/target_ruby_version.rb +1 -1
  218. data/lib/rubocop/cop/mixin/trailing_comma.rb +21 -5
  219. data/lib/rubocop/cop/naming/accessor_method_name.rb +6 -6
  220. data/lib/rubocop/cop/naming/block_forwarding.rb +19 -15
  221. data/lib/rubocop/cop/naming/memoized_instance_variable_name.rb +1 -1
  222. data/lib/rubocop/cop/naming/method_name.rb +64 -8
  223. data/lib/rubocop/cop/naming/predicate_method.rb +216 -0
  224. data/lib/rubocop/cop/naming/{predicate_name.rb → predicate_prefix.rb} +46 -2
  225. data/lib/rubocop/cop/naming/rescued_exceptions_variable_name.rb +4 -4
  226. data/lib/rubocop/cop/naming/variable_name.rb +51 -6
  227. data/lib/rubocop/cop/registry.rb +9 -6
  228. data/lib/rubocop/cop/security/compound_hash.rb +2 -0
  229. data/lib/rubocop/cop/security/yaml_load.rb +3 -2
  230. data/lib/rubocop/cop/style/access_modifier_declarations.rb +66 -15
  231. data/lib/rubocop/cop/style/accessor_grouping.rb +19 -5
  232. data/lib/rubocop/cop/style/and_or.rb +1 -1
  233. data/lib/rubocop/cop/style/arguments_forwarding.rb +47 -28
  234. data/lib/rubocop/cop/style/array_first_last.rb +18 -2
  235. data/lib/rubocop/cop/style/array_intersect.rb +39 -28
  236. data/lib/rubocop/cop/style/block_delimiters.rb +26 -23
  237. data/lib/rubocop/cop/style/class_and_module_children.rb +52 -11
  238. data/lib/rubocop/cop/style/class_equality_comparison.rb +1 -1
  239. data/lib/rubocop/cop/style/collection_methods.rb +2 -1
  240. data/lib/rubocop/cop/style/combinable_defined.rb +1 -1
  241. data/lib/rubocop/cop/style/combinable_loops.rb +3 -2
  242. data/lib/rubocop/cop/style/command_literal.rb +1 -1
  243. data/lib/rubocop/cop/style/commented_keyword.rb +12 -5
  244. data/lib/rubocop/cop/style/comparable_between.rb +78 -0
  245. data/lib/rubocop/cop/style/concat_array_literals.rb +1 -1
  246. data/lib/rubocop/cop/style/conditional_assignment.rb +20 -6
  247. data/lib/rubocop/cop/style/data_inheritance.rb +7 -0
  248. data/lib/rubocop/cop/style/def_with_parentheses.rb +18 -5
  249. data/lib/rubocop/cop/style/dig_chain.rb +5 -6
  250. data/lib/rubocop/cop/style/documentation.rb +1 -1
  251. data/lib/rubocop/cop/style/double_negation.rb +4 -4
  252. data/lib/rubocop/cop/style/each_for_simple_loop.rb +4 -7
  253. data/lib/rubocop/cop/style/each_with_object.rb +2 -3
  254. data/lib/rubocop/cop/style/empty_else.rb +4 -2
  255. data/lib/rubocop/cop/style/empty_literal.rb +5 -1
  256. data/lib/rubocop/cop/style/empty_method.rb +1 -1
  257. data/lib/rubocop/cop/style/empty_string_inside_interpolation.rb +100 -0
  258. data/lib/rubocop/cop/style/endless_method.rb +163 -18
  259. data/lib/rubocop/cop/style/eval_with_location.rb +4 -4
  260. data/lib/rubocop/cop/style/exact_regexp_match.rb +2 -3
  261. data/lib/rubocop/cop/style/expand_path_arguments.rb +2 -7
  262. data/lib/rubocop/cop/style/explicit_block_argument.rb +16 -3
  263. data/lib/rubocop/cop/style/exponential_notation.rb +3 -3
  264. data/lib/rubocop/cop/style/fetch_env_var.rb +2 -1
  265. data/lib/rubocop/cop/style/file_null.rb +20 -4
  266. data/lib/rubocop/cop/style/float_division.rb +8 -4
  267. data/lib/rubocop/cop/style/for.rb +1 -0
  268. data/lib/rubocop/cop/style/format_string_token.rb +38 -11
  269. data/lib/rubocop/cop/style/frozen_string_literal_comment.rb +3 -2
  270. data/lib/rubocop/cop/style/global_std_stream.rb +3 -0
  271. data/lib/rubocop/cop/style/guard_clause.rb +2 -1
  272. data/lib/rubocop/cop/style/hash_each_methods.rb +6 -8
  273. data/lib/rubocop/cop/style/hash_except.rb +35 -147
  274. data/lib/rubocop/cop/style/hash_fetch_chain.rb +104 -0
  275. data/lib/rubocop/cop/style/hash_slice.rb +80 -0
  276. data/lib/rubocop/cop/style/hash_syntax.rb +9 -3
  277. data/lib/rubocop/cop/style/hash_transform_keys.rb +2 -2
  278. data/lib/rubocop/cop/style/hash_transform_values.rb +2 -2
  279. data/lib/rubocop/cop/style/identical_conditional_branches.rb +25 -6
  280. data/lib/rubocop/cop/style/if_inside_else.rb +10 -13
  281. data/lib/rubocop/cop/style/if_unless_modifier.rb +25 -7
  282. data/lib/rubocop/cop/style/if_unless_modifier_of_if_unless.rb +4 -7
  283. data/lib/rubocop/cop/style/if_with_boolean_literal_branches.rb +2 -2
  284. data/lib/rubocop/cop/style/if_with_semicolon.rb +7 -5
  285. data/lib/rubocop/cop/style/infinite_loop.rb +1 -1
  286. data/lib/rubocop/cop/style/inverse_methods.rb +15 -11
  287. data/lib/rubocop/cop/style/invertible_unless_condition.rb +2 -2
  288. data/lib/rubocop/cop/style/ip_addresses.rb +2 -2
  289. data/lib/rubocop/cop/style/it_assignment.rb +36 -0
  290. data/lib/rubocop/cop/style/it_block_parameter.rb +119 -0
  291. data/lib/rubocop/cop/style/keyword_parameters_order.rb +14 -8
  292. data/lib/rubocop/cop/style/lambda.rb +1 -0
  293. data/lib/rubocop/cop/style/lambda_call.rb +10 -3
  294. data/lib/rubocop/cop/style/line_end_concatenation.rb +10 -4
  295. data/lib/rubocop/cop/style/map_into_array.rb +5 -2
  296. data/lib/rubocop/cop/style/map_to_hash.rb +12 -1
  297. data/lib/rubocop/cop/style/map_to_set.rb +3 -2
  298. data/lib/rubocop/cop/style/method_call_with_args_parentheses/omit_parentheses.rb +26 -16
  299. data/lib/rubocop/cop/style/method_call_with_args_parentheses.rb +2 -0
  300. data/lib/rubocop/cop/style/method_call_without_args_parentheses.rb +3 -2
  301. data/lib/rubocop/cop/style/method_called_on_do_end_block.rb +3 -4
  302. data/lib/rubocop/cop/style/method_def_parentheses.rb +1 -1
  303. data/lib/rubocop/cop/style/missing_else.rb +2 -0
  304. data/lib/rubocop/cop/style/multiline_block_chain.rb +3 -2
  305. data/lib/rubocop/cop/style/multiline_if_modifier.rb +2 -0
  306. data/lib/rubocop/cop/style/multiline_method_signature.rb +1 -9
  307. data/lib/rubocop/cop/style/multiple_comparison.rb +34 -22
  308. data/lib/rubocop/cop/style/mutable_constant.rb +3 -3
  309. data/lib/rubocop/cop/style/negated_if_else_condition.rb +1 -1
  310. data/lib/rubocop/cop/style/nested_parenthesized_calls.rb +1 -1
  311. data/lib/rubocop/cop/style/next.rb +44 -0
  312. data/lib/rubocop/cop/style/object_then.rb +15 -15
  313. data/lib/rubocop/cop/style/open_struct_use.rb +5 -5
  314. data/lib/rubocop/cop/style/parallel_assignment.rb +1 -5
  315. data/lib/rubocop/cop/style/parentheses_around_condition.rb +2 -2
  316. data/lib/rubocop/cop/style/percent_literal_delimiters.rb +1 -1
  317. data/lib/rubocop/cop/style/percent_q_literals.rb +1 -1
  318. data/lib/rubocop/cop/style/proc.rb +2 -2
  319. data/lib/rubocop/cop/style/quoted_symbols.rb +1 -1
  320. data/lib/rubocop/cop/style/raise_args.rb +14 -12
  321. data/lib/rubocop/cop/style/random_with_offset.rb +3 -3
  322. data/lib/rubocop/cop/style/redundant_argument.rb +3 -1
  323. data/lib/rubocop/cop/style/redundant_array_flatten.rb +50 -0
  324. data/lib/rubocop/cop/style/redundant_begin.rb +2 -1
  325. data/lib/rubocop/cop/style/redundant_condition.rb +59 -2
  326. data/lib/rubocop/cop/style/redundant_current_directory_in_path.rb +16 -5
  327. data/lib/rubocop/cop/style/redundant_double_splat_hash_braces.rb +6 -10
  328. data/lib/rubocop/cop/style/redundant_each.rb +1 -1
  329. data/lib/rubocop/cop/style/redundant_exception.rb +2 -2
  330. data/lib/rubocop/cop/style/redundant_format.rb +262 -0
  331. data/lib/rubocop/cop/style/redundant_freeze.rb +3 -3
  332. data/lib/rubocop/cop/style/redundant_initialize.rb +12 -3
  333. data/lib/rubocop/cop/style/redundant_line_continuation.rb +38 -21
  334. data/lib/rubocop/cop/style/redundant_parentheses.rb +61 -17
  335. data/lib/rubocop/cop/style/redundant_regexp_argument.rb +3 -0
  336. data/lib/rubocop/cop/style/redundant_regexp_character_class.rb +1 -1
  337. data/lib/rubocop/cop/style/redundant_regexp_escape.rb +1 -1
  338. data/lib/rubocop/cop/style/redundant_self.rb +2 -1
  339. data/lib/rubocop/cop/style/redundant_self_assignment.rb +14 -28
  340. data/lib/rubocop/cop/style/redundant_sort.rb +2 -2
  341. data/lib/rubocop/cop/style/redundant_sort_by.rb +17 -1
  342. data/lib/rubocop/cop/style/redundant_string_escape.rb +2 -2
  343. data/lib/rubocop/cop/style/regexp_literal.rb +1 -1
  344. data/lib/rubocop/cop/style/rescue_modifier.rb +3 -0
  345. data/lib/rubocop/cop/style/return_nil.rb +2 -2
  346. data/lib/rubocop/cop/style/safe_navigation.rb +44 -16
  347. data/lib/rubocop/cop/style/select_by_regexp.rb +4 -1
  348. data/lib/rubocop/cop/style/semicolon.rb +1 -1
  349. data/lib/rubocop/cop/style/send_with_literal_method_name.rb +2 -1
  350. data/lib/rubocop/cop/style/single_line_block_params.rb +1 -1
  351. data/lib/rubocop/cop/style/single_line_do_end_block.rb +4 -3
  352. data/lib/rubocop/cop/style/single_line_methods.rb +6 -7
  353. data/lib/rubocop/cop/style/slicing_with_range.rb +40 -11
  354. data/lib/rubocop/cop/style/sole_nested_conditional.rb +42 -105
  355. data/lib/rubocop/cop/style/string_concatenation.rb +15 -14
  356. data/lib/rubocop/cop/style/string_literals.rb +1 -1
  357. data/lib/rubocop/cop/style/string_methods.rb +1 -1
  358. data/lib/rubocop/cop/style/struct_inheritance.rb +8 -1
  359. data/lib/rubocop/cop/style/super_arguments.rb +66 -19
  360. data/lib/rubocop/cop/style/symbol_proc.rb +2 -0
  361. data/lib/rubocop/cop/style/ternary_parentheses.rb +1 -1
  362. data/lib/rubocop/cop/style/top_level_method_definition.rb +2 -1
  363. data/lib/rubocop/cop/style/trailing_comma_in_arguments.rb +11 -2
  364. data/lib/rubocop/cop/style/trailing_comma_in_array_literal.rb +47 -6
  365. data/lib/rubocop/cop/style/trailing_comma_in_hash_literal.rb +48 -6
  366. data/lib/rubocop/cop/style/trivial_accessors.rb +1 -1
  367. data/lib/rubocop/cop/style/while_until_modifier.rb +0 -1
  368. data/lib/rubocop/cop/style/yoda_condition.rb +8 -4
  369. data/lib/rubocop/cop/style/yoda_expression.rb +2 -1
  370. data/lib/rubocop/cop/team.rb +1 -1
  371. data/lib/rubocop/cop/util.rb +12 -5
  372. data/lib/rubocop/cop/utils/format_string.rb +10 -5
  373. data/lib/rubocop/cop/variable_force/assignment.rb +7 -3
  374. data/lib/rubocop/cop/variable_force/scope.rb +1 -1
  375. data/lib/rubocop/cop/variable_force/variable.rb +10 -3
  376. data/lib/rubocop/cop/variable_force/variable_table.rb +3 -3
  377. data/lib/rubocop/cop/variable_force.rb +1 -1
  378. data/lib/rubocop/cops_documentation_generator.rb +31 -16
  379. data/lib/rubocop/directive_comment.rb +45 -11
  380. data/lib/rubocop/ext/regexp_node.rb +0 -1
  381. data/lib/rubocop/formatter/disabled_config_formatter.rb +2 -1
  382. data/lib/rubocop/formatter/formatter_set.rb +1 -1
  383. data/lib/rubocop/formatter/html_formatter.rb +1 -1
  384. data/lib/rubocop/formatter/pacman_formatter.rb +1 -1
  385. data/lib/rubocop/lsp/diagnostic.rb +189 -0
  386. data/lib/rubocop/lsp/logger.rb +2 -2
  387. data/lib/rubocop/lsp/routes.rb +7 -23
  388. data/lib/rubocop/lsp/runtime.rb +18 -50
  389. data/lib/rubocop/lsp/server.rb +0 -2
  390. data/lib/rubocop/lsp/stdin_runner.rb +85 -0
  391. data/lib/rubocop/magic_comment.rb +11 -3
  392. data/lib/rubocop/options.rb +28 -12
  393. data/lib/rubocop/path_util.rb +15 -8
  394. data/lib/rubocop/plugin/configuration_integrator.rb +143 -0
  395. data/lib/rubocop/plugin/load_error.rb +26 -0
  396. data/lib/rubocop/plugin/loader.rb +100 -0
  397. data/lib/rubocop/plugin/not_supported_error.rb +29 -0
  398. data/lib/rubocop/plugin.rb +46 -0
  399. data/lib/rubocop/rake_task.rb +4 -1
  400. data/lib/rubocop/result_cache.rb +13 -13
  401. data/lib/rubocop/rspec/cop_helper.rb +13 -1
  402. data/lib/rubocop/rspec/expect_offense.rb +15 -5
  403. data/lib/rubocop/rspec/shared_contexts.rb +38 -1
  404. data/lib/rubocop/rspec/support.rb +4 -2
  405. data/lib/rubocop/runner.rb +10 -7
  406. data/lib/rubocop/server/cache.rb +47 -11
  407. data/lib/rubocop/server/cli.rb +2 -2
  408. data/lib/rubocop/target_finder.rb +7 -2
  409. data/lib/rubocop/target_ruby.rb +16 -1
  410. data/lib/rubocop/version.rb +30 -8
  411. data/lib/rubocop.rb +22 -2
  412. data/lib/ruby_lsp/rubocop/addon.rb +75 -0
  413. data/lib/ruby_lsp/rubocop/runtime_adapter.rb +65 -0
  414. metadata +67 -19
  415. data/lib/rubocop/cop/utils/regexp_ranges.rb +0 -113
  416. data/lib/rubocop/rspec/host_environment_simulation_helper.rb +0 -28
data/lib/rubocop.rb CHANGED
@@ -75,6 +75,8 @@ require_relative 'rubocop/cop/mixin/allowed_identifiers'
75
75
  require_relative 'rubocop/cop/mixin/allowed_methods'
76
76
  require_relative 'rubocop/cop/mixin/allowed_pattern'
77
77
  require_relative 'rubocop/cop/mixin/allowed_receivers'
78
+ require_relative 'rubocop/cop/mixin/forbidden_identifiers'
79
+ require_relative 'rubocop/cop/mixin/forbidden_pattern'
78
80
  require_relative 'rubocop/cop/mixin/auto_corrector' # rubocop:todo Naming/InclusiveLanguage
79
81
  require_relative 'rubocop/cop/mixin/check_assignment'
80
82
  require_relative 'rubocop/cop/mixin/check_line_breakable'
@@ -100,6 +102,7 @@ require_relative 'rubocop/cop/mixin/frozen_string_literal'
100
102
  require_relative 'rubocop/cop/mixin/gem_declaration'
101
103
  require_relative 'rubocop/cop/mixin/gemspec_help'
102
104
  require_relative 'rubocop/cop/mixin/hash_alignment_styles'
105
+ require_relative 'rubocop/cop/mixin/hash_subset'
103
106
  require_relative 'rubocop/cop/mixin/hash_transform_method'
104
107
  require_relative 'rubocop/cop/mixin/integer_node'
105
108
  require_relative 'rubocop/cop/mixin/interpolation'
@@ -147,7 +150,6 @@ require_relative 'rubocop/cop/mixin/comments_help' # relies on visibility_help
147
150
  require_relative 'rubocop/cop/mixin/def_node' # relies on visibility_help
148
151
 
149
152
  require_relative 'rubocop/cop/utils/format_string'
150
- require_relative 'rubocop/cop/utils/regexp_ranges'
151
153
 
152
154
  require_relative 'rubocop/cop/migration/department_name'
153
155
 
@@ -293,6 +295,7 @@ require_relative 'rubocop/cop/lint/ambiguous_operator'
293
295
  require_relative 'rubocop/cop/lint/ambiguous_operator_precedence'
294
296
  require_relative 'rubocop/cop/lint/ambiguous_range'
295
297
  require_relative 'rubocop/cop/lint/ambiguous_regexp_literal'
298
+ require_relative 'rubocop/cop/lint/array_literal_in_regexp'
296
299
  require_relative 'rubocop/cop/lint/assignment_in_condition'
297
300
  require_relative 'rubocop/cop/lint/big_decimal_new'
298
301
  require_relative 'rubocop/cop/lint/binary_operator_with_identical_operands'
@@ -300,7 +303,9 @@ require_relative 'rubocop/cop/lint/boolean_symbol'
300
303
  require_relative 'rubocop/cop/lint/circular_argument_reference'
301
304
  require_relative 'rubocop/cop/lint/constant_definition_in_block'
302
305
  require_relative 'rubocop/cop/lint/constant_overwritten_in_rescue'
306
+ require_relative 'rubocop/cop/lint/constant_reassignment'
303
307
  require_relative 'rubocop/cop/lint/constant_resolution'
308
+ require_relative 'rubocop/cop/lint/cop_directive_syntax'
304
309
  require_relative 'rubocop/cop/lint/debugger'
305
310
  require_relative 'rubocop/cop/lint/deprecated_class_methods'
306
311
  require_relative 'rubocop/cop/lint/deprecated_constants'
@@ -329,6 +334,7 @@ require_relative 'rubocop/cop/lint/empty_in_pattern'
329
334
  require_relative 'rubocop/cop/lint/empty_interpolation'
330
335
  require_relative 'rubocop/cop/lint/empty_when'
331
336
  require_relative 'rubocop/cop/lint/ensure_return'
337
+ require_relative 'rubocop/cop/lint/shared_mutable_default'
332
338
  require_relative 'rubocop/cop/lint/erb_new_arguments'
333
339
  require_relative 'rubocop/cop/lint/flip_flop'
334
340
  require_relative 'rubocop/cop/lint/float_comparison'
@@ -380,6 +386,7 @@ require_relative 'rubocop/cop/lint/redundant_require_statement'
380
386
  require_relative 'rubocop/cop/lint/redundant_safe_navigation'
381
387
  require_relative 'rubocop/cop/lint/redundant_splat_expansion'
382
388
  require_relative 'rubocop/cop/lint/redundant_string_coercion'
389
+ require_relative 'rubocop/cop/lint/redundant_type_conversion'
383
390
  require_relative 'rubocop/cop/lint/redundant_with_index'
384
391
  require_relative 'rubocop/cop/lint/redundant_with_object'
385
392
  require_relative 'rubocop/cop/lint/refinement_import_methods'
@@ -401,6 +408,7 @@ require_relative 'rubocop/cop/lint/shadowed_exception'
401
408
  require_relative 'rubocop/cop/lint/shadowing_outer_local_variable'
402
409
  require_relative 'rubocop/cop/lint/struct_new_override'
403
410
  require_relative 'rubocop/cop/lint/suppressed_exception'
411
+ require_relative 'rubocop/cop/lint/suppressed_exception_in_number_conversion'
404
412
  require_relative 'rubocop/cop/lint/symbol_conversion'
405
413
  require_relative 'rubocop/cop/lint/syntax'
406
414
  require_relative 'rubocop/cop/lint/to_enum_arguments'
@@ -421,10 +429,13 @@ require_relative 'rubocop/cop/lint/uri_escape_unescape'
421
429
  require_relative 'rubocop/cop/lint/uri_regexp'
422
430
  require_relative 'rubocop/cop/lint/useless_access_modifier'
423
431
  require_relative 'rubocop/cop/lint/useless_assignment'
432
+ require_relative 'rubocop/cop/lint/useless_constant_scoping'
433
+ require_relative 'rubocop/cop/lint/useless_default_value_argument'
424
434
  require_relative 'rubocop/cop/lint/useless_defined'
425
435
  require_relative 'rubocop/cop/lint/useless_else_without_rescue'
426
436
  require_relative 'rubocop/cop/lint/useless_method_definition'
427
437
  require_relative 'rubocop/cop/lint/useless_numeric_operation'
438
+ require_relative 'rubocop/cop/lint/useless_or'
428
439
  require_relative 'rubocop/cop/lint/useless_rescue'
429
440
  require_relative 'rubocop/cop/lint/useless_ruby2_keywords'
430
441
  require_relative 'rubocop/cop/lint/useless_setter_call'
@@ -460,7 +471,8 @@ require_relative 'rubocop/cop/naming/memoized_instance_variable_name'
460
471
  require_relative 'rubocop/cop/naming/method_name'
461
472
  require_relative 'rubocop/cop/naming/method_parameter_name'
462
473
  require_relative 'rubocop/cop/naming/binary_operator_parameter_name'
463
- require_relative 'rubocop/cop/naming/predicate_name'
474
+ require_relative 'rubocop/cop/naming/predicate_method'
475
+ require_relative 'rubocop/cop/naming/predicate_prefix'
464
476
  require_relative 'rubocop/cop/naming/rescued_exceptions_variable_name'
465
477
  require_relative 'rubocop/cop/naming/variable_name'
466
478
  require_relative 'rubocop/cop/naming/variable_number'
@@ -502,6 +514,7 @@ require_relative 'rubocop/cop/style/combinable_loops'
502
514
  require_relative 'rubocop/cop/style/command_literal'
503
515
  require_relative 'rubocop/cop/style/comment_annotation'
504
516
  require_relative 'rubocop/cop/style/commented_keyword'
517
+ require_relative 'rubocop/cop/style/comparable_between'
505
518
  require_relative 'rubocop/cop/style/comparable_clamp'
506
519
  require_relative 'rubocop/cop/style/concat_array_literals'
507
520
  require_relative 'rubocop/cop/style/conditional_assignment'
@@ -528,6 +541,7 @@ require_relative 'rubocop/cop/style/empty_heredoc'
528
541
  require_relative 'rubocop/cop/style/empty_lambda_parameter'
529
542
  require_relative 'rubocop/cop/style/empty_literal'
530
543
  require_relative 'rubocop/cop/style/empty_method'
544
+ require_relative 'rubocop/cop/style/empty_string_inside_interpolation'
531
545
  require_relative 'rubocop/cop/style/endless_method'
532
546
  require_relative 'rubocop/cop/style/encoding'
533
547
  require_relative 'rubocop/cop/style/end_block'
@@ -556,7 +570,9 @@ require_relative 'rubocop/cop/style/hash_as_last_array_item'
556
570
  require_relative 'rubocop/cop/style/hash_conversion'
557
571
  require_relative 'rubocop/cop/style/hash_each_methods'
558
572
  require_relative 'rubocop/cop/style/hash_except'
573
+ require_relative 'rubocop/cop/style/hash_fetch_chain'
559
574
  require_relative 'rubocop/cop/style/hash_like_case'
575
+ require_relative 'rubocop/cop/style/hash_slice'
560
576
  require_relative 'rubocop/cop/style/hash_syntax'
561
577
  require_relative 'rubocop/cop/style/hash_transform_keys'
562
578
  require_relative 'rubocop/cop/style/hash_transform_values'
@@ -573,6 +589,8 @@ require_relative 'rubocop/cop/style/inverse_methods'
573
589
  require_relative 'rubocop/cop/style/inline_comment'
574
590
  require_relative 'rubocop/cop/style/invertible_unless_condition'
575
591
  require_relative 'rubocop/cop/style/ip_addresses'
592
+ require_relative 'rubocop/cop/style/it_assignment'
593
+ require_relative 'rubocop/cop/style/it_block_parameter'
576
594
  require_relative 'rubocop/cop/style/keyword_arguments_merging'
577
595
  require_relative 'rubocop/cop/style/keyword_parameters_order'
578
596
  require_relative 'rubocop/cop/style/lambda'
@@ -590,6 +608,7 @@ require_relative 'rubocop/cop/style/numbered_parameters'
590
608
  require_relative 'rubocop/cop/style/open_struct_use'
591
609
  require_relative 'rubocop/cop/style/operator_method_call'
592
610
  require_relative 'rubocop/cop/style/redundant_array_constructor'
611
+ require_relative 'rubocop/cop/style/redundant_array_flatten'
593
612
  require_relative 'rubocop/cop/style/redundant_assignment'
594
613
  require_relative 'rubocop/cop/style/redundant_constant_base'
595
614
  require_relative 'rubocop/cop/style/redundant_current_directory_in_path'
@@ -598,6 +617,7 @@ require_relative 'rubocop/cop/style/redundant_each'
598
617
  require_relative 'rubocop/cop/style/redundant_fetch_block'
599
618
  require_relative 'rubocop/cop/style/redundant_file_extension_in_require'
600
619
  require_relative 'rubocop/cop/style/redundant_filter_chain'
620
+ require_relative 'rubocop/cop/style/redundant_format'
601
621
  require_relative 'rubocop/cop/style/redundant_heredoc_delimiter_quotes'
602
622
  require_relative 'rubocop/cop/style/redundant_initialize'
603
623
  require_relative 'rubocop/cop/style/redundant_interpolation_unfreeze'
@@ -0,0 +1,75 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative '../../rubocop'
4
+ require_relative '../../rubocop/lsp/logger'
5
+ require_relative 'runtime_adapter'
6
+
7
+ module RubyLsp
8
+ module RuboCop
9
+ # A Ruby LSP add-on for RuboCop.
10
+ class Addon < RubyLsp::Addon
11
+ def initializer
12
+ @runtime_adapter = nil
13
+ end
14
+
15
+ def name
16
+ 'RuboCop'
17
+ end
18
+
19
+ def activate(global_state, message_queue)
20
+ ::RuboCop::LSP::Logger.log(
21
+ "Activating RuboCop LSP addon #{::RuboCop::Version::STRING}.", prefix: '[RuboCop]'
22
+ )
23
+
24
+ @runtime_adapter = RuntimeAdapter.new
25
+ global_state.register_formatter('rubocop', @runtime_adapter)
26
+ register_additional_file_watchers(global_state, message_queue)
27
+
28
+ ::RuboCop::LSP::Logger.log(
29
+ "Initialized RuboCop LSP addon #{::RuboCop::Version::STRING}.", prefix: '[RuboCop]'
30
+ )
31
+ end
32
+
33
+ def deactivate
34
+ @runtime_adapter = nil
35
+ end
36
+
37
+ # rubocop:disable Layout/LineLength, Metrics/MethodLength
38
+ def register_additional_file_watchers(global_state, message_queue)
39
+ return unless global_state.supports_watching_files
40
+
41
+ message_queue << Request.new(
42
+ id: 'rubocop-file-watcher',
43
+ method: 'client/registerCapability',
44
+ params: Interface::RegistrationParams.new(
45
+ registrations: [
46
+ Interface::Registration.new(
47
+ id: 'workspace/didChangeWatchedFilesRuboCop',
48
+ method: 'workspace/didChangeWatchedFiles',
49
+ register_options: Interface::DidChangeWatchedFilesRegistrationOptions.new(
50
+ watchers: [
51
+ Interface::FileSystemWatcher.new(
52
+ glob_pattern: '**/.rubocop{,_todo}.yml',
53
+ kind: Constant::WatchKind::CREATE | Constant::WatchKind::CHANGE | Constant::WatchKind::DELETE
54
+ )
55
+ ]
56
+ )
57
+ )
58
+ ]
59
+ )
60
+ )
61
+ end
62
+ # rubocop:enable Layout/LineLength, Metrics/MethodLength
63
+
64
+ def workspace_did_change_watched_files(changes)
65
+ return unless changes.any? { |change| change[:uri].end_with?('.rubocop.yml') }
66
+
67
+ @runtime_adapter = RuntimeAdapter.new
68
+
69
+ ::RuboCop::LSP::Logger.log(<<~MESSAGE, prefix: '[RuboCop]')
70
+ Re-initialized RuboCop LSP addon #{::RuboCop::Version::STRING} due to .rubocop.yml file change.
71
+ MESSAGE
72
+ end
73
+ end
74
+ end
75
+ end
@@ -0,0 +1,65 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative '../../rubocop/lsp/runtime'
4
+
5
+ module RubyLsp
6
+ module RuboCop
7
+ # Provides an adapter to bridge RuboCop's built-in LSP runtime with Ruby LSP's add-on.
8
+ # @api private
9
+ class RuntimeAdapter
10
+ include RubyLsp::Requests::Support::Formatter
11
+
12
+ def initialize
13
+ config_store = ::RuboCop::ConfigStore.new
14
+
15
+ @runtime = ::RuboCop::LSP::Runtime.new(config_store)
16
+ end
17
+
18
+ def run_diagnostic(uri, document)
19
+ @runtime.offenses(
20
+ uri_to_path(uri),
21
+ document.source,
22
+ document.encoding,
23
+ prism_result: prism_result(document)
24
+ )
25
+ end
26
+
27
+ def run_formatting(uri, document)
28
+ @runtime.format(
29
+ uri_to_path(uri),
30
+ document.source,
31
+ command: 'rubocop.formatAutocorrects',
32
+ prism_result: prism_result(document)
33
+ )
34
+ end
35
+
36
+ def run_range_formatting(_uri, _partial_source, _base_indentation)
37
+ # Not yet supported. Should return the formatted version of `partial_source` which is
38
+ # a partial selection of the entire document. For example, it should not try to add
39
+ # a frozen_string_literal magic comment and all style corrections should start from
40
+ # the `base_indentation`.
41
+ nil
42
+ end
43
+
44
+ private
45
+
46
+ # duplicated from: lib/standard/lsp/routes.rb
47
+ # modified to incorporate Ruby LSP's to_standardized_path method
48
+ def uri_to_path(uri)
49
+ if uri.respond_to?(:to_standardized_path) && (standardized_path = uri.to_standardized_path)
50
+ standardized_path
51
+ else
52
+ uri.to_s.delete_prefix('file://')
53
+ end
54
+ end
55
+
56
+ def prism_result(document)
57
+ prism_result = document.parse_result
58
+
59
+ # NOTE: `prism_result` must be `Prism::ParseLexResult` compatible object.
60
+ # This is for compatibility parsed result unsupported.
61
+ prism_result.is_a?(Prism::ParseLexResult) ? prism_result : nil
62
+ end
63
+ end
64
+ end
65
+ end
metadata CHANGED
@@ -1,16 +1,15 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rubocop
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.69.0
4
+ version: 1.76.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-11-26 00:00:00.000000000 Z
12
+ date: 2025-06-09 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
@@ -94,7 +107,7 @@ dependencies:
94
107
  requirements:
95
108
  - - ">="
96
109
  - !ruby/object:Gem::Version
97
- version: '2.4'
110
+ version: 2.9.3
98
111
  - - "<"
99
112
  - !ruby/object:Gem::Version
100
113
  version: '3.0'
@@ -104,7 +117,7 @@ dependencies:
104
117
  requirements:
105
118
  - - ">="
106
119
  - !ruby/object:Gem::Version
107
- version: '2.4'
120
+ version: 2.9.3
108
121
  - - "<"
109
122
  - !ruby/object:Gem::Version
110
123
  version: '3.0'
@@ -114,7 +127,7 @@ dependencies:
114
127
  requirements:
115
128
  - - ">="
116
129
  - !ruby/object:Gem::Version
117
- version: 1.36.1
130
+ version: 1.45.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.1
140
+ version: 1.45.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,10 +560,13 @@ 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
564
+ - lib/rubocop/cop/lint/useless_default_value_argument.rb
535
565
  - lib/rubocop/cop/lint/useless_defined.rb
536
566
  - lib/rubocop/cop/lint/useless_else_without_rescue.rb
537
567
  - lib/rubocop/cop/lint/useless_method_definition.rb
538
568
  - lib/rubocop/cop/lint/useless_numeric_operation.rb
569
+ - lib/rubocop/cop/lint/useless_or.rb
539
570
  - lib/rubocop/cop/lint/useless_rescue.rb
540
571
  - lib/rubocop/cop/lint/useless_ruby2_keywords.rb
541
572
  - lib/rubocop/cop/lint/useless_setter_call.rb
@@ -587,11 +618,14 @@ files:
587
618
  - lib/rubocop/cop/mixin/endless_method_rewriter.rb
588
619
  - lib/rubocop/cop/mixin/enforce_superclass.rb
589
620
  - lib/rubocop/cop/mixin/first_element_line_break.rb
621
+ - lib/rubocop/cop/mixin/forbidden_identifiers.rb
622
+ - lib/rubocop/cop/mixin/forbidden_pattern.rb
590
623
  - lib/rubocop/cop/mixin/frozen_string_literal.rb
591
624
  - lib/rubocop/cop/mixin/gem_declaration.rb
592
625
  - lib/rubocop/cop/mixin/gemspec_help.rb
593
626
  - lib/rubocop/cop/mixin/hash_alignment_styles.rb
594
627
  - lib/rubocop/cop/mixin/hash_shorthand_syntax.rb
628
+ - lib/rubocop/cop/mixin/hash_subset.rb
595
629
  - lib/rubocop/cop/mixin/hash_transform_method.rb
596
630
  - lib/rubocop/cop/mixin/heredoc.rb
597
631
  - lib/rubocop/cop/mixin/integer_node.rb
@@ -647,7 +681,8 @@ files:
647
681
  - lib/rubocop/cop/naming/memoized_instance_variable_name.rb
648
682
  - lib/rubocop/cop/naming/method_name.rb
649
683
  - lib/rubocop/cop/naming/method_parameter_name.rb
650
- - lib/rubocop/cop/naming/predicate_name.rb
684
+ - lib/rubocop/cop/naming/predicate_method.rb
685
+ - lib/rubocop/cop/naming/predicate_prefix.rb
651
686
  - lib/rubocop/cop/naming/rescued_exceptions_variable_name.rb
652
687
  - lib/rubocop/cop/naming/variable_name.rb
653
688
  - lib/rubocop/cop/naming/variable_number.rb
@@ -699,6 +734,7 @@ files:
699
734
  - lib/rubocop/cop/style/command_literal.rb
700
735
  - lib/rubocop/cop/style/comment_annotation.rb
701
736
  - lib/rubocop/cop/style/commented_keyword.rb
737
+ - lib/rubocop/cop/style/comparable_between.rb
702
738
  - lib/rubocop/cop/style/comparable_clamp.rb
703
739
  - lib/rubocop/cop/style/concat_array_literals.rb
704
740
  - lib/rubocop/cop/style/conditional_assignment.rb
@@ -725,6 +761,7 @@ files:
725
761
  - lib/rubocop/cop/style/empty_lambda_parameter.rb
726
762
  - lib/rubocop/cop/style/empty_literal.rb
727
763
  - lib/rubocop/cop/style/empty_method.rb
764
+ - lib/rubocop/cop/style/empty_string_inside_interpolation.rb
728
765
  - lib/rubocop/cop/style/encoding.rb
729
766
  - lib/rubocop/cop/style/end_block.rb
730
767
  - lib/rubocop/cop/style/endless_method.rb
@@ -753,7 +790,9 @@ files:
753
790
  - lib/rubocop/cop/style/hash_conversion.rb
754
791
  - lib/rubocop/cop/style/hash_each_methods.rb
755
792
  - lib/rubocop/cop/style/hash_except.rb
793
+ - lib/rubocop/cop/style/hash_fetch_chain.rb
756
794
  - lib/rubocop/cop/style/hash_like_case.rb
795
+ - lib/rubocop/cop/style/hash_slice.rb
757
796
  - lib/rubocop/cop/style/hash_syntax.rb
758
797
  - lib/rubocop/cop/style/hash_transform_keys.rb
759
798
  - lib/rubocop/cop/style/hash_transform_values.rb
@@ -770,6 +809,8 @@ files:
770
809
  - lib/rubocop/cop/style/inverse_methods.rb
771
810
  - lib/rubocop/cop/style/invertible_unless_condition.rb
772
811
  - lib/rubocop/cop/style/ip_addresses.rb
812
+ - lib/rubocop/cop/style/it_assignment.rb
813
+ - lib/rubocop/cop/style/it_block_parameter.rb
773
814
  - lib/rubocop/cop/style/keyword_arguments_merging.rb
774
815
  - lib/rubocop/cop/style/keyword_parameters_order.rb
775
816
  - lib/rubocop/cop/style/lambda.rb
@@ -841,6 +882,7 @@ files:
841
882
  - lib/rubocop/cop/style/random_with_offset.rb
842
883
  - lib/rubocop/cop/style/redundant_argument.rb
843
884
  - lib/rubocop/cop/style/redundant_array_constructor.rb
885
+ - lib/rubocop/cop/style/redundant_array_flatten.rb
844
886
  - lib/rubocop/cop/style/redundant_assignment.rb
845
887
  - lib/rubocop/cop/style/redundant_begin.rb
846
888
  - lib/rubocop/cop/style/redundant_capital_w.rb
@@ -854,6 +896,7 @@ files:
854
896
  - lib/rubocop/cop/style/redundant_fetch_block.rb
855
897
  - lib/rubocop/cop/style/redundant_file_extension_in_require.rb
856
898
  - lib/rubocop/cop/style/redundant_filter_chain.rb
899
+ - lib/rubocop/cop/style/redundant_format.rb
857
900
  - lib/rubocop/cop/style/redundant_freeze.rb
858
901
  - lib/rubocop/cop/style/redundant_heredoc_delimiter_quotes.rb
859
902
  - lib/rubocop/cop/style/redundant_initialize.rb
@@ -939,7 +982,6 @@ files:
939
982
  - lib/rubocop/cop/team.rb
940
983
  - lib/rubocop/cop/util.rb
941
984
  - lib/rubocop/cop/utils/format_string.rb
942
- - lib/rubocop/cop/utils/regexp_ranges.rb
943
985
  - lib/rubocop/cop/variable_force.rb
944
986
  - lib/rubocop/cop/variable_force/assignment.rb
945
987
  - lib/rubocop/cop/variable_force/branch.rb
@@ -985,22 +1027,28 @@ files:
985
1027
  - lib/rubocop/formatter/worst_offenders_formatter.rb
986
1028
  - lib/rubocop/lockfile.rb
987
1029
  - lib/rubocop/lsp.rb
1030
+ - lib/rubocop/lsp/diagnostic.rb
988
1031
  - lib/rubocop/lsp/logger.rb
989
1032
  - lib/rubocop/lsp/routes.rb
990
1033
  - lib/rubocop/lsp/runtime.rb
991
1034
  - lib/rubocop/lsp/server.rb
992
1035
  - lib/rubocop/lsp/severity.rb
1036
+ - lib/rubocop/lsp/stdin_runner.rb
993
1037
  - lib/rubocop/magic_comment.rb
994
1038
  - lib/rubocop/name_similarity.rb
995
1039
  - lib/rubocop/options.rb
996
1040
  - lib/rubocop/path_util.rb
997
1041
  - lib/rubocop/platform.rb
1042
+ - lib/rubocop/plugin.rb
1043
+ - lib/rubocop/plugin/configuration_integrator.rb
1044
+ - lib/rubocop/plugin/load_error.rb
1045
+ - lib/rubocop/plugin/loader.rb
1046
+ - lib/rubocop/plugin/not_supported_error.rb
998
1047
  - lib/rubocop/rake_task.rb
999
1048
  - lib/rubocop/remote_config.rb
1000
1049
  - lib/rubocop/result_cache.rb
1001
1050
  - lib/rubocop/rspec/cop_helper.rb
1002
1051
  - lib/rubocop/rspec/expect_offense.rb
1003
- - lib/rubocop/rspec/host_environment_simulation_helper.rb
1004
1052
  - lib/rubocop/rspec/parallel_formatter.rb
1005
1053
  - lib/rubocop/rspec/shared_contexts.rb
1006
1054
  - lib/rubocop/rspec/support.rb
@@ -1030,17 +1078,18 @@ files:
1030
1078
  - lib/rubocop/version.rb
1031
1079
  - lib/rubocop/warning.rb
1032
1080
  - lib/rubocop/yaml_duplication_checker.rb
1081
+ - lib/ruby_lsp/rubocop/addon.rb
1082
+ - lib/ruby_lsp/rubocop/runtime_adapter.rb
1033
1083
  homepage: https://github.com/rubocop/rubocop
1034
1084
  licenses:
1035
1085
  - MIT
1036
1086
  metadata:
1037
1087
  homepage_uri: https://rubocop.org/
1038
- changelog_uri: https://github.com/rubocop/rubocop/releases/tag/v1.69.0
1088
+ changelog_uri: https://github.com/rubocop/rubocop/releases/tag/v1.76.1
1039
1089
  source_code_uri: https://github.com/rubocop/rubocop/
1040
- documentation_uri: https://docs.rubocop.org/rubocop/1.69/
1090
+ documentation_uri: https://docs.rubocop.org/rubocop/1.76/
1041
1091
  bug_tracker_uri: https://github.com/rubocop/rubocop/issues
1042
1092
  rubygems_mfa_required: 'true'
1043
- post_install_message:
1044
1093
  rdoc_options: []
1045
1094
  require_paths:
1046
1095
  - lib
@@ -1055,8 +1104,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
1055
1104
  - !ruby/object:Gem::Version
1056
1105
  version: '0'
1057
1106
  requirements: []
1058
- rubygems_version: 3.4.22
1059
- signing_key:
1107
+ rubygems_version: 3.6.2
1060
1108
  specification_version: 4
1061
1109
  summary: Automatic Ruby code style checking tool.
1062
1110
  test_files: []