rubocop 1.41.1 → 1.57.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (423) hide show
  1. checksums.yaml +4 -4
  2. data/LICENSE.txt +1 -1
  3. data/README.md +6 -4
  4. data/config/default.yml +243 -48
  5. data/config/obsoletion.yml +5 -0
  6. data/lib/rubocop/cli/command/auto_generate_config.rb +7 -0
  7. data/lib/rubocop/cli/command/execute_runner.rb +7 -2
  8. data/lib/rubocop/cli/command/lsp.rb +19 -0
  9. data/lib/rubocop/cli.rb +59 -10
  10. data/lib/rubocop/comment_config.rb +19 -0
  11. data/lib/rubocop/config.rb +14 -10
  12. data/lib/rubocop/config_finder.rb +2 -2
  13. data/lib/rubocop/config_loader.rb +20 -23
  14. data/lib/rubocop/config_loader_resolver.rb +5 -1
  15. data/lib/rubocop/config_obsoletion/parameter_rule.rb +9 -1
  16. data/lib/rubocop/config_obsoletion.rb +2 -2
  17. data/lib/rubocop/cop/autocorrect_logic.rb +31 -13
  18. data/lib/rubocop/cop/base.rb +96 -73
  19. data/lib/rubocop/cop/bundler/duplicated_gem.rb +1 -0
  20. data/lib/rubocop/cop/bundler/duplicated_group.rb +127 -0
  21. data/lib/rubocop/cop/bundler/gem_comment.rb +2 -2
  22. data/lib/rubocop/cop/bundler/gem_version.rb +2 -2
  23. data/lib/rubocop/cop/bundler/ordered_gems.rb +9 -1
  24. data/lib/rubocop/cop/commissioner.rb +8 -2
  25. data/lib/rubocop/cop/cop.rb +53 -33
  26. data/lib/rubocop/cop/corrector.rb +31 -11
  27. data/lib/rubocop/cop/correctors/alignment_corrector.rb +3 -3
  28. data/lib/rubocop/cop/correctors/each_to_for_corrector.rb +3 -3
  29. data/lib/rubocop/cop/correctors/for_to_each_corrector.rb +3 -3
  30. data/lib/rubocop/cop/correctors/lambda_literal_to_method_corrector.rb +7 -4
  31. data/lib/rubocop/cop/correctors/line_break_corrector.rb +1 -1
  32. data/lib/rubocop/cop/correctors/multiline_literal_brace_corrector.rb +2 -2
  33. data/lib/rubocop/cop/correctors/ordered_gem_corrector.rb +2 -7
  34. data/lib/rubocop/cop/correctors/parentheses_corrector.rb +1 -1
  35. data/lib/rubocop/cop/correctors/percent_literal_corrector.rb +2 -2
  36. data/lib/rubocop/cop/gemspec/dependency_version.rb +19 -21
  37. data/lib/rubocop/cop/gemspec/deprecated_attribute_assignment.rb +1 -1
  38. data/lib/rubocop/cop/gemspec/development_dependencies.rb +107 -0
  39. data/lib/rubocop/cop/gemspec/ordered_dependencies.rb +9 -1
  40. data/lib/rubocop/cop/generator/require_file_injector.rb +1 -1
  41. data/lib/rubocop/cop/internal_affairs/cop_description.rb +37 -13
  42. data/lib/rubocop/cop/internal_affairs/example_description.rb +42 -21
  43. data/lib/rubocop/cop/internal_affairs/example_heredoc_delimiter.rb +3 -3
  44. data/lib/rubocop/cop/internal_affairs/inherit_deprecated_cop_class.rb +1 -1
  45. data/lib/rubocop/cop/internal_affairs/location_expression.rb +37 -0
  46. data/lib/rubocop/cop/internal_affairs/location_line_equality_comparison.rb +3 -1
  47. data/lib/rubocop/cop/internal_affairs/node_matcher_directive.rb +6 -6
  48. data/lib/rubocop/cop/internal_affairs/node_type_predicate.rb +1 -1
  49. data/lib/rubocop/cop/internal_affairs/processed_source_buffer_name.rb +42 -0
  50. data/lib/rubocop/cop/internal_affairs/redundant_let_rubocop_config_new.rb +11 -3
  51. data/lib/rubocop/cop/internal_affairs/redundant_location_argument.rb +1 -1
  52. data/lib/rubocop/cop/internal_affairs/redundant_message_argument.rb +1 -1
  53. data/lib/rubocop/cop/internal_affairs/redundant_method_dispatch_node.rb +11 -2
  54. data/lib/rubocop/cop/internal_affairs/redundant_source_range.rb +66 -0
  55. data/lib/rubocop/cop/internal_affairs/useless_message_assertion.rb +2 -0
  56. data/lib/rubocop/cop/internal_affairs.rb +3 -0
  57. data/lib/rubocop/cop/layout/array_alignment.rb +1 -1
  58. data/lib/rubocop/cop/layout/block_end_newline.rb +7 -15
  59. data/lib/rubocop/cop/layout/class_structure.rb +44 -26
  60. data/lib/rubocop/cop/layout/closing_heredoc_indentation.rb +2 -3
  61. data/lib/rubocop/cop/layout/closing_parenthesis_indentation.rb +2 -6
  62. data/lib/rubocop/cop/layout/comment_indentation.rb +3 -1
  63. data/lib/rubocop/cop/layout/dot_position.rb +1 -5
  64. data/lib/rubocop/cop/layout/empty_comment.rb +3 -3
  65. data/lib/rubocop/cop/layout/empty_line_after_guard_clause.rb +42 -9
  66. data/lib/rubocop/cop/layout/empty_line_between_defs.rb +28 -5
  67. data/lib/rubocop/cop/layout/empty_lines.rb +1 -1
  68. data/lib/rubocop/cop/layout/empty_lines_around_access_modifier.rb +2 -0
  69. data/lib/rubocop/cop/layout/empty_lines_around_exception_handling_keywords.rb +2 -0
  70. data/lib/rubocop/cop/layout/end_alignment.rb +9 -1
  71. data/lib/rubocop/cop/layout/extra_spacing.rb +6 -1
  72. data/lib/rubocop/cop/layout/first_argument_indentation.rb +8 -3
  73. data/lib/rubocop/cop/layout/first_array_element_line_break.rb +25 -34
  74. data/lib/rubocop/cop/layout/first_hash_element_line_break.rb +7 -19
  75. data/lib/rubocop/cop/layout/first_method_argument_line_break.rb +42 -52
  76. data/lib/rubocop/cop/layout/first_method_parameter_line_break.rb +38 -55
  77. data/lib/rubocop/cop/layout/heredoc_argument_closing_parenthesis.rb +10 -4
  78. data/lib/rubocop/cop/layout/heredoc_indentation.rb +11 -11
  79. data/lib/rubocop/cop/layout/indentation_style.rb +5 -2
  80. data/lib/rubocop/cop/layout/indentation_width.rb +3 -3
  81. data/lib/rubocop/cop/layout/initial_indentation.rb +1 -1
  82. data/lib/rubocop/cop/layout/leading_comment_space.rb +2 -2
  83. data/lib/rubocop/cop/layout/line_continuation_leading_space.rb +18 -12
  84. data/lib/rubocop/cop/layout/line_continuation_spacing.rb +17 -13
  85. data/lib/rubocop/cop/layout/line_end_string_concatenation_indentation.rb +2 -0
  86. data/lib/rubocop/cop/layout/multiline_array_line_breaks.rb +8 -27
  87. data/lib/rubocop/cop/layout/multiline_block_layout.rb +1 -1
  88. data/lib/rubocop/cop/layout/multiline_hash_key_line_breaks.rb +7 -26
  89. data/lib/rubocop/cop/layout/multiline_method_argument_line_breaks.rb +4 -21
  90. data/lib/rubocop/cop/layout/multiline_method_call_indentation.rb +18 -3
  91. data/lib/rubocop/cop/layout/multiline_method_parameter_line_breaks.rb +6 -30
  92. data/lib/rubocop/cop/layout/redundant_line_break.rb +20 -11
  93. data/lib/rubocop/cop/layout/rescue_ensure_alignment.rb +2 -2
  94. data/lib/rubocop/cop/layout/space_after_comma.rb +9 -1
  95. data/lib/rubocop/cop/layout/space_after_not.rb +1 -1
  96. data/lib/rubocop/cop/layout/space_around_keyword.rb +2 -2
  97. data/lib/rubocop/cop/layout/space_around_method_call_operator.rb +2 -2
  98. data/lib/rubocop/cop/layout/space_around_operators.rb +4 -2
  99. data/lib/rubocop/cop/layout/space_before_first_arg.rb +1 -1
  100. data/lib/rubocop/cop/layout/space_in_lambda_literal.rb +2 -2
  101. data/lib/rubocop/cop/layout/space_inside_array_literal_brackets.rb +11 -13
  102. data/lib/rubocop/cop/layout/space_inside_block_braces.rb +3 -1
  103. data/lib/rubocop/cop/layout/space_inside_parens.rb +3 -3
  104. data/lib/rubocop/cop/layout/space_inside_percent_literal_delimiters.rb +1 -1
  105. data/lib/rubocop/cop/layout/space_inside_range_literal.rb +1 -1
  106. data/lib/rubocop/cop/layout/space_inside_reference_brackets.rb +4 -4
  107. data/lib/rubocop/cop/layout/space_inside_string_interpolation.rb +5 -4
  108. data/lib/rubocop/cop/layout/trailing_empty_lines.rb +5 -0
  109. data/lib/rubocop/cop/layout/trailing_whitespace.rb +6 -3
  110. data/lib/rubocop/cop/lint/ambiguous_block_association.rb +13 -1
  111. data/lib/rubocop/cop/lint/ambiguous_operator.rb +4 -0
  112. data/lib/rubocop/cop/lint/constant_resolution.rb +1 -1
  113. data/lib/rubocop/cop/lint/debugger.rb +22 -25
  114. data/lib/rubocop/cop/lint/deprecated_class_methods.rb +62 -112
  115. data/lib/rubocop/cop/lint/deprecated_open_ssl_constant.rb +1 -1
  116. data/lib/rubocop/cop/lint/duplicate_hash_key.rb +2 -1
  117. data/lib/rubocop/cop/lint/duplicate_match_pattern.rb +122 -0
  118. data/lib/rubocop/cop/lint/duplicate_methods.rb +2 -2
  119. data/lib/rubocop/cop/lint/duplicate_regexp_character_class_element.rb +47 -22
  120. data/lib/rubocop/cop/lint/else_layout.rb +3 -7
  121. data/lib/rubocop/cop/lint/empty_block.rb +2 -2
  122. data/lib/rubocop/cop/lint/empty_conditional_body.rb +4 -2
  123. data/lib/rubocop/cop/lint/empty_interpolation.rb +1 -1
  124. data/lib/rubocop/cop/lint/erb_new_arguments.rb +3 -4
  125. data/lib/rubocop/cop/lint/format_parameter_mismatch.rb +14 -7
  126. data/lib/rubocop/cop/lint/heredoc_method_call_position.rb +16 -18
  127. data/lib/rubocop/cop/lint/identity_comparison.rb +0 -1
  128. data/lib/rubocop/cop/lint/implicit_string_concatenation.rb +1 -1
  129. data/lib/rubocop/cop/lint/incompatible_io_select_with_fiber_scheduler.rb +5 -3
  130. data/lib/rubocop/cop/lint/ineffective_access_modifier.rb +1 -1
  131. data/lib/rubocop/cop/lint/inherit_exception.rb +9 -0
  132. data/lib/rubocop/cop/lint/lambda_without_literal_block.rb +1 -1
  133. data/lib/rubocop/cop/lint/literal_in_interpolation.rb +47 -5
  134. data/lib/rubocop/cop/lint/missing_super.rb +63 -5
  135. data/lib/rubocop/cop/lint/mixed_case_range.rb +111 -0
  136. data/lib/rubocop/cop/lint/mixed_regexp_capture_types.rb +1 -0
  137. data/lib/rubocop/cop/lint/nested_method_definition.rb +4 -9
  138. data/lib/rubocop/cop/lint/non_atomic_file_operation.rb +10 -7
  139. data/lib/rubocop/cop/lint/number_conversion.rb +5 -0
  140. data/lib/rubocop/cop/lint/numbered_parameter_assignment.rb +2 -2
  141. data/lib/rubocop/cop/lint/or_assignment_to_constant.rb +2 -0
  142. data/lib/rubocop/cop/lint/ordered_magic_comments.rb +0 -1
  143. data/lib/rubocop/cop/lint/out_of_range_regexp_ref.rb +16 -1
  144. data/lib/rubocop/cop/lint/percent_string_array.rb +1 -1
  145. data/lib/rubocop/cop/lint/percent_symbol_array.rb +1 -1
  146. data/lib/rubocop/cop/lint/redundant_cop_disable_directive.rb +11 -5
  147. data/lib/rubocop/cop/lint/redundant_cop_enable_directive.rb +5 -5
  148. data/lib/rubocop/cop/lint/redundant_regexp_quantifiers.rb +130 -0
  149. data/lib/rubocop/cop/lint/redundant_require_statement.rb +21 -2
  150. data/lib/rubocop/cop/lint/redundant_safe_navigation.rb +20 -4
  151. data/lib/rubocop/cop/lint/redundant_splat_expansion.rb +1 -1
  152. data/lib/rubocop/cop/lint/redundant_string_coercion.rb +35 -15
  153. data/lib/rubocop/cop/lint/redundant_with_index.rb +1 -1
  154. data/lib/rubocop/cop/lint/redundant_with_object.rb +1 -1
  155. data/lib/rubocop/cop/lint/refinement_import_methods.rb +2 -1
  156. data/lib/rubocop/cop/lint/regexp_as_condition.rb +6 -0
  157. data/lib/rubocop/cop/lint/require_parentheses.rb +3 -1
  158. data/lib/rubocop/cop/lint/rescue_type.rb +3 -3
  159. data/lib/rubocop/cop/lint/safe_navigation_chain.rb +11 -4
  160. data/lib/rubocop/cop/lint/safe_navigation_consistency.rb +1 -1
  161. data/lib/rubocop/cop/lint/script_permission.rb +1 -1
  162. data/lib/rubocop/cop/lint/send_with_mixin_argument.rb +1 -2
  163. data/lib/rubocop/cop/lint/shadowed_exception.rb +6 -12
  164. data/lib/rubocop/cop/lint/shadowing_outer_local_variable.rb +7 -1
  165. data/lib/rubocop/cop/lint/struct_new_override.rb +12 -12
  166. data/lib/rubocop/cop/lint/suppressed_exception.rb +2 -2
  167. data/lib/rubocop/cop/lint/symbol_conversion.rb +1 -1
  168. data/lib/rubocop/cop/lint/syntax.rb +4 -0
  169. data/lib/rubocop/cop/lint/to_enum_arguments.rb +18 -6
  170. data/lib/rubocop/cop/lint/top_level_return_with_argument.rb +23 -9
  171. data/lib/rubocop/cop/lint/unreachable_loop.rb +3 -3
  172. data/lib/rubocop/cop/lint/unused_method_argument.rb +2 -1
  173. data/lib/rubocop/cop/lint/useless_access_modifier.rb +10 -7
  174. data/lib/rubocop/cop/lint/useless_assignment.rb +94 -10
  175. data/lib/rubocop/cop/lint/useless_method_definition.rb +12 -4
  176. data/lib/rubocop/cop/lint/useless_rescue.rb +89 -0
  177. data/lib/rubocop/cop/lint/useless_ruby2_keywords.rb +14 -4
  178. data/lib/rubocop/cop/lint/useless_times.rb +1 -1
  179. data/lib/rubocop/cop/lint/void.rb +79 -16
  180. data/lib/rubocop/cop/metrics/block_length.rb +2 -2
  181. data/lib/rubocop/cop/metrics/block_nesting.rb +2 -2
  182. data/lib/rubocop/cop/metrics/class_length.rb +3 -2
  183. data/lib/rubocop/cop/metrics/collection_literal_length.rb +76 -0
  184. data/lib/rubocop/cop/metrics/cyclomatic_complexity.rb +1 -1
  185. data/lib/rubocop/cop/metrics/method_length.rb +1 -1
  186. data/lib/rubocop/cop/metrics/parameter_lists.rb +27 -0
  187. data/lib/rubocop/cop/metrics/perceived_complexity.rb +1 -1
  188. data/lib/rubocop/cop/metrics/utils/abc_size_calculator.rb +4 -8
  189. data/lib/rubocop/cop/metrics/utils/code_length_calculator.rb +33 -5
  190. data/lib/rubocop/cop/migration/department_name.rb +3 -3
  191. data/lib/rubocop/cop/mixin/alignment.rb +1 -1
  192. data/lib/rubocop/cop/mixin/allowed_methods.rb +3 -1
  193. data/lib/rubocop/cop/mixin/allowed_receivers.rb +34 -0
  194. data/lib/rubocop/cop/mixin/annotation_comment.rb +2 -2
  195. data/lib/rubocop/cop/mixin/code_length.rb +1 -1
  196. data/lib/rubocop/cop/mixin/comments_help.rb +13 -7
  197. data/lib/rubocop/cop/mixin/def_node.rb +1 -1
  198. data/lib/rubocop/cop/mixin/documentation_comment.rb +1 -1
  199. data/lib/rubocop/cop/mixin/end_keyword_alignment.rb +1 -1
  200. data/lib/rubocop/cop/mixin/hash_alignment_styles.rb +1 -1
  201. data/lib/rubocop/cop/mixin/hash_shorthand_syntax.rb +62 -23
  202. data/lib/rubocop/cop/mixin/hash_transform_method.rb +3 -3
  203. data/lib/rubocop/cop/mixin/heredoc.rb +6 -2
  204. data/lib/rubocop/cop/mixin/line_length_help.rb +3 -1
  205. data/lib/rubocop/cop/mixin/min_branches_count.rb +40 -0
  206. data/lib/rubocop/cop/mixin/multiline_element_line_breaks.rb +0 -3
  207. data/lib/rubocop/cop/mixin/multiline_expression_indentation.rb +3 -2
  208. data/lib/rubocop/cop/mixin/ordered_gem_node.rb +1 -1
  209. data/lib/rubocop/cop/mixin/percent_literal.rb +1 -1
  210. data/lib/rubocop/cop/mixin/preceding_following_alignment.rb +6 -8
  211. data/lib/rubocop/cop/mixin/range_help.rb +1 -6
  212. data/lib/rubocop/cop/mixin/space_after_punctuation.rb +1 -1
  213. data/lib/rubocop/cop/mixin/statement_modifier.rb +4 -3
  214. data/lib/rubocop/cop/mixin/string_help.rb +4 -2
  215. data/lib/rubocop/cop/mixin/surrounding_space.rb +3 -3
  216. data/lib/rubocop/cop/mixin/trailing_comma.rb +3 -3
  217. data/lib/rubocop/cop/naming/ascii_identifiers.rb +1 -1
  218. data/lib/rubocop/cop/naming/block_forwarding.rb +5 -1
  219. data/lib/rubocop/cop/naming/class_and_module_camel_case.rb +1 -1
  220. data/lib/rubocop/cop/naming/constant_name.rb +1 -1
  221. data/lib/rubocop/cop/naming/file_name.rb +1 -1
  222. data/lib/rubocop/cop/naming/heredoc_delimiter_case.rb +1 -1
  223. data/lib/rubocop/cop/naming/heredoc_delimiter_naming.rb +3 -1
  224. data/lib/rubocop/cop/naming/inclusive_language.rb +23 -4
  225. data/lib/rubocop/cop/naming/memoized_instance_variable_name.rb +25 -10
  226. data/lib/rubocop/cop/naming/method_name.rb +3 -3
  227. data/lib/rubocop/cop/naming/predicate_name.rb +1 -1
  228. data/lib/rubocop/cop/naming/rescued_exceptions_variable_name.rb +12 -4
  229. data/lib/rubocop/cop/naming/variable_name.rb +6 -1
  230. data/lib/rubocop/cop/registry.rb +37 -30
  231. data/lib/rubocop/cop/security/compound_hash.rb +2 -1
  232. data/lib/rubocop/cop/style/access_modifier_declarations.rb +26 -11
  233. data/lib/rubocop/cop/style/accessor_grouping.rb +43 -17
  234. data/lib/rubocop/cop/style/alias.rb +9 -8
  235. data/lib/rubocop/cop/style/arguments_forwarding.rb +280 -62
  236. data/lib/rubocop/cop/style/array_intersect.rb +14 -6
  237. data/lib/rubocop/cop/style/ascii_comments.rb +1 -1
  238. data/lib/rubocop/cop/style/attr.rb +11 -1
  239. data/lib/rubocop/cop/style/begin_block.rb +1 -2
  240. data/lib/rubocop/cop/style/bisected_attr_accessor.rb +1 -1
  241. data/lib/rubocop/cop/style/block_comments.rb +3 -3
  242. data/lib/rubocop/cop/style/block_delimiters.rb +22 -6
  243. data/lib/rubocop/cop/style/case_like_if.rb +20 -3
  244. data/lib/rubocop/cop/style/class_and_module_children.rb +5 -12
  245. data/lib/rubocop/cop/style/class_equality_comparison.rb +58 -40
  246. data/lib/rubocop/cop/style/collection_compact.rb +20 -7
  247. data/lib/rubocop/cop/style/collection_methods.rb +2 -0
  248. data/lib/rubocop/cop/style/colon_method_call.rb +2 -2
  249. data/lib/rubocop/cop/style/combinable_loops.rb +30 -8
  250. data/lib/rubocop/cop/style/command_literal.rb +1 -1
  251. data/lib/rubocop/cop/style/comment_annotation.rb +1 -1
  252. data/lib/rubocop/cop/style/commented_keyword.rb +2 -2
  253. data/lib/rubocop/cop/style/comparable_clamp.rb +125 -0
  254. data/lib/rubocop/cop/style/concat_array_literals.rb +32 -4
  255. data/lib/rubocop/cop/style/conditional_assignment.rb +11 -15
  256. data/lib/rubocop/cop/style/copyright.rb +6 -3
  257. data/lib/rubocop/cop/style/data_inheritance.rb +75 -0
  258. data/lib/rubocop/cop/style/dir.rb +1 -1
  259. data/lib/rubocop/cop/style/dir_empty.rb +54 -0
  260. data/lib/rubocop/cop/style/disable_cops_within_source_code_directive.rb +2 -2
  261. data/lib/rubocop/cop/style/document_dynamic_eval_definition.rb +3 -3
  262. data/lib/rubocop/cop/style/documentation.rb +12 -6
  263. data/lib/rubocop/cop/style/documentation_method.rb +10 -4
  264. data/lib/rubocop/cop/style/double_negation.rb +2 -2
  265. data/lib/rubocop/cop/style/each_with_object.rb +1 -1
  266. data/lib/rubocop/cop/style/empty_block_parameter.rb +1 -1
  267. data/lib/rubocop/cop/style/empty_case_condition.rb +6 -1
  268. data/lib/rubocop/cop/style/empty_lambda_parameter.rb +1 -1
  269. data/lib/rubocop/cop/style/eval_with_location.rb +8 -8
  270. data/lib/rubocop/cop/style/exact_regexp_match.rb +68 -0
  271. data/lib/rubocop/cop/style/explicit_block_argument.rb +1 -1
  272. data/lib/rubocop/cop/style/file_empty.rb +71 -0
  273. data/lib/rubocop/cop/style/file_read.rb +3 -3
  274. data/lib/rubocop/cop/style/file_write.rb +1 -1
  275. data/lib/rubocop/cop/style/for.rb +1 -1
  276. data/lib/rubocop/cop/style/format_string.rb +24 -3
  277. data/lib/rubocop/cop/style/frozen_string_literal_comment.rb +4 -2
  278. data/lib/rubocop/cop/style/guard_clause.rb +40 -8
  279. data/lib/rubocop/cop/style/hash_conversion.rb +10 -0
  280. data/lib/rubocop/cop/style/hash_each_methods.rb +1 -10
  281. data/lib/rubocop/cop/style/hash_except.rb +23 -12
  282. data/lib/rubocop/cop/style/hash_like_case.rb +3 -9
  283. data/lib/rubocop/cop/style/hash_syntax.rb +16 -9
  284. data/lib/rubocop/cop/style/hash_transform_keys.rb +2 -2
  285. data/lib/rubocop/cop/style/hash_transform_values.rb +2 -2
  286. data/lib/rubocop/cop/style/identical_conditional_branches.rb +36 -3
  287. data/lib/rubocop/cop/style/if_inside_else.rb +6 -0
  288. data/lib/rubocop/cop/style/if_unless_modifier.rb +111 -15
  289. data/lib/rubocop/cop/style/if_with_boolean_literal_branches.rb +2 -0
  290. data/lib/rubocop/cop/style/if_with_semicolon.rb +2 -2
  291. data/lib/rubocop/cop/style/infinite_loop.rb +2 -5
  292. data/lib/rubocop/cop/style/inverse_methods.rb +5 -5
  293. data/lib/rubocop/cop/style/invertible_unless_condition.rb +118 -0
  294. data/lib/rubocop/cop/style/lambda.rb +3 -3
  295. data/lib/rubocop/cop/style/lambda_call.rb +5 -0
  296. data/lib/rubocop/cop/style/map_compact_with_conditional_block.rb +2 -2
  297. data/lib/rubocop/cop/style/map_to_hash.rb +4 -1
  298. data/lib/rubocop/cop/style/map_to_set.rb +64 -0
  299. data/lib/rubocop/cop/style/method_call_with_args_parentheses/omit_parentheses.rb +35 -24
  300. data/lib/rubocop/cop/style/method_call_with_args_parentheses.rb +44 -37
  301. data/lib/rubocop/cop/style/method_call_without_args_parentheses.rb +2 -0
  302. data/lib/rubocop/cop/style/method_def_parentheses.rb +11 -4
  303. data/lib/rubocop/cop/style/min_max.rb +3 -3
  304. data/lib/rubocop/cop/style/min_max_comparison.rb +83 -0
  305. data/lib/rubocop/cop/style/missing_else.rb +13 -1
  306. data/lib/rubocop/cop/style/mixin_grouping.rb +5 -5
  307. data/lib/rubocop/cop/style/multiline_block_chain.rb +1 -1
  308. data/lib/rubocop/cop/style/multiline_if_modifier.rb +0 -4
  309. data/lib/rubocop/cop/style/multiline_memoization.rb +2 -2
  310. data/lib/rubocop/cop/style/multiline_method_signature.rb +7 -4
  311. data/lib/rubocop/cop/style/multiline_ternary_operator.rb +19 -4
  312. data/lib/rubocop/cop/style/multiple_comparison.rb +14 -0
  313. data/lib/rubocop/cop/style/negated_if_else_condition.rb +13 -12
  314. data/lib/rubocop/cop/style/nested_ternary_operator.rb +3 -11
  315. data/lib/rubocop/cop/style/nil_lambda.rb +2 -2
  316. data/lib/rubocop/cop/style/numbered_parameters_limit.rb +11 -3
  317. data/lib/rubocop/cop/style/numeric_literals.rb +1 -1
  318. data/lib/rubocop/cop/style/one_line_conditional.rb +3 -6
  319. data/lib/rubocop/cop/style/open_struct_use.rb +1 -1
  320. data/lib/rubocop/cop/style/operator_method_call.rb +22 -2
  321. data/lib/rubocop/cop/style/parallel_assignment.rb +29 -19
  322. data/lib/rubocop/cop/style/percent_literal_delimiters.rb +2 -3
  323. data/lib/rubocop/cop/style/percent_q_literals.rb +1 -1
  324. data/lib/rubocop/cop/style/preferred_hash_methods.rb +1 -1
  325. data/lib/rubocop/cop/style/redundant_argument.rb +6 -1
  326. data/lib/rubocop/cop/style/redundant_array_constructor.rb +77 -0
  327. data/lib/rubocop/cop/style/redundant_begin.rb +10 -2
  328. data/lib/rubocop/cop/style/redundant_condition.rb +18 -3
  329. data/lib/rubocop/cop/style/redundant_conditional.rb +2 -14
  330. data/lib/rubocop/cop/style/redundant_current_directory_in_path.rb +38 -0
  331. data/lib/rubocop/cop/style/redundant_double_splat_hash_braces.rb +96 -9
  332. data/lib/rubocop/cop/style/redundant_exception.rb +32 -12
  333. data/lib/rubocop/cop/style/redundant_fetch_block.rb +6 -4
  334. data/lib/rubocop/cop/style/redundant_filter_chain.rb +117 -0
  335. data/lib/rubocop/cop/style/redundant_heredoc_delimiter_quotes.rb +58 -0
  336. data/lib/rubocop/cop/style/redundant_interpolation.rb +2 -2
  337. data/lib/rubocop/cop/style/redundant_line_continuation.rb +183 -0
  338. data/lib/rubocop/cop/style/redundant_parentheses.rb +26 -8
  339. data/lib/rubocop/cop/style/redundant_percent_q.rb +1 -1
  340. data/lib/rubocop/cop/style/redundant_regexp_argument.rb +100 -0
  341. data/lib/rubocop/cop/style/redundant_regexp_character_class.rb +7 -8
  342. data/lib/rubocop/cop/style/redundant_regexp_constructor.rb +46 -0
  343. data/lib/rubocop/cop/style/redundant_regexp_escape.rb +13 -4
  344. data/lib/rubocop/cop/style/redundant_return.rb +7 -2
  345. data/lib/rubocop/cop/style/redundant_self_assignment_branch.rb +8 -1
  346. data/lib/rubocop/cop/style/redundant_sort.rb +4 -4
  347. data/lib/rubocop/cop/style/redundant_string_escape.rb +9 -6
  348. data/lib/rubocop/cop/style/regexp_literal.rb +11 -2
  349. data/lib/rubocop/cop/style/require_order.rb +16 -17
  350. data/lib/rubocop/cop/style/rescue_modifier.rb +1 -3
  351. data/lib/rubocop/cop/style/rescue_standard_error.rb +2 -2
  352. data/lib/rubocop/cop/style/return_nil.rb +6 -2
  353. data/lib/rubocop/cop/style/return_nil_in_predicate_method_definition.rb +95 -0
  354. data/lib/rubocop/cop/style/safe_navigation.rb +2 -2
  355. data/lib/rubocop/cop/style/select_by_regexp.rb +20 -6
  356. data/lib/rubocop/cop/style/self_assignment.rb +2 -2
  357. data/lib/rubocop/cop/style/semicolon.rb +35 -5
  358. data/lib/rubocop/cop/style/signal_exception.rb +9 -7
  359. data/lib/rubocop/cop/style/single_line_do_end_block.rb +65 -0
  360. data/lib/rubocop/cop/style/single_line_methods.rb +1 -1
  361. data/lib/rubocop/cop/style/slicing_with_range.rb +1 -1
  362. data/lib/rubocop/cop/style/sole_nested_conditional.rb +9 -5
  363. data/lib/rubocop/cop/style/special_global_vars.rb +3 -4
  364. data/lib/rubocop/cop/style/stderr_puts.rb +1 -1
  365. data/lib/rubocop/cop/style/string_hash_keys.rb +4 -1
  366. data/lib/rubocop/cop/style/string_literals_in_interpolation.rb +30 -5
  367. data/lib/rubocop/cop/style/struct_inheritance.rb +1 -1
  368. data/lib/rubocop/cop/style/symbol_array.rb +35 -15
  369. data/lib/rubocop/cop/style/trailing_body_on_class.rb +1 -0
  370. data/lib/rubocop/cop/style/trailing_comma_in_arguments.rb +4 -4
  371. data/lib/rubocop/cop/style/trailing_underscore_variable.rb +1 -1
  372. data/lib/rubocop/cop/style/trivial_accessors.rb +1 -1
  373. data/lib/rubocop/cop/style/unless_logical_operators.rb +1 -0
  374. data/lib/rubocop/cop/style/unpack_first.rb +3 -3
  375. data/lib/rubocop/cop/style/word_array.rb +54 -1
  376. data/lib/rubocop/cop/style/yaml_file_read.rb +66 -0
  377. data/lib/rubocop/cop/style/yoda_condition.rb +17 -8
  378. data/lib/rubocop/cop/style/yoda_expression.rb +91 -0
  379. data/lib/rubocop/cop/style/zero_length_predicate.rb +40 -19
  380. data/lib/rubocop/cop/team.rb +60 -52
  381. data/lib/rubocop/cop/util.rb +14 -5
  382. data/lib/rubocop/cop/utils/regexp_ranges.rb +113 -0
  383. data/lib/rubocop/cop/variable_force/assignment.rb +45 -4
  384. data/lib/rubocop/cop/variable_force/scope.rb +3 -3
  385. data/lib/rubocop/cop/variable_force/variable.rb +5 -3
  386. data/lib/rubocop/cop/variable_force/variable_table.rb +5 -3
  387. data/lib/rubocop/cop/variable_force.rb +2 -4
  388. data/lib/rubocop/cops_documentation_generator.rb +11 -4
  389. data/lib/rubocop/directive_comment.rb +3 -3
  390. data/lib/rubocop/ext/comment.rb +18 -0
  391. data/lib/rubocop/ext/regexp_node.rb +1 -1
  392. data/lib/rubocop/ext/regexp_parser.rb +5 -2
  393. data/lib/rubocop/file_finder.rb +4 -7
  394. data/lib/rubocop/formatter/junit_formatter.rb +4 -1
  395. data/lib/rubocop/formatter/simple_text_formatter.rb +1 -1
  396. data/lib/rubocop/formatter.rb +0 -1
  397. data/lib/rubocop/lsp/logger.rb +22 -0
  398. data/lib/rubocop/lsp/routes.rb +246 -0
  399. data/lib/rubocop/lsp/runtime.rb +99 -0
  400. data/lib/rubocop/lsp/server.rb +68 -0
  401. data/lib/rubocop/lsp/severity.rb +27 -0
  402. data/lib/rubocop/magic_comment.rb +12 -10
  403. data/lib/rubocop/options.rb +37 -3
  404. data/lib/rubocop/path_util.rb +17 -7
  405. data/lib/rubocop/result_cache.rb +7 -3
  406. data/lib/rubocop/rspec/cop_helper.rb +2 -2
  407. data/lib/rubocop/rspec/expect_offense.rb +6 -4
  408. data/lib/rubocop/rspec/shared_contexts.rb +6 -3
  409. data/lib/rubocop/rspec/support.rb +1 -0
  410. data/lib/rubocop/runner.rb +55 -10
  411. data/lib/rubocop/server/cache.rb +12 -4
  412. data/lib/rubocop/server/cli.rb +37 -18
  413. data/lib/rubocop/server/client_command/exec.rb +4 -3
  414. data/lib/rubocop/server/client_command/start.rb +6 -1
  415. data/lib/rubocop/server/core.rb +24 -9
  416. data/lib/rubocop/server/helper.rb +1 -1
  417. data/lib/rubocop/server/server_command/exec.rb +1 -1
  418. data/lib/rubocop/string_interpreter.rb +3 -3
  419. data/lib/rubocop/target_finder.rb +7 -3
  420. data/lib/rubocop/target_ruby.rb +13 -9
  421. data/lib/rubocop/version.rb +10 -6
  422. data/lib/rubocop.rb +31 -0
  423. metadata +84 -37
