rubocop 1.44.1 → 1.78.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (711) hide show
  1. checksums.yaml +4 -4
  2. data/LICENSE.txt +1 -1
  3. data/README.md +95 -88
  4. data/assets/output.css.erb +159 -0
  5. data/assets/output.html.erb +1 -160
  6. data/config/default.yml +660 -117
  7. data/config/internal_affairs.yml +31 -0
  8. data/config/obsoletion.yml +13 -3
  9. data/exe/rubocop +4 -3
  10. data/lib/rubocop/cached_data.rb +21 -5
  11. data/lib/rubocop/cli/command/auto_generate_config.rb +33 -13
  12. data/lib/rubocop/cli/command/execute_runner.rb +11 -6
  13. data/lib/rubocop/cli/command/lsp.rb +19 -0
  14. data/lib/rubocop/cli/command/show_cops.rb +24 -2
  15. data/lib/rubocop/cli/command/show_docs_url.rb +2 -2
  16. data/lib/rubocop/cli/command/suggest_extensions.rb +7 -1
  17. data/lib/rubocop/cli/command/version.rb +2 -2
  18. data/lib/rubocop/cli.rb +80 -11
  19. data/lib/rubocop/comment_config.rb +21 -2
  20. data/lib/rubocop/config.rb +99 -25
  21. data/lib/rubocop/config_finder.rb +14 -4
  22. data/lib/rubocop/config_loader.rb +68 -57
  23. data/lib/rubocop/config_loader_resolver.rb +48 -17
  24. data/lib/rubocop/config_obsoletion/extracted_cop.rb +4 -3
  25. data/lib/rubocop/config_obsoletion/parameter_rule.rb +9 -1
  26. data/lib/rubocop/config_obsoletion/renamed_cop.rb +18 -3
  27. data/lib/rubocop/config_obsoletion.rb +58 -11
  28. data/lib/rubocop/config_validator.rb +39 -20
  29. data/lib/rubocop/cop/autocorrect_logic.rb +69 -21
  30. data/lib/rubocop/cop/base.rb +112 -29
  31. data/lib/rubocop/cop/bundler/duplicated_gem.rb +3 -2
  32. data/lib/rubocop/cop/bundler/duplicated_group.rb +127 -0
  33. data/lib/rubocop/cop/bundler/gem_comment.rb +4 -4
  34. data/lib/rubocop/cop/bundler/gem_filename.rb +0 -1
  35. data/lib/rubocop/cop/bundler/gem_version.rb +6 -7
  36. data/lib/rubocop/cop/bundler/insecure_protocol_source.rb +0 -1
  37. data/lib/rubocop/cop/bundler/ordered_gems.rb +10 -2
  38. data/lib/rubocop/cop/commissioner.rb +8 -2
  39. data/lib/rubocop/cop/cop.rb +55 -9
  40. data/lib/rubocop/cop/corrector.rb +1 -1
  41. data/lib/rubocop/cop/correctors/alignment_corrector.rb +4 -15
  42. data/lib/rubocop/cop/correctors/each_to_for_corrector.rb +4 -8
  43. data/lib/rubocop/cop/correctors/for_to_each_corrector.rb +7 -15
  44. data/lib/rubocop/cop/correctors/lambda_literal_to_method_corrector.rb +7 -4
  45. data/lib/rubocop/cop/correctors/line_break_corrector.rb +3 -1
  46. data/lib/rubocop/cop/correctors/multiline_literal_brace_corrector.rb +2 -2
  47. data/lib/rubocop/cop/correctors/ordered_gem_corrector.rb +1 -1
  48. data/lib/rubocop/cop/correctors/parentheses_corrector.rb +7 -4
  49. data/lib/rubocop/cop/correctors/percent_literal_corrector.rb +12 -2
  50. data/lib/rubocop/cop/documentation.rb +32 -5
  51. data/lib/rubocop/cop/exclude_limit.rb +1 -1
  52. data/lib/rubocop/cop/force.rb +12 -0
  53. data/lib/rubocop/cop/gemspec/add_runtime_dependency.rb +38 -0
  54. data/lib/rubocop/cop/gemspec/attribute_assignment.rb +91 -0
  55. data/lib/rubocop/cop/gemspec/dependency_version.rb +6 -8
  56. data/lib/rubocop/cop/gemspec/deprecated_attribute_assignment.rb +4 -5
  57. data/lib/rubocop/cop/gemspec/development_dependencies.rb +1 -1
  58. data/lib/rubocop/cop/gemspec/duplicated_assignment.rb +39 -17
  59. data/lib/rubocop/cop/gemspec/ordered_dependencies.rb +10 -2
  60. data/lib/rubocop/cop/gemspec/require_mfa.rb +15 -1
  61. data/lib/rubocop/cop/gemspec/required_ruby_version.rb +5 -3
  62. data/lib/rubocop/cop/gemspec/ruby_version_globals_usage.rb +3 -3
  63. data/lib/rubocop/cop/generator/require_file_injector.rb +1 -1
  64. data/lib/rubocop/cop/generator.rb +6 -0
  65. data/lib/rubocop/cop/internal_affairs/cop_description.rb +37 -17
  66. data/lib/rubocop/cop/internal_affairs/cop_enabled.rb +85 -0
  67. data/lib/rubocop/cop/internal_affairs/empty_line_between_expect_offense_and_correction.rb +2 -1
  68. data/lib/rubocop/cop/internal_affairs/example_description.rb +51 -25
  69. data/lib/rubocop/cop/internal_affairs/example_heredoc_delimiter.rb +3 -3
  70. data/lib/rubocop/cop/internal_affairs/inherit_deprecated_cop_class.rb +1 -1
  71. data/lib/rubocop/cop/internal_affairs/location_exists.rb +116 -0
  72. data/lib/rubocop/cop/internal_affairs/location_expression.rb +38 -0
  73. data/lib/rubocop/cop/internal_affairs/location_line_equality_comparison.rb +6 -5
  74. data/lib/rubocop/cop/internal_affairs/method_name_end_with.rb +8 -6
  75. data/lib/rubocop/cop/internal_affairs/method_name_equal.rb +19 -20
  76. data/lib/rubocop/cop/internal_affairs/node_first_or_last_argument.rb +54 -0
  77. data/lib/rubocop/cop/internal_affairs/node_matcher_directive.rb +129 -35
  78. data/lib/rubocop/cop/internal_affairs/node_pattern_groups/ast_processor.rb +63 -0
  79. data/lib/rubocop/cop/internal_affairs/node_pattern_groups/ast_walker.rb +131 -0
  80. data/lib/rubocop/cop/internal_affairs/node_pattern_groups.rb +231 -0
  81. data/lib/rubocop/cop/internal_affairs/node_type_group.rb +91 -0
  82. data/lib/rubocop/cop/internal_affairs/node_type_multiple_predicates.rb +126 -0
  83. data/lib/rubocop/cop/internal_affairs/node_type_predicate.rb +4 -3
  84. data/lib/rubocop/cop/internal_affairs/numblock_handler.rb +1 -1
  85. data/lib/rubocop/cop/internal_affairs/on_send_without_on_csend.rb +90 -0
  86. data/lib/rubocop/cop/internal_affairs/operator_keyword.rb +48 -0
  87. data/lib/rubocop/cop/internal_affairs/plugin.rb +33 -0
  88. data/lib/rubocop/cop/internal_affairs/processed_source_buffer_name.rb +42 -0
  89. data/lib/rubocop/cop/internal_affairs/redundant_described_class_as_subject.rb +6 -5
  90. data/lib/rubocop/cop/internal_affairs/redundant_expect_offense_arguments.rb +34 -0
  91. data/lib/rubocop/cop/internal_affairs/redundant_location_argument.rb +1 -1
  92. data/lib/rubocop/cop/internal_affairs/redundant_message_argument.rb +7 -22
  93. data/lib/rubocop/cop/internal_affairs/redundant_method_dispatch_node.rb +11 -2
  94. data/lib/rubocop/cop/internal_affairs/redundant_source_range.rb +75 -0
  95. data/lib/rubocop/cop/internal_affairs/single_line_comparison.rb +5 -4
  96. data/lib/rubocop/cop/internal_affairs/style_detected_api_use.rb +0 -2
  97. data/lib/rubocop/cop/internal_affairs/undefined_config.rb +23 -2
  98. data/lib/rubocop/cop/internal_affairs/useless_message_assertion.rb +2 -5
  99. data/lib/rubocop/cop/internal_affairs.rb +12 -0
  100. data/lib/rubocop/cop/layout/access_modifier_indentation.rb +6 -2
  101. data/lib/rubocop/cop/layout/argument_alignment.rb +3 -10
  102. data/lib/rubocop/cop/layout/array_alignment.rb +2 -2
  103. data/lib/rubocop/cop/layout/assignment_indentation.rb +3 -2
  104. data/lib/rubocop/cop/layout/begin_end_alignment.rb +0 -1
  105. data/lib/rubocop/cop/layout/block_alignment.rb +32 -13
  106. data/lib/rubocop/cop/layout/block_end_newline.rb +8 -21
  107. data/lib/rubocop/cop/layout/case_indentation.rb +1 -1
  108. data/lib/rubocop/cop/layout/class_structure.rb +59 -28
  109. data/lib/rubocop/cop/layout/closing_heredoc_indentation.rb +2 -3
  110. data/lib/rubocop/cop/layout/closing_parenthesis_indentation.rb +5 -5
  111. data/lib/rubocop/cop/layout/comment_indentation.rb +1 -1
  112. data/lib/rubocop/cop/layout/condition_position.rb +0 -4
  113. data/lib/rubocop/cop/layout/def_end_alignment.rb +2 -2
  114. data/lib/rubocop/cop/layout/dot_position.rb +2 -6
  115. data/lib/rubocop/cop/layout/else_alignment.rb +2 -2
  116. data/lib/rubocop/cop/layout/empty_comment.rb +6 -4
  117. data/lib/rubocop/cop/layout/empty_line_after_guard_clause.rb +46 -13
  118. data/lib/rubocop/cop/layout/empty_line_after_magic_comment.rb +14 -7
  119. data/lib/rubocop/cop/layout/empty_line_after_multiline_condition.rb +1 -1
  120. data/lib/rubocop/cop/layout/empty_line_between_defs.rb +34 -14
  121. data/lib/rubocop/cop/layout/empty_lines.rb +1 -1
  122. data/lib/rubocop/cop/layout/empty_lines_around_access_modifier.rb +39 -7
  123. data/lib/rubocop/cop/layout/empty_lines_around_begin_body.rb +5 -6
  124. data/lib/rubocop/cop/layout/empty_lines_around_block_body.rb +1 -0
  125. data/lib/rubocop/cop/layout/empty_lines_around_exception_handling_keywords.rb +14 -8
  126. data/lib/rubocop/cop/layout/empty_lines_around_method_body.rb +23 -1
  127. data/lib/rubocop/cop/layout/end_alignment.rb +23 -3
  128. data/lib/rubocop/cop/layout/extra_spacing.rb +4 -5
  129. data/lib/rubocop/cop/layout/first_argument_indentation.rb +14 -14
  130. data/lib/rubocop/cop/layout/first_array_element_indentation.rb +19 -10
  131. data/lib/rubocop/cop/layout/first_array_element_line_break.rb +25 -34
  132. data/lib/rubocop/cop/layout/first_hash_element_indentation.rb +2 -7
  133. data/lib/rubocop/cop/layout/first_hash_element_line_break.rb +8 -20
  134. data/lib/rubocop/cop/layout/first_method_argument_line_break.rb +50 -52
  135. data/lib/rubocop/cop/layout/first_method_parameter_line_break.rb +38 -55
  136. data/lib/rubocop/cop/layout/first_parameter_indentation.rb +3 -3
  137. data/lib/rubocop/cop/layout/hash_alignment.rb +8 -6
  138. data/lib/rubocop/cop/layout/heredoc_argument_closing_parenthesis.rb +13 -6
  139. data/lib/rubocop/cop/layout/heredoc_indentation.rb +7 -4
  140. data/lib/rubocop/cop/layout/indentation_style.rb +1 -1
  141. data/lib/rubocop/cop/layout/indentation_width.rb +16 -16
  142. data/lib/rubocop/cop/layout/initial_indentation.rb +1 -1
  143. data/lib/rubocop/cop/layout/leading_comment_space.rb +85 -3
  144. data/lib/rubocop/cop/layout/line_continuation_leading_space.rb +29 -14
  145. data/lib/rubocop/cop/layout/line_continuation_spacing.rb +19 -9
  146. data/lib/rubocop/cop/layout/line_end_string_concatenation_indentation.rb +4 -2
  147. data/lib/rubocop/cop/layout/line_length.rb +168 -28
  148. data/lib/rubocop/cop/layout/multiline_array_line_breaks.rb +8 -27
  149. data/lib/rubocop/cop/layout/multiline_block_layout.rb +1 -0
  150. data/lib/rubocop/cop/layout/multiline_hash_key_line_breaks.rb +8 -27
  151. data/lib/rubocop/cop/layout/multiline_method_argument_line_breaks.rb +20 -12
  152. data/lib/rubocop/cop/layout/multiline_method_call_brace_layout.rb +2 -1
  153. data/lib/rubocop/cop/layout/multiline_method_call_indentation.rb +21 -6
  154. data/lib/rubocop/cop/layout/multiline_method_definition_brace_layout.rb +1 -1
  155. data/lib/rubocop/cop/layout/multiline_method_parameter_line_breaks.rb +7 -30
  156. data/lib/rubocop/cop/layout/multiline_operation_indentation.rb +3 -4
  157. data/lib/rubocop/cop/layout/parameter_alignment.rb +3 -4
  158. data/lib/rubocop/cop/layout/redundant_line_break.rb +43 -48
  159. data/lib/rubocop/cop/layout/rescue_ensure_alignment.rb +9 -10
  160. data/lib/rubocop/cop/layout/single_line_block_chain.rb +6 -1
  161. data/lib/rubocop/cop/layout/space_after_colon.rb +2 -2
  162. data/lib/rubocop/cop/layout/space_after_comma.rb +10 -2
  163. data/lib/rubocop/cop/layout/space_after_method_name.rb +1 -1
  164. data/lib/rubocop/cop/layout/space_after_not.rb +1 -1
  165. data/lib/rubocop/cop/layout/space_after_semicolon.rb +11 -1
  166. data/lib/rubocop/cop/layout/space_around_keyword.rb +3 -2
  167. data/lib/rubocop/cop/layout/space_around_method_call_operator.rb +3 -3
  168. data/lib/rubocop/cop/layout/space_around_operators.rb +75 -38
  169. data/lib/rubocop/cop/layout/space_before_block_braces.rb +20 -10
  170. data/lib/rubocop/cop/layout/space_before_brackets.rb +7 -40
  171. data/lib/rubocop/cop/layout/space_before_comma.rb +1 -1
  172. data/lib/rubocop/cop/layout/space_before_first_arg.rb +1 -1
  173. data/lib/rubocop/cop/layout/space_before_semicolon.rb +1 -1
  174. data/lib/rubocop/cop/layout/space_in_lambda_literal.rb +2 -2
  175. data/lib/rubocop/cop/layout/space_inside_array_literal_brackets.rb +28 -13
  176. data/lib/rubocop/cop/layout/space_inside_block_braces.rb +8 -1
  177. data/lib/rubocop/cop/layout/space_inside_hash_literal_braces.rb +8 -1
  178. data/lib/rubocop/cop/layout/space_inside_parens.rb +3 -3
  179. data/lib/rubocop/cop/layout/space_inside_percent_literal_delimiters.rb +1 -1
  180. data/lib/rubocop/cop/layout/space_inside_range_literal.rb +1 -1
  181. data/lib/rubocop/cop/layout/space_inside_reference_brackets.rb +4 -4
  182. data/lib/rubocop/cop/layout/space_inside_string_interpolation.rb +6 -7
  183. data/lib/rubocop/cop/layout/trailing_empty_lines.rb +5 -0
  184. data/lib/rubocop/cop/layout/trailing_whitespace.rb +6 -4
  185. data/lib/rubocop/cop/legacy/corrector.rb +12 -2
  186. data/lib/rubocop/cop/lint/ambiguous_block_association.rb +14 -4
  187. data/lib/rubocop/cop/lint/ambiguous_operator.rb +0 -2
  188. data/lib/rubocop/cop/lint/ambiguous_range.rb +9 -1
  189. data/lib/rubocop/cop/lint/ambiguous_regexp_literal.rb +0 -2
  190. data/lib/rubocop/cop/lint/array_literal_in_regexp.rb +118 -0
  191. data/lib/rubocop/cop/lint/assignment_in_condition.rb +7 -9
  192. data/lib/rubocop/cop/lint/big_decimal_new.rb +4 -7
  193. data/lib/rubocop/cop/lint/binary_operator_with_identical_operands.rb +11 -13
  194. data/lib/rubocop/cop/lint/boolean_symbol.rb +2 -4
  195. data/lib/rubocop/cop/lint/circular_argument_reference.rb +4 -14
  196. data/lib/rubocop/cop/lint/constant_definition_in_block.rb +3 -3
  197. data/lib/rubocop/cop/lint/constant_overwritten_in_rescue.rb +1 -1
  198. data/lib/rubocop/cop/lint/constant_reassignment.rb +148 -0
  199. data/lib/rubocop/cop/lint/constant_resolution.rb +1 -1
  200. data/lib/rubocop/cop/lint/cop_directive_syntax.rb +84 -0
  201. data/lib/rubocop/cop/lint/debugger.rb +49 -30
  202. data/lib/rubocop/cop/lint/deprecated_class_methods.rb +6 -6
  203. data/lib/rubocop/cop/lint/deprecated_open_ssl_constant.rb +4 -13
  204. data/lib/rubocop/cop/lint/duplicate_branch.rb +39 -4
  205. data/lib/rubocop/cop/lint/duplicate_case_condition.rb +1 -5
  206. data/lib/rubocop/cop/lint/duplicate_hash_key.rb +2 -5
  207. data/lib/rubocop/cop/lint/duplicate_match_pattern.rb +122 -0
  208. data/lib/rubocop/cop/lint/duplicate_methods.rb +112 -34
  209. data/lib/rubocop/cop/lint/duplicate_regexp_character_class_element.rb +48 -23
  210. data/lib/rubocop/cop/lint/duplicate_set_element.rb +87 -0
  211. data/lib/rubocop/cop/lint/each_with_object_argument.rb +0 -4
  212. data/lib/rubocop/cop/lint/else_layout.rb +1 -3
  213. data/lib/rubocop/cop/lint/empty_block.rb +2 -2
  214. data/lib/rubocop/cop/lint/empty_conditional_body.rb +31 -58
  215. data/lib/rubocop/cop/lint/empty_ensure.rb +2 -12
  216. data/lib/rubocop/cop/lint/empty_expression.rb +0 -2
  217. data/lib/rubocop/cop/lint/empty_file.rb +0 -2
  218. data/lib/rubocop/cop/lint/empty_interpolation.rb +4 -6
  219. data/lib/rubocop/cop/lint/empty_when.rb +1 -3
  220. data/lib/rubocop/cop/lint/ensure_return.rb +2 -10
  221. data/lib/rubocop/cop/lint/erb_new_arguments.rb +27 -27
  222. data/lib/rubocop/cop/lint/float_comparison.rb +58 -15
  223. data/lib/rubocop/cop/lint/float_out_of_range.rb +2 -8
  224. data/lib/rubocop/cop/lint/format_parameter_mismatch.rb +5 -12
  225. data/lib/rubocop/cop/lint/hash_compare_by_identity.rb +2 -1
  226. data/lib/rubocop/cop/lint/hash_new_with_keyword_arguments_as_default.rb +55 -0
  227. data/lib/rubocop/cop/lint/heredoc_method_call_position.rb +1 -1
  228. data/lib/rubocop/cop/lint/identity_comparison.rb +19 -16
  229. data/lib/rubocop/cop/lint/implicit_string_concatenation.rb +24 -13
  230. data/lib/rubocop/cop/lint/incompatible_io_select_with_fiber_scheduler.rb +5 -3
  231. data/lib/rubocop/cop/lint/ineffective_access_modifier.rb +1 -8
  232. data/lib/rubocop/cop/lint/inherit_exception.rb +9 -0
  233. data/lib/rubocop/cop/lint/interpolation_check.rb +9 -4
  234. data/lib/rubocop/cop/lint/it_without_arguments_in_block.rb +50 -0
  235. data/lib/rubocop/cop/lint/lambda_without_literal_block.rb +1 -1
  236. data/lib/rubocop/cop/lint/literal_as_condition.rb +114 -11
  237. data/lib/rubocop/cop/lint/literal_assignment_in_condition.rb +85 -0
  238. data/lib/rubocop/cop/lint/literal_in_interpolation.rb +96 -17
  239. data/lib/rubocop/cop/lint/loop.rb +6 -12
  240. data/lib/rubocop/cop/lint/missing_cop_enable_directive.rb +1 -1
  241. data/lib/rubocop/cop/lint/missing_super.rb +63 -5
  242. data/lib/rubocop/cop/lint/mixed_case_range.rb +113 -0
  243. data/lib/rubocop/cop/lint/mixed_regexp_capture_types.rb +1 -1
  244. data/lib/rubocop/cop/lint/nested_method_definition.rb +11 -18
  245. data/lib/rubocop/cop/lint/next_without_accumulator.rb +6 -25
  246. data/lib/rubocop/cop/lint/no_return_in_begin_end_blocks.rb +2 -7
  247. data/lib/rubocop/cop/lint/non_atomic_file_operation.rb +22 -10
  248. data/lib/rubocop/cop/lint/non_deterministic_require_order.rb +6 -8
  249. data/lib/rubocop/cop/lint/non_local_exit_from_iterator.rb +3 -3
  250. data/lib/rubocop/cop/lint/number_conversion.rb +13 -4
  251. data/lib/rubocop/cop/lint/numbered_parameter_assignment.rb +3 -4
  252. data/lib/rubocop/cop/lint/numeric_operation_with_constant_result.rb +93 -0
  253. data/lib/rubocop/cop/lint/or_assignment_to_constant.rb +3 -2
  254. data/lib/rubocop/cop/lint/ordered_magic_comments.rb +0 -1
  255. data/lib/rubocop/cop/lint/out_of_range_regexp_ref.rb +11 -14
  256. data/lib/rubocop/cop/lint/parentheses_as_grouped_expression.rb +6 -11
  257. data/lib/rubocop/cop/lint/percent_string_array.rb +1 -5
  258. data/lib/rubocop/cop/lint/percent_symbol_array.rb +1 -5
  259. data/lib/rubocop/cop/lint/raise_exception.rb +29 -10
  260. data/lib/rubocop/cop/lint/rand_one.rb +0 -4
  261. data/lib/rubocop/cop/lint/redundant_cop_disable_directive.rb +11 -5
  262. data/lib/rubocop/cop/lint/redundant_cop_enable_directive.rb +9 -7
  263. data/lib/rubocop/cop/lint/redundant_regexp_quantifiers.rb +130 -0
  264. data/lib/rubocop/cop/lint/redundant_require_statement.rb +1 -13
  265. data/lib/rubocop/cop/lint/redundant_safe_navigation.rb +79 -10
  266. data/lib/rubocop/cop/lint/redundant_splat_expansion.rb +10 -9
  267. data/lib/rubocop/cop/lint/redundant_string_coercion.rb +36 -20
  268. data/lib/rubocop/cop/lint/redundant_type_conversion.rb +261 -0
  269. data/lib/rubocop/cop/lint/redundant_with_index.rb +10 -3
  270. data/lib/rubocop/cop/lint/redundant_with_object.rb +6 -3
  271. data/lib/rubocop/cop/lint/refinement_import_methods.rb +3 -2
  272. data/lib/rubocop/cop/lint/regexp_as_condition.rb +0 -1
  273. data/lib/rubocop/cop/lint/require_parentheses.rb +0 -4
  274. data/lib/rubocop/cop/lint/rescue_exception.rb +1 -5
  275. data/lib/rubocop/cop/lint/rescue_type.rb +4 -10
  276. data/lib/rubocop/cop/lint/return_in_void_context.rb +9 -13
  277. data/lib/rubocop/cop/lint/safe_navigation_chain.rb +31 -13
  278. data/lib/rubocop/cop/lint/safe_navigation_consistency.rb +109 -41
  279. data/lib/rubocop/cop/lint/script_permission.rb +3 -3
  280. data/lib/rubocop/cop/lint/self_assignment.rb +71 -10
  281. data/lib/rubocop/cop/lint/send_with_mixin_argument.rb +1 -2
  282. data/lib/rubocop/cop/lint/shadowed_argument.rb +1 -0
  283. data/lib/rubocop/cop/lint/shadowed_exception.rb +7 -13
  284. data/lib/rubocop/cop/lint/shadowing_outer_local_variable.rb +26 -12
  285. data/lib/rubocop/cop/lint/shared_mutable_default.rb +76 -0
  286. data/lib/rubocop/cop/lint/struct_new_override.rb +12 -12
  287. data/lib/rubocop/cop/lint/suppressed_exception.rb +3 -3
  288. data/lib/rubocop/cop/lint/suppressed_exception_in_number_conversion.rb +111 -0
  289. data/lib/rubocop/cop/lint/symbol_conversion.rb +9 -4
  290. data/lib/rubocop/cop/lint/syntax.rb +14 -4
  291. data/lib/rubocop/cop/lint/to_enum_arguments.rb +17 -7
  292. data/lib/rubocop/cop/lint/top_level_return_with_argument.rb +23 -9
  293. data/lib/rubocop/cop/lint/trailing_comma_in_attribute_declaration.rb +1 -1
  294. data/lib/rubocop/cop/lint/unescaped_bracket_in_regexp.rb +88 -0
  295. data/lib/rubocop/cop/lint/unexpected_block_arity.rb +3 -1
  296. data/lib/rubocop/cop/lint/unified_integer.rb +0 -4
  297. data/lib/rubocop/cop/lint/unmodified_reduce_accumulator.rb +4 -3
  298. data/lib/rubocop/cop/lint/unreachable_code.rb +56 -9
  299. data/lib/rubocop/cop/lint/unreachable_loop.rb +17 -11
  300. data/lib/rubocop/cop/lint/unused_method_argument.rb +18 -2
  301. data/lib/rubocop/cop/lint/uri_regexp.rb +25 -7
  302. data/lib/rubocop/cop/lint/useless_access_modifier.rb +46 -17
  303. data/lib/rubocop/cop/lint/useless_assignment.rb +104 -15
  304. data/lib/rubocop/cop/lint/useless_constant_scoping.rb +71 -0
  305. data/lib/rubocop/cop/lint/useless_default_value_argument.rb +90 -0
  306. data/lib/rubocop/cop/lint/useless_defined.rb +55 -0
  307. data/lib/rubocop/cop/lint/useless_else_without_rescue.rb +4 -4
  308. data/lib/rubocop/cop/lint/useless_method_definition.rb +11 -3
  309. data/lib/rubocop/cop/lint/useless_numeric_operation.rb +78 -0
  310. data/lib/rubocop/cop/lint/useless_or.rb +98 -0
  311. data/lib/rubocop/cop/lint/useless_rescue.rb +7 -3
  312. data/lib/rubocop/cop/lint/useless_ruby2_keywords.rb +5 -5
  313. data/lib/rubocop/cop/lint/useless_setter_call.rb +14 -29
  314. data/lib/rubocop/cop/lint/useless_times.rb +3 -3
  315. data/lib/rubocop/cop/lint/void.rb +140 -19
  316. data/lib/rubocop/cop/message_annotator.rb +7 -3
  317. data/lib/rubocop/cop/metrics/abc_size.rb +4 -4
  318. data/lib/rubocop/cop/metrics/block_length.rb +9 -7
  319. data/lib/rubocop/cop/metrics/block_nesting.rb +20 -8
  320. data/lib/rubocop/cop/metrics/class_length.rb +23 -16
  321. data/lib/rubocop/cop/metrics/collection_literal_length.rb +83 -0
  322. data/lib/rubocop/cop/metrics/cyclomatic_complexity.rb +5 -2
  323. data/lib/rubocop/cop/metrics/method_length.rb +16 -7
  324. data/lib/rubocop/cop/metrics/module_length.rb +7 -6
  325. data/lib/rubocop/cop/metrics/perceived_complexity.rb +1 -1
  326. data/lib/rubocop/cop/metrics/utils/abc_size_calculator.rb +2 -3
  327. data/lib/rubocop/cop/metrics/utils/code_length_calculator.rb +40 -13
  328. data/lib/rubocop/cop/metrics/utils/repeated_attribute_discount.rb +7 -7
  329. data/lib/rubocop/cop/migration/department_name.rb +3 -3
  330. data/lib/rubocop/cop/mixin/alignment.rb +8 -4
  331. data/lib/rubocop/cop/mixin/allowed_methods.rb +10 -2
  332. data/lib/rubocop/cop/mixin/allowed_pattern.rb +15 -3
  333. data/lib/rubocop/cop/mixin/allowed_receivers.rb +34 -0
  334. data/lib/rubocop/cop/mixin/annotation_comment.rb +1 -3
  335. data/lib/rubocop/cop/mixin/check_assignment.rb +4 -12
  336. data/lib/rubocop/cop/mixin/check_line_breakable.rb +22 -12
  337. data/lib/rubocop/cop/mixin/check_single_line_suitability.rb +49 -0
  338. data/lib/rubocop/cop/mixin/code_length.rb +12 -1
  339. data/lib/rubocop/cop/mixin/comments_help.rb +26 -11
  340. data/lib/rubocop/cop/mixin/configurable_formatting.rb +1 -0
  341. data/lib/rubocop/cop/mixin/configurable_max.rb +5 -1
  342. data/lib/rubocop/cop/mixin/def_node.rb +1 -1
  343. data/lib/rubocop/cop/mixin/dig_help.rb +27 -0
  344. data/lib/rubocop/cop/mixin/documentation_comment.rb +1 -1
  345. data/lib/rubocop/cop/mixin/empty_lines_around_body.rb +1 -1
  346. data/lib/rubocop/cop/mixin/end_keyword_alignment.rb +1 -1
  347. data/lib/rubocop/cop/mixin/endless_method_rewriter.rb +24 -0
  348. data/lib/rubocop/cop/mixin/forbidden_identifiers.rb +20 -0
  349. data/lib/rubocop/cop/mixin/forbidden_pattern.rb +16 -0
  350. data/lib/rubocop/cop/mixin/frozen_string_literal.rb +23 -12
  351. data/lib/rubocop/cop/mixin/gemspec_help.rb +22 -0
  352. data/lib/rubocop/cop/mixin/hash_alignment_styles.rb +16 -15
  353. data/lib/rubocop/cop/mixin/hash_shorthand_syntax.rb +62 -43
  354. data/lib/rubocop/cop/mixin/hash_subset.rb +203 -0
  355. data/lib/rubocop/cop/mixin/hash_transform_method.rb +74 -74
  356. data/lib/rubocop/cop/mixin/heredoc.rb +6 -2
  357. data/lib/rubocop/cop/mixin/line_length_help.rb +34 -12
  358. data/lib/rubocop/cop/mixin/method_complexity.rb +17 -7
  359. data/lib/rubocop/cop/mixin/min_branches_count.rb +40 -0
  360. data/lib/rubocop/cop/mixin/multiline_element_line_breaks.rb +0 -3
  361. data/lib/rubocop/cop/mixin/multiline_expression_indentation.rb +10 -11
  362. data/lib/rubocop/cop/mixin/ordered_gem_node.rb +2 -2
  363. data/lib/rubocop/cop/mixin/percent_array.rb +1 -1
  364. data/lib/rubocop/cop/mixin/percent_literal.rb +2 -2
  365. data/lib/rubocop/cop/mixin/preceding_following_alignment.rb +71 -35
  366. data/lib/rubocop/cop/mixin/range_help.rb +16 -10
  367. data/lib/rubocop/cop/mixin/rescue_node.rb +4 -0
  368. data/lib/rubocop/cop/mixin/safe_assignment.rb +1 -1
  369. data/lib/rubocop/cop/mixin/space_after_punctuation.rb +1 -1
  370. data/lib/rubocop/cop/mixin/statement_modifier.rb +13 -7
  371. data/lib/rubocop/cop/mixin/string_help.rb +5 -3
  372. data/lib/rubocop/cop/mixin/string_literals_help.rb +12 -0
  373. data/lib/rubocop/cop/mixin/surrounding_space.rb +3 -3
  374. data/lib/rubocop/cop/mixin/target_ruby_version.rb +17 -1
  375. data/lib/rubocop/cop/mixin/trailing_comma.rb +24 -8
  376. data/lib/rubocop/cop/naming/accessor_method_name.rb +11 -6
  377. data/lib/rubocop/cop/naming/ascii_identifiers.rb +1 -1
  378. data/lib/rubocop/cop/naming/block_forwarding.rb +40 -9
  379. data/lib/rubocop/cop/naming/class_and_module_camel_case.rb +1 -1
  380. data/lib/rubocop/cop/naming/constant_name.rb +8 -10
  381. data/lib/rubocop/cop/naming/file_name.rb +5 -7
  382. data/lib/rubocop/cop/naming/heredoc_delimiter_case.rb +1 -1
  383. data/lib/rubocop/cop/naming/heredoc_delimiter_naming.rb +3 -1
  384. data/lib/rubocop/cop/naming/inclusive_language.rb +33 -6
  385. data/lib/rubocop/cop/naming/memoized_instance_variable_name.rb +38 -24
  386. data/lib/rubocop/cop/naming/method_name.rb +146 -15
  387. data/lib/rubocop/cop/naming/predicate_method.rb +303 -0
  388. data/lib/rubocop/cop/naming/predicate_prefix.rb +204 -0
  389. data/lib/rubocop/cop/naming/rescued_exceptions_variable_name.rb +26 -17
  390. data/lib/rubocop/cop/naming/variable_name.rb +56 -7
  391. data/lib/rubocop/cop/naming/variable_number.rb +2 -3
  392. data/lib/rubocop/cop/offense.rb +4 -5
  393. data/lib/rubocop/cop/registry.rb +12 -7
  394. data/lib/rubocop/cop/security/compound_hash.rb +4 -2
  395. data/lib/rubocop/cop/security/eval.rb +2 -1
  396. data/lib/rubocop/cop/security/open.rb +3 -2
  397. data/lib/rubocop/cop/security/yaml_load.rb +3 -2
  398. data/lib/rubocop/cop/style/access_modifier_declarations.rb +177 -30
  399. data/lib/rubocop/cop/style/accessor_grouping.rb +69 -21
  400. data/lib/rubocop/cop/style/alias.rb +11 -9
  401. data/lib/rubocop/cop/style/ambiguous_endless_method_definition.rb +79 -0
  402. data/lib/rubocop/cop/style/and_or.rb +1 -1
  403. data/lib/rubocop/cop/style/arguments_forwarding.rb +478 -62
  404. data/lib/rubocop/cop/style/array_first_last.rb +80 -0
  405. data/lib/rubocop/cop/style/array_intersect.rb +54 -34
  406. data/lib/rubocop/cop/style/ascii_comments.rb +1 -1
  407. data/lib/rubocop/cop/style/attr.rb +11 -1
  408. data/lib/rubocop/cop/style/auto_resource_cleanup.rb +21 -14
  409. data/lib/rubocop/cop/style/begin_block.rb +1 -2
  410. data/lib/rubocop/cop/style/bisected_attr_accessor.rb +3 -3
  411. data/lib/rubocop/cop/style/bitwise_predicate.rb +100 -0
  412. data/lib/rubocop/cop/style/block_comments.rb +2 -2
  413. data/lib/rubocop/cop/style/block_delimiters.rb +60 -19
  414. data/lib/rubocop/cop/style/case_like_if.rb +34 -20
  415. data/lib/rubocop/cop/style/class_and_module_children.rb +55 -14
  416. data/lib/rubocop/cop/style/class_check.rb +1 -0
  417. data/lib/rubocop/cop/style/class_equality_comparison.rb +59 -41
  418. data/lib/rubocop/cop/style/class_vars.rb +3 -3
  419. data/lib/rubocop/cop/style/collection_compact.rb +35 -12
  420. data/lib/rubocop/cop/style/collection_methods.rb +4 -1
  421. data/lib/rubocop/cop/style/collection_querying.rb +167 -0
  422. data/lib/rubocop/cop/style/colon_method_call.rb +2 -2
  423. data/lib/rubocop/cop/style/combinable_defined.rb +115 -0
  424. data/lib/rubocop/cop/style/combinable_loops.rb +44 -8
  425. data/lib/rubocop/cop/style/command_literal.rb +2 -2
  426. data/lib/rubocop/cop/style/comment_annotation.rb +1 -1
  427. data/lib/rubocop/cop/style/commented_keyword.rb +32 -6
  428. data/lib/rubocop/cop/style/comparable_between.rb +78 -0
  429. data/lib/rubocop/cop/style/concat_array_literals.rb +13 -4
  430. data/lib/rubocop/cop/style/conditional_assignment.rb +57 -42
  431. data/lib/rubocop/cop/style/constant_visibility.rb +3 -12
  432. data/lib/rubocop/cop/style/copyright.rb +37 -24
  433. data/lib/rubocop/cop/style/data_inheritance.rb +82 -0
  434. data/lib/rubocop/cop/style/date_time.rb +5 -4
  435. data/lib/rubocop/cop/style/def_with_parentheses.rb +18 -7
  436. data/lib/rubocop/cop/style/dig_chain.rb +89 -0
  437. data/lib/rubocop/cop/style/dir.rb +1 -1
  438. data/lib/rubocop/cop/style/dir_empty.rb +54 -0
  439. data/lib/rubocop/cop/style/disable_cops_within_source_code_directive.rb +2 -2
  440. data/lib/rubocop/cop/style/document_dynamic_eval_definition.rb +3 -3
  441. data/lib/rubocop/cop/style/documentation.rb +36 -30
  442. data/lib/rubocop/cop/style/documentation_method.rb +30 -4
  443. data/lib/rubocop/cop/style/double_negation.rb +6 -6
  444. data/lib/rubocop/cop/style/each_for_simple_loop.rb +11 -15
  445. data/lib/rubocop/cop/style/each_with_object.rb +4 -5
  446. data/lib/rubocop/cop/style/empty_block_parameter.rb +1 -1
  447. data/lib/rubocop/cop/style/empty_case_condition.rb +6 -1
  448. data/lib/rubocop/cop/style/empty_else.rb +10 -7
  449. data/lib/rubocop/cop/style/empty_heredoc.rb +1 -14
  450. data/lib/rubocop/cop/style/empty_lambda_parameter.rb +1 -1
  451. data/lib/rubocop/cop/style/empty_literal.rb +36 -23
  452. data/lib/rubocop/cop/style/empty_method.rb +1 -1
  453. data/lib/rubocop/cop/style/empty_string_inside_interpolation.rb +100 -0
  454. data/lib/rubocop/cop/style/endless_method.rb +150 -18
  455. data/lib/rubocop/cop/style/eval_with_location.rb +27 -35
  456. data/lib/rubocop/cop/style/exact_regexp_match.rb +69 -0
  457. data/lib/rubocop/cop/style/expand_path_arguments.rb +2 -7
  458. data/lib/rubocop/cop/style/explicit_block_argument.rb +19 -6
  459. data/lib/rubocop/cop/style/exponential_notation.rb +5 -5
  460. data/lib/rubocop/cop/style/fetch_env_var.rb +34 -7
  461. data/lib/rubocop/cop/style/file_empty.rb +71 -0
  462. data/lib/rubocop/cop/style/file_null.rb +89 -0
  463. data/lib/rubocop/cop/style/file_read.rb +5 -8
  464. data/lib/rubocop/cop/style/file_touch.rb +75 -0
  465. data/lib/rubocop/cop/style/file_write.rb +3 -6
  466. data/lib/rubocop/cop/style/float_division.rb +8 -4
  467. data/lib/rubocop/cop/style/for.rb +4 -2
  468. data/lib/rubocop/cop/style/format_string.rb +33 -12
  469. data/lib/rubocop/cop/style/format_string_token.rb +38 -11
  470. data/lib/rubocop/cop/style/frozen_string_literal_comment.rb +7 -4
  471. data/lib/rubocop/cop/style/global_std_stream.rb +10 -1
  472. data/lib/rubocop/cop/style/global_vars.rb +1 -3
  473. data/lib/rubocop/cop/style/guard_clause.rb +48 -4
  474. data/lib/rubocop/cop/style/hash_conversion.rb +26 -9
  475. data/lib/rubocop/cop/style/hash_each_methods.rb +111 -34
  476. data/lib/rubocop/cop/style/hash_except.rb +38 -135
  477. data/lib/rubocop/cop/style/hash_fetch_chain.rb +104 -0
  478. data/lib/rubocop/cop/style/hash_like_case.rb +3 -9
  479. data/lib/rubocop/cop/style/hash_slice.rb +80 -0
  480. data/lib/rubocop/cop/style/hash_syntax.rb +38 -7
  481. data/lib/rubocop/cop/style/hash_transform_keys.rb +2 -2
  482. data/lib/rubocop/cop/style/hash_transform_values.rb +2 -2
  483. data/lib/rubocop/cop/style/identical_conditional_branches.rb +57 -9
  484. data/lib/rubocop/cop/style/if_inside_else.rb +16 -14
  485. data/lib/rubocop/cop/style/if_unless_modifier.rb +140 -17
  486. data/lib/rubocop/cop/style/if_unless_modifier_of_if_unless.rb +4 -7
  487. data/lib/rubocop/cop/style/if_with_boolean_literal_branches.rb +10 -8
  488. data/lib/rubocop/cop/style/if_with_semicolon.rb +62 -8
  489. data/lib/rubocop/cop/style/in_pattern_then.rb +6 -2
  490. data/lib/rubocop/cop/style/infinite_loop.rb +1 -1
  491. data/lib/rubocop/cop/style/inverse_methods.rb +21 -17
  492. data/lib/rubocop/cop/style/invertible_unless_condition.rb +58 -12
  493. data/lib/rubocop/cop/style/ip_addresses.rb +2 -2
  494. data/lib/rubocop/cop/style/it_assignment.rb +36 -0
  495. data/lib/rubocop/cop/style/it_block_parameter.rb +119 -0
  496. data/lib/rubocop/cop/style/keyword_arguments_merging.rb +67 -0
  497. data/lib/rubocop/cop/style/keyword_parameters_order.rb +14 -8
  498. data/lib/rubocop/cop/style/lambda.rb +5 -4
  499. data/lib/rubocop/cop/style/lambda_call.rb +14 -3
  500. data/lib/rubocop/cop/style/line_end_concatenation.rb +10 -4
  501. data/lib/rubocop/cop/style/magic_comment_format.rb +1 -1
  502. data/lib/rubocop/cop/style/map_compact_with_conditional_block.rb +82 -50
  503. data/lib/rubocop/cop/style/map_into_array.rb +236 -0
  504. data/lib/rubocop/cop/style/map_to_hash.rb +31 -7
  505. data/lib/rubocop/cop/style/map_to_set.rb +6 -2
  506. data/lib/rubocop/cop/style/method_call_with_args_parentheses/omit_parentheses.rb +62 -31
  507. data/lib/rubocop/cop/style/method_call_with_args_parentheses.rb +65 -42
  508. data/lib/rubocop/cop/style/method_call_without_args_parentheses.rb +30 -13
  509. data/lib/rubocop/cop/style/method_called_on_do_end_block.rb +3 -4
  510. data/lib/rubocop/cop/style/method_def_parentheses.rb +2 -2
  511. data/lib/rubocop/cop/style/min_max.rb +3 -3
  512. data/lib/rubocop/cop/style/min_max_comparison.rb +13 -5
  513. data/lib/rubocop/cop/style/missing_else.rb +2 -4
  514. data/lib/rubocop/cop/style/missing_respond_to_missing.rb +35 -5
  515. data/lib/rubocop/cop/style/mixin_grouping.rb +5 -5
  516. data/lib/rubocop/cop/style/multiline_block_chain.rb +3 -2
  517. data/lib/rubocop/cop/style/multiline_if_modifier.rb +2 -0
  518. data/lib/rubocop/cop/style/multiline_memoization.rb +2 -2
  519. data/lib/rubocop/cop/style/multiline_method_signature.rb +17 -13
  520. data/lib/rubocop/cop/style/multiline_ternary_operator.rb +21 -4
  521. data/lib/rubocop/cop/style/multiline_when_then.rb +0 -4
  522. data/lib/rubocop/cop/style/multiple_comparison.rb +66 -59
  523. data/lib/rubocop/cop/style/mutable_constant.rb +7 -8
  524. data/lib/rubocop/cop/style/negated_if_else_condition.rb +18 -11
  525. data/lib/rubocop/cop/style/nested_modifier.rb +1 -1
  526. data/lib/rubocop/cop/style/nested_parenthesized_calls.rb +2 -2
  527. data/lib/rubocop/cop/style/nested_ternary_operator.rb +8 -15
  528. data/lib/rubocop/cop/style/next.rb +45 -1
  529. data/lib/rubocop/cop/style/nil_comparison.rb +2 -0
  530. data/lib/rubocop/cop/style/nil_lambda.rb +2 -2
  531. data/lib/rubocop/cop/style/not.rb +1 -1
  532. data/lib/rubocop/cop/style/numbered_parameters_limit.rb +11 -3
  533. data/lib/rubocop/cop/style/numeric_literal_prefix.rb +1 -1
  534. data/lib/rubocop/cop/style/numeric_literals.rb +1 -1
  535. data/lib/rubocop/cop/style/numeric_predicate.rb +12 -4
  536. data/lib/rubocop/cop/style/object_then.rb +16 -14
  537. data/lib/rubocop/cop/style/one_line_conditional.rb +31 -6
  538. data/lib/rubocop/cop/style/open_struct_use.rb +6 -6
  539. data/lib/rubocop/cop/style/operator_method_call.rb +33 -9
  540. data/lib/rubocop/cop/style/or_assignment.rb +3 -6
  541. data/lib/rubocop/cop/style/parallel_assignment.rb +38 -40
  542. data/lib/rubocop/cop/style/parentheses_around_condition.rb +8 -0
  543. data/lib/rubocop/cop/style/percent_literal_delimiters.rb +3 -4
  544. data/lib/rubocop/cop/style/percent_q_literals.rb +2 -2
  545. data/lib/rubocop/cop/style/preferred_hash_methods.rb +1 -1
  546. data/lib/rubocop/cop/style/proc.rb +2 -2
  547. data/lib/rubocop/cop/style/quoted_symbols.rb +2 -4
  548. data/lib/rubocop/cop/style/raise_args.rb +19 -14
  549. data/lib/rubocop/cop/style/random_with_offset.rb +3 -3
  550. data/lib/rubocop/cop/style/redundant_argument.rb +35 -4
  551. data/lib/rubocop/cop/style/redundant_array_constructor.rb +77 -0
  552. data/lib/rubocop/cop/style/redundant_array_flatten.rb +50 -0
  553. data/lib/rubocop/cop/style/redundant_assignment.rb +11 -3
  554. data/lib/rubocop/cop/style/redundant_begin.rb +17 -4
  555. data/lib/rubocop/cop/style/redundant_condition.rb +114 -27
  556. data/lib/rubocop/cop/style/redundant_conditional.rb +2 -10
  557. data/lib/rubocop/cop/style/redundant_current_directory_in_path.rb +50 -0
  558. data/lib/rubocop/cop/style/redundant_double_splat_hash_braces.rb +91 -7
  559. data/lib/rubocop/cop/style/redundant_each.rb +7 -4
  560. data/lib/rubocop/cop/style/redundant_exception.rb +33 -13
  561. data/lib/rubocop/cop/style/redundant_fetch_block.rb +10 -16
  562. data/lib/rubocop/cop/style/redundant_file_extension_in_require.rb +1 -1
  563. data/lib/rubocop/cop/style/redundant_filter_chain.rb +118 -0
  564. data/lib/rubocop/cop/style/redundant_format.rb +262 -0
  565. data/lib/rubocop/cop/style/redundant_freeze.rb +3 -3
  566. data/lib/rubocop/cop/style/redundant_heredoc_delimiter_quotes.rb +58 -0
  567. data/lib/rubocop/cop/style/redundant_initialize.rb +12 -3
  568. data/lib/rubocop/cop/style/redundant_interpolation.rb +3 -3
  569. data/lib/rubocop/cop/style/redundant_interpolation_unfreeze.rb +46 -0
  570. data/lib/rubocop/cop/style/redundant_line_continuation.rb +236 -0
  571. data/lib/rubocop/cop/style/redundant_parentheses.rb +140 -40
  572. data/lib/rubocop/cop/style/redundant_percent_q.rb +2 -2
  573. data/lib/rubocop/cop/style/redundant_regexp_argument.rb +107 -0
  574. data/lib/rubocop/cop/style/redundant_regexp_character_class.rb +8 -9
  575. data/lib/rubocop/cop/style/redundant_regexp_constructor.rb +46 -0
  576. data/lib/rubocop/cop/style/redundant_regexp_escape.rb +20 -28
  577. data/lib/rubocop/cop/style/redundant_return.rb +16 -5
  578. data/lib/rubocop/cop/style/redundant_self.rb +32 -20
  579. data/lib/rubocop/cop/style/redundant_self_assignment.rb +20 -32
  580. data/lib/rubocop/cop/style/redundant_self_assignment_branch.rb +12 -5
  581. data/lib/rubocop/cop/style/redundant_sort.rb +14 -13
  582. data/lib/rubocop/cop/style/redundant_sort_by.rb +19 -3
  583. data/lib/rubocop/cop/style/redundant_string_escape.rb +8 -7
  584. data/lib/rubocop/cop/style/regexp_literal.rb +12 -3
  585. data/lib/rubocop/cop/style/require_order.rb +13 -9
  586. data/lib/rubocop/cop/style/rescue_modifier.rb +19 -7
  587. data/lib/rubocop/cop/style/rescue_standard_error.rb +2 -2
  588. data/lib/rubocop/cop/style/return_nil.rb +8 -4
  589. data/lib/rubocop/cop/style/return_nil_in_predicate_method_definition.rb +137 -0
  590. data/lib/rubocop/cop/style/safe_navigation.rb +145 -63
  591. data/lib/rubocop/cop/style/safe_navigation_chain_length.rb +52 -0
  592. data/lib/rubocop/cop/style/sample.rb +3 -4
  593. data/lib/rubocop/cop/style/select_by_regexp.rb +33 -16
  594. data/lib/rubocop/cop/style/self_assignment.rb +12 -18
  595. data/lib/rubocop/cop/style/semicolon.rb +22 -6
  596. data/lib/rubocop/cop/style/send.rb +4 -4
  597. data/lib/rubocop/cop/style/send_with_literal_method_name.rb +105 -0
  598. data/lib/rubocop/cop/style/signal_exception.rb +3 -4
  599. data/lib/rubocop/cop/style/single_argument_dig.rb +16 -8
  600. data/lib/rubocop/cop/style/single_line_block_params.rb +1 -1
  601. data/lib/rubocop/cop/style/single_line_do_end_block.rb +78 -0
  602. data/lib/rubocop/cop/style/single_line_methods.rb +10 -8
  603. data/lib/rubocop/cop/style/slicing_with_range.rb +106 -11
  604. data/lib/rubocop/cop/style/sole_nested_conditional.rb +50 -90
  605. data/lib/rubocop/cop/style/special_global_vars.rb +5 -7
  606. data/lib/rubocop/cop/style/stderr_puts.rb +1 -1
  607. data/lib/rubocop/cop/style/string_chars.rb +1 -0
  608. data/lib/rubocop/cop/style/string_concatenation.rb +15 -15
  609. data/lib/rubocop/cop/style/string_literals.rb +1 -1
  610. data/lib/rubocop/cop/style/string_literals_in_interpolation.rb +30 -5
  611. data/lib/rubocop/cop/style/string_methods.rb +1 -1
  612. data/lib/rubocop/cop/style/strip.rb +7 -4
  613. data/lib/rubocop/cop/style/struct_inheritance.rb +10 -3
  614. data/lib/rubocop/cop/style/super_arguments.rb +221 -0
  615. data/lib/rubocop/cop/style/super_with_args_parentheses.rb +35 -0
  616. data/lib/rubocop/cop/style/swap_values.rb +4 -15
  617. data/lib/rubocop/cop/style/symbol_array.rb +35 -15
  618. data/lib/rubocop/cop/style/symbol_proc.rb +78 -6
  619. data/lib/rubocop/cop/style/ternary_parentheses.rb +26 -5
  620. data/lib/rubocop/cop/style/top_level_method_definition.rb +2 -1
  621. data/lib/rubocop/cop/style/trailing_body_on_class.rb +1 -0
  622. data/lib/rubocop/cop/style/trailing_comma_in_arguments.rb +11 -2
  623. data/lib/rubocop/cop/style/trailing_comma_in_array_literal.rb +47 -6
  624. data/lib/rubocop/cop/style/trailing_comma_in_block_args.rb +1 -1
  625. data/lib/rubocop/cop/style/trailing_comma_in_hash_literal.rb +48 -6
  626. data/lib/rubocop/cop/style/trailing_underscore_variable.rb +5 -5
  627. data/lib/rubocop/cop/style/trivial_accessors.rb +3 -3
  628. data/lib/rubocop/cop/style/unless_logical_operators.rb +1 -0
  629. data/lib/rubocop/cop/style/unpack_first.rb +11 -14
  630. data/lib/rubocop/cop/style/variable_interpolation.rb +1 -2
  631. data/lib/rubocop/cop/style/while_until_do.rb +0 -2
  632. data/lib/rubocop/cop/style/while_until_modifier.rb +0 -2
  633. data/lib/rubocop/cop/style/word_array.rb +18 -6
  634. data/lib/rubocop/cop/style/yaml_file_read.rb +66 -0
  635. data/lib/rubocop/cop/style/yoda_condition.rb +25 -12
  636. data/lib/rubocop/cop/style/yoda_expression.rb +20 -9
  637. data/lib/rubocop/cop/style/zero_length_predicate.rb +41 -29
  638. data/lib/rubocop/cop/team.rb +58 -26
  639. data/lib/rubocop/cop/util.rb +33 -11
  640. data/lib/rubocop/cop/utils/format_string.rb +10 -5
  641. data/lib/rubocop/cop/variable_force/assignment.rb +66 -6
  642. data/lib/rubocop/cop/variable_force/branch.rb +1 -1
  643. data/lib/rubocop/cop/variable_force/scope.rb +3 -3
  644. data/lib/rubocop/cop/variable_force/variable.rb +18 -5
  645. data/lib/rubocop/cop/variable_force/variable_table.rb +5 -5
  646. data/lib/rubocop/cop/variable_force.rb +19 -12
  647. data/lib/rubocop/cops_documentation_generator.rb +138 -55
  648. data/lib/rubocop/core_ext/string.rb +2 -6
  649. data/lib/rubocop/directive_comment.rb +57 -21
  650. data/lib/rubocop/ext/comment.rb +18 -0
  651. data/lib/rubocop/ext/regexp_node.rb +17 -35
  652. data/lib/rubocop/ext/regexp_parser.rb +7 -21
  653. data/lib/rubocop/file_finder.rb +11 -9
  654. data/lib/rubocop/formatter/clang_style_formatter.rb +3 -7
  655. data/lib/rubocop/formatter/disabled_config_formatter.rb +26 -10
  656. data/lib/rubocop/formatter/formatter_set.rb +8 -2
  657. data/lib/rubocop/formatter/fuubar_style_formatter.rb +1 -1
  658. data/lib/rubocop/formatter/html_formatter.rb +38 -15
  659. data/lib/rubocop/formatter/json_formatter.rb +0 -1
  660. data/lib/rubocop/formatter/junit_formatter.rb +74 -24
  661. data/lib/rubocop/formatter/offense_count_formatter.rb +13 -3
  662. data/lib/rubocop/formatter/pacman_formatter.rb +1 -1
  663. data/lib/rubocop/formatter/simple_text_formatter.rb +1 -1
  664. data/lib/rubocop/formatter/tap_formatter.rb +3 -7
  665. data/lib/rubocop/formatter.rb +1 -1
  666. data/lib/rubocop/lockfile.rb +58 -7
  667. data/lib/rubocop/lsp/diagnostic.rb +189 -0
  668. data/lib/rubocop/lsp/logger.rb +22 -0
  669. data/lib/rubocop/lsp/routes.rb +227 -0
  670. data/lib/rubocop/lsp/runtime.rb +69 -0
  671. data/lib/rubocop/lsp/server.rb +70 -0
  672. data/lib/rubocop/lsp/severity.rb +27 -0
  673. data/lib/rubocop/lsp/stdin_runner.rb +85 -0
  674. data/lib/rubocop/lsp.rb +36 -0
  675. data/lib/rubocop/magic_comment.rb +24 -14
  676. data/lib/rubocop/options.rb +78 -23
  677. data/lib/rubocop/path_util.rb +21 -10
  678. data/lib/rubocop/pending_cops_reporter.rb +56 -0
  679. data/lib/rubocop/plugin/configuration_integrator.rb +143 -0
  680. data/lib/rubocop/plugin/load_error.rb +26 -0
  681. data/lib/rubocop/plugin/loader.rb +100 -0
  682. data/lib/rubocop/plugin/not_supported_error.rb +29 -0
  683. data/lib/rubocop/plugin.rb +46 -0
  684. data/lib/rubocop/rake_task.rb +5 -2
  685. data/lib/rubocop/remote_config.rb +5 -1
  686. data/lib/rubocop/result_cache.rb +20 -23
  687. data/lib/rubocop/rspec/cop_helper.rb +21 -3
  688. data/lib/rubocop/rspec/expect_offense.rb +31 -12
  689. data/lib/rubocop/rspec/shared_contexts.rb +118 -21
  690. data/lib/rubocop/rspec/support.rb +8 -2
  691. data/lib/rubocop/runner.rb +80 -17
  692. data/lib/rubocop/server/cache.rb +66 -8
  693. data/lib/rubocop/server/cli.rb +39 -20
  694. data/lib/rubocop/server/client_command/base.rb +10 -0
  695. data/lib/rubocop/server/client_command/exec.rb +6 -5
  696. data/lib/rubocop/server/client_command/start.rb +17 -2
  697. data/lib/rubocop/server/core.rb +29 -9
  698. data/lib/rubocop/server/helper.rb +1 -1
  699. data/lib/rubocop/server/server_command/exec.rb +1 -2
  700. data/lib/rubocop/string_interpreter.rb +3 -3
  701. data/lib/rubocop/target_finder.rb +97 -82
  702. data/lib/rubocop/target_ruby.rb +105 -79
  703. data/lib/rubocop/version.rb +74 -12
  704. data/lib/rubocop/yaml_duplication_checker.rb +20 -26
  705. data/lib/rubocop.rb +81 -2
  706. data/lib/ruby_lsp/rubocop/addon.rb +75 -0
  707. data/lib/ruby_lsp/rubocop/runtime_adapter.rb +65 -0
  708. metadata +152 -63
  709. data/lib/rubocop/cop/naming/predicate_name.rb +0 -134
  710. data/lib/rubocop/rspec/host_environment_simulation_helper.rb +0 -28
  711. /data/lib/rubocop/formatter/{git_hub_actions_formatter.rb → github_actions_formatter.rb} +0 -0
