rubocop 1.50.2 → 1.68.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 (494) hide show
  1. checksums.yaml +4 -4
  2. data/LICENSE.txt +1 -1
  3. data/README.md +73 -72
  4. data/assets/output.css.erb +159 -0
  5. data/assets/output.html.erb +1 -160
  6. data/config/default.yml +316 -38
  7. data/config/internal_affairs.yml +11 -0
  8. data/config/obsoletion.yml +5 -0
  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 +28 -15
  12. data/lib/rubocop/cli/command/execute_runner.rb +1 -1
  13. data/lib/rubocop/cli/command/lsp.rb +19 -0
  14. data/lib/rubocop/cli/command/show_docs_url.rb +2 -2
  15. data/lib/rubocop/cli/command/version.rb +2 -2
  16. data/lib/rubocop/cli.rb +14 -2
  17. data/lib/rubocop/comment_config.rb +1 -1
  18. data/lib/rubocop/config.rb +45 -13
  19. data/lib/rubocop/config_finder.rb +14 -4
  20. data/lib/rubocop/config_loader.rb +15 -10
  21. data/lib/rubocop/config_loader_resolver.rb +17 -11
  22. data/lib/rubocop/config_obsoletion/parameter_rule.rb +9 -1
  23. data/lib/rubocop/config_obsoletion.rb +13 -10
  24. data/lib/rubocop/config_validator.rb +17 -9
  25. data/lib/rubocop/cop/autocorrect_logic.rb +30 -3
  26. data/lib/rubocop/cop/base.rb +78 -19
  27. data/lib/rubocop/cop/bundler/duplicated_gem.rb +1 -0
  28. data/lib/rubocop/cop/bundler/duplicated_group.rb +127 -0
  29. data/lib/rubocop/cop/bundler/gem_comment.rb +3 -3
  30. data/lib/rubocop/cop/bundler/gem_version.rb +6 -7
  31. data/lib/rubocop/cop/bundler/ordered_gems.rb +9 -1
  32. data/lib/rubocop/cop/cop.rb +30 -4
  33. data/lib/rubocop/cop/correctors/alignment_corrector.rb +2 -13
  34. data/lib/rubocop/cop/correctors/each_to_for_corrector.rb +4 -8
  35. data/lib/rubocop/cop/correctors/for_to_each_corrector.rb +5 -13
  36. data/lib/rubocop/cop/correctors/lambda_literal_to_method_corrector.rb +7 -4
  37. data/lib/rubocop/cop/correctors/line_break_corrector.rb +2 -0
  38. data/lib/rubocop/cop/correctors/parentheses_corrector.rb +1 -1
  39. data/lib/rubocop/cop/correctors/percent_literal_corrector.rb +10 -0
  40. data/lib/rubocop/cop/documentation.rb +32 -5
  41. data/lib/rubocop/cop/exclude_limit.rb +1 -1
  42. data/lib/rubocop/cop/force.rb +12 -0
  43. data/lib/rubocop/cop/gemspec/add_runtime_dependency.rb +38 -0
  44. data/lib/rubocop/cop/gemspec/dependency_version.rb +5 -7
  45. data/lib/rubocop/cop/gemspec/deprecated_attribute_assignment.rb +2 -2
  46. data/lib/rubocop/cop/gemspec/development_dependencies.rb +1 -1
  47. data/lib/rubocop/cop/gemspec/duplicated_assignment.rb +2 -2
  48. data/lib/rubocop/cop/gemspec/ordered_dependencies.rb +9 -1
  49. data/lib/rubocop/cop/gemspec/required_ruby_version.rb +5 -1
  50. data/lib/rubocop/cop/gemspec/ruby_version_globals_usage.rb +3 -3
  51. data/lib/rubocop/cop/generator/require_file_injector.rb +1 -1
  52. data/lib/rubocop/cop/internal_affairs/cop_description.rb +32 -12
  53. data/lib/rubocop/cop/internal_affairs/empty_line_between_expect_offense_and_correction.rb +2 -1
  54. data/lib/rubocop/cop/internal_affairs/example_description.rb +46 -24
  55. data/lib/rubocop/cop/internal_affairs/location_line_equality_comparison.rb +3 -1
  56. data/lib/rubocop/cop/internal_affairs/method_name_end_with.rb +8 -6
  57. data/lib/rubocop/cop/internal_affairs/method_name_equal.rb +19 -20
  58. data/lib/rubocop/cop/internal_affairs/node_first_or_last_argument.rb +53 -0
  59. data/lib/rubocop/cop/internal_affairs/node_matcher_directive.rb +128 -34
  60. data/lib/rubocop/cop/internal_affairs/redundant_expect_offense_arguments.rb +34 -0
  61. data/lib/rubocop/cop/internal_affairs/redundant_message_argument.rb +6 -21
  62. data/lib/rubocop/cop/internal_affairs/redundant_method_dispatch_node.rb +11 -2
  63. data/lib/rubocop/cop/internal_affairs/redundant_source_range.rb +8 -1
  64. data/lib/rubocop/cop/internal_affairs/undefined_config.rb +11 -1
  65. data/lib/rubocop/cop/internal_affairs/useless_message_assertion.rb +2 -5
  66. data/lib/rubocop/cop/internal_affairs.rb +18 -0
  67. data/lib/rubocop/cop/layout/access_modifier_indentation.rb +5 -1
  68. data/lib/rubocop/cop/layout/argument_alignment.rb +1 -1
  69. data/lib/rubocop/cop/layout/assignment_indentation.rb +3 -2
  70. data/lib/rubocop/cop/layout/block_alignment.rb +30 -12
  71. data/lib/rubocop/cop/layout/case_indentation.rb +1 -1
  72. data/lib/rubocop/cop/layout/class_structure.rb +7 -0
  73. data/lib/rubocop/cop/layout/closing_heredoc_indentation.rb +1 -2
  74. data/lib/rubocop/cop/layout/comment_indentation.rb +1 -1
  75. data/lib/rubocop/cop/layout/condition_position.rb +0 -4
  76. data/lib/rubocop/cop/layout/def_end_alignment.rb +1 -1
  77. data/lib/rubocop/cop/layout/dot_position.rb +1 -5
  78. data/lib/rubocop/cop/layout/empty_comment.rb +3 -1
  79. data/lib/rubocop/cop/layout/empty_line_after_guard_clause.rb +43 -10
  80. data/lib/rubocop/cop/layout/empty_line_after_magic_comment.rb +14 -7
  81. data/lib/rubocop/cop/layout/empty_line_after_multiline_condition.rb +1 -1
  82. data/lib/rubocop/cop/layout/empty_line_between_defs.rb +29 -5
  83. data/lib/rubocop/cop/layout/empty_lines_around_exception_handling_keywords.rb +10 -3
  84. data/lib/rubocop/cop/layout/end_alignment.rb +15 -3
  85. data/lib/rubocop/cop/layout/extra_spacing.rb +4 -10
  86. data/lib/rubocop/cop/layout/first_argument_indentation.rb +2 -2
  87. data/lib/rubocop/cop/layout/first_array_element_indentation.rb +24 -10
  88. data/lib/rubocop/cop/layout/first_method_argument_line_break.rb +8 -0
  89. data/lib/rubocop/cop/layout/first_parameter_indentation.rb +1 -1
  90. data/lib/rubocop/cop/layout/heredoc_argument_closing_parenthesis.rb +4 -4
  91. data/lib/rubocop/cop/layout/heredoc_indentation.rb +5 -2
  92. data/lib/rubocop/cop/layout/indentation_style.rb +1 -1
  93. data/lib/rubocop/cop/layout/indentation_width.rb +8 -9
  94. data/lib/rubocop/cop/layout/leading_comment_space.rb +57 -2
  95. data/lib/rubocop/cop/layout/line_continuation_leading_space.rb +17 -9
  96. data/lib/rubocop/cop/layout/line_continuation_spacing.rb +1 -1
  97. data/lib/rubocop/cop/layout/line_end_string_concatenation_indentation.rb +2 -0
  98. data/lib/rubocop/cop/layout/line_length.rb +20 -20
  99. data/lib/rubocop/cop/layout/multiline_method_call_indentation.rb +18 -3
  100. data/lib/rubocop/cop/layout/redundant_line_break.rb +30 -7
  101. data/lib/rubocop/cop/layout/rescue_ensure_alignment.rb +4 -4
  102. data/lib/rubocop/cop/layout/single_line_block_chain.rb +5 -0
  103. data/lib/rubocop/cop/layout/space_after_comma.rb +9 -1
  104. data/lib/rubocop/cop/layout/space_after_not.rb +1 -1
  105. data/lib/rubocop/cop/layout/space_around_method_call_operator.rb +2 -2
  106. data/lib/rubocop/cop/layout/space_around_operators.rb +56 -21
  107. data/lib/rubocop/cop/layout/space_before_block_braces.rb +19 -10
  108. data/lib/rubocop/cop/layout/space_before_brackets.rb +5 -5
  109. data/lib/rubocop/cop/layout/space_inside_block_braces.rb +6 -0
  110. data/lib/rubocop/cop/layout/space_inside_hash_literal_braces.rb +1 -1
  111. data/lib/rubocop/cop/layout/space_inside_parens.rb +1 -1
  112. data/lib/rubocop/cop/layout/space_inside_range_literal.rb +1 -1
  113. data/lib/rubocop/cop/layout/space_inside_string_interpolation.rb +3 -4
  114. data/lib/rubocop/cop/layout/trailing_empty_lines.rb +5 -0
  115. data/lib/rubocop/cop/legacy/corrector.rb +12 -2
  116. data/lib/rubocop/cop/lint/ambiguous_block_association.rb +13 -3
  117. data/lib/rubocop/cop/lint/ambiguous_operator.rb +0 -2
  118. data/lib/rubocop/cop/lint/ambiguous_range.rb +4 -1
  119. data/lib/rubocop/cop/lint/ambiguous_regexp_literal.rb +0 -2
  120. data/lib/rubocop/cop/lint/assignment_in_condition.rb +6 -6
  121. data/lib/rubocop/cop/lint/big_decimal_new.rb +4 -7
  122. data/lib/rubocop/cop/lint/binary_operator_with_identical_operands.rb +2 -2
  123. data/lib/rubocop/cop/lint/boolean_symbol.rb +1 -3
  124. data/lib/rubocop/cop/lint/circular_argument_reference.rb +0 -13
  125. data/lib/rubocop/cop/lint/constant_overwritten_in_rescue.rb +1 -1
  126. data/lib/rubocop/cop/lint/debugger.rb +45 -10
  127. data/lib/rubocop/cop/lint/deprecated_class_methods.rb +1 -1
  128. data/lib/rubocop/cop/lint/deprecated_open_ssl_constant.rb +0 -10
  129. data/lib/rubocop/cop/lint/duplicate_branch.rb +39 -4
  130. data/lib/rubocop/cop/lint/duplicate_case_condition.rb +1 -5
  131. data/lib/rubocop/cop/lint/duplicate_hash_key.rb +2 -5
  132. data/lib/rubocop/cop/lint/duplicate_methods.rb +1 -11
  133. data/lib/rubocop/cop/lint/duplicate_regexp_character_class_element.rb +46 -19
  134. data/lib/rubocop/cop/lint/duplicate_set_element.rb +74 -0
  135. data/lib/rubocop/cop/lint/each_with_object_argument.rb +0 -4
  136. data/lib/rubocop/cop/lint/else_layout.rb +0 -2
  137. data/lib/rubocop/cop/lint/empty_block.rb +1 -1
  138. data/lib/rubocop/cop/lint/empty_conditional_body.rb +29 -8
  139. data/lib/rubocop/cop/lint/empty_ensure.rb +1 -11
  140. data/lib/rubocop/cop/lint/empty_interpolation.rb +0 -4
  141. data/lib/rubocop/cop/lint/empty_when.rb +1 -3
  142. data/lib/rubocop/cop/lint/ensure_return.rb +1 -9
  143. data/lib/rubocop/cop/lint/erb_new_arguments.rb +27 -21
  144. data/lib/rubocop/cop/lint/float_comparison.rb +10 -0
  145. data/lib/rubocop/cop/lint/float_out_of_range.rb +0 -4
  146. data/lib/rubocop/cop/lint/format_parameter_mismatch.rb +0 -10
  147. data/lib/rubocop/cop/lint/hash_compare_by_identity.rb +2 -1
  148. data/lib/rubocop/cop/lint/heredoc_method_call_position.rb +1 -1
  149. data/lib/rubocop/cop/lint/identity_comparison.rb +0 -1
  150. data/lib/rubocop/cop/lint/implicit_string_concatenation.rb +23 -12
  151. data/lib/rubocop/cop/lint/incompatible_io_select_with_fiber_scheduler.rb +5 -3
  152. data/lib/rubocop/cop/lint/ineffective_access_modifier.rb +0 -7
  153. data/lib/rubocop/cop/lint/inherit_exception.rb +9 -0
  154. data/lib/rubocop/cop/lint/interpolation_check.rb +0 -4
  155. data/lib/rubocop/cop/lint/it_without_arguments_in_block.rb +47 -0
  156. data/lib/rubocop/cop/lint/lambda_without_literal_block.rb +1 -1
  157. data/lib/rubocop/cop/lint/literal_as_condition.rb +1 -1
  158. data/lib/rubocop/cop/lint/literal_assignment_in_condition.rb +85 -0
  159. data/lib/rubocop/cop/lint/literal_in_interpolation.rb +26 -7
  160. data/lib/rubocop/cop/lint/loop.rb +6 -12
  161. data/lib/rubocop/cop/lint/missing_super.rb +34 -5
  162. data/lib/rubocop/cop/lint/mixed_case_range.rb +116 -0
  163. data/lib/rubocop/cop/lint/nested_method_definition.rb +1 -7
  164. data/lib/rubocop/cop/lint/next_without_accumulator.rb +6 -25
  165. data/lib/rubocop/cop/lint/no_return_in_begin_end_blocks.rb +0 -5
  166. data/lib/rubocop/cop/lint/non_atomic_file_operation.rb +17 -7
  167. data/lib/rubocop/cop/lint/non_deterministic_require_order.rb +3 -5
  168. data/lib/rubocop/cop/lint/number_conversion.rb +14 -4
  169. data/lib/rubocop/cop/lint/numbered_parameter_assignment.rb +2 -2
  170. data/lib/rubocop/cop/lint/ordered_magic_comments.rb +0 -1
  171. data/lib/rubocop/cop/lint/out_of_range_regexp_ref.rb +2 -2
  172. data/lib/rubocop/cop/lint/parentheses_as_grouped_expression.rb +5 -6
  173. data/lib/rubocop/cop/lint/percent_string_array.rb +0 -4
  174. data/lib/rubocop/cop/lint/percent_symbol_array.rb +0 -4
  175. data/lib/rubocop/cop/lint/rand_one.rb +0 -4
  176. data/lib/rubocop/cop/lint/redundant_cop_enable_directive.rb +3 -1
  177. data/lib/rubocop/cop/lint/redundant_regexp_quantifiers.rb +130 -0
  178. data/lib/rubocop/cop/lint/redundant_require_statement.rb +12 -3
  179. data/lib/rubocop/cop/lint/redundant_safe_navigation.rb +72 -8
  180. data/lib/rubocop/cop/lint/redundant_splat_expansion.rb +1 -1
  181. data/lib/rubocop/cop/lint/redundant_string_coercion.rb +1 -5
  182. data/lib/rubocop/cop/lint/redundant_with_index.rb +6 -2
  183. data/lib/rubocop/cop/lint/redundant_with_object.rb +2 -2
  184. data/lib/rubocop/cop/lint/require_parentheses.rb +0 -4
  185. data/lib/rubocop/cop/lint/rescue_exception.rb +0 -4
  186. data/lib/rubocop/cop/lint/rescue_type.rb +1 -3
  187. data/lib/rubocop/cop/lint/return_in_void_context.rb +0 -2
  188. data/lib/rubocop/cop/lint/safe_navigation_chain.rb +23 -12
  189. data/lib/rubocop/cop/lint/safe_navigation_consistency.rb +107 -41
  190. data/lib/rubocop/cop/lint/script_permission.rb +3 -3
  191. data/lib/rubocop/cop/lint/self_assignment.rb +38 -0
  192. data/lib/rubocop/cop/lint/send_with_mixin_argument.rb +1 -2
  193. data/lib/rubocop/cop/lint/shadowed_argument.rb +1 -0
  194. data/lib/rubocop/cop/lint/shadowed_exception.rb +5 -11
  195. data/lib/rubocop/cop/lint/shadowing_outer_local_variable.rb +13 -11
  196. data/lib/rubocop/cop/lint/struct_new_override.rb +12 -12
  197. data/lib/rubocop/cop/lint/suppressed_exception.rb +2 -2
  198. data/lib/rubocop/cop/lint/symbol_conversion.rb +9 -4
  199. data/lib/rubocop/cop/lint/syntax.rb +6 -3
  200. data/lib/rubocop/cop/lint/to_enum_arguments.rb +6 -6
  201. data/lib/rubocop/cop/lint/top_level_return_with_argument.rb +23 -9
  202. data/lib/rubocop/cop/lint/trailing_comma_in_attribute_declaration.rb +1 -1
  203. data/lib/rubocop/cop/lint/unescaped_bracket_in_regexp.rb +88 -0
  204. data/lib/rubocop/cop/lint/unified_integer.rb +0 -4
  205. data/lib/rubocop/cop/lint/unmodified_reduce_accumulator.rb +3 -2
  206. data/lib/rubocop/cop/lint/unreachable_code.rb +4 -7
  207. data/lib/rubocop/cop/lint/unreachable_loop.rb +8 -2
  208. data/lib/rubocop/cop/lint/uri_regexp.rb +25 -7
  209. data/lib/rubocop/cop/lint/useless_access_modifier.rb +2 -2
  210. data/lib/rubocop/cop/lint/useless_assignment.rb +102 -15
  211. data/lib/rubocop/cop/lint/useless_else_without_rescue.rb +0 -4
  212. data/lib/rubocop/cop/lint/useless_numeric_operation.rb +77 -0
  213. data/lib/rubocop/cop/lint/useless_setter_call.rb +0 -4
  214. data/lib/rubocop/cop/lint/useless_times.rb +2 -2
  215. data/lib/rubocop/cop/lint/void.rb +128 -15
  216. data/lib/rubocop/cop/metrics/abc_size.rb +3 -3
  217. data/lib/rubocop/cop/metrics/block_length.rb +7 -6
  218. data/lib/rubocop/cop/metrics/block_nesting.rb +19 -7
  219. data/lib/rubocop/cop/metrics/class_length.rb +14 -8
  220. data/lib/rubocop/cop/metrics/cyclomatic_complexity.rb +4 -1
  221. data/lib/rubocop/cop/metrics/method_length.rb +7 -6
  222. data/lib/rubocop/cop/metrics/module_length.rb +6 -5
  223. data/lib/rubocop/cop/metrics/utils/abc_size_calculator.rb +1 -2
  224. data/lib/rubocop/cop/metrics/utils/code_length_calculator.rb +37 -9
  225. data/lib/rubocop/cop/migration/department_name.rb +2 -2
  226. data/lib/rubocop/cop/mixin/alignment.rb +5 -1
  227. data/lib/rubocop/cop/mixin/allowed_methods.rb +7 -1
  228. data/lib/rubocop/cop/mixin/allowed_pattern.rb +15 -3
  229. data/lib/rubocop/cop/mixin/allowed_receivers.rb +34 -0
  230. data/lib/rubocop/cop/mixin/annotation_comment.rb +0 -2
  231. data/lib/rubocop/cop/mixin/check_line_breakable.rb +11 -1
  232. data/lib/rubocop/cop/mixin/code_length.rb +12 -1
  233. data/lib/rubocop/cop/mixin/comments_help.rb +19 -11
  234. data/lib/rubocop/cop/mixin/configurable_formatting.rb +1 -0
  235. data/lib/rubocop/cop/mixin/configurable_max.rb +5 -1
  236. data/lib/rubocop/cop/mixin/def_node.rb +1 -1
  237. data/lib/rubocop/cop/mixin/end_keyword_alignment.rb +1 -1
  238. data/lib/rubocop/cop/mixin/endless_method_rewriter.rb +24 -0
  239. data/lib/rubocop/cop/mixin/frozen_string_literal.rb +22 -10
  240. data/lib/rubocop/cop/mixin/hash_shorthand_syntax.rb +23 -13
  241. data/lib/rubocop/cop/mixin/heredoc.rb +6 -2
  242. data/lib/rubocop/cop/mixin/line_length_help.rb +7 -2
  243. data/lib/rubocop/cop/mixin/method_complexity.rb +15 -6
  244. data/lib/rubocop/cop/mixin/multiline_expression_indentation.rb +4 -3
  245. data/lib/rubocop/cop/mixin/percent_array.rb +1 -1
  246. data/lib/rubocop/cop/mixin/percent_literal.rb +1 -1
  247. data/lib/rubocop/cop/mixin/preceding_following_alignment.rb +6 -8
  248. data/lib/rubocop/cop/mixin/rescue_node.rb +4 -0
  249. data/lib/rubocop/cop/mixin/safe_assignment.rb +1 -1
  250. data/lib/rubocop/cop/mixin/space_after_punctuation.rb +1 -1
  251. data/lib/rubocop/cop/mixin/space_before_punctuation.rb +1 -1
  252. data/lib/rubocop/cop/mixin/statement_modifier.rb +3 -2
  253. data/lib/rubocop/cop/mixin/string_help.rb +4 -2
  254. data/lib/rubocop/cop/mixin/string_literals_help.rb +12 -0
  255. data/lib/rubocop/cop/mixin/trailing_comma.rb +1 -1
  256. data/lib/rubocop/cop/naming/accessor_method_name.rb +5 -0
  257. data/lib/rubocop/cop/naming/block_forwarding.rb +35 -8
  258. data/lib/rubocop/cop/naming/constant_name.rb +2 -3
  259. data/lib/rubocop/cop/naming/file_name.rb +3 -3
  260. data/lib/rubocop/cop/naming/heredoc_delimiter_naming.rb +3 -1
  261. data/lib/rubocop/cop/naming/inclusive_language.rb +13 -5
  262. data/lib/rubocop/cop/naming/memoized_instance_variable_name.rb +26 -11
  263. data/lib/rubocop/cop/naming/predicate_name.rb +55 -29
  264. data/lib/rubocop/cop/naming/rescued_exceptions_variable_name.rb +21 -4
  265. data/lib/rubocop/cop/naming/variable_name.rb +6 -1
  266. data/lib/rubocop/cop/offense.rb +4 -5
  267. data/lib/rubocop/cop/registry.rb +1 -1
  268. data/lib/rubocop/cop/security/compound_hash.rb +2 -2
  269. data/lib/rubocop/cop/security/open.rb +2 -2
  270. data/lib/rubocop/cop/style/access_modifier_declarations.rb +63 -3
  271. data/lib/rubocop/cop/style/accessor_grouping.rb +14 -2
  272. data/lib/rubocop/cop/style/alias.rb +11 -9
  273. data/lib/rubocop/cop/style/ambiguous_endless_method_definition.rb +79 -0
  274. data/lib/rubocop/cop/style/arguments_forwarding.rb +459 -63
  275. data/lib/rubocop/cop/style/array_first_last.rb +64 -0
  276. data/lib/rubocop/cop/style/array_intersect.rb +13 -5
  277. data/lib/rubocop/cop/style/attr.rb +11 -1
  278. data/lib/rubocop/cop/style/auto_resource_cleanup.rb +21 -14
  279. data/lib/rubocop/cop/style/begin_block.rb +1 -2
  280. data/lib/rubocop/cop/style/bisected_attr_accessor.rb +2 -2
  281. data/lib/rubocop/cop/style/bitwise_predicate.rb +100 -0
  282. data/lib/rubocop/cop/style/block_comments.rb +1 -1
  283. data/lib/rubocop/cop/style/block_delimiters.rb +36 -7
  284. data/lib/rubocop/cop/style/case_like_if.rb +5 -5
  285. data/lib/rubocop/cop/style/class_and_module_children.rb +1 -1
  286. data/lib/rubocop/cop/style/class_check.rb +1 -0
  287. data/lib/rubocop/cop/style/class_equality_comparison.rb +24 -39
  288. data/lib/rubocop/cop/style/class_vars.rb +3 -3
  289. data/lib/rubocop/cop/style/collection_compact.rb +31 -11
  290. data/lib/rubocop/cop/style/collection_methods.rb +2 -0
  291. data/lib/rubocop/cop/style/colon_method_call.rb +2 -2
  292. data/lib/rubocop/cop/style/combinable_defined.rb +115 -0
  293. data/lib/rubocop/cop/style/combinable_loops.rb +43 -8
  294. data/lib/rubocop/cop/style/commented_keyword.rb +12 -3
  295. data/lib/rubocop/cop/style/concat_array_literals.rb +2 -1
  296. data/lib/rubocop/cop/style/conditional_assignment.rb +13 -12
  297. data/lib/rubocop/cop/style/copyright.rb +36 -23
  298. data/lib/rubocop/cop/style/data_inheritance.rb +1 -1
  299. data/lib/rubocop/cop/style/date_time.rb +5 -4
  300. data/lib/rubocop/cop/style/def_with_parentheses.rb +0 -2
  301. data/lib/rubocop/cop/style/dir.rb +1 -1
  302. data/lib/rubocop/cop/style/dir_empty.rb +8 -14
  303. data/lib/rubocop/cop/style/document_dynamic_eval_definition.rb +1 -1
  304. data/lib/rubocop/cop/style/documentation.rb +25 -25
  305. data/lib/rubocop/cop/style/documentation_method.rb +20 -0
  306. data/lib/rubocop/cop/style/each_for_simple_loop.rb +7 -8
  307. data/lib/rubocop/cop/style/each_with_object.rb +2 -2
  308. data/lib/rubocop/cop/style/empty_case_condition.rb +6 -1
  309. data/lib/rubocop/cop/style/empty_else.rb +6 -5
  310. data/lib/rubocop/cop/style/empty_heredoc.rb +1 -14
  311. data/lib/rubocop/cop/style/empty_literal.rb +32 -23
  312. data/lib/rubocop/cop/style/endless_method.rb +1 -14
  313. data/lib/rubocop/cop/style/eval_with_location.rb +24 -32
  314. data/lib/rubocop/cop/style/exact_regexp_match.rb +70 -0
  315. data/lib/rubocop/cop/style/explicit_block_argument.rb +2 -2
  316. data/lib/rubocop/cop/style/file_read.rb +4 -7
  317. data/lib/rubocop/cop/style/file_write.rb +2 -5
  318. data/lib/rubocop/cop/style/for.rb +3 -1
  319. data/lib/rubocop/cop/style/format_string.rb +33 -12
  320. data/lib/rubocop/cop/style/format_string_token.rb +2 -2
  321. data/lib/rubocop/cop/style/frozen_string_literal_comment.rb +3 -1
  322. data/lib/rubocop/cop/style/global_std_stream.rb +7 -1
  323. data/lib/rubocop/cop/style/guard_clause.rb +45 -2
  324. data/lib/rubocop/cop/style/hash_conversion.rb +10 -0
  325. data/lib/rubocop/cop/style/hash_each_methods.rb +112 -33
  326. data/lib/rubocop/cop/style/hash_except.rb +29 -14
  327. data/lib/rubocop/cop/style/hash_syntax.rb +26 -4
  328. data/lib/rubocop/cop/style/hash_transform_keys.rb +2 -2
  329. data/lib/rubocop/cop/style/hash_transform_values.rb +2 -2
  330. data/lib/rubocop/cop/style/identical_conditional_branches.rb +34 -5
  331. data/lib/rubocop/cop/style/if_inside_else.rb +7 -1
  332. data/lib/rubocop/cop/style/if_unless_modifier.rb +3 -0
  333. data/lib/rubocop/cop/style/if_with_boolean_literal_branches.rb +5 -4
  334. data/lib/rubocop/cop/style/if_with_semicolon.rb +51 -8
  335. data/lib/rubocop/cop/style/in_pattern_then.rb +6 -2
  336. data/lib/rubocop/cop/style/inverse_methods.rb +14 -13
  337. data/lib/rubocop/cop/style/invertible_unless_condition.rb +56 -10
  338. data/lib/rubocop/cop/style/keyword_arguments_merging.rb +67 -0
  339. data/lib/rubocop/cop/style/lambda.rb +4 -4
  340. data/lib/rubocop/cop/style/lambda_call.rb +5 -0
  341. data/lib/rubocop/cop/style/magic_comment_format.rb +1 -1
  342. data/lib/rubocop/cop/style/map_compact_with_conditional_block.rb +82 -50
  343. data/lib/rubocop/cop/style/map_into_array.rb +233 -0
  344. data/lib/rubocop/cop/style/map_to_hash.rb +18 -8
  345. data/lib/rubocop/cop/style/map_to_set.rb +1 -1
  346. data/lib/rubocop/cop/style/method_call_with_args_parentheses/omit_parentheses.rb +40 -15
  347. data/lib/rubocop/cop/style/method_call_with_args_parentheses.rb +3 -5
  348. data/lib/rubocop/cop/style/method_call_without_args_parentheses.rb +22 -2
  349. data/lib/rubocop/cop/style/method_def_parentheses.rb +1 -1
  350. data/lib/rubocop/cop/style/missing_else.rb +0 -4
  351. data/lib/rubocop/cop/style/missing_respond_to_missing.rb +2 -2
  352. data/lib/rubocop/cop/style/mixin_grouping.rb +1 -1
  353. data/lib/rubocop/cop/style/multiline_block_chain.rb +1 -1
  354. data/lib/rubocop/cop/style/multiline_memoization.rb +1 -1
  355. data/lib/rubocop/cop/style/multiline_method_signature.rb +10 -1
  356. data/lib/rubocop/cop/style/multiline_ternary_operator.rb +6 -4
  357. data/lib/rubocop/cop/style/multiline_when_then.rb +0 -4
  358. data/lib/rubocop/cop/style/multiple_comparison.rb +41 -46
  359. data/lib/rubocop/cop/style/nested_modifier.rb +1 -1
  360. data/lib/rubocop/cop/style/nested_parenthesized_calls.rb +1 -1
  361. data/lib/rubocop/cop/style/nested_ternary_operator.rb +3 -11
  362. data/lib/rubocop/cop/style/next.rb +1 -1
  363. data/lib/rubocop/cop/style/nil_comparison.rb +2 -0
  364. data/lib/rubocop/cop/style/numeric_literal_prefix.rb +1 -1
  365. data/lib/rubocop/cop/style/numeric_literals.rb +1 -1
  366. data/lib/rubocop/cop/style/numeric_predicate.rb +12 -4
  367. data/lib/rubocop/cop/style/object_then.rb +5 -3
  368. data/lib/rubocop/cop/style/one_line_conditional.rb +6 -2
  369. data/lib/rubocop/cop/style/open_struct_use.rb +1 -1
  370. data/lib/rubocop/cop/style/operator_method_call.rb +32 -7
  371. data/lib/rubocop/cop/style/parallel_assignment.rb +8 -9
  372. data/lib/rubocop/cop/style/parentheses_around_condition.rb +8 -0
  373. data/lib/rubocop/cop/style/percent_literal_delimiters.rb +1 -1
  374. data/lib/rubocop/cop/style/preferred_hash_methods.rb +1 -1
  375. data/lib/rubocop/cop/style/quoted_symbols.rb +1 -3
  376. data/lib/rubocop/cop/style/raise_args.rb +4 -1
  377. data/lib/rubocop/cop/style/redundant_argument.rb +33 -4
  378. data/lib/rubocop/cop/style/redundant_array_constructor.rb +77 -0
  379. data/lib/rubocop/cop/style/redundant_assignment.rb +10 -2
  380. data/lib/rubocop/cop/style/redundant_begin.rb +15 -3
  381. data/lib/rubocop/cop/style/redundant_condition.rb +4 -4
  382. data/lib/rubocop/cop/style/redundant_conditional.rb +2 -10
  383. data/lib/rubocop/cop/style/redundant_current_directory_in_path.rb +39 -0
  384. data/lib/rubocop/cop/style/redundant_double_splat_hash_braces.rb +93 -5
  385. data/lib/rubocop/cop/style/redundant_each.rb +7 -4
  386. data/lib/rubocop/cop/style/redundant_exception.rb +32 -12
  387. data/lib/rubocop/cop/style/redundant_fetch_block.rb +3 -3
  388. data/lib/rubocop/cop/style/redundant_file_extension_in_require.rb +1 -1
  389. data/lib/rubocop/cop/style/redundant_filter_chain.rb +118 -0
  390. data/lib/rubocop/cop/style/redundant_interpolation_unfreeze.rb +46 -0
  391. data/lib/rubocop/cop/style/redundant_line_continuation.rb +48 -9
  392. data/lib/rubocop/cop/style/redundant_parentheses.rb +80 -33
  393. data/lib/rubocop/cop/style/redundant_percent_q.rb +1 -1
  394. data/lib/rubocop/cop/style/redundant_regexp_argument.rb +103 -0
  395. data/lib/rubocop/cop/style/redundant_regexp_constructor.rb +46 -0
  396. data/lib/rubocop/cop/style/redundant_regexp_escape.rb +9 -24
  397. data/lib/rubocop/cop/style/redundant_return.rb +14 -3
  398. data/lib/rubocop/cop/style/redundant_self.rb +17 -2
  399. data/lib/rubocop/cop/style/redundant_self_assignment_branch.rb +8 -1
  400. data/lib/rubocop/cop/style/redundant_sort.rb +10 -9
  401. data/lib/rubocop/cop/style/redundant_sort_by.rb +2 -2
  402. data/lib/rubocop/cop/style/redundant_string_escape.rb +3 -1
  403. data/lib/rubocop/cop/style/regexp_literal.rb +11 -2
  404. data/lib/rubocop/cop/style/require_order.rb +13 -7
  405. data/lib/rubocop/cop/style/rescue_modifier.rb +14 -4
  406. data/lib/rubocop/cop/style/return_nil.rb +6 -2
  407. data/lib/rubocop/cop/style/return_nil_in_predicate_method_definition.rb +137 -0
  408. data/lib/rubocop/cop/style/safe_navigation.rb +106 -52
  409. data/lib/rubocop/cop/style/safe_navigation_chain_length.rb +52 -0
  410. data/lib/rubocop/cop/style/sample.rb +3 -4
  411. data/lib/rubocop/cop/style/select_by_regexp.rb +29 -15
  412. data/lib/rubocop/cop/style/self_assignment.rb +1 -1
  413. data/lib/rubocop/cop/style/semicolon.rb +21 -5
  414. data/lib/rubocop/cop/style/send.rb +4 -4
  415. data/lib/rubocop/cop/style/send_with_literal_method_name.rb +104 -0
  416. data/lib/rubocop/cop/style/signal_exception.rb +1 -1
  417. data/lib/rubocop/cop/style/single_argument_dig.rb +7 -3
  418. data/lib/rubocop/cop/style/single_line_do_end_block.rb +67 -0
  419. data/lib/rubocop/cop/style/single_line_methods.rb +1 -1
  420. data/lib/rubocop/cop/style/slicing_with_range.rb +76 -10
  421. data/lib/rubocop/cop/style/sole_nested_conditional.rb +27 -4
  422. data/lib/rubocop/cop/style/special_global_vars.rb +4 -6
  423. data/lib/rubocop/cop/style/string_chars.rb +1 -0
  424. data/lib/rubocop/cop/style/string_literals_in_interpolation.rb +30 -5
  425. data/lib/rubocop/cop/style/strip.rb +7 -4
  426. data/lib/rubocop/cop/style/struct_inheritance.rb +1 -1
  427. data/lib/rubocop/cop/style/super_arguments.rb +174 -0
  428. data/lib/rubocop/cop/style/super_with_args_parentheses.rb +35 -0
  429. data/lib/rubocop/cop/style/symbol_array.rb +35 -15
  430. data/lib/rubocop/cop/style/symbol_proc.rb +75 -5
  431. data/lib/rubocop/cop/style/ternary_parentheses.rb +26 -5
  432. data/lib/rubocop/cop/style/top_level_method_definition.rb +1 -1
  433. data/lib/rubocop/cop/style/trivial_accessors.rb +1 -1
  434. data/lib/rubocop/cop/style/unpack_first.rb +11 -14
  435. data/lib/rubocop/cop/style/while_until_do.rb +0 -2
  436. data/lib/rubocop/cop/style/while_until_modifier.rb +0 -1
  437. data/lib/rubocop/cop/style/yaml_file_read.rb +66 -0
  438. data/lib/rubocop/cop/style/yoda_condition.rb +4 -2
  439. data/lib/rubocop/cop/style/yoda_expression.rb +8 -7
  440. data/lib/rubocop/cop/style/zero_length_predicate.rb +32 -24
  441. data/lib/rubocop/cop/team.rb +27 -3
  442. data/lib/rubocop/cop/util.rb +9 -3
  443. data/lib/rubocop/cop/utils/regexp_ranges.rb +113 -0
  444. data/lib/rubocop/cop/variable_force/assignment.rb +62 -6
  445. data/lib/rubocop/cop/variable_force/branch.rb +1 -1
  446. data/lib/rubocop/cop/variable_force/variable.rb +5 -1
  447. data/lib/rubocop/cop/variable_force/variable_table.rb +4 -4
  448. data/lib/rubocop/cop/variable_force.rb +14 -1
  449. data/lib/rubocop/cops_documentation_generator.rb +97 -44
  450. data/lib/rubocop/core_ext/string.rb +2 -6
  451. data/lib/rubocop/directive_comment.rb +10 -8
  452. data/lib/rubocop/ext/regexp_node.rb +18 -35
  453. data/lib/rubocop/ext/regexp_parser.rb +7 -21
  454. data/lib/rubocop/file_finder.rb +11 -9
  455. data/lib/rubocop/formatter/clang_style_formatter.rb +3 -7
  456. data/lib/rubocop/formatter/disabled_config_formatter.rb +24 -9
  457. data/lib/rubocop/formatter/formatter_set.rb +7 -1
  458. data/lib/rubocop/formatter/html_formatter.rb +37 -14
  459. data/lib/rubocop/formatter/json_formatter.rb +0 -1
  460. data/lib/rubocop/formatter/junit_formatter.rb +71 -24
  461. data/lib/rubocop/formatter/offense_count_formatter.rb +12 -2
  462. data/lib/rubocop/formatter/tap_formatter.rb +3 -7
  463. data/lib/rubocop/formatter.rb +1 -1
  464. data/lib/rubocop/lockfile.rb +58 -7
  465. data/lib/rubocop/lsp/logger.rb +22 -0
  466. data/lib/rubocop/lsp/routes.rb +243 -0
  467. data/lib/rubocop/lsp/runtime.rb +101 -0
  468. data/lib/rubocop/lsp/server.rb +72 -0
  469. data/lib/rubocop/lsp/severity.rb +27 -0
  470. data/lib/rubocop/lsp.rb +36 -0
  471. data/lib/rubocop/magic_comment.rb +13 -11
  472. data/lib/rubocop/options.rb +28 -13
  473. data/lib/rubocop/path_util.rb +6 -2
  474. data/lib/rubocop/rake_task.rb +1 -1
  475. data/lib/rubocop/remote_config.rb +5 -1
  476. data/lib/rubocop/result_cache.rb +7 -10
  477. data/lib/rubocop/rspec/cop_helper.rb +8 -2
  478. data/lib/rubocop/rspec/expect_offense.rb +17 -8
  479. data/lib/rubocop/rspec/shared_contexts.rb +77 -21
  480. data/lib/rubocop/rspec/support.rb +3 -0
  481. data/lib/rubocop/runner.rb +36 -12
  482. data/lib/rubocop/server/cache.rb +16 -1
  483. data/lib/rubocop/server/client_command/exec.rb +5 -5
  484. data/lib/rubocop/server/client_command/start.rb +1 -1
  485. data/lib/rubocop/server/core.rb +5 -0
  486. data/lib/rubocop/server/server_command/exec.rb +0 -1
  487. data/lib/rubocop/string_interpreter.rb +3 -3
  488. data/lib/rubocop/target_finder.rb +91 -81
  489. data/lib/rubocop/target_ruby.rb +90 -79
  490. data/lib/rubocop/version.rb +53 -13
  491. data/lib/rubocop/yaml_duplication_checker.rb +20 -26
  492. data/lib/rubocop.rb +40 -1
  493. metadata +73 -36
  494. /data/lib/rubocop/formatter/{git_hub_actions_formatter.rb → github_actions_formatter.rb} +0 -0