data/config/default.yml CHANGED
@@ -30,6 +30,7 @@ AllCops:
30
30
  - '**/*.rbx'
31
31
  - '**/*.ru'
32
32
  - '**/*.ruby'
33
+ - '**/*.schema'
33
34
  - '**/*.spec'
34
35
  - '**/*.thor'
35
36
  - '**/*.watchr'
@@ -55,6 +56,7 @@ AllCops:
55
56
  - '**/Puppetfile'
56
57
  - '**/Rakefile'
57
58
  - '**/rakefile'
59
+ - '**/Schemafile'
58
60
  - '**/Snapfile'
59
61
  - '**/Steepfile'
60
62
  - '**/Thorfile'
@@ -140,7 +142,7 @@ AllCops:
140
142
  # or gems.locked file. (Although the Ruby version is specified in the Gemfile
141
143
  # or gems.rb file, RuboCop reads the final value from the lock file.) If the
142
144
  # Ruby version is still unresolved, RuboCop will use the oldest officially
143
- # supported Ruby version (currently Ruby 2.6).
145
+ # supported Ruby version (currently Ruby 2.7).
144
146
  TargetRubyVersion: ~
145
147
  # Determines if a notification for extension libraries should be shown when
146
148
  # rubocop is run. Keys are the name of the extension, and values are an array
