rubocop 1.41.1 → 1.57.1

Sign up to get free protection for your applications and to get access to all the features.
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