@@ -3,21 +3,28 @@
3
3
  module RuboCop
4
4
  # This module holds the RuboCop version information.
5
5
  module Version
6
- STRING = '1.50.2'
6
+ STRING = '1.68.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
+ CANONICAL_FEATURE_NAMES = {
14
+ 'Rspec' => 'RSpec', 'Graphql' => 'GraphQL', 'Md' => 'Markdown', 'Factory_bot' => 'FactoryBot',
15
+ 'Thread_safety' => 'ThreadSafety', 'Rspec_rails' => 'RSpecRails'
16
+ }.freeze
17
+ EXTENSION_PATH_NAMES = {
18
+ 'rubocop-md' => 'markdown', 'rubocop-factory_bot' => 'factory_bot'
19
+ }.freeze
15
20
 
21
+ # NOTE: Marked as private but used by gems like standard.
16
22
  # @api private
17
23
  def self.version(debug: false, env: nil)
18
24
  if debug
19
- verbose_version = format(MSG, version: STRING, parser_version: Parser::VERSION,
25
+ verbose_version = format(MSG, version: STRING, parser_version: parser_version,
20
26
  rubocop_ast_version: RuboCop::AST::Version::STRING,
27
+ target_ruby_version: target_ruby_version(env),
21
28
  ruby_engine: RUBY_ENGINE, ruby_version: RUBY_VERSION,
22
29
  server_mode: server_mode,
23
30
  ruby_platform: RUBY_PLATFORM)
@@ -36,14 +43,29 @@ module RuboCop
36
43
  end
37
44
 
38
45
  # @api private
39
- 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
46
+ def self.verbose(env: nil)
47
+ version(debug: true, env: env)
48
+ end
49
+
50
+ # @api private
51
+ def self.parser_version
52
+ config_path = ConfigFinder.find_config_path(Dir.pwd)
53
+ yaml = Util.silence_warnings do
54
+ ConfigLoader.load_yaml_configuration(config_path)
44
55
  end
45
56
 
46
- features.map do |loaded_feature|
57
+ if yaml.dig('AllCops', 'ParserEngine') == 'parser_prism'
58
+ require 'prism'
59
+ "Prism #{Prism::VERSION}"
60
+ else
61
+ "Parser #{Parser::VERSION}"
62
+ end
63
+ end
64
+
65
+ # @api private
66
+ def self.extension_versions(env)
67
+ features = config_for_pwd(env).loaded_features.sort
68
+ features.filter_map do |loaded_feature|
47
69
  next unless (match = loaded_feature.match(/rubocop-(?<feature>.*)/))
48
70
 
49
71
  # Get the expected name of the folder containing the extension code.
@@ -61,7 +83,25 @@ module RuboCop
61
83
  next unless (feature_version = feature_version(feature))
62
84
 
63
85
  " - #{loaded_feature} #{feature_version}"
64
- end.compact
86
+ end
87
+ end
88
+
89
+ # @api private
90
+ def self.target_ruby_version(env)
91
+ if env
92
+ config_for_pwd(env).target_ruby_version
93
+ else
94
+ TargetRuby.new(Config.new).version
95
+ end
96
+ end
97
+
98
+ # @api private
99
+ def self.config_for_pwd(env)
100
+ Util.silence_warnings do
101
+ # Suppress any config issues when loading the config (ie. deprecations,
102
+ # pending cops, etc.).
103
+ env.config_store.unvalidated.for_pwd
104
+ end
65
105
  end
66
106
 
67
107
  # 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
@@ -69,6 +74,7 @@ require_relative 'rubocop/cop/mixin/alignment'
69
74
  require_relative 'rubocop/cop/mixin/allowed_identifiers'
70
75
  require_relative 'rubocop/cop/mixin/allowed_methods'
71
76
  require_relative 'rubocop/cop/mixin/allowed_pattern'
77
+ require_relative 'rubocop/cop/mixin/allowed_receivers'
72
78
  require_relative 'rubocop/cop/mixin/auto_corrector' # rubocop:todo Naming/InclusiveLanguage
73
79
  require_relative 'rubocop/cop/mixin/check_assignment'
74
80
  require_relative 'rubocop/cop/mixin/check_line_breakable'
@@ -85,6 +91,7 @@ require_relative 'rubocop/cop/mixin/annotation_comment' # relies on range
85
91
  require_relative 'rubocop/cop/mixin/empty_lines_around_body' # relies on range
86
92
  require_relative 'rubocop/cop/mixin/empty_parameter'
87
93
  require_relative 'rubocop/cop/mixin/end_keyword_alignment'
94
+ require_relative 'rubocop/cop/mixin/endless_method_rewriter'
88
95
  require_relative 'rubocop/cop/mixin/enforce_superclass'
89
96
  require_relative 'rubocop/cop/mixin/first_element_line_break'
90
97
  require_relative 'rubocop/cop/mixin/frozen_string_literal'
@@ -138,6 +145,7 @@ require_relative 'rubocop/cop/mixin/comments_help' # relies on visibility_help
138
145
  require_relative 'rubocop/cop/mixin/def_node' # relies on visibility_help
139
146
 
140
147
  require_relative 'rubocop/cop/utils/format_string'
148
+ require_relative 'rubocop/cop/utils/regexp_ranges'
141
149
 
142
150
  require_relative 'rubocop/cop/migration/department_name'
143
151
 
@@ -160,12 +168,14 @@ require_relative 'rubocop/cop/correctors/string_literal_corrector'
160
168
  require_relative 'rubocop/cop/correctors/unused_arg_corrector'
161
169
 
162
170
  require_relative 'rubocop/cop/bundler/duplicated_gem'
171
+ require_relative 'rubocop/cop/bundler/duplicated_group'
163
172
  require_relative 'rubocop/cop/bundler/gem_comment'
164
173
  require_relative 'rubocop/cop/bundler/gem_filename'
165
174
  require_relative 'rubocop/cop/bundler/gem_version'
166
175
  require_relative 'rubocop/cop/bundler/insecure_protocol_source'
167
176
  require_relative 'rubocop/cop/bundler/ordered_gems'
168
177
 
178
+ require_relative 'rubocop/cop/gemspec/add_runtime_dependency'
169
179
  require_relative 'rubocop/cop/gemspec/dependency_version'
170
180
  require_relative 'rubocop/cop/gemspec/deprecated_attribute_assignment'
171
181
  require_relative 'rubocop/cop/gemspec/development_dependencies'
@@ -304,6 +314,7 @@ require_relative 'rubocop/cop/lint/duplicate_methods'
304
314
  require_relative 'rubocop/cop/lint/duplicate_regexp_character_class_element'
305
315
  require_relative 'rubocop/cop/lint/duplicate_require'
306
316
  require_relative 'rubocop/cop/lint/duplicate_rescue_exception'
317
+ require_relative 'rubocop/cop/lint/duplicate_set_element'
307
318
  require_relative 'rubocop/cop/lint/each_with_object_argument'
308
319
  require_relative 'rubocop/cop/lint/else_layout'
309
320
  require_relative 'rubocop/cop/lint/empty_block'
@@ -329,12 +340,15 @@ require_relative 'rubocop/cop/lint/incompatible_io_select_with_fiber_scheduler'
329
340
  require_relative 'rubocop/cop/lint/ineffective_access_modifier'
330
341
  require_relative 'rubocop/cop/lint/inherit_exception'
331
342
  require_relative 'rubocop/cop/lint/interpolation_check'
343
+ require_relative 'rubocop/cop/lint/it_without_arguments_in_block'
332
344
  require_relative 'rubocop/cop/lint/lambda_without_literal_block'
333
345
  require_relative 'rubocop/cop/lint/literal_as_condition'
346
+ require_relative 'rubocop/cop/lint/literal_assignment_in_condition'
334
347
  require_relative 'rubocop/cop/lint/literal_in_interpolation'
335
348
  require_relative 'rubocop/cop/lint/loop'
336
349
  require_relative 'rubocop/cop/lint/missing_cop_enable_directive'
337
350
  require_relative 'rubocop/cop/lint/missing_super'
351
+ require_relative 'rubocop/cop/lint/mixed_case_range'
338
352
  require_relative 'rubocop/cop/lint/mixed_regexp_capture_types'
339
353
  require_relative 'rubocop/cop/lint/multiple_comparison'
340
354
  require_relative 'rubocop/cop/lint/nested_method_definition'
@@ -357,6 +371,7 @@ require_relative 'rubocop/cop/lint/rand_one'
357
371
  require_relative 'rubocop/cop/lint/redundant_cop_disable_directive'
358
372
  require_relative 'rubocop/cop/lint/redundant_cop_enable_directive'
359
373
  require_relative 'rubocop/cop/lint/redundant_dir_glob_sort'
374
+ require_relative 'rubocop/cop/lint/redundant_regexp_quantifiers'
360
375
  require_relative 'rubocop/cop/lint/redundant_require_statement'
361
376
  require_relative 'rubocop/cop/lint/redundant_safe_navigation'
362
377
  require_relative 'rubocop/cop/lint/redundant_splat_expansion'
@@ -390,6 +405,7 @@ require_relative 'rubocop/cop/lint/top_level_return_with_argument'
390
405
  require_relative 'rubocop/cop/lint/trailing_comma_in_attribute_declaration'
391
406
  require_relative 'rubocop/cop/lint/triple_quotes'
392
407
  require_relative 'rubocop/cop/lint/underscore_prefixed_variable_name'
408
+ require_relative 'rubocop/cop/lint/unescaped_bracket_in_regexp'
393
409
  require_relative 'rubocop/cop/lint/unexpected_block_arity'
394
410
  require_relative 'rubocop/cop/lint/unified_integer'
395
411
  require_relative 'rubocop/cop/lint/unmodified_reduce_accumulator'
@@ -403,6 +419,7 @@ require_relative 'rubocop/cop/lint/useless_access_modifier'
403
419
  require_relative 'rubocop/cop/lint/useless_assignment'
404
420
  require_relative 'rubocop/cop/lint/useless_else_without_rescue'
405
421
  require_relative 'rubocop/cop/lint/useless_method_definition'
422
+ require_relative 'rubocop/cop/lint/useless_numeric_operation'
406
423
  require_relative 'rubocop/cop/lint/useless_rescue'
407
424
  require_relative 'rubocop/cop/lint/useless_ruby2_keywords'
408
425
  require_relative 'rubocop/cop/lint/useless_setter_call'
@@ -446,9 +463,11 @@ require_relative 'rubocop/cop/naming/variable_number'
446
463
  require_relative 'rubocop/cop/style/access_modifier_declarations'
447
464
  require_relative 'rubocop/cop/style/accessor_grouping'
448
465
  require_relative 'rubocop/cop/style/alias'
466
+ require_relative 'rubocop/cop/style/ambiguous_endless_method_definition'
449
467
  require_relative 'rubocop/cop/style/and_or'
450
468
  require_relative 'rubocop/cop/style/arguments_forwarding'
451
469
  require_relative 'rubocop/cop/style/array_coercion'
470
+ require_relative 'rubocop/cop/style/array_first_last'
452
471
  require_relative 'rubocop/cop/style/array_intersect'
453
472
  require_relative 'rubocop/cop/style/array_join'
454
473
  require_relative 'rubocop/cop/style/ascii_comments'
@@ -457,6 +476,7 @@ require_relative 'rubocop/cop/style/auto_resource_cleanup'
457
476
  require_relative 'rubocop/cop/style/bare_percent_literals'
458
477
  require_relative 'rubocop/cop/style/begin_block'
459
478
  require_relative 'rubocop/cop/style/bisected_attr_accessor'
479
+ require_relative 'rubocop/cop/style/bitwise_predicate'
460
480
  require_relative 'rubocop/cop/style/block_comments'
461
481
  require_relative 'rubocop/cop/style/block_delimiters'
462
482
  require_relative 'rubocop/cop/style/case_equality'
@@ -472,6 +492,7 @@ require_relative 'rubocop/cop/style/collection_compact'
472
492
  require_relative 'rubocop/cop/style/collection_methods'
473
493
  require_relative 'rubocop/cop/style/colon_method_call'
474
494
  require_relative 'rubocop/cop/style/colon_method_definition'
495
+ require_relative 'rubocop/cop/style/combinable_defined'
475
496
  require_relative 'rubocop/cop/style/combinable_loops'
476
497
  require_relative 'rubocop/cop/style/command_literal'
477
498
  require_relative 'rubocop/cop/style/comment_annotation'
@@ -507,6 +528,7 @@ require_relative 'rubocop/cop/style/end_block'
507
528
  require_relative 'rubocop/cop/style/env_home'
508
529
  require_relative 'rubocop/cop/style/eval_with_location'
509
530
  require_relative 'rubocop/cop/style/even_odd'
531
+ require_relative 'rubocop/cop/style/exact_regexp_match'
510
532
  require_relative 'rubocop/cop/style/expand_path_arguments'
511
533
  require_relative 'rubocop/cop/style/explicit_block_argument'
512
534
  require_relative 'rubocop/cop/style/exponential_notation'
@@ -543,11 +565,13 @@ require_relative 'rubocop/cop/style/inverse_methods'
543
565
  require_relative 'rubocop/cop/style/inline_comment'
544
566
  require_relative 'rubocop/cop/style/invertible_unless_condition'
545
567
  require_relative 'rubocop/cop/style/ip_addresses'
568
+ require_relative 'rubocop/cop/style/keyword_arguments_merging'
546
569
  require_relative 'rubocop/cop/style/keyword_parameters_order'
547
570
  require_relative 'rubocop/cop/style/lambda'
548
571
  require_relative 'rubocop/cop/style/lambda_call'
549
572
  require_relative 'rubocop/cop/style/line_end_concatenation'
550
573
  require_relative 'rubocop/cop/style/magic_comment_format'
574
+ require_relative 'rubocop/cop/style/map_into_array'
551
575
  require_relative 'rubocop/cop/style/map_to_hash'
552
576
  require_relative 'rubocop/cop/style/map_to_set'
553
577
  require_relative 'rubocop/cop/style/method_call_without_args_parentheses'
@@ -557,18 +581,26 @@ require_relative 'rubocop/cop/style/multiline_in_pattern_then'
557
581
  require_relative 'rubocop/cop/style/numbered_parameters'
558
582
  require_relative 'rubocop/cop/style/open_struct_use'
559
583
  require_relative 'rubocop/cop/style/operator_method_call'
584
+ require_relative 'rubocop/cop/style/redundant_array_constructor'
560
585
  require_relative 'rubocop/cop/style/redundant_assignment'
561
586
  require_relative 'rubocop/cop/style/redundant_constant_base'
587
+ require_relative 'rubocop/cop/style/redundant_current_directory_in_path'
562
588
  require_relative 'rubocop/cop/style/redundant_double_splat_hash_braces'
563
589
  require_relative 'rubocop/cop/style/redundant_each'
564
590
  require_relative 'rubocop/cop/style/redundant_fetch_block'
565
591
  require_relative 'rubocop/cop/style/redundant_file_extension_in_require'
592
+ require_relative 'rubocop/cop/style/redundant_filter_chain'
566
593
  require_relative 'rubocop/cop/style/redundant_heredoc_delimiter_quotes'
567
594
  require_relative 'rubocop/cop/style/redundant_initialize'
595
+ require_relative 'rubocop/cop/style/redundant_interpolation_unfreeze'
568
596
  require_relative 'rubocop/cop/style/redundant_line_continuation'
597
+ require_relative 'rubocop/cop/style/redundant_regexp_argument'
598
+ require_relative 'rubocop/cop/style/redundant_regexp_constructor'
569
599
  require_relative 'rubocop/cop/style/redundant_self_assignment'
570
600
  require_relative 'rubocop/cop/style/redundant_self_assignment_branch'
571
601
  require_relative 'rubocop/cop/style/require_order'
602
+ require_relative 'rubocop/cop/style/safe_navigation_chain_length'
603
+ require_relative 'rubocop/cop/style/single_line_do_end_block'
572
604
  require_relative 'rubocop/cop/style/sole_nested_conditional'
573
605
  require_relative 'rubocop/cop/style/static_class'
574
606
  require_relative 'rubocop/cop/style/map_compact_with_conditional_block'
@@ -643,12 +675,14 @@ require_relative 'rubocop/cop/style/regexp_literal'
643
675
  require_relative 'rubocop/cop/style/rescue_modifier'
644
676
  require_relative 'rubocop/cop/style/rescue_standard_error'
645
677
  require_relative 'rubocop/cop/style/return_nil'
678
+ require_relative 'rubocop/cop/style/return_nil_in_predicate_method_definition'
646
679
  require_relative 'rubocop/cop/style/safe_navigation'
647
680
  require_relative 'rubocop/cop/style/sample'
648
681
  require_relative 'rubocop/cop/style/select_by_regexp'
649
682
  require_relative 'rubocop/cop/style/self_assignment'
650
683
  require_relative 'rubocop/cop/style/semicolon'
651
684
  require_relative 'rubocop/cop/style/send'
685
+ require_relative 'rubocop/cop/style/send_with_literal_method_name'
652
686
  require_relative 'rubocop/cop/style/signal_exception'
653
687
  require_relative 'rubocop/cop/style/single_argument_dig'
654
688
  require_relative 'rubocop/cop/style/single_line_block_params'
@@ -665,6 +699,8 @@ require_relative 'rubocop/cop/style/string_literals_in_interpolation'
665
699
  require_relative 'rubocop/cop/style/string_methods'
666
700
  require_relative 'rubocop/cop/style/strip'
667
701
  require_relative 'rubocop/cop/style/struct_inheritance'
702
+ require_relative 'rubocop/cop/style/super_arguments'
703
+ require_relative 'rubocop/cop/style/super_with_args_parentheses'
668
704
  require_relative 'rubocop/cop/style/swap_values'
669
705
  require_relative 'rubocop/cop/style/symbol_array'
670
706
  require_relative 'rubocop/cop/style/symbol_literal'
@@ -689,6 +725,7 @@ require_relative 'rubocop/cop/style/when_then'
689
725
  require_relative 'rubocop/cop/style/while_until_do'
690
726
  require_relative 'rubocop/cop/style/while_until_modifier'
691
727
  require_relative 'rubocop/cop/style/word_array'
728
+ require_relative 'rubocop/cop/style/yaml_file_read'
692
729
  require_relative 'rubocop/cop/style/yoda_condition'
693
730
  require_relative 'rubocop/cop/style/yoda_expression'
694
731
  require_relative 'rubocop/cop/style/zero_length_predicate'
@@ -722,6 +759,7 @@ require_relative 'rubocop/config_store'
722
759
  require_relative 'rubocop/config_validator'
723
760
  require_relative 'rubocop/feature_loader'
724
761
  require_relative 'rubocop/lockfile'
762
+ require_relative 'rubocop/lsp'
725
763
  require_relative 'rubocop/target_finder'
726
764
  require_relative 'rubocop/directive_comment'
727
765
  require_relative 'rubocop/comment_config'
@@ -734,6 +772,7 @@ require_relative 'rubocop/cli/command/base'
734
772
  require_relative 'rubocop/cli/command/auto_generate_config'
735
773
  require_relative 'rubocop/cli/command/execute_runner'
736
774
  require_relative 'rubocop/cli/command/init_dotfile'
775
+ require_relative 'rubocop/cli/command/lsp'
737
776
  require_relative 'rubocop/cli/command/show_cops'
738
777
  require_relative 'rubocop/cli/command/show_docs_url'
739
778
  require_relative 'rubocop/cli/command/suggest_extensions'