@@ -153,6 +155,8 @@ AllCops:
153
155
  rubocop-sequel: [sequel]
154
156
  rubocop-rake: [rake]
155
157
  rubocop-graphql: [graphql]
158
+ rubocop-capybara: [capybara]
159
+ rubocop-factory_bot: [factory_bot, factory_bot_rails]
156
160
  # Enable/Disable checking the methods extended by Active Support.
157
161
  ActiveSupportExtensionsEnabled: false
158
162
 
@@ -169,6 +173,16 @@ Bundler/DuplicatedGem:
169
173
  - '**/Gemfile'
170
174
  - '**/gems.rb'
171
175
 
176
+ Bundler/DuplicatedGroup:
177
+ Description: 'Checks for duplicate group entries in Gemfile.'
178
+ Enabled: true
179
+ Severity: warning
180
+ VersionAdded: '1.56'
181
+ Include:
182
+ - '**/*.gemfile'
183
+ - '**/Gemfile'
184
+ - '**/gems.rb'
185
+
172
186
  Bundler/GemComment:
173
187
  Description: 'Add a comment describing each gem.'
174
188
  Enabled: false
@@ -262,6 +276,21 @@ Gemspec/DeprecatedAttributeAssignment:
262
276
  Include:
263
277
  - '**/*.gemspec'