@@ -3,21 +3,33 @@
3
3
  module RuboCop
4
4
  # This module holds the RuboCop version information.
5
5
  module Version
6
- STRING = '1.44.1'
6
+ STRING = '1.78.0'
7
7
 
8
- MSG = '%<version>s (using Parser %<parser_version>s, ' \
8
+ MSG = '%<version>s (using %<parser_version>s, ' \
9
9
  'rubocop-ast %<rubocop_ast_version>s, ' \
10
+ 'analyzing as Ruby %<target_ruby_version>s, ' \
10
11
  'running on %<ruby_engine>s %<ruby_version>s)%<server_mode>s [%<ruby_platform>s]'
11
12
 
12
- CANONICAL_FEATURE_NAMES = { 'Rspec' => 'RSpec', 'Graphql' => 'GraphQL', 'Md' => 'Markdown',
13
- 'Thread_safety' => 'ThreadSafety' }.freeze
14
- EXTENSION_PATH_NAMES = { 'rubocop-md' => 'markdown' }.freeze
13
+ MINIMUM_PARSABLE_PRISM_VERSION = 3.3
15
14
 
15
+ CANONICAL_FEATURE_NAMES = {
16
+ 'Rspec' => 'RSpec', 'Graphql' => 'GraphQL', 'Md' => 'Markdown', 'Factory_bot' => 'FactoryBot',
17
+ 'Thread_safety' => 'ThreadSafety', 'Rspec_rails' => 'RSpecRails'
18
+ }.freeze
19
+ EXTENSION_PATH_NAMES = {
20
+ 'rubocop-md' => 'markdown', 'rubocop-factory_bot' => 'factory_bot'
21
+ }.freeze
22
+
23
+ # NOTE: Marked as private but used by gems like standard.
16
24
  # @api private