264
278
 
279
+ Gemspec/DevelopmentDependencies:
280
+ Description: Checks that development dependencies are specified in Gemfile rather than gemspec.
281
+ Enabled: pending
282
+ VersionAdded: '1.44'
283
+ EnforcedStyle: Gemfile
284
+ SupportedStyles:
285
+ - Gemfile
286
+ - gems.rb
287
+ - gemspec
288
+ AllowedGems: []
289
+ Include:
290
+ - '**/*.gemspec'
291
+ - '**/Gemfile'
292
+ - '**/gems.rb'
293
+
265
294
  Gemspec/DuplicatedAssignment:
266
295
  Description: 'An attribute assignment method calls should be listed only once in a gemspec.'
267
296
  Enabled: true
@@ -391,9 +420,8 @@ Layout/AssignmentIndentation:
391
420
  Checks the indentation of the first line of the
392
421
  right-hand-side of a multi-line assignment.
393
422
  Enabled: true
394
- SafeAutoCorrect: false
395
423
  VersionAdded: '0.49'
396
- VersionChanged: '1.40'
424
+ VersionChanged: '1.45'
397
425
  # By default the indentation width from `Layout/IndentationWidth` is used,
398
426
  # but it can be overridden by setting this parameter.
399
427
  IndentationWidth: ~
@@ -451,7 +479,9 @@ Layout/ClassStructure:
451
479
  Description: 'Enforces a configured order of definitions within a class body.'
452
480
  StyleGuide: '#consistent-classes'
453
481
  Enabled: false
482
+ SafeAutoCorrect: false
454
483
  VersionAdded: '0.52'
484
+ VersionChanged: '1.53'
455
485
  Categories:
456
486
  module_inclusion:
457
487
  - include
@@ -559,6 +589,8 @@ Layout/EmptyLineBetweenDefs:
559
589
  EmptyLineBetweenMethodDefs: true
560
590
  EmptyLineBetweenClassDefs: true
561
591
  EmptyLineBetweenModuleDefs: true
592
+ # `DefLikeMacros` takes the name of any macro that you want to treat like a def.
593
+ DefLikeMacros: []
562
594
  # `AllowAdjacentOneLineDefs` means that single line method definitions don't
563
595
  # need an empty line between them. `true` by default.
564
596
  AllowAdjacentOneLineDefs: true
@@ -964,7 +996,6 @@ Layout/IndentationWidth:
964
996
  # Number of spaces for each indentation level.
965
997
  Width: 2
966
998
  AllowedPatterns: []
967
- IgnoredPatterns: [] # deprecated
968
999
 
969
1000
  Layout/InitialIndentation:
970
1001
  Description: >-
@@ -992,10 +1023,8 @@ Layout/LineContinuationLeadingSpace:
992
1023
  Use trailing spaces instead of leading spaces in strings
993
1024
  broken over multiple lines (by a backslash).
994
1025
  Enabled: pending
995
- AutoCorrect: false
996
- SafeAutoCorrect: false
997
1026
  VersionAdded: '1.31'
998
- VersionChanged: '1.32'
1027
+ VersionChanged: '1.45'
999
1028
  EnforcedStyle: trailing
1000
1029
  SupportedStyles:
1001
1030
  - leading
@@ -1004,8 +1033,6 @@ Layout/LineContinuationLeadingSpace:
1004
1033
  Layout/LineContinuationSpacing:
1005
1034
  Description: 'Checks the spacing in front of backslash in line continuations.'
1006
1035
  Enabled: pending
1007
- AutoCorrect: true
1008
- SafeAutoCorrect: true
1009
1036
  VersionAdded: '1.31'
1010
1037
  EnforcedStyle: space
1011
1038
  SupportedStyles:
@@ -1047,7 +1074,6 @@ Layout/LineLength:
1047
1074
  # elements. Strings will be converted to Regexp objects. A line that matches
1048
1075
  # any regular expression listed in this option will be ignored by LineLength.
1049
1076
  AllowedPatterns: []
1050
- IgnoredPatterns: [] # deprecated
1051
1077
 
1052
1078
  Layout/MultilineArrayBraceLayout:
1053
1079
  Description: >-
@@ -1520,13 +1546,11 @@ Lint/AmbiguousBlockAssociation:
1520
1546
  Description: >-
1521
1547
  Checks for ambiguous block association with method when param passed without
1522
1548
  parentheses.
1523
- StyleGuide: '#syntax'
1524
1549
  Enabled: true
1525
1550
  VersionAdded: '0.48'
1526
1551
  VersionChanged: '1.13'
1527
1552
  AllowedMethods: []
1528
1553
  AllowedPatterns: []
1529
- IgnoredMethods: [] # deprecated
1530
1554
 
1531
1555
  Lint/AmbiguousOperator:
1532
1556
  Description: >-
@@ -1563,7 +1587,9 @@ Lint/AssignmentInCondition:
1563
1587
  Description: "Don't use assignment in conditions."
1564
1588
  StyleGuide: '#safe-assignment-in-condition'
1565
1589
  Enabled: true
1590
+ SafeAutoCorrect: false
1566
1591
  VersionAdded: '0.9'
1592
+ VersionChanged: '1.45'
1567
1593
  AllowSafeAssignment: true
1568
1594
 
1569
1595
  Lint/BigDecimalNew:
@@ -1619,8 +1645,7 @@ Lint/Debugger:
1619
1645
  Description: 'Check for debugger calls.'
1620
1646
  Enabled: true
1621
1647
  VersionAdded: '0.14'
1622
- VersionChanged: '1.10'
1623
- DebuggerReceivers: [] # deprecated
1648
+ VersionChanged: '1.46'
1624
1649
  DebuggerMethods:
1625
1650
  # Groups are available so that a specific group can be disabled in
1626
1651
  # a user's configuration, but are otherwise not significant.
@@ -1648,6 +1673,7 @@ Lint/Debugger:
1648
1673
  - Kernel.binding.remote_pry
1649
1674
  - Kernel.binding.pry_remote
1650
1675
  - Pry.rescue
1676
+ - pry
1651
1677
  Rails:
1652
1678
  - debugger
1653
1679
  - Kernel.debugger
@@ -1740,6 +1766,11 @@ Lint/DuplicateMagicComment:
1740
1766
  Enabled: pending
1741
1767
  VersionAdded: '1.37'
1742
1768
 
1769
+ Lint/DuplicateMatchPattern:
1770
+ Description: 'Do not repeat patterns in `in` keywords.'
1771
+ Enabled: pending
1772
+ VersionAdded: '1.50'
1773
+
1743
1774
  Lint/DuplicateMethods:
1744
1775
  Description: 'Check for duplicate method definitions.'
1745
1776
  Enabled: true
@@ -1972,9 +2003,16 @@ Lint/MissingSuper:
1972
2003
  Checks for the presence of constructors and lifecycle callbacks
1973
2004
  without calls to `super`.
1974
2005
  Enabled: true
2006
+ AllowedParentClasses: []
1975
2007
  VersionAdded: '0.89'
1976
2008
  VersionChanged: '1.4'
1977
2009
 
2010
+ Lint/MixedCaseRange:
2011
+ Description: 'Checks for mixed-case character ranges since they include likely unintended characters.'
2012
+ Enabled: pending
2013
+ SafeAutoCorrect: false
2014
+ VersionAdded: '1.53'
2015
+
1978
2016
  Lint/MixedRegexpCaptureTypes:
1979
2017
  Description: 'Do not mix named captures and numbered captures in a Regexp literal.'
1980
2018
  Enabled: true
@@ -2037,7 +2075,6 @@ Lint/NumberConversion:
2037
2075
  SafeAutoCorrect: false
2038
2076
  AllowedMethods: []
2039
2077
  AllowedPatterns: []
2040
- IgnoredMethods: [] # deprecated
2041
2078
  IgnoredClasses:
2042
2079
  - Time
2043
2080
  - DateTime
@@ -2125,10 +2162,17 @@ Lint/RedundantDirGlobSort:
2125
2162
  VersionChanged: '1.26'
2126
2163
  SafeAutoCorrect: false
2127
2164
 
2165
+ Lint/RedundantRegexpQuantifiers:
2166
+ Description: 'Checks for redundant quantifiers in Regexps.'
2167
+ Enabled: pending
2168
+ VersionAdded: '1.53'
2169
+
2128
2170
  Lint/RedundantRequireStatement:
2129
2171
  Description: 'Checks for unnecessary `require` statement.'
2130
2172
  Enabled: true
2173
+ SafeAutoCorrect: false
2131
2174
  VersionAdded: '0.76'
2175
+ VersionChanged: '1.57'
2132
2176
 
2133
2177
  Lint/RedundantSafeNavigation:
2134
2178
  Description: 'Checks for redundant safe navigation calls.'
@@ -2329,6 +2373,9 @@ Lint/TopLevelReturnWithArgument:
2329
2373
  Description: 'Detects top level return statements with argument.'
2330
2374
  Enabled: true
2331
2375
  VersionAdded: '0.89'
2376
+ # These codes are `eval`-ed in method and their return values may be used.
2377
+ Exclude:
2378
+ - '**/*.jb'
2332
2379
 
2333
2380
  Lint/TrailingCommaInAttributeDeclaration:
2334
2381
  Description: 'Checks for trailing commas in attribute declarations.'
@@ -2388,7 +2435,6 @@ Lint/UnreachableLoop:
2388
2435
  # RSpec uses `times` in its message expectations
2389
2436
  # eg. `exactly(2).times`
2390
2437
  - !ruby/regexp /(exactly|at_least|at_most)\(\d+\)\.times/
2391
- IgnoredPatterns: [] # deprecated
2392
2438
 
2393
2439
  Lint/UnusedBlockArgument:
2394
2440
  Description: 'Checks for unused block arguments.'
@@ -2438,6 +2484,8 @@ Lint/UselessAssignment:
2438
2484
  StyleGuide: '#underscore-unused-vars'
2439
2485
  Enabled: true
2440
2486
  VersionAdded: '0.11'
2487
+ VersionChanged: '1.51'
2488
+ SafeAutoCorrect: false
2441
2489
 
2442
2490
  Lint/UselessElseWithoutRescue:
2443
2491
  Description: 'Checks for useless `else` in `begin..end` without `rescue`.'
@@ -2452,6 +2500,11 @@ Lint/UselessMethodDefinition:
2452
2500
  VersionChanged: '0.91'
2453
2501
  Safe: false