25
+ # rubocop:disable Metrics/MethodLength
17
26
  def self.version(debug: false, env: nil)
18
27
  if debug
19
- verbose_version = format(MSG, version: STRING, parser_version: Parser::VERSION,
28
+ target_ruby_version = target_ruby_version(env)
29
+ verbose_version = format(MSG, version: STRING,
30
+ parser_version: parser_version(target_ruby_version),
20
31
  rubocop_ast_version: RuboCop::AST::Version::STRING,
32
+ target_ruby_version: target_ruby_version,
21
33
  ruby_engine: RUBY_ENGINE, ruby_version: RUBY_VERSION,
22
34
  server_mode: server_mode,
23
35
  ruby_platform: RUBY_PLATFORM)
@@ -34,16 +46,45 @@ module RuboCop
34
46
  STRING
35
47
  end
36
48
  end
49
+ # rubocop:enable Metrics/MethodLength
50
+
51
+ # @api private
52
+ def self.verbose(env: nil)
53
+ version(debug: true, env: env)
54
+ end
55
+
56
+ # @api private
57
+ def self.parser_version(target_ruby_version)
58
+ config_path = ConfigFinder.find_config_path(Dir.pwd)
59
+ yaml = Util.silence_warnings do
60
+ ConfigLoader.load_yaml_configuration(config_path)
61
+ end
62
+ parser_engine = yaml.dig('AllCops', 'ParserEngine')
63
+ parser_engine_text = ", #{parser_engine}" if parser_engine
64
+
65
+ if target_ruby_version >= MINIMUM_PARSABLE_PRISM_VERSION
66
+ "Parser #{Parser::VERSION}, Prism #{Prism::VERSION}#{parser_engine_text}"
67
+ else
68
+ "Parser #{Parser::VERSION}"
69
+ end
70
+ end
37
71
 
38
72
  # @api private
73
+ # rubocop:disable Metrics/AbcSize, Metrics/CyclomaticComplexity, Metrics/MethodLength, Metrics/PerceivedComplexity
39
74
  def self.extension_versions(env)
40
- features = Util.silence_warnings do
41
- # Suppress any config issues when loading the config (ie. deprecations,
42
- # pending cops, etc.).
43
- env.config_store.unvalidated.for_pwd.loaded_features.sort
75
+ plugins = config_for_pwd(env).loaded_plugins
76
+ plugin_versions = plugins.filter_map do |plugin|
77
+ next if Plugin::BUILTIN_INTERNAL_PLUGINS.key?(plugin.about.name)
78
+ next unless (plugin_name = plugin.about.name)
79
+
80
+ " - #{plugin_name} #{plugin.about.version}"
44
81
  end
45
82
 
46
- features.map do |loaded_feature|
83
+ # TODO: It needs to be maintained for a while to ensure compatibility with extensions that
84
+ # don't support plugins. It should be removed in future once the old style becomes obsolete.
85
+ features = config_for_pwd(env).loaded_features.sort
86
+ features -= plugins.map { |plugin| plugin.about.name }
87
+ feature_versions = features.filter_map do |loaded_feature|
47
88
  next unless (match = loaded_feature.match(/rubocop-(?<feature>.*)/))
48
89
 
49
90
  # Get the expected name of the folder containing the extension code.
@@ -61,7 +102,28 @@ module RuboCop
61
102
  next unless (feature_version = feature_version(feature))
62
103
 
63
104
  " - #{loaded_feature} #{feature_version}"
64
- end.compact
105
+ end
106
+
107
+ plugin_versions + feature_versions
108
+ end
109
+ # rubocop:enable Metrics/AbcSize, Metrics/CyclomaticComplexity, Metrics/MethodLength, Metrics/PerceivedComplexity
110
+
111
+ # @api private
112
+ def self.target_ruby_version(env)
113
+ if env
114
+ config_for_pwd(env).target_ruby_version
115
+ else
116
+ TargetRuby.new(Config.new).version
117
+ end
118
+ end
119
+
120
+ # @api private
121
+ def self.config_for_pwd(env)
122
+ Util.silence_warnings do
123
+ # Suppress any config issues when loading the config (ie. deprecations,
124
+ # pending cops, etc.).
125
+ env.config_store.unvalidated.for_pwd
126
+ end
65
127
  end
66
128
 
67
129
  # Returns feature version in one of two ways:
@@ -5,36 +5,30 @@ module RuboCop
5
5
  # @api private
6
6
  module YAMLDuplicationChecker
7
7
  def self.check(yaml_string, filename, &on_duplicated)
8
- # Ruby 2.6+
9
- tree = if Gem::Version.new(Psych::VERSION) >= Gem::Version.new('3.1.0')
10
- # Specify filename to display helpful message when it raises
11
- # an error.
12
- YAML.parse(yaml_string, filename: filename)
13
- else
14
- YAML.parse(yaml_string, filename)
15
- end
16
- return unless tree
17
-
18
- traverse(tree, &on_duplicated)
8
+ handler = DuplicationCheckHandler.new(&on_duplicated)
9
+ parser = Psych::Parser.new(handler)
10
+ parser.parse(yaml_string, filename)
11
+ parser.handler.root.children[0]
19
12
  end
20
13
 
21
- def self.traverse(tree, &on_duplicated)
22
- case tree
23
- when Psych::Nodes::Mapping
24
- tree.children.each_slice(2).with_object([]) do |(key, value), keys|
25
- exist = keys.find { |key2| key2.value == key.value }
26
- yield(exist, key) if exist
27
- keys << key
28
- traverse(value, &on_duplicated)
29
- end
30
- else
31
- children = tree.children
32
- return unless children
14
+ class DuplicationCheckHandler < Psych::TreeBuilder # :nodoc:
15
+ def initialize(&block)
16
+ super()
17
+ @block = block
18
+ end
33
19
 
34
- children.each { |c| traverse(c, &on_duplicated) }
20
+ def end_mapping
21
+ mapping_node = super
22
+ # OPTIMIZE: Use a hash for faster lookup since there can
23
+ # be quite a few keys at the top-level.
24
+ keys = {}
25
+ mapping_node.children.each_slice(2) do |key, _value|
26
+ duplicate = keys[key.value]
27
+ @block.call(duplicate, key) if duplicate
28
+ keys[key.value] = key
29
+ end
30
+ mapping_node
35
31
  end
36
32
  end
37
-
38
- private_class_method :traverse
39
33
  end
40
34
  end
data/lib/rubocop.rb CHANGED
@@ -1,12 +1,17 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require 'English'
4
+
5
+ # fileutils is autoloaded by pathname,
6
+ # but must be explicitly loaded here for inclusion in `$LOADED_FEATURES`.
7
+ require 'fileutils'
8
+
4
9
  before_us = $LOADED_FEATURES.dup
5
10
  require 'rainbow'
6
11
 
7
- require 'forwardable'
8
12
  require 'regexp_parser'
9
13
  require 'set'
14
+ require 'stringio'
10
15
  require 'unicode/display_width'
11
16
 
12
17
  # we have to require RuboCop's version, before rubocop-ast's
@@ -14,6 +19,7 @@ require_relative 'rubocop/version'
14
19
  require 'rubocop-ast'
15
20
 
16
21
  require_relative 'rubocop/ast_aliases'
22
+ require_relative 'rubocop/ext/comment'
17
23
  require_relative 'rubocop/ext/range'
18
24
  require_relative 'rubocop/ext/regexp_node'
19
25
  require_relative 'rubocop/ext/regexp_parser'
@@ -68,15 +74,20 @@ require_relative 'rubocop/cop/mixin/alignment'
68
74
  require_relative 'rubocop/cop/mixin/allowed_identifiers'
69
75
  require_relative 'rubocop/cop/mixin/allowed_methods'
70
76
  require_relative 'rubocop/cop/mixin/allowed_pattern'
77
+ require_relative 'rubocop/cop/mixin/allowed_receivers'
78
+ require_relative 'rubocop/cop/mixin/forbidden_identifiers'
79
+ require_relative 'rubocop/cop/mixin/forbidden_pattern'
71
80
  require_relative 'rubocop/cop/mixin/auto_corrector' # rubocop:todo Naming/InclusiveLanguage
72
81
  require_relative 'rubocop/cop/mixin/check_assignment'
73
82
  require_relative 'rubocop/cop/mixin/check_line_breakable'
83
+ require_relative 'rubocop/cop/mixin/check_single_line_suitability'
74
84
  require_relative 'rubocop/cop/mixin/configurable_max'
75
85
  require_relative 'rubocop/cop/mixin/code_length' # relies on configurable_max
76
86
  require_relative 'rubocop/cop/mixin/configurable_enforced_style'
77
87
  require_relative 'rubocop/cop/mixin/configurable_formatting'
78
88
  require_relative 'rubocop/cop/mixin/configurable_naming'
79
89
  require_relative 'rubocop/cop/mixin/configurable_numbering'
90
+ require_relative 'rubocop/cop/mixin/dig_help'
80
91
  require_relative 'rubocop/cop/mixin/documentation_comment'
81
92
  require_relative 'rubocop/cop/mixin/duplication'
82
93
  require_relative 'rubocop/cop/mixin/range_help'
@@ -84,12 +95,14 @@ require_relative 'rubocop/cop/mixin/annotation_comment' # relies on range
84
95
  require_relative 'rubocop/cop/mixin/empty_lines_around_body' # relies on range
85
96
  require_relative 'rubocop/cop/mixin/empty_parameter'
86
97
  require_relative 'rubocop/cop/mixin/end_keyword_alignment'
98
+ require_relative 'rubocop/cop/mixin/endless_method_rewriter'
87
99
  require_relative 'rubocop/cop/mixin/enforce_superclass'
88
100
  require_relative 'rubocop/cop/mixin/first_element_line_break'
89
101
  require_relative 'rubocop/cop/mixin/frozen_string_literal'
90
102
  require_relative 'rubocop/cop/mixin/gem_declaration'
91
103
  require_relative 'rubocop/cop/mixin/gemspec_help'
92
104
  require_relative 'rubocop/cop/mixin/hash_alignment_styles'
105
+ require_relative 'rubocop/cop/mixin/hash_subset'
93
106
  require_relative 'rubocop/cop/mixin/hash_transform_method'
94
107
  require_relative 'rubocop/cop/mixin/integer_node'
95
108
  require_relative 'rubocop/cop/mixin/interpolation'
@@ -101,6 +114,7 @@ require_relative 'rubocop/cop/mixin/hash_shorthand_syntax'
101
114
  require_relative 'rubocop/cop/mixin/method_complexity'
102
115
  require_relative 'rubocop/cop/mixin/method_preference'
103
116
  require_relative 'rubocop/cop/mixin/min_body_length'
117
+ require_relative 'rubocop/cop/mixin/min_branches_count'
104
118
  require_relative 'rubocop/cop/mixin/multiline_element_indentation'
105
119
  require_relative 'rubocop/cop/mixin/multiline_element_line_breaks'
106
120
  require_relative 'rubocop/cop/mixin/multiline_expression_indentation'
@@ -158,12 +172,15 @@ require_relative 'rubocop/cop/correctors/string_literal_corrector'
158
172
  require_relative 'rubocop/cop/correctors/unused_arg_corrector'
159
173
 
160
174
  require_relative 'rubocop/cop/bundler/duplicated_gem'
175
+ require_relative 'rubocop/cop/bundler/duplicated_group'
161
176
  require_relative 'rubocop/cop/bundler/gem_comment'
162
177
  require_relative 'rubocop/cop/bundler/gem_filename'
163
178
  require_relative 'rubocop/cop/bundler/gem_version'
164
179
  require_relative 'rubocop/cop/bundler/insecure_protocol_source'
165
180
  require_relative 'rubocop/cop/bundler/ordered_gems'
166
181
 
182
+ require_relative 'rubocop/cop/gemspec/add_runtime_dependency'
183
+ require_relative 'rubocop/cop/gemspec/attribute_assignment'
167
184
  require_relative 'rubocop/cop/gemspec/dependency_version'
168
185
  require_relative 'rubocop/cop/gemspec/deprecated_attribute_assignment'
169
186
  require_relative 'rubocop/cop/gemspec/development_dependencies'
@@ -279,6 +296,7 @@ require_relative 'rubocop/cop/lint/ambiguous_operator'
279
296
  require_relative 'rubocop/cop/lint/ambiguous_operator_precedence'
280
297
  require_relative 'rubocop/cop/lint/ambiguous_range'
281
298
  require_relative 'rubocop/cop/lint/ambiguous_regexp_literal'
299
+ require_relative 'rubocop/cop/lint/array_literal_in_regexp'
282
300
  require_relative 'rubocop/cop/lint/assignment_in_condition'
283
301
  require_relative 'rubocop/cop/lint/big_decimal_new'
284
302
  require_relative 'rubocop/cop/lint/binary_operator_with_identical_operands'
@@ -286,7 +304,9 @@ require_relative 'rubocop/cop/lint/boolean_symbol'
286
304
  require_relative 'rubocop/cop/lint/circular_argument_reference'
287
305
  require_relative 'rubocop/cop/lint/constant_definition_in_block'
288
306
  require_relative 'rubocop/cop/lint/constant_overwritten_in_rescue'
307
+ require_relative 'rubocop/cop/lint/constant_reassignment'
289
308
  require_relative 'rubocop/cop/lint/constant_resolution'
309
+ require_relative 'rubocop/cop/lint/cop_directive_syntax'
290
310
  require_relative 'rubocop/cop/lint/debugger'
291
311
  require_relative 'rubocop/cop/lint/deprecated_class_methods'
292
312
  require_relative 'rubocop/cop/lint/deprecated_constants'
@@ -297,10 +317,12 @@ require_relative 'rubocop/cop/lint/duplicate_case_condition'
297
317
  require_relative 'rubocop/cop/lint/duplicate_elsif_condition'
298
318
  require_relative 'rubocop/cop/lint/duplicate_hash_key'
299
319
  require_relative 'rubocop/cop/lint/duplicate_magic_comment'
320
+ require_relative 'rubocop/cop/lint/duplicate_match_pattern'
300
321
  require_relative 'rubocop/cop/lint/duplicate_methods'
301
322
  require_relative 'rubocop/cop/lint/duplicate_regexp_character_class_element'
302
323
  require_relative 'rubocop/cop/lint/duplicate_require'
303
324
  require_relative 'rubocop/cop/lint/duplicate_rescue_exception'
325
+ require_relative 'rubocop/cop/lint/duplicate_set_element'
304
326
  require_relative 'rubocop/cop/lint/each_with_object_argument'
305
327
  require_relative 'rubocop/cop/lint/else_layout'
306
328
  require_relative 'rubocop/cop/lint/empty_block'
@@ -313,12 +335,14 @@ require_relative 'rubocop/cop/lint/empty_in_pattern'
313
335
  require_relative 'rubocop/cop/lint/empty_interpolation'
314
336
  require_relative 'rubocop/cop/lint/empty_when'
315
337
  require_relative 'rubocop/cop/lint/ensure_return'
338
+ require_relative 'rubocop/cop/lint/shared_mutable_default'
316
339
  require_relative 'rubocop/cop/lint/erb_new_arguments'
317
340
  require_relative 'rubocop/cop/lint/flip_flop'
318
341
  require_relative 'rubocop/cop/lint/float_comparison'
319
342
  require_relative 'rubocop/cop/lint/float_out_of_range'
320
343
  require_relative 'rubocop/cop/lint/format_parameter_mismatch'
321
344
  require_relative 'rubocop/cop/lint/hash_compare_by_identity'
345
+ require_relative 'rubocop/cop/lint/hash_new_with_keyword_arguments_as_default'
322
346
  require_relative 'rubocop/cop/lint/heredoc_method_call_position'
323
347
  require_relative 'rubocop/cop/lint/identity_comparison'
324
348
  require_relative 'rubocop/cop/lint/implicit_string_concatenation'
@@ -326,12 +350,15 @@ require_relative 'rubocop/cop/lint/incompatible_io_select_with_fiber_scheduler'
326
350
  require_relative 'rubocop/cop/lint/ineffective_access_modifier'
327
351
  require_relative 'rubocop/cop/lint/inherit_exception'
328
352
  require_relative 'rubocop/cop/lint/interpolation_check'
353
+ require_relative 'rubocop/cop/lint/it_without_arguments_in_block'
329
354
  require_relative 'rubocop/cop/lint/lambda_without_literal_block'
330
355
  require_relative 'rubocop/cop/lint/literal_as_condition'
356
+ require_relative 'rubocop/cop/lint/literal_assignment_in_condition'
331
357
  require_relative 'rubocop/cop/lint/literal_in_interpolation'
332
358
  require_relative 'rubocop/cop/lint/loop'
333
359
  require_relative 'rubocop/cop/lint/missing_cop_enable_directive'
334
360
  require_relative 'rubocop/cop/lint/missing_super'
361
+ require_relative 'rubocop/cop/lint/mixed_case_range'
335
362
  require_relative 'rubocop/cop/lint/mixed_regexp_capture_types'
336
363
  require_relative 'rubocop/cop/lint/multiple_comparison'
337
364
  require_relative 'rubocop/cop/lint/nested_method_definition'
@@ -343,6 +370,7 @@ require_relative 'rubocop/cop/lint/non_deterministic_require_order'
343
370
  require_relative 'rubocop/cop/lint/non_local_exit_from_iterator'
344
371
  require_relative 'rubocop/cop/lint/number_conversion'
345
372
  require_relative 'rubocop/cop/lint/numbered_parameter_assignment'
373
+ require_relative 'rubocop/cop/lint/numeric_operation_with_constant_result'
346
374
  require_relative 'rubocop/cop/lint/or_assignment_to_constant'
347
375
  require_relative 'rubocop/cop/lint/ordered_magic_comments'
348
376
  require_relative 'rubocop/cop/lint/out_of_range_regexp_ref'
@@ -354,10 +382,12 @@ require_relative 'rubocop/cop/lint/rand_one'
354
382
  require_relative 'rubocop/cop/lint/redundant_cop_disable_directive'
355
383
  require_relative 'rubocop/cop/lint/redundant_cop_enable_directive'
356
384
  require_relative 'rubocop/cop/lint/redundant_dir_glob_sort'
385
+ require_relative 'rubocop/cop/lint/redundant_regexp_quantifiers'
357
386
  require_relative 'rubocop/cop/lint/redundant_require_statement'
358
387
  require_relative 'rubocop/cop/lint/redundant_safe_navigation'
359
388
  require_relative 'rubocop/cop/lint/redundant_splat_expansion'
360
389
  require_relative 'rubocop/cop/lint/redundant_string_coercion'
390
+ require_relative 'rubocop/cop/lint/redundant_type_conversion'
361
391
  require_relative 'rubocop/cop/lint/redundant_with_index'
362
392
  require_relative 'rubocop/cop/lint/redundant_with_object'
363
393
  require_relative 'rubocop/cop/lint/refinement_import_methods'
@@ -379,6 +409,7 @@ require_relative 'rubocop/cop/lint/shadowed_exception'
379
409
  require_relative 'rubocop/cop/lint/shadowing_outer_local_variable'
380
410
  require_relative 'rubocop/cop/lint/struct_new_override'
381
411
  require_relative 'rubocop/cop/lint/suppressed_exception'
412
+ require_relative 'rubocop/cop/lint/suppressed_exception_in_number_conversion'
382
413
  require_relative 'rubocop/cop/lint/symbol_conversion'
383
414
  require_relative 'rubocop/cop/lint/syntax'
384
415
  require_relative 'rubocop/cop/lint/to_enum_arguments'
@@ -387,6 +418,7 @@ require_relative 'rubocop/cop/lint/top_level_return_with_argument'
387
418
  require_relative 'rubocop/cop/lint/trailing_comma_in_attribute_declaration'
388
419
  require_relative 'rubocop/cop/lint/triple_quotes'
389
420
  require_relative 'rubocop/cop/lint/underscore_prefixed_variable_name'
421
+ require_relative 'rubocop/cop/lint/unescaped_bracket_in_regexp'
390
422
  require_relative 'rubocop/cop/lint/unexpected_block_arity'
391
423
  require_relative 'rubocop/cop/lint/unified_integer'
392
424
  require_relative 'rubocop/cop/lint/unmodified_reduce_accumulator'
@@ -398,8 +430,13 @@ require_relative 'rubocop/cop/lint/uri_escape_unescape'
398
430
  require_relative 'rubocop/cop/lint/uri_regexp'
399
431
  require_relative 'rubocop/cop/lint/useless_access_modifier'
400
432
  require_relative 'rubocop/cop/lint/useless_assignment'
433
+ require_relative 'rubocop/cop/lint/useless_constant_scoping'
434
+ require_relative 'rubocop/cop/lint/useless_default_value_argument'
435
+ require_relative 'rubocop/cop/lint/useless_defined'
401
436
  require_relative 'rubocop/cop/lint/useless_else_without_rescue'
402
437
  require_relative 'rubocop/cop/lint/useless_method_definition'
438
+ require_relative 'rubocop/cop/lint/useless_numeric_operation'
439
+ require_relative 'rubocop/cop/lint/useless_or'
403
440
  require_relative 'rubocop/cop/lint/useless_rescue'
404
441
  require_relative 'rubocop/cop/lint/useless_ruby2_keywords'
405
442
  require_relative 'rubocop/cop/lint/useless_setter_call'
@@ -415,6 +452,7 @@ require_relative 'rubocop/cop/metrics/abc_size'
415
452
  require_relative 'rubocop/cop/metrics/block_length'
416
453
  require_relative 'rubocop/cop/metrics/block_nesting'
417
454
  require_relative 'rubocop/cop/metrics/class_length'
455
+ require_relative 'rubocop/cop/metrics/collection_literal_length'
418
456
  require_relative 'rubocop/cop/metrics/method_length'
419
457
  require_relative 'rubocop/cop/metrics/module_length'
420
458
  require_relative 'rubocop/cop/metrics/parameter_lists'
@@ -434,7 +472,8 @@ require_relative 'rubocop/cop/naming/memoized_instance_variable_name'
434
472
  require_relative 'rubocop/cop/naming/method_name'
435
473
  require_relative 'rubocop/cop/naming/method_parameter_name'
436
474
  require_relative 'rubocop/cop/naming/binary_operator_parameter_name'
437
- require_relative 'rubocop/cop/naming/predicate_name'
475
+ require_relative 'rubocop/cop/naming/predicate_method'
476
+ require_relative 'rubocop/cop/naming/predicate_prefix'
438
477
  require_relative 'rubocop/cop/naming/rescued_exceptions_variable_name'
439
478
  require_relative 'rubocop/cop/naming/variable_name'
440
479
  require_relative 'rubocop/cop/naming/variable_number'
@@ -442,9 +481,11 @@ require_relative 'rubocop/cop/naming/variable_number'
442
481
  require_relative 'rubocop/cop/style/access_modifier_declarations'
443
482
  require_relative 'rubocop/cop/style/accessor_grouping'
444
483
  require_relative 'rubocop/cop/style/alias'
484
+ require_relative 'rubocop/cop/style/ambiguous_endless_method_definition'
445
485
  require_relative 'rubocop/cop/style/and_or'
446
486
  require_relative 'rubocop/cop/style/arguments_forwarding'
447
487
  require_relative 'rubocop/cop/style/array_coercion'
488
+ require_relative 'rubocop/cop/style/array_first_last'
448
489
  require_relative 'rubocop/cop/style/array_intersect'
449
490
  require_relative 'rubocop/cop/style/array_join'
450
491
  require_relative 'rubocop/cop/style/ascii_comments'
@@ -453,6 +494,7 @@ require_relative 'rubocop/cop/style/auto_resource_cleanup'
453
494
  require_relative 'rubocop/cop/style/bare_percent_literals'
454
495
  require_relative 'rubocop/cop/style/begin_block'
455
496
  require_relative 'rubocop/cop/style/bisected_attr_accessor'
497
+ require_relative 'rubocop/cop/style/bitwise_predicate'
456
498
  require_relative 'rubocop/cop/style/block_comments'
457
499
  require_relative 'rubocop/cop/style/block_delimiters'
458
500
  require_relative 'rubocop/cop/style/case_equality'
@@ -466,20 +508,26 @@ require_relative 'rubocop/cop/style/class_methods_definitions'
466
508
  require_relative 'rubocop/cop/style/class_vars'
467
509
  require_relative 'rubocop/cop/style/collection_compact'
468
510
  require_relative 'rubocop/cop/style/collection_methods'
511
+ require_relative 'rubocop/cop/style/collection_querying'
469
512
  require_relative 'rubocop/cop/style/colon_method_call'
470
513
  require_relative 'rubocop/cop/style/colon_method_definition'
514
+ require_relative 'rubocop/cop/style/combinable_defined'
471
515
  require_relative 'rubocop/cop/style/combinable_loops'
472
516
  require_relative 'rubocop/cop/style/command_literal'
473
517
  require_relative 'rubocop/cop/style/comment_annotation'
474
518
  require_relative 'rubocop/cop/style/commented_keyword'
519
+ require_relative 'rubocop/cop/style/comparable_between'
475
520
  require_relative 'rubocop/cop/style/comparable_clamp'
476
521
  require_relative 'rubocop/cop/style/concat_array_literals'
477
522
  require_relative 'rubocop/cop/style/conditional_assignment'
478
523
  require_relative 'rubocop/cop/style/constant_visibility'
479
524
  require_relative 'rubocop/cop/style/copyright'
525
+ require_relative 'rubocop/cop/style/data_inheritance'
480
526
  require_relative 'rubocop/cop/style/date_time'
481
527
  require_relative 'rubocop/cop/style/def_with_parentheses'
528
+ require_relative 'rubocop/cop/style/dig_chain'
482
529
  require_relative 'rubocop/cop/style/dir'
530
+ require_relative 'rubocop/cop/style/dir_empty'
483
531
  require_relative 'rubocop/cop/style/disable_cops_within_source_code_directive'
484
532
  require_relative 'rubocop/cop/style/documentation_method'
485
533
  require_relative 'rubocop/cop/style/documentation'
@@ -495,17 +543,22 @@ require_relative 'rubocop/cop/style/empty_heredoc'
495
543
  require_relative 'rubocop/cop/style/empty_lambda_parameter'
496
544
  require_relative 'rubocop/cop/style/empty_literal'
497
545
  require_relative 'rubocop/cop/style/empty_method'
546
+ require_relative 'rubocop/cop/style/empty_string_inside_interpolation'
498
547
  require_relative 'rubocop/cop/style/endless_method'
499
548
  require_relative 'rubocop/cop/style/encoding'
500
549
  require_relative 'rubocop/cop/style/end_block'
501
550
  require_relative 'rubocop/cop/style/env_home'
502
551
  require_relative 'rubocop/cop/style/eval_with_location'
503
552
  require_relative 'rubocop/cop/style/even_odd'
553
+ require_relative 'rubocop/cop/style/exact_regexp_match'
504
554
  require_relative 'rubocop/cop/style/expand_path_arguments'
505
555
  require_relative 'rubocop/cop/style/explicit_block_argument'
506
556
  require_relative 'rubocop/cop/style/exponential_notation'
507
557
  require_relative 'rubocop/cop/style/fetch_env_var'
558
+ require_relative 'rubocop/cop/style/file_empty'
559
+ require_relative 'rubocop/cop/style/file_null'
508
560
  require_relative 'rubocop/cop/style/file_read'
561
+ require_relative 'rubocop/cop/style/file_touch'
509
562
  require_relative 'rubocop/cop/style/file_write'
510
563
  require_relative 'rubocop/cop/style/float_division'
511
564
  require_relative 'rubocop/cop/style/for'
@@ -519,7 +572,9 @@ require_relative 'rubocop/cop/style/hash_as_last_array_item'
519
572
  require_relative 'rubocop/cop/style/hash_conversion'
520
573
  require_relative 'rubocop/cop/style/hash_each_methods'
521
574
  require_relative 'rubocop/cop/style/hash_except'
575
+ require_relative 'rubocop/cop/style/hash_fetch_chain'
522
576
  require_relative 'rubocop/cop/style/hash_like_case'
577
+ require_relative 'rubocop/cop/style/hash_slice'
523
578
  require_relative 'rubocop/cop/style/hash_syntax'
524
579
  require_relative 'rubocop/cop/style/hash_transform_keys'
525
580
  require_relative 'rubocop/cop/style/hash_transform_values'
@@ -536,11 +591,15 @@ require_relative 'rubocop/cop/style/inverse_methods'
536
591
  require_relative 'rubocop/cop/style/inline_comment'
537
592
  require_relative 'rubocop/cop/style/invertible_unless_condition'
538
593
  require_relative 'rubocop/cop/style/ip_addresses'
594
+ require_relative 'rubocop/cop/style/it_assignment'
595
+ require_relative 'rubocop/cop/style/it_block_parameter'
596
+ require_relative 'rubocop/cop/style/keyword_arguments_merging'
539
597
  require_relative 'rubocop/cop/style/keyword_parameters_order'
540
598
  require_relative 'rubocop/cop/style/lambda'
541
599
  require_relative 'rubocop/cop/style/lambda_call'
542
600
  require_relative 'rubocop/cop/style/line_end_concatenation'
543
601
  require_relative 'rubocop/cop/style/magic_comment_format'
602
+ require_relative 'rubocop/cop/style/map_into_array'
544
603
  require_relative 'rubocop/cop/style/map_to_hash'
545
604
  require_relative 'rubocop/cop/style/map_to_set'
546
605
  require_relative 'rubocop/cop/style/method_call_without_args_parentheses'
@@ -550,16 +609,28 @@ require_relative 'rubocop/cop/style/multiline_in_pattern_then'
550
609
  require_relative 'rubocop/cop/style/numbered_parameters'
551
610
  require_relative 'rubocop/cop/style/open_struct_use'
552
611
  require_relative 'rubocop/cop/style/operator_method_call'
612
+ require_relative 'rubocop/cop/style/redundant_array_constructor'
613
+ require_relative 'rubocop/cop/style/redundant_array_flatten'
553
614
  require_relative 'rubocop/cop/style/redundant_assignment'
554
615
  require_relative 'rubocop/cop/style/redundant_constant_base'
616
+ require_relative 'rubocop/cop/style/redundant_current_directory_in_path'
555
617
  require_relative 'rubocop/cop/style/redundant_double_splat_hash_braces'
556
618
  require_relative 'rubocop/cop/style/redundant_each'
557
619
  require_relative 'rubocop/cop/style/redundant_fetch_block'
558
620
  require_relative 'rubocop/cop/style/redundant_file_extension_in_require'
621
+ require_relative 'rubocop/cop/style/redundant_filter_chain'
622
+ require_relative 'rubocop/cop/style/redundant_format'
623
+ require_relative 'rubocop/cop/style/redundant_heredoc_delimiter_quotes'
559
624
  require_relative 'rubocop/cop/style/redundant_initialize'
625
+ require_relative 'rubocop/cop/style/redundant_interpolation_unfreeze'
626
+ require_relative 'rubocop/cop/style/redundant_line_continuation'
627
+ require_relative 'rubocop/cop/style/redundant_regexp_argument'
628
+ require_relative 'rubocop/cop/style/redundant_regexp_constructor'
560
629
  require_relative 'rubocop/cop/style/redundant_self_assignment'
561
630
  require_relative 'rubocop/cop/style/redundant_self_assignment_branch'
562
631
  require_relative 'rubocop/cop/style/require_order'
632
+ require_relative 'rubocop/cop/style/safe_navigation_chain_length'
633
+ require_relative 'rubocop/cop/style/single_line_do_end_block'
563
634
  require_relative 'rubocop/cop/style/sole_nested_conditional'
564
635
  require_relative 'rubocop/cop/style/static_class'
565
636
  require_relative 'rubocop/cop/style/map_compact_with_conditional_block'
@@ -634,12 +705,14 @@ require_relative 'rubocop/cop/style/regexp_literal'
634
705
  require_relative 'rubocop/cop/style/rescue_modifier'
635
706
  require_relative 'rubocop/cop/style/rescue_standard_error'
636
707
  require_relative 'rubocop/cop/style/return_nil'
708
+ require_relative 'rubocop/cop/style/return_nil_in_predicate_method_definition'
637
709
  require_relative 'rubocop/cop/style/safe_navigation'
638
710
  require_relative 'rubocop/cop/style/sample'
639
711
  require_relative 'rubocop/cop/style/select_by_regexp'
640
712
  require_relative 'rubocop/cop/style/self_assignment'
641
713
  require_relative 'rubocop/cop/style/semicolon'
642
714
  require_relative 'rubocop/cop/style/send'
715
+ require_relative 'rubocop/cop/style/send_with_literal_method_name'
643
716
  require_relative 'rubocop/cop/style/signal_exception'
644
717
  require_relative 'rubocop/cop/style/single_argument_dig'
645
718
  require_relative 'rubocop/cop/style/single_line_block_params'
@@ -656,6 +729,8 @@ require_relative 'rubocop/cop/style/string_literals_in_interpolation'
656
729
  require_relative 'rubocop/cop/style/string_methods'
657
730
  require_relative 'rubocop/cop/style/strip'
658
731
  require_relative 'rubocop/cop/style/struct_inheritance'
732
+ require_relative 'rubocop/cop/style/super_arguments'
733
+ require_relative 'rubocop/cop/style/super_with_args_parentheses'
659
734
  require_relative 'rubocop/cop/style/swap_values'
660
735
  require_relative 'rubocop/cop/style/symbol_array'
661
736
  require_relative 'rubocop/cop/style/symbol_literal'
@@ -680,6 +755,7 @@ require_relative 'rubocop/cop/style/when_then'
680
755
  require_relative 'rubocop/cop/style/while_until_do'
681
756
  require_relative 'rubocop/cop/style/while_until_modifier'
682
757
  require_relative 'rubocop/cop/style/word_array'
758
+ require_relative 'rubocop/cop/style/yaml_file_read'
683
759
  require_relative 'rubocop/cop/style/yoda_condition'
684
760
  require_relative 'rubocop/cop/style/yoda_expression'
685
761
  require_relative 'rubocop/cop/style/zero_length_predicate'
@@ -713,6 +789,7 @@ require_relative 'rubocop/config_store'
713
789
  require_relative 'rubocop/config_validator'
714
790
  require_relative 'rubocop/feature_loader'
715
791
  require_relative 'rubocop/lockfile'
792
+ require_relative 'rubocop/lsp'
716
793
  require_relative 'rubocop/target_finder'
717
794
  require_relative 'rubocop/directive_comment'
718
795
  require_relative 'rubocop/comment_config'
@@ -725,6 +802,7 @@ require_relative 'rubocop/cli/command/base'
725
802
  require_relative 'rubocop/cli/command/auto_generate_config'
726
803
  require_relative 'rubocop/cli/command/execute_runner'
727
804
  require_relative 'rubocop/cli/command/init_dotfile'
805
+ require_relative 'rubocop/cli/command/lsp'
728
806
  require_relative 'rubocop/cli/command/show_cops'
729
807
  require_relative 'rubocop/cli/command/show_docs_url'
730
808
  require_relative 'rubocop/cli/command/suggest_extensions'
@@ -734,6 +812,7 @@ require_relative 'rubocop/options'
734
812
  require_relative 'rubocop/remote_config'
735
813
  require_relative 'rubocop/target_ruby'
736
814
  require_relative 'rubocop/yaml_duplication_checker'
815
+ require_relative 'rubocop/pending_cops_reporter'
737
816
 
738
817
  # rubocop:enable Style/RequireOrder
739
818
 
@@ -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 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 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