2454
2502
 
2503
+ Lint/UselessRescue:
2504
+ Description: 'Checks for useless `rescue`s.'
2505
+ Enabled: pending
2506
+ VersionAdded: '1.43'
2507
+
2455
2508
  Lint/UselessRuby2Keywords:
2456
2509
  Description: 'Finds unnecessary uses of `ruby2_keywords`.'
2457
2510
  Enabled: pending
@@ -2460,10 +2513,9 @@ Lint/UselessRuby2Keywords:
2460
2513
  Lint/UselessSetterCall:
2461
2514
  Description: 'Checks for useless setter call to a local variable.'
2462
2515
  Enabled: true
2463
- SafeAutoCorrect: false
2516
+ Safe: false
2464
2517
  VersionAdded: '0.13'
2465
2518
  VersionChanged: '1.2'
2466
- Safe: false
2467
2519
 
2468
2520
  Lint/UselessTimes:
2469
2521
  Description: 'Checks for useless `Integer#times` calls.'
@@ -2493,7 +2545,6 @@ Metrics/AbcSize:
2493
2545
  # a Float.
2494
2546
  AllowedMethods: []
2495
2547
  AllowedPatterns: []
2496
- IgnoredMethods: [] # deprecated
2497
2548
  CountRepeatedAttributes: true
2498
2549
  Max: 17
2499
2550
 
@@ -2505,13 +2556,11 @@ Metrics/BlockLength:
2505
2556
  CountComments: false # count full line comments?
2506
2557
  Max: 25
2507
2558
  CountAsOne: []
2508
- ExcludedMethods: [] # deprecated, retained for backwards compatibility
2509
2559
  AllowedMethods:
2510
2560
  # By default, exclude the `#refine` method, as it tends to have larger
2511
2561
  # associated blocks.
2512
2562
  - refine
2513
2563
  AllowedPatterns: []
2514
- IgnoredMethods: [] # deprecated
2515
2564
  Exclude:
2516
2565
  - '**/*.gemspec'
2517
2566
 
@@ -2533,6 +2582,12 @@ Metrics/ClassLength:
2533
2582
  Max: 100
2534
2583
  CountAsOne: []
2535
2584
 
2585
+ Metrics/CollectionLiteralLength:
2586
+ Description: 'Checks for `Array` or `Hash` literals with many entries.'
2587
+ Enabled: pending
2588
+ VersionAdded: '1.47'
2589
+ LengthThreshold: 250
2590
+
2536
2591
  # Avoid complex methods.
2537
2592
  Metrics/CyclomaticComplexity:
2538
2593
  Description: >-
@@ -2543,7 +2598,6 @@ Metrics/CyclomaticComplexity:
2543
2598
  VersionChanged: '0.81'
2544
2599
  AllowedMethods: []
2545
2600
  AllowedPatterns: []
2546
- IgnoredMethods: [] # deprecated
2547
2601
  Max: 7
2548
2602
 
2549
2603
  Metrics/MethodLength:
@@ -2555,10 +2609,8 @@ Metrics/MethodLength:
2555
2609
  CountComments: false # count full line comments?
2556
2610
  Max: 10
2557
2611
  CountAsOne: []
2558
- ExcludedMethods: [] # deprecated, retained for backwards compatibility
2559
2612
  AllowedMethods: []
2560
2613
  AllowedPatterns: []
2561
- IgnoredMethods: [] # deprecated
2562
2614
 
2563
2615
  Metrics/ModuleLength:
2564
2616
  Description: 'Avoid modules longer than 100 lines of code.'
@@ -2588,7 +2640,6 @@ Metrics/PerceivedComplexity:
2588
2640
  VersionChanged: '0.81'
2589
2641
  AllowedMethods: []
2590
2642
  AllowedPatterns: []
2591
- IgnoredMethods: [] # deprecated
2592
2643
  Max: 8
2593
2644
 
2594
2645
  ################## Migration #############################
@@ -2759,13 +2810,13 @@ Naming/HeredocDelimiterNaming:
2759
2810
  Enabled: true
2760
2811
  VersionAdded: '0.50'
2761
2812
  ForbiddenDelimiters:
2762
- - !ruby/regexp '/(^|\s)(EO[A-Z]{1}|END)(\s|$)/'
2813
+ - !ruby/regexp '/(^|\s)(EO[A-Z]{1}|END)(\s|$)/i'
2763
2814
 
2764
2815
  Naming/InclusiveLanguage:
2765
2816
  Description: 'Recommend the use of inclusive language instead of problematic terms.'
2766
2817
  Enabled: false
2767
2818
  VersionAdded: '1.18'
2768
- VersionChanged: '1.21'
2819
+ VersionChanged: '1.49'
2769
2820
  CheckIdentifiers: true
2770
2821
  CheckConstants: true
2771
2822
  CheckVariables: true
@@ -2817,7 +2868,6 @@ Naming/MethodName:
2817
2868
  # - '\A\s*onSelectionCleared\s*'
2818
2869
  #
2819
2870
  AllowedPatterns: []
2820
- IgnoredPatterns: [] # deprecated
2821
2871
 
2822
2872
  Naming/MethodParameterName:
2823
2873
  Description: >-
@@ -2918,6 +2968,7 @@ Naming/VariableNumber:
2918
2968
  - rfc822 # Time#rfc822
2919
2969
  - rfc2822 # Time#rfc2822
2920
2970
  - rfc3339 # DateTime.rfc3339
2971
+ - x86_64 # Allowed by default as an underscore separated CPU architecture name
2921
2972
  AllowedPatterns: []
2922
2973
 
2923
2974
  #################### Security ##############################
@@ -2925,7 +2976,9 @@ Naming/VariableNumber:
2925
2976
  Security/CompoundHash:
2926
2977
  Description: 'When overwriting Object#hash to combine values, prefer delegating to Array#hash over writing a custom implementation.'
2927
2978
  Enabled: pending
2979
+ Safe: false
2928
2980
  VersionAdded: '1.28'
2981
+ VersionChanged: '1.51'
2929
2982
 
2930
2983
  Security/Eval:
2931
2984
  Description: 'The use of eval represents a serious security risk.'
@@ -3031,6 +3084,7 @@ Style/ArgumentsForwarding:
3031
3084
  StyleGuide: '#arguments-forwarding'
3032
3085
  Enabled: pending
3033
3086
  AllowOnlyRestArgument: true
3087
+ UseAnonymousForwarding: true
3034
3088
  VersionAdded: '1.1'
3035
3089
 
3036
3090
  Style/ArrayCoercion:
@@ -3045,6 +3099,7 @@ Style/ArrayCoercion:
3045
3099
  Style/ArrayIntersect:
3046
3100
  Description: 'Use `array1.intersect?(array2)` instead of `(array1 & array2).any?`.'
3047
3101
  Enabled: 'pending'
3102
+ Safe: false
3048
3103
  VersionAdded: '1.40'
3049
3104
 
3050
3105
  Style/ArrayJoin:
@@ -3187,7 +3242,6 @@ Style/BlockDelimiters:
3187
3242
  - proc
3188
3243
  - it
3189
3244
  AllowedPatterns: []
3190
- IgnoredMethods: [] # deprecated
3191
3245
  # The AllowBracesOnProceduralOneLiners option is ignored unless the
3192
3246
  # EnforcedStyle is set to `semantic`. If so:
3193
3247
  #
@@ -3211,7 +3265,7 @@ Style/BlockDelimiters:
3211
3265
  # collection.each do |element| puts element end
3212
3266
  AllowBracesOnProceduralOneLiners: false
3213
3267
  # The BracesRequiredMethods overrides all other configurations except
3214
- # IgnoredMethods. It can be used to enforce that all blocks for specific
3268
+ # AllowedMethods. It can be used to enforce that all blocks for specific
3215
3269
  # methods use braces. For example, you can use this to enforce Sorbet
3216
3270
  # signatures use braces even when the rest of your codebase enforces
3217
3271
  # the `line_count_based` style.
@@ -3248,6 +3302,9 @@ Style/CaseLikeIf:
3248
3302
  Enabled: true
3249
3303
  Safe: false
3250
3304
  VersionAdded: '0.88'
3305
+ VersionChanged: '1.48'
3306
+ # `MinBranchesCount` defines the number of branches `if` needs to have to trigger this cop.
3307
+ MinBranchesCount: 3
3251
3308
 
3252
3309
  Style/CharacterLiteral:
3253
3310
  Description: 'Checks for uses of character literals.'
@@ -3260,7 +3317,7 @@ Style/ClassAndModuleChildren:
3260
3317
  StyleGuide: '#namespace-definition'
3261
3318
  # Moving from compact to nested children requires knowledge of whether the
3262
3319
  # outer parent is a module or a class. Moving from nested to compact requires
3263
- # verification that the outer parent is defined elsewhere. Rubocop does not
3320
+ # verification that the outer parent is defined elsewhere. RuboCop does not
3264
3321
  # have the knowledge to perform either operation safely and thus requires
3265
3322
  # manual oversight.
3266
3323
  SafeAutoCorrect: false
@@ -3299,13 +3356,14 @@ Style/ClassEqualityComparison:
3299
3356
  Description: 'Enforces the use of `Object#instance_of?` instead of class comparison for equality.'
3300
3357
  StyleGuide: '#instance-of-vs-class-comparison'
3301
3358
  Enabled: true
3359
+ SafeAutoCorrect: false
3302
3360
  VersionAdded: '0.93'
3361
+ VersionChanged: '1.57'
3303
3362
  AllowedMethods:
3304
3363
  - ==
3305
3364
  - equal?
3306
3365
  - eql?
3307
3366
  AllowedPatterns: []
3308
- IgnoredMethods: [] # deprecated
3309
3367
 
3310
3368
  Style/ClassMethods:
3311
3369
  Description: 'Use self when defining module/class methods.'
@@ -3336,6 +3394,7 @@ Style/CollectionCompact:
3336
3394
  Safe: false
3337
3395
  VersionAdded: '1.2'
3338
3396
  VersionChanged: '1.3'
3397
+ AllowedReceivers: []
3339
3398
 
3340
3399
  # Align with the style guide.
3341
3400
  Style/CollectionMethods:
@@ -3354,6 +3413,7 @@ Style/CollectionMethods:
3354
3413
  PreferredMethods:
3355
3414
  collect: 'map'
3356
3415
  collect!: 'map!'
3416
+ collect_concat: 'flat_map'
3357
3417
  inject: 'reduce'
3358
3418
  detect: 'find'
3359
3419
  find_all: 'select'
@@ -3426,6 +3486,11 @@ Style/CommentedKeyword:
3426
3486
  VersionAdded: '0.51'
3427
3487
  VersionChanged: '1.19'
3428
3488
 
3489
+ Style/ComparableClamp:
3490
+ Description: 'Enforces the use of `Comparable#clamp` instead of comparison by minimum and maximum.'
3491
+ Enabled: pending
3492
+ VersionAdded: '1.44'
3493
+
3429
3494
  Style/ConcatArrayLiterals:
3430
3495
  Description: 'Enforces the use of `Array#push(item)` instead of `Array#concat([item])` to avoid redundant array literals.'
3431
3496
  Enabled: pending
@@ -3487,6 +3552,14 @@ Style/Copyright:
3487
3552
  Notice: '^Copyright (\(c\) )?2[0-9]{3} .+'
3488
3553
  AutocorrectNotice: ''
3489
3554
 
3555
+ Style/DataInheritance:
3556
+ Description: 'Checks for inheritance from Data.define.'
3557
+ StyleGuide: '#no-extend-data-define'
3558
+ Enabled: pending
3559
+ SafeAutoCorrect: false
3560
+ VersionAdded: '1.49'
3561
+ VersionChanged: '1.51'
3562
+
3490
3563
  Style/DateTime:
3491
3564
  Description: 'Use Time over DateTime.'
3492
3565
  StyleGuide: '#date-time'
@@ -3510,6 +3583,12 @@ Style/Dir:
3510
3583
  Enabled: true
3511
3584
  VersionAdded: '0.50'
3512
3585
 
3586
+ Style/DirEmpty:
3587
+ Description: >-
3588
+ Prefer to use `Dir.empty?('path/to/dir')` when checking if a directory is empty.
3589
+ Enabled: pending
3590
+ VersionAdded: '1.48'
3591
+
3513
3592
  Style/DisableCopsWithinSourceCodeDirective:
3514
3593
  Description: >-
3515
3594
  Forbids disabling/enabling cops within source code.
@@ -3670,6 +3749,11 @@ Style/EvenOdd:
3670
3749
  VersionAdded: '0.12'
3671
3750
  VersionChanged: '0.29'
3672
3751
 
3752
+ Style/ExactRegexpMatch:
3753
+ Description: 'Checks for exact regexp match inside Regexp literals.'
3754
+ Enabled: pending
3755
+ VersionAdded: '1.51'
3756
+
3673
3757
  Style/ExpandPathArguments:
3674
3758
  Description: "Use `expand_path(__dir__)` instead of `expand_path('..', __FILE__)`."
3675
3759
  Enabled: true
@@ -3705,6 +3789,13 @@ Style/FetchEnvVar:
3705
3789
  # Environment variables to be excluded from the inspection.
3706
3790
  AllowedVars: []
3707
3791
 
3792
+ Style/FileEmpty:
3793
+ Description: >-
3794
+ Prefer to use `File.empty?('path/to/file')` when checking if a file is empty.
3795
+ Enabled: pending
3796
+ Safe: false
3797
+ VersionAdded: '1.48'
3798
+
3708
3799
  Style/FileRead:
3709
3800
  Description: 'Favor `File.(bin)read` convenience methods.'
3710
3801
  StyleGuide: '#file-read'
@@ -3775,7 +3866,6 @@ Style/FormatStringToken:
3775
3866
  VersionChanged: '1.0'
3776
3867
  AllowedMethods: []
3777
3868
  AllowedPatterns: []
3778
- IgnoredMethods: [] # deprecated
3779
3869
 
3780
3870
  Style/FrozenStringLiteralComment:
3781
3871
  Description: >-
@@ -3842,8 +3932,9 @@ Style/HashConversion:
3842
3932
  Description: 'Avoid Hash[] in favor of ary.to_h or literal hashes.'
3843
3933
  StyleGuide: '#avoid-hash-constructor'
3844
3934
  Enabled: pending
3935
+ SafeAutoCorrect: false
3845
3936
  VersionAdded: '1.10'
3846
- VersionChanged: '1.11'
3937
+ VersionChanged: '1.55'
3847
3938
  AllowSplatArgument: true
3848
3939
 
3849
3940
  Style/HashEachMethods:
@@ -3853,7 +3944,8 @@ Style/HashEachMethods:
3853
3944
  Safe: false
3854
3945
  VersionAdded: '0.80'
3855
3946
  VersionChanged: '1.16'
3856
- AllowedReceivers: []
3947
+ AllowedReceivers:
3948
+ - Thread.current
3857
3949
 
3858
3950
  Style/HashExcept:
3859
3951
  Description: >-
@@ -3901,7 +3993,7 @@ Style/HashSyntax:
3901
3993
  - never
3902
3994
  # accepts both shorthand and explicit use of hash literal value.
3903
3995
  - either
3904
- # like "either", but will avoid mixing styles in a single hash
3996
+ # forces use of the 3.1 syntax only if all values can be omitted in the hash.
3905
3997
  - consistent
3906
3998
  # Force hashes that have a symbol value to use hash rockets
3907
3999
  UseHashRocketsWithSymbolValues: false
@@ -4015,16 +4107,35 @@ Style/InverseMethods:
4015
4107
  :=~: :!~
4016
4108
  :<: :>=
4017
4109
  :>: :<=
4018
- # `ActiveSupport` defines some common inverse methods. They are listed below,
4019
- # and not enabled by default.
4020
- # :present?: :blank?,
4021
- # :include?: :exclude?
4022
4110
  # `InverseBlocks` are methods that are inverted by inverting the return
4023
4111
  # of the block that is passed to the method
4024
4112
  InverseBlocks:
4025
4113
  :select: :reject
4026
4114
  :select!: :reject!
4027
4115
 
4116
+ Style/InvertibleUnlessCondition:
4117
+ Description: 'Favor `if` with inverted condition over `unless`.'
4118
+ Enabled: false
4119
+ Safe: false
4120
+ VersionAdded: '1.44'
4121
+ VersionChanged: '1.50'
4122
+ # `InverseMethods` are methods that can be inverted in a `unless` condition.
4123
+ # The relationship of inverse methods needs to be defined in both directions.
4124
+ # Keys and values both need to be defined as symbols.
4125
+ InverseMethods:
4126
+ :!=: :==
4127
+ :>: :<=
4128
+ :<=: :>
4129
+ :<: :>=
4130
+ :>=: :<
4131
+ :!~: :=~
4132
+ :zero?: :nonzero?
4133
+ :nonzero?: :zero?
4134
+ :any?: :none?
4135
+ :none?: :any?
4136
+ :even?: :odd?
4137
+ :odd?: :even?
4138
+
4028
4139
  Style/IpAddresses:
4029
4140
  Description: "Don't include literal IP addresses in code."
4030
4141
  Enabled: false
@@ -4110,6 +4221,12 @@ Style/MapToHash:
4110
4221
  VersionAdded: '1.24'
4111
4222
  Safe: false
4112
4223
 
4224
+ Style/MapToSet:
4225
+ Description: 'Prefer `to_set` with a block over `map.to_set`.'
4226
+ Enabled: pending
4227
+ Safe: false
4228
+ VersionAdded: '1.42'
4229
+
4113
4230
  Style/MethodCallWithArgsParentheses:
4114
4231
  Description: 'Use parentheses for method calls with arguments.'
4115
4232
  StyleGuide: '#method-invocation-parens'
@@ -4118,9 +4235,7 @@ Style/MethodCallWithArgsParentheses:
4118
4235
  VersionChanged: '1.7'
4119
4236
  IgnoreMacros: true
4120
4237
  AllowedMethods: []
4121
- IgnoredMethods: [] # deprecated
4122
4238
  AllowedPatterns: []
4123
- IgnoredPatterns: [] # deprecated
4124
4239
  IncludedMacros: []
4125
4240
  AllowParenthesesInMultilineCall: false
4126
4241
  AllowParenthesesInChaining: false
@@ -4137,7 +4252,6 @@ Style/MethodCallWithoutArgsParentheses:
4137
4252
  Enabled: true
4138
4253
  AllowedMethods: []
4139
4254
  AllowedPatterns: []
4140
- IgnoredMethods: [] # deprecated
4141
4255
  VersionAdded: '0.47'
4142
4256
  VersionChanged: '0.55'
4143
4257
 
@@ -4168,6 +4282,12 @@ Style/MinMax:
4168
4282
  Enabled: true
4169
4283
  VersionAdded: '0.50'
4170
4284
 
4285
+ Style/MinMaxComparison:
4286
+ Description: 'Enforces the use of `max` or `min` instead of comparison for greater or less.'
4287
+ Enabled: pending
4288
+ Safe: false
4289
+ VersionAdded: '1.42'
4290
+
4171
4291
  Style/MissingElse:
4172
4292
  Description: >-
4173
4293
  Require if/case expressions to have an else branches.
@@ -4291,6 +4411,7 @@ Style/MultipleComparison:
4291
4411
  VersionAdded: '0.49'
4292
4412
  VersionChanged: '1.1'
4293
4413
  AllowMethodComparison: true
4414
+ ComparisonsThreshold: 2
4294
4415
 
4295
4416
  Style/MutableConstant:
4296
4417
  Description: 'Do not assign mutable objects to constants.'
@@ -4496,11 +4617,10 @@ Style/NumericPredicate:
4496
4617
  Checks for the use of predicate- or comparison methods for
4497
4618
  numeric comparisons.
4498
4619
  StyleGuide: '#predicate-methods'
4499
- Safe: false
4500
4620
  # This will change to a new method call which isn't guaranteed to be on the
4501
4621
  # object. Switching these methods has to be done with knowledge of the types
4502
4622
  # of the variables which rubocop doesn't have.
4503
- SafeAutoCorrect: false
4623
+ Safe: false
4504
4624
  Enabled: true
4505
4625
  VersionAdded: '0.42'
4506
4626
  VersionChanged: '0.59'
@@ -4510,7 +4630,6 @@ Style/NumericPredicate:
4510
4630
  - comparison
4511
4631
  AllowedMethods: []
4512
4632
  AllowedPatterns: []
4513
- IgnoredMethods: [] # deprecated
4514
4633
  # Exclude RSpec specs because assertions like `expect(1).to be > 0` cause
4515
4634
  # false positives.
4516
4635
  Exclude:
@@ -4547,7 +4666,9 @@ Style/OpenStructUse:
4547
4666
  - https://docs.ruby-lang.org/en/3.0.0/OpenStruct.html#class-OpenStruct-label-Caveats
4548
4667
 
4549
4668
  Enabled: pending
4669
+ Safe: false
4550
4670
  VersionAdded: '1.23'
4671
+ VersionChanged: '1.51'
4551
4672
 
4552
4673
  Style/OperatorMethodCall:
4553
4674
  Description: 'Checks for redundant dot before operator method call.'
@@ -4700,12 +4821,16 @@ Style/RedundantArgument:
4700
4821
  Enabled: pending
4701
4822
  Safe: false
4702
4823
  VersionAdded: '1.4'
4703
- VersionChanged: '1.40'
4824
+ VersionChanged: '1.55'
4704
4825
  Methods:
4705
4826
  # Array#join
4706
4827
  join: ''
4707
4828
  # Array#sum
4708
4829
  sum: 0
4830
+ # Kernel.#exit
4831
+ exit: true
4832
+ # Kernel.#exit!
4833
+ exit!: false
4709
4834
  # String#split
4710
4835
  split: ' '
4711
4836
  # String#chomp
@@ -4713,6 +4838,11 @@ Style/RedundantArgument:
4713
4838
  # String#chomp!
4714
4839
  chomp!: "\n"
4715
4840
 
4841
+ Style/RedundantArrayConstructor:
4842
+ Description: 'Checks for the instantiation of array using redundant `Array` constructor.'
4843
+ Enabled: pending
4844
+ VersionAdded: '1.52'
4845
+
4716
4846
  Style/RedundantAssignment:
4717
4847
  Description: 'Checks for redundant assignment before returning.'
4718
4848
  Enabled: true
@@ -4745,6 +4875,11 @@ Style/RedundantConstantBase:
4745
4875
  Enabled: pending
4746
4876
  VersionAdded: '1.40'
4747
4877
 
4878
+ Style/RedundantCurrentDirectoryInPath:
4879
+ Description: 'Checks for uses a redundant current directory in path.'
4880
+ Enabled: pending
4881
+ VersionAdded: '1.53'
4882
+
4748
4883
  Style/RedundantDoubleSplatHashBraces:
4749
4884
  Description: 'Checks for redundant uses of double splat hash braces.'
4750
4885
  Enabled: pending
@@ -4784,12 +4919,26 @@ Style/RedundantFileExtensionInRequire:
4784
4919
  Enabled: true
4785
4920
  VersionAdded: '0.88'
4786
4921
 
4922
+ Style/RedundantFilterChain:
4923
+ Description: >-
4924
+ Identifies usages of `any?`, `empty?`, `none?` or `one?` predicate methods chained to
4925
+ `select`/`filter`/`find_all` and change them to use predicate method instead.
4926
+ Enabled: pending
4927
+ SafeAutoCorrect: false
4928
+ VersionAdded: '1.52'
4929
+ VersionChanged: '1.57'
4930
+
4787
4931
  Style/RedundantFreeze:
4788
4932
  Description: "Checks usages of Object#freeze on immutable objects."
4789
4933
  Enabled: true
4790
4934
  VersionAdded: '0.34'
4791
4935
  VersionChanged: '0.66'
4792
4936
 
4937
+ Style/RedundantHeredocDelimiterQuotes:
4938
+ Description: 'Checks for redundant heredoc delimiter quotes.'
4939
+ Enabled: pending
4940
+ VersionAdded: '1.45'
4941
+
4793
4942
  Style/RedundantInitialize:
4794
4943
  Description: 'Checks for redundant `initialize` methods.'
4795
4944
  Enabled: pending
@@ -4805,6 +4954,11 @@ Style/RedundantInterpolation:
4805
4954
  VersionAdded: '0.76'
4806
4955
  VersionChanged: '1.30'
4807
4956
 
4957
+ Style/RedundantLineContinuation:
4958
+ Description: 'Check for redundant line continuation.'
4959
+ Enabled: pending
4960
+ VersionAdded: '1.49'
4961
+
4808
4962
  Style/RedundantParentheses:
4809
4963
  Description: "Checks for parentheses that seem not to serve any purpose."
4810
4964
  Enabled: true
@@ -4816,11 +4970,21 @@ Style/RedundantPercentQ:
4816
4970
  Enabled: true
4817
4971
  VersionAdded: '0.76'
4818
4972
 
4973
+ Style/RedundantRegexpArgument:
4974
+ Description: 'Identifies places where argument can be replaced from a deterministic regexp to a string.'
4975
+ Enabled: pending
4976
+ VersionAdded: '1.53'
4977
+
4819
4978
  Style/RedundantRegexpCharacterClass:
4820
4979
  Description: 'Checks for unnecessary single-element Regexp character classes.'
4821
4980
  Enabled: true
4822
4981
  VersionAdded: '0.85'
4823
4982
 
4983
+ Style/RedundantRegexpConstructor:
4984
+ Description: 'Checks for the instantiation of regexp using redundant `Regexp.new` or `Regexp.compile`.'
4985
+ Enabled: pending
4986
+ VersionAdded: '1.52'
4987
+
4824
4988
  Style/RedundantRegexpEscape:
4825
4989
  Description: 'Checks for redundant escapes in Regexps.'
4826
4990
  Enabled: true
@@ -4923,6 +5087,15 @@ Style/ReturnNil:
4923
5087
  - return_nil
4924
5088
  VersionAdded: '0.50'
4925
5089
 
5090
+ Style/ReturnNilInPredicateMethodDefinition:
5091
+ Description: 'Checks if uses of `return` or `return nil` in predicate method definition.'
5092
+ StyleGuide: '#bool-methods-qmark'
5093
+ Enabled: pending
5094
+ SafeAutoCorrect: false
5095
+ AllowedMethods: []
5096
+ AllowedPatterns: []
5097
+ VersionAdded: '1.53'
5098
+
4926
5099
  Style/SafeNavigation:
4927
5100
  Description: >-
4928
5101
  Transforms usages of a method call safeguarded by
@@ -5015,6 +5188,11 @@ Style/SingleLineBlockParams:
5015
5188
  - acc
5016
5189
  - elem
5017
5190
 
5191
+ Style/SingleLineDoEndBlock:
5192
+ Description: 'Checks for single-line `do`...`end` blocks.'
5193
+ Enabled: pending
5194
+ VersionAdded: '1.57'
5195
+
5018
5196
  Style/SingleLineMethods:
5019
5197
  Description: 'Avoid single-line methods.'
5020
5198
  StyleGuide: '#no-single-line-methods'
@@ -5187,7 +5365,6 @@ Style/SymbolProc:
5187
5365
  AllowedMethods:
5188
5366
  - define_method
5189
5367
  AllowedPatterns: []
5190
- IgnoredMethods: [] # deprecated
5191
5368
  AllowComments: false
5192
5369
 
5193
5370
  Style/TernaryParentheses:
@@ -5408,6 +5585,11 @@ Style/WordArray:
5408
5585
  # The regular expression `WordRegex` decides what is considered a word.
5409
5586
  WordRegex: !ruby/regexp '/\A(?:\p{Word}|\p{Word}-\p{Word}|\n|\t)+\z/'
5410
5587
 
5588
+ Style/YAMLFileRead:
5589
+ Description: 'Checks for the use of `YAML.load`, `YAML.safe_load`, and `YAML.parse` with `File.read` argument.'
5590
+ Enabled: pending
5591
+ VersionAdded: '1.53'
5592
+
5411
5593
  Style/YodaCondition:
5412
5594
  Description: 'Forbid or enforce yoda conditions.'
5413
5595
  Reference: 'https://en.wikipedia.org/wiki/Yoda_conditions'
@@ -5426,6 +5608,19 @@ Style/YodaCondition:
5426
5608
  VersionAdded: '0.49'
5427
5609
  VersionChanged: '0.75'
5428
5610
 
5611
+ Style/YodaExpression:
5612
+ Description: 'Forbid the use of yoda expressions.'
5613
+ Enabled: false
5614
+ Safe: false
5615
+ VersionAdded: '1.42'
5616
+ VersionChanged: '1.43'
5617
+ SupportedOperators:
5618
+ - '*'
5619
+ - '+'
5620
+ - '&'
5621
+ - '|'
5622
+ - '^'
5623
+
5429
5624
  Style/ZeroLengthPredicate:
5430
5625
  Description: 'Use #empty? when testing for objects of length 0.'
5431
5626
  Enabled: true