rubocop 1.26.0 → 1.36.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (588) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +7 -5
  3. data/config/default.yml +254 -47
  4. data/config/obsoletion.yml +35 -2
  5. data/exe/rubocop +15 -7
  6. data/lib/rubocop/cache_config.rb +29 -0
  7. data/lib/rubocop/cli/command/{auto_genenerate_config.rb → auto_generate_config.rb} +20 -5
  8. data/lib/rubocop/cli/command/execute_runner.rb +1 -1
  9. data/lib/rubocop/cli/command/init_dotfile.rb +1 -1
  10. data/lib/rubocop/cli/command/show_cops.rb +1 -1
  11. data/lib/rubocop/cli/command/suggest_extensions.rb +54 -16
  12. data/lib/rubocop/cli.rb +2 -0
  13. data/lib/rubocop/config.rb +6 -2
  14. data/lib/rubocop/config_finder.rb +68 -0
  15. data/lib/rubocop/config_loader.rb +15 -41
  16. data/lib/rubocop/config_loader_resolver.rb +2 -6
  17. data/lib/rubocop/config_obsoletion/changed_parameter.rb +5 -0
  18. data/lib/rubocop/config_obsoletion/extracted_cop.rb +3 -1
  19. data/lib/rubocop/config_obsoletion/parameter_rule.rb +4 -0
  20. data/lib/rubocop/config_obsoletion.rb +7 -2
  21. data/lib/rubocop/config_validator.rb +21 -4
  22. data/lib/rubocop/cop/autocorrect_logic.rb +8 -2
  23. data/lib/rubocop/cop/badge.rb +1 -1
  24. data/lib/rubocop/cop/base.rb +6 -2
  25. data/lib/rubocop/cop/bundler/duplicated_gem.rb +3 -7
  26. data/lib/rubocop/cop/bundler/gem_comment.rb +1 -1
  27. data/lib/rubocop/cop/bundler/gem_filename.rb +5 -5
  28. data/lib/rubocop/cop/bundler/ordered_gems.rb +2 -2
  29. data/lib/rubocop/cop/cop.rb +1 -1
  30. data/lib/rubocop/cop/corrector.rb +2 -2
  31. data/lib/rubocop/cop/correctors/alignment_corrector.rb +1 -1
  32. data/lib/rubocop/cop/correctors/condition_corrector.rb +1 -1
  33. data/lib/rubocop/cop/correctors/each_to_for_corrector.rb +1 -1
  34. data/lib/rubocop/cop/correctors/empty_line_corrector.rb +1 -1
  35. data/lib/rubocop/cop/correctors/for_to_each_corrector.rb +4 -2
  36. data/lib/rubocop/cop/correctors/if_then_corrector.rb +1 -1
  37. data/lib/rubocop/cop/correctors/lambda_literal_to_method_corrector.rb +1 -1
  38. data/lib/rubocop/cop/correctors/line_break_corrector.rb +7 -1
  39. data/lib/rubocop/cop/correctors/multiline_literal_brace_corrector.rb +3 -3
  40. data/lib/rubocop/cop/correctors/ordered_gem_corrector.rb +1 -1
  41. data/lib/rubocop/cop/correctors/parentheses_corrector.rb +59 -1
  42. data/lib/rubocop/cop/correctors/percent_literal_corrector.rb +1 -1
  43. data/lib/rubocop/cop/correctors/punctuation_corrector.rb +1 -1
  44. data/lib/rubocop/cop/correctors/space_corrector.rb +1 -1
  45. data/lib/rubocop/cop/correctors/string_literal_corrector.rb +1 -1
  46. data/lib/rubocop/cop/correctors/unused_arg_corrector.rb +2 -2
  47. data/lib/rubocop/cop/gemspec/dependency_version.rb +156 -0
  48. data/lib/rubocop/cop/gemspec/deprecated_attribute_assignment.rb +92 -0
  49. data/lib/rubocop/cop/gemspec/duplicated_assignment.rb +5 -12
  50. data/lib/rubocop/cop/gemspec/ordered_dependencies.rb +1 -1
  51. data/lib/rubocop/cop/gemspec/require_mfa.rb +21 -21
  52. data/lib/rubocop/cop/gemspec/ruby_version_globals_usage.rb +1 -1
  53. data/lib/rubocop/cop/generator/require_file_injector.rb +2 -2
  54. data/lib/rubocop/cop/generator.rb +5 -1
  55. data/lib/rubocop/cop/internal_affairs/cop_description.rb +96 -0
  56. data/lib/rubocop/cop/internal_affairs/empty_line_between_expect_offense_and_correction.rb +1 -1
  57. data/lib/rubocop/cop/internal_affairs/location_line_equality_comparison.rb +1 -1
  58. data/lib/rubocop/cop/internal_affairs/method_name_end_with.rb +80 -0
  59. data/lib/rubocop/cop/internal_affairs/node_matcher_directive.rb +1 -5
  60. data/lib/rubocop/cop/internal_affairs/numblock_handler.rb +69 -0
  61. data/lib/rubocop/cop/internal_affairs/redundant_described_class_as_subject.rb +1 -1
  62. data/lib/rubocop/cop/internal_affairs/redundant_let_rubocop_config_new.rb +1 -1
  63. data/lib/rubocop/cop/internal_affairs/redundant_location_argument.rb +1 -1
  64. data/lib/rubocop/cop/internal_affairs/redundant_message_argument.rb +1 -1
  65. data/lib/rubocop/cop/internal_affairs/single_line_comparison.rb +62 -0
  66. data/lib/rubocop/cop/internal_affairs/useless_restrict_on_send.rb +60 -0
  67. data/lib/rubocop/cop/internal_affairs.rb +5 -0
  68. data/lib/rubocop/cop/layout/argument_alignment.rb +22 -1
  69. data/lib/rubocop/cop/layout/assignment_indentation.rb +1 -1
  70. data/lib/rubocop/cop/layout/begin_end_alignment.rb +1 -1
  71. data/lib/rubocop/cop/layout/block_alignment.rb +17 -13
  72. data/lib/rubocop/cop/layout/block_end_newline.rb +36 -6
  73. data/lib/rubocop/cop/layout/case_indentation.rb +17 -1
  74. data/lib/rubocop/cop/layout/closing_parenthesis_indentation.rb +1 -1
  75. data/lib/rubocop/cop/layout/comment_indentation.rb +2 -2
  76. data/lib/rubocop/cop/layout/condition_position.rb +1 -1
  77. data/lib/rubocop/cop/layout/def_end_alignment.rb +1 -1
  78. data/lib/rubocop/cop/layout/dot_position.rb +1 -1
  79. data/lib/rubocop/cop/layout/else_alignment.rb +1 -1
  80. data/lib/rubocop/cop/layout/empty_comment.rb +2 -2
  81. data/lib/rubocop/cop/layout/empty_line_after_guard_clause.rb +1 -1
  82. data/lib/rubocop/cop/layout/empty_line_after_multiline_condition.rb +1 -1
  83. data/lib/rubocop/cop/layout/empty_line_between_defs.rb +1 -1
  84. data/lib/rubocop/cop/layout/empty_lines.rb +1 -1
  85. data/lib/rubocop/cop/layout/empty_lines_around_access_modifier.rb +5 -2
  86. data/lib/rubocop/cop/layout/empty_lines_around_arguments.rb +1 -1
  87. data/lib/rubocop/cop/layout/empty_lines_around_attribute_accessor.rb +25 -4
  88. data/lib/rubocop/cop/layout/empty_lines_around_begin_body.rb +1 -1
  89. data/lib/rubocop/cop/layout/empty_lines_around_block_body.rb +7 -5
  90. data/lib/rubocop/cop/layout/empty_lines_around_class_body.rb +10 -10
  91. data/lib/rubocop/cop/layout/empty_lines_around_exception_handling_keywords.rb +1 -1
  92. data/lib/rubocop/cop/layout/empty_lines_around_method_body.rb +1 -1
  93. data/lib/rubocop/cop/layout/empty_lines_around_module_body.rb +10 -10
  94. data/lib/rubocop/cop/layout/end_alignment.rb +1 -1
  95. data/lib/rubocop/cop/layout/end_of_line.rb +5 -5
  96. data/lib/rubocop/cop/layout/extra_spacing.rb +1 -1
  97. data/lib/rubocop/cop/layout/first_argument_indentation.rb +34 -29
  98. data/lib/rubocop/cop/layout/first_array_element_indentation.rb +21 -14
  99. data/lib/rubocop/cop/layout/first_array_element_line_break.rb +1 -1
  100. data/lib/rubocop/cop/layout/first_hash_element_indentation.rb +52 -13
  101. data/lib/rubocop/cop/layout/first_hash_element_line_break.rb +1 -1
  102. data/lib/rubocop/cop/layout/first_method_argument_line_break.rb +1 -1
  103. data/lib/rubocop/cop/layout/first_method_parameter_line_break.rb +1 -1
  104. data/lib/rubocop/cop/layout/first_parameter_indentation.rb +1 -1
  105. data/lib/rubocop/cop/layout/hash_alignment.rb +2 -0
  106. data/lib/rubocop/cop/layout/heredoc_argument_closing_parenthesis.rb +1 -1
  107. data/lib/rubocop/cop/layout/heredoc_indentation.rb +1 -1
  108. data/lib/rubocop/cop/layout/indentation_consistency.rb +1 -1
  109. data/lib/rubocop/cop/layout/indentation_style.rb +1 -1
  110. data/lib/rubocop/cop/layout/indentation_width.rb +16 -10
  111. data/lib/rubocop/cop/layout/initial_indentation.rb +2 -2
  112. data/lib/rubocop/cop/layout/leading_comment_space.rb +1 -1
  113. data/lib/rubocop/cop/layout/leading_empty_lines.rb +1 -1
  114. data/lib/rubocop/cop/layout/line_continuation_leading_space.rb +112 -0
  115. data/lib/rubocop/cop/layout/line_continuation_spacing.rb +130 -0
  116. data/lib/rubocop/cop/layout/line_end_string_concatenation_indentation.rb +2 -2
  117. data/lib/rubocop/cop/layout/line_length.rb +11 -6
  118. data/lib/rubocop/cop/layout/multiline_array_brace_layout.rb +1 -1
  119. data/lib/rubocop/cop/layout/multiline_array_line_breaks.rb +1 -1
  120. data/lib/rubocop/cop/layout/multiline_assignment_layout.rb +2 -2
  121. data/lib/rubocop/cop/layout/multiline_block_layout.rb +4 -2
  122. data/lib/rubocop/cop/layout/multiline_hash_brace_layout.rb +1 -1
  123. data/lib/rubocop/cop/layout/multiline_hash_key_line_breaks.rb +1 -1
  124. data/lib/rubocop/cop/layout/multiline_method_argument_line_breaks.rb +5 -2
  125. data/lib/rubocop/cop/layout/multiline_method_call_brace_layout.rb +1 -1
  126. data/lib/rubocop/cop/layout/multiline_method_call_indentation.rb +22 -5
  127. data/lib/rubocop/cop/layout/multiline_method_definition_brace_layout.rb +1 -1
  128. data/lib/rubocop/cop/layout/multiline_method_parameter_line_breaks.rb +45 -0
  129. data/lib/rubocop/cop/layout/multiline_operation_indentation.rb +3 -3
  130. data/lib/rubocop/cop/layout/redundant_line_break.rb +5 -6
  131. data/lib/rubocop/cop/layout/rescue_ensure_alignment.rb +1 -1
  132. data/lib/rubocop/cop/layout/single_line_block_chain.rb +1 -1
  133. data/lib/rubocop/cop/layout/space_after_not.rb +1 -1
  134. data/lib/rubocop/cop/layout/space_around_block_parameters.rb +3 -3
  135. data/lib/rubocop/cop/layout/space_around_keyword.rb +1 -1
  136. data/lib/rubocop/cop/layout/space_around_operators.rb +1 -1
  137. data/lib/rubocop/cop/layout/space_before_block_braces.rb +5 -3
  138. data/lib/rubocop/cop/layout/space_before_brackets.rb +7 -0
  139. data/lib/rubocop/cop/layout/space_before_comment.rb +1 -1
  140. data/lib/rubocop/cop/layout/space_before_first_arg.rb +1 -1
  141. data/lib/rubocop/cop/layout/space_in_lambda_literal.rb +1 -1
  142. data/lib/rubocop/cop/layout/space_inside_array_literal_brackets.rb +10 -10
  143. data/lib/rubocop/cop/layout/space_inside_block_braces.rb +33 -15
  144. data/lib/rubocop/cop/layout/space_inside_reference_brackets.rb +1 -1
  145. data/lib/rubocop/cop/layout/space_inside_string_interpolation.rb +1 -1
  146. data/lib/rubocop/cop/layout/trailing_empty_lines.rb +9 -9
  147. data/lib/rubocop/cop/layout/trailing_whitespace.rb +3 -3
  148. data/lib/rubocop/cop/legacy/corrections_proxy.rb +1 -1
  149. data/lib/rubocop/cop/legacy/corrector.rb +1 -1
  150. data/lib/rubocop/cop/lint/ambiguous_assignment.rb +1 -1
  151. data/lib/rubocop/cop/lint/ambiguous_block_association.rb +28 -7
  152. data/lib/rubocop/cop/lint/ambiguous_operator.rb +7 -7
  153. data/lib/rubocop/cop/lint/ambiguous_operator_precedence.rb +1 -1
  154. data/lib/rubocop/cop/lint/ambiguous_range.rb +5 -5
  155. data/lib/rubocop/cop/lint/ambiguous_regexp_literal.rb +1 -1
  156. data/lib/rubocop/cop/lint/assignment_in_condition.rb +1 -1
  157. data/lib/rubocop/cop/lint/binary_operator_with_identical_operands.rb +1 -1
  158. data/lib/rubocop/cop/lint/boolean_symbol.rb +1 -1
  159. data/lib/rubocop/cop/lint/circular_argument_reference.rb +1 -1
  160. data/lib/rubocop/cop/lint/constant_overwritten_in_rescue.rb +51 -0
  161. data/lib/rubocop/cop/lint/debugger.rb +27 -17
  162. data/lib/rubocop/cop/lint/deprecated_class_methods.rb +15 -9
  163. data/lib/rubocop/cop/lint/deprecated_constants.rb +1 -1
  164. data/lib/rubocop/cop/lint/disjunctive_assignment_in_constructor.rb +1 -1
  165. data/lib/rubocop/cop/lint/duplicate_branch.rb +1 -1
  166. data/lib/rubocop/cop/lint/duplicate_case_condition.rb +1 -1
  167. data/lib/rubocop/cop/lint/duplicate_elsif_condition.rb +1 -1
  168. data/lib/rubocop/cop/lint/duplicate_hash_key.rb +1 -1
  169. data/lib/rubocop/cop/lint/duplicate_methods.rb +1 -1
  170. data/lib/rubocop/cop/lint/duplicate_regexp_character_class_element.rb +1 -1
  171. data/lib/rubocop/cop/lint/duplicate_require.rb +11 -2
  172. data/lib/rubocop/cop/lint/duplicate_rescue_exception.rb +1 -1
  173. data/lib/rubocop/cop/lint/each_with_object_argument.rb +1 -1
  174. data/lib/rubocop/cop/lint/else_layout.rb +3 -3
  175. data/lib/rubocop/cop/lint/empty_block.rb +2 -2
  176. data/lib/rubocop/cop/lint/empty_class.rb +1 -1
  177. data/lib/rubocop/cop/lint/empty_conditional_body.rb +99 -3
  178. data/lib/rubocop/cop/lint/empty_ensure.rb +1 -1
  179. data/lib/rubocop/cop/lint/empty_expression.rb +1 -1
  180. data/lib/rubocop/cop/lint/empty_file.rb +1 -1
  181. data/lib/rubocop/cop/lint/empty_in_pattern.rb +4 -2
  182. data/lib/rubocop/cop/lint/empty_interpolation.rb +1 -1
  183. data/lib/rubocop/cop/lint/empty_when.rb +4 -2
  184. data/lib/rubocop/cop/lint/ensure_return.rb +1 -1
  185. data/lib/rubocop/cop/lint/erb_new_arguments.rb +10 -10
  186. data/lib/rubocop/cop/lint/flip_flop.rb +1 -1
  187. data/lib/rubocop/cop/lint/float_comparison.rb +1 -1
  188. data/lib/rubocop/cop/lint/float_out_of_range.rb +1 -1
  189. data/lib/rubocop/cop/lint/heredoc_method_call_position.rb +1 -1
  190. data/lib/rubocop/cop/lint/implicit_string_concatenation.rb +1 -1
  191. data/lib/rubocop/cop/lint/incompatible_io_select_with_fiber_scheduler.rb +11 -4
  192. data/lib/rubocop/cop/lint/ineffective_access_modifier.rb +1 -1
  193. data/lib/rubocop/cop/lint/inherit_exception.rb +1 -1
  194. data/lib/rubocop/cop/lint/interpolation_check.rb +2 -2
  195. data/lib/rubocop/cop/lint/lambda_without_literal_block.rb +10 -3
  196. data/lib/rubocop/cop/lint/literal_as_condition.rb +6 -1
  197. data/lib/rubocop/cop/lint/literal_in_interpolation.rb +5 -1
  198. data/lib/rubocop/cop/lint/loop.rb +2 -2
  199. data/lib/rubocop/cop/lint/missing_cop_enable_directive.rb +1 -1
  200. data/lib/rubocop/cop/lint/missing_super.rb +1 -1
  201. data/lib/rubocop/cop/lint/nested_method_definition.rb +1 -1
  202. data/lib/rubocop/cop/lint/nested_percent_literal.rb +1 -1
  203. data/lib/rubocop/cop/lint/next_without_accumulator.rb +25 -6
  204. data/lib/rubocop/cop/lint/non_atomic_file_operation.rb +157 -0
  205. data/lib/rubocop/cop/lint/non_deterministic_require_order.rb +17 -5
  206. data/lib/rubocop/cop/lint/non_local_exit_from_iterator.rb +1 -1
  207. data/lib/rubocop/cop/lint/number_conversion.rb +32 -10
  208. data/lib/rubocop/cop/lint/numbered_parameter_assignment.rb +1 -1
  209. data/lib/rubocop/cop/lint/or_assignment_to_constant.rb +2 -3
  210. data/lib/rubocop/cop/lint/parentheses_as_grouped_expression.rb +2 -2
  211. data/lib/rubocop/cop/lint/percent_string_array.rb +1 -1
  212. data/lib/rubocop/cop/lint/percent_symbol_array.rb +1 -1
  213. data/lib/rubocop/cop/lint/raise_exception.rb +2 -2
  214. data/lib/rubocop/cop/lint/rand_one.rb +1 -1
  215. data/lib/rubocop/cop/lint/redundant_cop_disable_directive.rb +6 -6
  216. data/lib/rubocop/cop/lint/redundant_cop_enable_directive.rb +2 -2
  217. data/lib/rubocop/cop/lint/redundant_dir_glob_sort.rb +3 -3
  218. data/lib/rubocop/cop/lint/redundant_require_statement.rb +4 -1
  219. data/lib/rubocop/cop/lint/redundant_safe_navigation.rb +16 -3
  220. data/lib/rubocop/cop/lint/redundant_splat_expansion.rb +1 -1
  221. data/lib/rubocop/cop/lint/redundant_string_coercion.rb +1 -1
  222. data/lib/rubocop/cop/lint/redundant_with_index.rb +14 -11
  223. data/lib/rubocop/cop/lint/redundant_with_object.rb +13 -12
  224. data/lib/rubocop/cop/lint/refinement_import_methods.rb +51 -0
  225. data/lib/rubocop/cop/lint/regexp_as_condition.rb +3 -3
  226. data/lib/rubocop/cop/lint/require_parentheses.rb +1 -1
  227. data/lib/rubocop/cop/lint/require_range_parentheses.rb +57 -0
  228. data/lib/rubocop/cop/lint/rescue_exception.rb +1 -1
  229. data/lib/rubocop/cop/lint/return_in_void_context.rb +6 -18
  230. data/lib/rubocop/cop/lint/safe_navigation_chain.rb +38 -1
  231. data/lib/rubocop/cop/lint/safe_navigation_consistency.rb +1 -1
  232. data/lib/rubocop/cop/lint/safe_navigation_with_empty.rb +1 -1
  233. data/lib/rubocop/cop/lint/script_permission.rb +1 -1
  234. data/lib/rubocop/cop/lint/self_assignment.rb +1 -1
  235. data/lib/rubocop/cop/lint/shadowed_argument.rb +1 -1
  236. data/lib/rubocop/cop/lint/shadowed_exception.rb +16 -1
  237. data/lib/rubocop/cop/lint/shadowing_outer_local_variable.rb +32 -1
  238. data/lib/rubocop/cop/lint/struct_new_override.rb +3 -3
  239. data/lib/rubocop/cop/lint/suppressed_exception.rb +1 -1
  240. data/lib/rubocop/cop/lint/symbol_conversion.rb +4 -3
  241. data/lib/rubocop/cop/lint/syntax.rb +2 -3
  242. data/lib/rubocop/cop/lint/to_enum_arguments.rb +1 -1
  243. data/lib/rubocop/cop/lint/to_json.rb +1 -1
  244. data/lib/rubocop/cop/lint/top_level_return_with_argument.rb +1 -1
  245. data/lib/rubocop/cop/lint/trailing_comma_in_attribute_declaration.rb +2 -2
  246. data/lib/rubocop/cop/lint/triple_quotes.rb +1 -1
  247. data/lib/rubocop/cop/lint/underscore_prefixed_variable_name.rb +1 -1
  248. data/lib/rubocop/cop/lint/unexpected_block_arity.rb +1 -1
  249. data/lib/rubocop/cop/lint/unified_integer.rb +3 -1
  250. data/lib/rubocop/cop/lint/unreachable_code.rb +1 -1
  251. data/lib/rubocop/cop/lint/unreachable_loop.rb +13 -7
  252. data/lib/rubocop/cop/lint/unused_block_argument.rb +1 -1
  253. data/lib/rubocop/cop/lint/unused_method_argument.rb +2 -2
  254. data/lib/rubocop/cop/lint/uri_escape_unescape.rb +1 -1
  255. data/lib/rubocop/cop/lint/uri_regexp.rb +1 -1
  256. data/lib/rubocop/cop/lint/useless_access_modifier.rb +9 -7
  257. data/lib/rubocop/cop/lint/useless_assignment.rb +1 -1
  258. data/lib/rubocop/cop/lint/useless_else_without_rescue.rb +2 -3
  259. data/lib/rubocop/cop/lint/useless_method_definition.rb +1 -1
  260. data/lib/rubocop/cop/lint/useless_ruby2_keywords.rb +2 -2
  261. data/lib/rubocop/cop/lint/useless_setter_call.rb +2 -2
  262. data/lib/rubocop/cop/lint/useless_times.rb +2 -2
  263. data/lib/rubocop/cop/lint/void.rb +3 -1
  264. data/lib/rubocop/cop/metrics/abc_size.rb +4 -2
  265. data/lib/rubocop/cop/metrics/block_length.rb +7 -7
  266. data/lib/rubocop/cop/metrics/block_nesting.rb +1 -1
  267. data/lib/rubocop/cop/metrics/class_length.rb +1 -1
  268. data/lib/rubocop/cop/metrics/cyclomatic_complexity.rb +1 -1
  269. data/lib/rubocop/cop/metrics/method_length.rb +9 -8
  270. data/lib/rubocop/cop/metrics/module_length.rb +1 -1
  271. data/lib/rubocop/cop/metrics/parameter_lists.rb +1 -1
  272. data/lib/rubocop/cop/metrics/perceived_complexity.rb +1 -1
  273. data/lib/rubocop/cop/metrics/utils/abc_size_calculator.rb +2 -3
  274. data/lib/rubocop/cop/metrics/utils/code_length_calculator.rb +22 -3
  275. data/lib/rubocop/cop/mixin/allowed_methods.rb +20 -1
  276. data/lib/rubocop/cop/mixin/allowed_pattern.rb +56 -0
  277. data/lib/rubocop/cop/mixin/check_line_breakable.rb +5 -1
  278. data/lib/rubocop/cop/mixin/comments_help.rb +28 -2
  279. data/lib/rubocop/cop/mixin/def_node.rb +2 -7
  280. data/lib/rubocop/cop/mixin/duplication.rb +1 -1
  281. data/lib/rubocop/cop/mixin/enforce_superclass.rb +2 -1
  282. data/lib/rubocop/cop/mixin/hash_shorthand_syntax.rb +83 -4
  283. data/lib/rubocop/cop/mixin/hash_transform_method.rb +10 -6
  284. data/lib/rubocop/cop/mixin/line_length_help.rb +17 -6
  285. data/lib/rubocop/cop/mixin/method_complexity.rb +8 -13
  286. data/lib/rubocop/cop/mixin/multiline_element_indentation.rb +34 -12
  287. data/lib/rubocop/cop/mixin/multiline_expression_indentation.rb +4 -3
  288. data/lib/rubocop/cop/mixin/percent_array.rb +60 -1
  289. data/lib/rubocop/cop/mixin/preferred_delimiters.rb +2 -2
  290. data/lib/rubocop/cop/mixin/range_help.rb +10 -7
  291. data/lib/rubocop/cop/mixin/statement_modifier.rb +1 -1
  292. data/lib/rubocop/cop/mixin/string_help.rb +1 -1
  293. data/lib/rubocop/cop/mixin/surrounding_space.rb +4 -2
  294. data/lib/rubocop/cop/mixin/trailing_comma.rb +1 -1
  295. data/lib/rubocop/cop/naming/accessor_method_name.rb +4 -2
  296. data/lib/rubocop/cop/naming/ascii_identifiers.rb +1 -1
  297. data/lib/rubocop/cop/naming/binary_operator_parameter_name.rb +1 -1
  298. data/lib/rubocop/cop/naming/block_forwarding.rb +4 -4
  299. data/lib/rubocop/cop/naming/block_parameter_name.rb +2 -2
  300. data/lib/rubocop/cop/naming/class_and_module_camel_case.rb +1 -1
  301. data/lib/rubocop/cop/naming/constant_name.rb +3 -3
  302. data/lib/rubocop/cop/naming/file_name.rb +2 -2
  303. data/lib/rubocop/cop/naming/heredoc_delimiter_case.rb +1 -1
  304. data/lib/rubocop/cop/naming/heredoc_delimiter_naming.rb +1 -1
  305. data/lib/rubocop/cop/naming/inclusive_language.rb +3 -2
  306. data/lib/rubocop/cop/naming/memoized_instance_variable_name.rb +1 -1
  307. data/lib/rubocop/cop/naming/method_name.rb +6 -6
  308. data/lib/rubocop/cop/naming/method_parameter_name.rb +1 -1
  309. data/lib/rubocop/cop/naming/predicate_name.rb +32 -3
  310. data/lib/rubocop/cop/naming/rescued_exceptions_variable_name.rb +1 -1
  311. data/lib/rubocop/cop/naming/variable_name.rb +10 -1
  312. data/lib/rubocop/cop/naming/variable_number.rb +28 -18
  313. data/lib/rubocop/cop/offense.rb +1 -1
  314. data/lib/rubocop/cop/security/compound_hash.rb +105 -0
  315. data/lib/rubocop/cop/security/eval.rb +1 -1
  316. data/lib/rubocop/cop/security/json_load.rb +1 -1
  317. data/lib/rubocop/cop/security/marshal_load.rb +1 -1
  318. data/lib/rubocop/cop/security/open.rb +1 -1
  319. data/lib/rubocop/cop/security/yaml_load.rb +2 -2
  320. data/lib/rubocop/cop/style/access_modifier_declarations.rb +77 -1
  321. data/lib/rubocop/cop/style/accessor_grouping.rb +4 -4
  322. data/lib/rubocop/cop/style/alias.rb +4 -4
  323. data/lib/rubocop/cop/style/and_or.rb +12 -12
  324. data/lib/rubocop/cop/style/arguments_forwarding.rb +3 -3
  325. data/lib/rubocop/cop/style/array_coercion.rb +1 -1
  326. data/lib/rubocop/cop/style/array_join.rb +1 -1
  327. data/lib/rubocop/cop/style/ascii_comments.rb +1 -1
  328. data/lib/rubocop/cop/style/attr.rb +1 -1
  329. data/lib/rubocop/cop/style/auto_resource_cleanup.rb +1 -1
  330. data/lib/rubocop/cop/style/bare_percent_literals.rb +1 -1
  331. data/lib/rubocop/cop/style/bisected_attr_accessor/macro.rb +1 -1
  332. data/lib/rubocop/cop/style/bisected_attr_accessor.rb +1 -1
  333. data/lib/rubocop/cop/style/block_comments.rb +1 -1
  334. data/lib/rubocop/cop/style/block_delimiters.rb +35 -9
  335. data/lib/rubocop/cop/style/case_equality.rb +41 -11
  336. data/lib/rubocop/cop/style/case_like_if.rb +2 -2
  337. data/lib/rubocop/cop/style/character_literal.rb +1 -1
  338. data/lib/rubocop/cop/style/class_and_module_children.rb +5 -5
  339. data/lib/rubocop/cop/style/class_check.rb +1 -1
  340. data/lib/rubocop/cop/style/class_equality_comparison.rb +51 -4
  341. data/lib/rubocop/cop/style/class_methods.rb +1 -1
  342. data/lib/rubocop/cop/style/class_methods_definitions.rb +3 -2
  343. data/lib/rubocop/cop/style/class_vars.rb +1 -1
  344. data/lib/rubocop/cop/style/collection_compact.rb +4 -4
  345. data/lib/rubocop/cop/style/collection_methods.rb +3 -1
  346. data/lib/rubocop/cop/style/colon_method_call.rb +1 -1
  347. data/lib/rubocop/cop/style/colon_method_definition.rb +1 -1
  348. data/lib/rubocop/cop/style/combinable_loops.rb +4 -2
  349. data/lib/rubocop/cop/style/command_literal.rb +1 -1
  350. data/lib/rubocop/cop/style/comment_annotation.rb +1 -1
  351. data/lib/rubocop/cop/style/commented_keyword.rb +4 -4
  352. data/lib/rubocop/cop/style/conditional_assignment.rb +2 -1
  353. data/lib/rubocop/cop/style/constant_visibility.rb +1 -1
  354. data/lib/rubocop/cop/style/date_time.rb +2 -2
  355. data/lib/rubocop/cop/style/def_with_parentheses.rb +1 -1
  356. data/lib/rubocop/cop/style/dir.rb +4 -1
  357. data/lib/rubocop/cop/style/documentation.rb +1 -1
  358. data/lib/rubocop/cop/style/documentation_method.rb +1 -1
  359. data/lib/rubocop/cop/style/double_negation.rb +62 -3
  360. data/lib/rubocop/cop/style/each_for_simple_loop.rb +42 -7
  361. data/lib/rubocop/cop/style/each_with_object.rb +40 -9
  362. data/lib/rubocop/cop/style/empty_block_parameter.rb +2 -2
  363. data/lib/rubocop/cop/style/empty_case_condition.rb +3 -4
  364. data/lib/rubocop/cop/style/empty_else.rb +40 -3
  365. data/lib/rubocop/cop/style/empty_heredoc.rb +73 -0
  366. data/lib/rubocop/cop/style/empty_lambda_parameter.rb +2 -2
  367. data/lib/rubocop/cop/style/empty_literal.rb +2 -2
  368. data/lib/rubocop/cop/style/empty_method.rb +17 -2
  369. data/lib/rubocop/cop/style/encoding.rb +2 -2
  370. data/lib/rubocop/cop/style/end_block.rb +1 -1
  371. data/lib/rubocop/cop/style/endless_method.rb +1 -1
  372. data/lib/rubocop/cop/style/env_home.rb +56 -0
  373. data/lib/rubocop/cop/style/eval_with_location.rb +1 -1
  374. data/lib/rubocop/cop/style/even_odd.rb +1 -1
  375. data/lib/rubocop/cop/style/expand_path_arguments.rb +1 -1
  376. data/lib/rubocop/cop/style/explicit_block_argument.rb +2 -2
  377. data/lib/rubocop/cop/style/exponential_notation.rb +1 -1
  378. data/lib/rubocop/cop/style/fetch_env_var.rb +132 -0
  379. data/lib/rubocop/cop/style/file_write.rb +12 -0
  380. data/lib/rubocop/cop/style/float_division.rb +1 -1
  381. data/lib/rubocop/cop/style/for.rb +3 -1
  382. data/lib/rubocop/cop/style/format_string.rb +1 -1
  383. data/lib/rubocop/cop/style/format_string_token.rb +73 -23
  384. data/lib/rubocop/cop/style/frozen_string_literal_comment.rb +6 -3
  385. data/lib/rubocop/cop/style/global_std_stream.rb +1 -1
  386. data/lib/rubocop/cop/style/global_vars.rb +1 -1
  387. data/lib/rubocop/cop/style/guard_clause.rb +62 -4
  388. data/lib/rubocop/cop/style/hash_as_last_array_item.rb +1 -1
  389. data/lib/rubocop/cop/style/hash_conversion.rb +1 -1
  390. data/lib/rubocop/cop/style/hash_each_methods.rb +4 -2
  391. data/lib/rubocop/cop/style/hash_except.rb +85 -9
  392. data/lib/rubocop/cop/style/hash_like_case.rb +1 -1
  393. data/lib/rubocop/cop/style/hash_syntax.rb +20 -3
  394. data/lib/rubocop/cop/style/hash_transform_keys.rb +6 -1
  395. data/lib/rubocop/cop/style/hash_transform_values.rb +4 -1
  396. data/lib/rubocop/cop/style/identical_conditional_branches.rb +4 -4
  397. data/lib/rubocop/cop/style/if_unless_modifier.rb +6 -5
  398. data/lib/rubocop/cop/style/if_with_boolean_literal_branches.rb +4 -2
  399. data/lib/rubocop/cop/style/implicit_runtime_error.rb +3 -3
  400. data/lib/rubocop/cop/style/in_pattern_then.rb +1 -1
  401. data/lib/rubocop/cop/style/inline_comment.rb +1 -1
  402. data/lib/rubocop/cop/style/inverse_methods.rb +10 -8
  403. data/lib/rubocop/cop/style/ip_addresses.rb +1 -1
  404. data/lib/rubocop/cop/style/keyword_parameters_order.rb +2 -2
  405. data/lib/rubocop/cop/style/lambda.rb +1 -1
  406. data/lib/rubocop/cop/style/lambda_call.rb +1 -1
  407. data/lib/rubocop/cop/style/line_end_concatenation.rb +2 -2
  408. data/lib/rubocop/cop/style/magic_comment_format.rb +307 -0
  409. data/lib/rubocop/cop/style/map_compact_with_conditional_block.rb +136 -0
  410. data/lib/rubocop/cop/style/map_to_hash.rb +3 -3
  411. data/lib/rubocop/cop/style/method_call_with_args_parentheses/omit_parentheses.rb +4 -4
  412. data/lib/rubocop/cop/style/method_call_with_args_parentheses/require_parentheses.rb +6 -2
  413. data/lib/rubocop/cop/style/method_call_with_args_parentheses.rb +12 -12
  414. data/lib/rubocop/cop/style/method_call_without_args_parentheses.rb +20 -3
  415. data/lib/rubocop/cop/style/method_called_on_do_end_block.rb +5 -2
  416. data/lib/rubocop/cop/style/method_def_parentheses.rb +1 -1
  417. data/lib/rubocop/cop/style/min_max.rb +1 -1
  418. data/lib/rubocop/cop/style/missing_else.rb +24 -24
  419. data/lib/rubocop/cop/style/missing_respond_to_missing.rb +1 -1
  420. data/lib/rubocop/cop/style/mixin_grouping.rb +2 -2
  421. data/lib/rubocop/cop/style/mixin_usage.rb +1 -1
  422. data/lib/rubocop/cop/style/module_function.rb +3 -3
  423. data/lib/rubocop/cop/style/multiline_block_chain.rb +4 -2
  424. data/lib/rubocop/cop/style/multiline_if_modifier.rb +2 -2
  425. data/lib/rubocop/cop/style/multiline_if_then.rb +1 -1
  426. data/lib/rubocop/cop/style/multiline_in_pattern_then.rb +3 -5
  427. data/lib/rubocop/cop/style/multiline_memoization.rb +1 -1
  428. data/lib/rubocop/cop/style/multiline_method_signature.rb +2 -2
  429. data/lib/rubocop/cop/style/multiline_ternary_operator.rb +37 -11
  430. data/lib/rubocop/cop/style/multiline_when_then.rb +2 -4
  431. data/lib/rubocop/cop/style/multiple_comparison.rb +1 -1
  432. data/lib/rubocop/cop/style/mutable_constant.rb +1 -1
  433. data/lib/rubocop/cop/style/negated_if_else_condition.rb +1 -1
  434. data/lib/rubocop/cop/style/nested_file_dirname.rb +1 -1
  435. data/lib/rubocop/cop/style/nested_modifier.rb +1 -1
  436. data/lib/rubocop/cop/style/nested_parenthesized_calls.rb +11 -2
  437. data/lib/rubocop/cop/style/nested_ternary_operator.rb +20 -8
  438. data/lib/rubocop/cop/style/next.rb +4 -6
  439. data/lib/rubocop/cop/style/nil_comparison.rb +1 -1
  440. data/lib/rubocop/cop/style/nil_lambda.rb +3 -3
  441. data/lib/rubocop/cop/style/non_nil_check.rb +1 -1
  442. data/lib/rubocop/cop/style/not.rb +2 -2
  443. data/lib/rubocop/cop/style/numbered_parameters.rb +1 -1
  444. data/lib/rubocop/cop/style/numbered_parameters_limit.rb +1 -1
  445. data/lib/rubocop/cop/style/numeric_literal_prefix.rb +1 -1
  446. data/lib/rubocop/cop/style/numeric_literals.rb +16 -1
  447. data/lib/rubocop/cop/style/numeric_predicate.rb +53 -11
  448. data/lib/rubocop/cop/style/object_then.rb +71 -0
  449. data/lib/rubocop/cop/style/one_line_conditional.rb +1 -1
  450. data/lib/rubocop/cop/style/open_struct_use.rb +1 -1
  451. data/lib/rubocop/cop/style/option_hash.rb +1 -1
  452. data/lib/rubocop/cop/style/optional_arguments.rb +2 -2
  453. data/lib/rubocop/cop/style/optional_boolean_parameter.rb +2 -2
  454. data/lib/rubocop/cop/style/or_assignment.rb +1 -1
  455. data/lib/rubocop/cop/style/parentheses_around_condition.rb +1 -1
  456. data/lib/rubocop/cop/style/percent_literal_delimiters.rb +1 -1
  457. data/lib/rubocop/cop/style/percent_q_literals.rb +1 -1
  458. data/lib/rubocop/cop/style/perl_backrefs.rb +23 -2
  459. data/lib/rubocop/cop/style/preferred_hash_methods.rb +1 -1
  460. data/lib/rubocop/cop/style/proc.rb +5 -2
  461. data/lib/rubocop/cop/style/quoted_symbols.rb +1 -1
  462. data/lib/rubocop/cop/style/raise_args.rb +10 -4
  463. data/lib/rubocop/cop/style/random_with_offset.rb +1 -1
  464. data/lib/rubocop/cop/style/redundant_argument.rb +2 -2
  465. data/lib/rubocop/cop/style/redundant_assignment.rb +1 -1
  466. data/lib/rubocop/cop/style/redundant_begin.rb +19 -6
  467. data/lib/rubocop/cop/style/redundant_capital_w.rb +2 -3
  468. data/lib/rubocop/cop/style/redundant_condition.rb +129 -13
  469. data/lib/rubocop/cop/style/redundant_conditional.rb +1 -1
  470. data/lib/rubocop/cop/style/redundant_exception.rb +1 -1
  471. data/lib/rubocop/cop/style/redundant_fetch_block.rb +2 -2
  472. data/lib/rubocop/cop/style/redundant_file_extension_in_require.rb +1 -1
  473. data/lib/rubocop/cop/style/redundant_freeze.rb +1 -1
  474. data/lib/rubocop/cop/style/redundant_initialize.rb +154 -0
  475. data/lib/rubocop/cop/style/redundant_interpolation.rb +22 -1
  476. data/lib/rubocop/cop/style/redundant_parentheses.rb +22 -24
  477. data/lib/rubocop/cop/style/redundant_percent_q.rb +1 -1
  478. data/lib/rubocop/cop/style/redundant_regexp_character_class.rb +8 -3
  479. data/lib/rubocop/cop/style/redundant_regexp_escape.rb +2 -2
  480. data/lib/rubocop/cop/style/redundant_return.rb +2 -2
  481. data/lib/rubocop/cop/style/redundant_self.rb +3 -1
  482. data/lib/rubocop/cop/style/redundant_self_assignment.rb +3 -4
  483. data/lib/rubocop/cop/style/redundant_self_assignment_branch.rb +1 -1
  484. data/lib/rubocop/cop/style/redundant_sort.rb +22 -7
  485. data/lib/rubocop/cop/style/redundant_sort_by.rb +25 -9
  486. data/lib/rubocop/cop/style/regexp_literal.rb +1 -1
  487. data/lib/rubocop/cop/style/rescue_modifier.rb +1 -1
  488. data/lib/rubocop/cop/style/rescue_standard_error.rb +13 -13
  489. data/lib/rubocop/cop/style/return_nil.rb +1 -1
  490. data/lib/rubocop/cop/style/safe_navigation.rb +21 -11
  491. data/lib/rubocop/cop/style/sample.rb +1 -1
  492. data/lib/rubocop/cop/style/select_by_regexp.rb +7 -2
  493. data/lib/rubocop/cop/style/self_assignment.rb +1 -1
  494. data/lib/rubocop/cop/style/semicolon.rb +28 -4
  495. data/lib/rubocop/cop/style/send.rb +1 -1
  496. data/lib/rubocop/cop/style/signal_exception.rb +1 -1
  497. data/lib/rubocop/cop/style/single_argument_dig.rb +5 -0
  498. data/lib/rubocop/cop/style/single_line_block_params.rb +2 -2
  499. data/lib/rubocop/cop/style/single_line_methods.rb +2 -2
  500. data/lib/rubocop/cop/style/slicing_with_range.rb +1 -1
  501. data/lib/rubocop/cop/style/sole_nested_conditional.rb +96 -30
  502. data/lib/rubocop/cop/style/special_global_vars.rb +66 -8
  503. data/lib/rubocop/cop/style/static_class.rb +1 -1
  504. data/lib/rubocop/cop/style/stderr_puts.rb +1 -1
  505. data/lib/rubocop/cop/style/string_chars.rb +1 -1
  506. data/lib/rubocop/cop/style/string_concatenation.rb +6 -7
  507. data/lib/rubocop/cop/style/string_hash_keys.rb +1 -1
  508. data/lib/rubocop/cop/style/string_literals_in_interpolation.rb +1 -1
  509. data/lib/rubocop/cop/style/string_methods.rb +1 -1
  510. data/lib/rubocop/cop/style/strip.rb +1 -1
  511. data/lib/rubocop/cop/style/struct_inheritance.rb +4 -4
  512. data/lib/rubocop/cop/style/swap_values.rb +2 -2
  513. data/lib/rubocop/cop/style/symbol_array.rb +9 -6
  514. data/lib/rubocop/cop/style/symbol_literal.rb +1 -1
  515. data/lib/rubocop/cop/style/symbol_proc.rb +70 -12
  516. data/lib/rubocop/cop/style/ternary_parentheses.rb +3 -16
  517. data/lib/rubocop/cop/style/top_level_method_definition.rb +3 -1
  518. data/lib/rubocop/cop/style/trailing_body_on_class.rb +1 -1
  519. data/lib/rubocop/cop/style/trailing_body_on_method_definition.rb +1 -1
  520. data/lib/rubocop/cop/style/trailing_body_on_module.rb +1 -1
  521. data/lib/rubocop/cop/style/trailing_comma_in_arguments.rb +1 -1
  522. data/lib/rubocop/cop/style/trailing_comma_in_array_literal.rb +1 -1
  523. data/lib/rubocop/cop/style/trailing_comma_in_block_args.rb +2 -2
  524. data/lib/rubocop/cop/style/trailing_comma_in_hash_literal.rb +1 -1
  525. data/lib/rubocop/cop/style/trailing_method_end_statement.rb +2 -5
  526. data/lib/rubocop/cop/style/trailing_underscore_variable.rb +1 -1
  527. data/lib/rubocop/cop/style/trivial_accessors.rb +11 -9
  528. data/lib/rubocop/cop/style/unless_else.rb +5 -1
  529. data/lib/rubocop/cop/style/unless_logical_operators.rb +1 -1
  530. data/lib/rubocop/cop/style/unpack_first.rb +5 -2
  531. data/lib/rubocop/cop/style/variable_interpolation.rb +1 -1
  532. data/lib/rubocop/cop/style/when_then.rb +1 -1
  533. data/lib/rubocop/cop/style/word_array.rb +4 -5
  534. data/lib/rubocop/cop/style/yoda_condition.rb +1 -1
  535. data/lib/rubocop/cop/style/zero_length_predicate.rb +1 -1
  536. data/lib/rubocop/cop/team.rb +2 -2
  537. data/lib/rubocop/cop/util.rb +3 -3
  538. data/lib/rubocop/cop/variable_force/branch.rb +1 -1
  539. data/lib/rubocop/cops_documentation_generator.rb +19 -2
  540. data/lib/rubocop/ext/range.rb +15 -0
  541. data/lib/rubocop/feature_loader.rb +94 -0
  542. data/lib/rubocop/formatter/clang_style_formatter.rb +1 -1
  543. data/lib/rubocop/formatter/disabled_config_formatter.rb +11 -8
  544. data/lib/rubocop/formatter/formatter_set.rb +20 -18
  545. data/lib/rubocop/formatter/git_hub_actions_formatter.rb +15 -2
  546. data/lib/rubocop/formatter/html_formatter.rb +5 -13
  547. data/lib/rubocop/formatter/markdown_formatter.rb +78 -0
  548. data/lib/rubocop/formatter/offense_count_formatter.rb +8 -2
  549. data/lib/rubocop/formatter/simple_text_formatter.rb +9 -8
  550. data/lib/rubocop/formatter/tap_formatter.rb +1 -1
  551. data/lib/rubocop/formatter/worst_offenders_formatter.rb +1 -2
  552. data/lib/rubocop/formatter.rb +31 -0
  553. data/lib/rubocop/magic_comment.rb +31 -5
  554. data/lib/rubocop/options.rb +103 -34
  555. data/lib/rubocop/rake_task.rb +34 -9
  556. data/lib/rubocop/result_cache.rb +24 -13
  557. data/lib/rubocop/rspec/cop_helper.rb +2 -2
  558. data/lib/rubocop/rspec/expect_offense.rb +3 -3
  559. data/lib/rubocop/rspec/parallel_formatter.rb +1 -1
  560. data/lib/rubocop/rspec/shared_contexts.rb +31 -11
  561. data/lib/rubocop/rspec/support.rb +14 -0
  562. data/lib/rubocop/runner.rb +41 -7
  563. data/lib/rubocop/server/cache.rb +144 -0
  564. data/lib/rubocop/server/cli.rb +121 -0
  565. data/lib/rubocop/server/client_command/base.rb +44 -0
  566. data/lib/rubocop/server/client_command/exec.rb +59 -0
  567. data/lib/rubocop/server/client_command/restart.rb +25 -0
  568. data/lib/rubocop/server/client_command/start.rb +43 -0
  569. data/lib/rubocop/server/client_command/status.rb +28 -0
  570. data/lib/rubocop/server/client_command/stop.rb +31 -0
  571. data/lib/rubocop/server/client_command.rb +26 -0
  572. data/lib/rubocop/server/core.rb +79 -0
  573. data/lib/rubocop/server/errors.rb +23 -0
  574. data/lib/rubocop/server/helper.rb +34 -0
  575. data/lib/rubocop/server/server_command/base.rb +50 -0
  576. data/lib/rubocop/server/server_command/exec.rb +34 -0
  577. data/lib/rubocop/server/server_command/stop.rb +24 -0
  578. data/lib/rubocop/server/server_command.rb +21 -0
  579. data/lib/rubocop/server/socket_reader.rb +65 -0
  580. data/lib/rubocop/server.rb +53 -0
  581. data/lib/rubocop/string_interpreter.rb +4 -4
  582. data/lib/rubocop/target_ruby.rb +14 -6
  583. data/lib/rubocop/version.rb +17 -9
  584. data/lib/rubocop.rb +25 -30
  585. metadata +78 -14
  586. data/lib/rubocop/cop/gemspec/date_assignment.rb +0 -49
  587. data/lib/rubocop/cop/mixin/ignored_methods.rb +0 -52
  588. data/lib/rubocop/cop/mixin/ignored_pattern.rb +0 -29
data/config/default.yml CHANGED
@@ -140,7 +140,7 @@ AllCops:
140
140
  # or gems.locked file. (Although the Ruby version is specified in the Gemfile
141
141
  # or gems.rb file, RuboCop reads the final value from the lock file.) If the
142
142
  # Ruby version is still unresolved, RuboCop will use the oldest officially
143
- # supported Ruby version (currently Ruby 2.5).
143
+ # supported Ruby version (currently Ruby 2.6).
144
144
  TargetRubyVersion: ~
145
145
  # Determines if a notification for extension libraries should be shown when
146
146
  # rubocop is run. Keys are the name of the extension, and values are an array
@@ -153,6 +153,8 @@ AllCops:
153
153
  rubocop-sequel: [sequel]
154
154
  rubocop-rake: [rake]
155
155
  rubocop-graphql: [graphql]
156
+ # Enable/Disable checking the methods extended by Active Support.
157
+ ActiveSupportExtensionsEnabled: false
156
158
 
157
159
  #################### Bundler ###############################
158
160
 
@@ -235,10 +237,22 @@ Bundler/OrderedGems:
235
237
 
236
238
  #################### Gemspec ###############################
237
239
 
238
- Gemspec/DateAssignment:
239
- Description: 'Checks that `date =` is not used in gemspec file, it is set automatically when the gem is packaged.'
240
+ Gemspec/DependencyVersion:
241
+ Description: 'Requires or forbids specifying gem dependency versions.'
242
+ Enabled: false
243
+ VersionAdded: '1.29'
244
+ EnforcedStyle: 'required'
245
+ SupportedStyles:
246
+ - 'required'
247
+ - 'forbidden'
248
+ Include:
249
+ - '**/*.gemspec'
250
+ AllowedGems: []
251
+
252
+ Gemspec/DeprecatedAttributeAssignment:
253
+ Description: Checks that deprecated attribute assignments are not set in a gemspec file.
240
254
  Enabled: pending
241
- VersionAdded: '1.10'
255
+ VersionAdded: '1.30'
242
256
  Include:
243
257
  - '**/*.gemspec'
244
258
 
@@ -883,7 +897,7 @@ Layout/HeredocArgumentClosingParenthesis:
883
897
  VersionAdded: '0.68'
884
898
 
885
899
  Layout/HeredocIndentation:
886
- Description: 'This cop checks the indentation of the here document bodies.'
900
+ Description: 'Checks the indentation of the here document bodies.'
887
901
  StyleGuide: '#squiggly-heredocs'
888
902
  Enabled: true
889
903
  VersionAdded: '0.49'
@@ -916,7 +930,7 @@ Layout/IndentationStyle:
916
930
  VersionChanged: '0.82'
917
931
  # By default the indentation width from `Layout/IndentationWidth` is used,
918
932
  # but it can be overridden by setting this parameter.
919
- # It is used during auto-correction to determine how many spaces should
933
+ # It is used during autocorrection to determine how many spaces should
920
934
  # replace each tab.
921
935
  IndentationWidth: ~
922
936
  EnforcedStyle: spaces
@@ -931,7 +945,8 @@ Layout/IndentationWidth:
931
945
  VersionAdded: '0.49'
932
946
  # Number of spaces for each indentation level.
933
947
  Width: 2
934
- IgnoredPatterns: []
948
+ AllowedPatterns: []
949
+ IgnoredPatterns: [] # deprecated
935
950
 
936
951
  Layout/InitialIndentation:
937
952
  Description: >-
@@ -954,6 +969,31 @@ Layout/LeadingEmptyLines:
954
969
  VersionAdded: '0.57'
955
970
  VersionChanged: '0.77'
956
971
 
972
+ Layout/LineContinuationLeadingSpace:
973
+ Description: >-
974
+ Use trailing spaces instead of leading spaces in strings
975
+ broken over multiple lines (by a backslash).
976
+ Enabled: pending
977
+ AutoCorrect: false
978
+ SafeAutoCorrect: false
979
+ VersionAdded: '1.31'
980
+ VersionChanged: '1.32'
981
+ EnforcedStyle: trailing
982
+ SupportedStyles:
983
+ - leading
984
+ - trailing
985
+
986
+ Layout/LineContinuationSpacing:
987
+ Description: 'Checks the spacing in front of backslash in line continuations.'
988
+ Enabled: pending
989
+ AutoCorrect: true
990
+ SafeAutoCorrect: true
991
+ VersionAdded: '1.31'
992
+ EnforcedStyle: space
993
+ SupportedStyles:
994
+ - space
995
+ - no_space
996
+
957
997
  Layout/LineEndStringConcatenationIndentation:
958
998
  Description: >-
959
999
  Checks the indentation of the next line after a line that
@@ -985,10 +1025,11 @@ Layout/LineLength:
985
1025
  # The IgnoreCopDirectives option causes the LineLength rule to ignore cop
986
1026
  # directives like '# rubocop: enable ...' when calculating a line's length.
987
1027
  IgnoreCopDirectives: true
988
- # The IgnoredPatterns option is a list of !ruby/regexp and/or string
1028
+ # The AllowedPatterns option is a list of !ruby/regexp and/or string
989
1029
  # elements. Strings will be converted to Regexp objects. A line that matches
990
1030
  # any regular expression listed in this option will be ignored by LineLength.
991
- IgnoredPatterns: []
1031
+ AllowedPatterns: []
1032
+ IgnoredPatterns: [] # deprecated
992
1033
 
993
1034
  Layout/MultilineArrayBraceLayout:
994
1035
  Description: >-
@@ -1117,6 +1158,13 @@ Layout/MultilineMethodDefinitionBraceLayout:
1117
1158
  - new_line
1118
1159
  - same_line
1119
1160
 
1161
+ Layout/MultilineMethodParameterLineBreaks:
1162
+ Description: >-
1163
+ Checks that each parameter in a multi-line method definition
1164
+ starts on a separate line.
1165
+ Enabled: false
1166
+ VersionAdded: '1.32'
1167
+
1120
1168
  Layout/MultilineOperationIndentation:
1121
1169
  Description: >-
1122
1170
  Checks indentation of binary operations that span more than
@@ -1454,7 +1502,9 @@ Lint/AmbiguousBlockAssociation:
1454
1502
  Enabled: true
1455
1503
  VersionAdded: '0.48'
1456
1504
  VersionChanged: '1.13'
1457
- IgnoredMethods: []
1505
+ AllowedMethods: []
1506
+ AllowedPatterns: []
1507
+ IgnoredMethods: [] # deprecated
1458
1508
 
1459
1509
  Lint/AmbiguousOperator:
1460
1510
  Description: >-
@@ -1500,7 +1550,7 @@ Lint/BigDecimalNew:
1500
1550
  VersionAdded: '0.53'
1501
1551
 
1502
1552
  Lint/BinaryOperatorWithIdenticalOperands:
1503
- Description: 'This cop checks for places where binary operator has identical operands.'
1553
+ Description: 'Checks for places where binary operator has identical operands.'
1504
1554
  Enabled: true
1505
1555
  Safe: false
1506
1556
  VersionAdded: '0.89'
@@ -1529,6 +1579,11 @@ Lint/ConstantDefinitionInBlock:
1529
1579
  AllowedMethods:
1530
1580
  - enums
1531
1581
 
1582
+ Lint/ConstantOverwrittenInRescue:
1583
+ Description: 'Checks for overwriting an exception with an exception result by use `rescue =>`.'
1584
+ Enabled: pending
1585
+ VersionAdded: '1.31'
1586
+
1532
1587
  Lint/ConstantResolution:
1533
1588
  Description: 'Check that constants are fully qualified with `::`.'
1534
1589
  Enabled: false
@@ -1549,6 +1604,7 @@ Lint/Debugger:
1549
1604
  # a user's configuration, but are otherwise not significant.
1550
1605
  Kernel:
1551
1606
  - binding.irb
1607
+ - Kernel.binding.irb
1552
1608
  Byebug:
1553
1609
  - byebug
1554
1610
  - remote_byebug
@@ -1566,6 +1622,9 @@ Lint/Debugger:
1566
1622
  - binding.pry
1567
1623
  - binding.remote_pry
1568
1624
  - binding.pry_remote
1625
+ - Kernel.binding.pry
1626
+ - Kernel.binding.remote_pry
1627
+ - Kernel.binding.pry_remote
1569
1628
  - Pry.rescue
1570
1629
  Rails:
1571
1630
  - debugger
@@ -1661,7 +1720,9 @@ Lint/DuplicateRegexpCharacterClassElement:
1661
1720
  Lint/DuplicateRequire:
1662
1721
  Description: 'Check for duplicate `require`s and `require_relative`s.'
1663
1722
  Enabled: true
1723
+ SafeAutoCorrect: false
1664
1724
  VersionAdded: '0.90'
1725
+ VersionChanged: '1.28'
1665
1726
 
1666
1727
  Lint/DuplicateRescueException:
1667
1728
  Description: 'Checks that there are no repeated exceptions used in `rescue` expressions.'
@@ -1680,7 +1741,7 @@ Lint/ElseLayout:
1680
1741
  VersionChanged: '1.2'
1681
1742
 
1682
1743
  Lint/EmptyBlock:
1683
- Description: 'This cop checks for blocks without a body.'
1744
+ Description: 'Checks for blocks without a body.'
1684
1745
  Enabled: pending
1685
1746
  VersionAdded: '1.1'
1686
1747
  VersionChanged: '1.15'
@@ -1694,10 +1755,12 @@ Lint/EmptyClass:
1694
1755
  AllowComments: false
1695
1756
 
1696
1757
  Lint/EmptyConditionalBody:
1697
- Description: 'This cop checks for the presence of `if`, `elsif` and `unless` branches without a body.'
1758
+ Description: 'Checks for the presence of `if`, `elsif` and `unless` branches without a body.'
1698
1759
  Enabled: true
1760
+ SafeAutoCorrect: false
1699
1761
  AllowComments: true
1700
1762
  VersionAdded: '0.89'
1763
+ VersionChanged: '1.34'
1701
1764
 
1702
1765
  Lint/EmptyEnsure:
1703
1766
  Description: 'Checks for empty ensure block.'
@@ -1873,7 +1936,7 @@ Lint/MissingCopEnableDirective:
1873
1936
 
1874
1937
  Lint/MissingSuper:
1875
1938
  Description: >-
1876
- This cop checks for the presence of constructors and lifecycle callbacks
1939
+ Checks for the presence of constructors and lifecycle callbacks
1877
1940
  without calls to `super`.
1878
1941
  Enabled: true
1879
1942
  VersionAdded: '0.89'
@@ -1913,6 +1976,13 @@ Lint/NoReturnInBeginEndBlocks:
1913
1976
  Enabled: pending
1914
1977
  VersionAdded: '1.2'
1915
1978
 
1979
+ Lint/NonAtomicFileOperation:
1980
+ Description: Checks for non-atomic file operations.
1981
+ StyleGuide: '#atomic-file-operations'
1982
+ Enabled: pending
1983
+ VersionAdded: '1.31'
1984
+ SafeAutoCorrect: false
1985
+
1916
1986
  Lint/NonDeterministicRequireOrder:
1917
1987
  Description: 'Always sort arrays returned by Dir.glob when requiring files.'
1918
1988
  Enabled: true
@@ -1930,7 +2000,9 @@ Lint/NumberConversion:
1930
2000
  VersionAdded: '0.53'
1931
2001
  VersionChanged: '1.1'
1932
2002
  SafeAutoCorrect: false
1933
- IgnoredMethods: []
2003
+ AllowedMethods: []
2004
+ AllowedPatterns: []
2005
+ IgnoredMethods: [] # deprecated
1934
2006
  IgnoredClasses:
1935
2007
  - Time
1936
2008
  - DateTime
@@ -2058,6 +2130,12 @@ Lint/RedundantWithObject:
2058
2130
  Enabled: true
2059
2131
  VersionAdded: '0.51'
2060
2132
 
2133
+ Lint/RefinementImportMethods:
2134
+ Description: 'Use `Refinement#import_methods` when using `include` or `prepend` in `refine` block.'
2135
+ Enabled: pending
2136
+ SafeAutoCorrect: false
2137
+ VersionAdded: '1.27'
2138
+
2061
2139
  Lint/RegexpAsCondition:
2062
2140
  Description: >-
2063
2141
  Do not use regexp literal as a condition.
@@ -2073,6 +2151,11 @@ Lint/RequireParentheses:
2073
2151
  Enabled: true
2074
2152
  VersionAdded: '0.18'
2075
2153
 
2154
+ Lint/RequireRangeParentheses:
2155
+ Description: 'Checks that a range literal is enclosed in parentheses when the end of the range is at a line break.'
2156
+ Enabled: pending
2157
+ VersionAdded: '1.32'
2158
+
2076
2159
  Lint/RequireRelativeSelfPath:
2077
2160
  Description: 'Checks for uses a file requiring itself with `require_relative`.'
2078
2161
  Enabled: pending
@@ -2196,7 +2279,7 @@ Lint/Syntax:
2196
2279
  VersionAdded: '0.9'
2197
2280
 
2198
2281
  Lint/ToEnumArguments:
2199
- Description: 'This cop ensures that `to_enum`/`enum_for`, called for the current method, has correct arguments.'
2282
+ Description: 'Ensures that `to_enum`/`enum_for`, called for the current method, has correct arguments.'
2200
2283
  Enabled: pending
2201
2284
  VersionAdded: '1.1'
2202
2285
 
@@ -2206,12 +2289,12 @@ Lint/ToJSON:
2206
2289
  VersionAdded: '0.66'
2207
2290
 
2208
2291
  Lint/TopLevelReturnWithArgument:
2209
- Description: 'This cop detects top level return statements with argument.'
2292
+ Description: 'Detects top level return statements with argument.'
2210
2293
  Enabled: true
2211
2294
  VersionAdded: '0.89'
2212
2295
 
2213
2296
  Lint/TrailingCommaInAttributeDeclaration:
2214
- Description: 'This cop checks for trailing commas in attribute declarations.'
2297
+ Description: 'Checks for trailing commas in attribute declarations.'
2215
2298
  Enabled: true
2216
2299
  VersionAdded: '0.90'
2217
2300
 
@@ -2260,14 +2343,15 @@ Lint/UnreachableCode:
2260
2343
  VersionAdded: '0.9'
2261
2344
 
2262
2345
  Lint/UnreachableLoop:
2263
- Description: 'This cop checks for loops that will have at most one iteration.'
2346
+ Description: 'Checks for loops that will have at most one iteration.'
2264
2347
  Enabled: true
2265
2348
  VersionAdded: '0.89'
2266
2349
  VersionChanged: '1.7'
2267
- IgnoredPatterns:
2350
+ AllowedPatterns:
2268
2351
  # RSpec uses `times` in its message expectations
2269
2352
  # eg. `exactly(2).times`
2270
2353
  - !ruby/regexp /(exactly|at_least|at_most)\(\d+\)\.times/
2354
+ IgnoredPatterns: [] # deprecated
2271
2355
 
2272
2356
  Lint/UnusedBlockArgument:
2273
2357
  Description: 'Checks for unused block arguments.'
@@ -2322,13 +2406,14 @@ Lint/UselessElseWithoutRescue:
2322
2406
  Description: 'Checks for useless `else` in `begin..end` without `rescue`.'
2323
2407
  Enabled: true
2324
2408
  VersionAdded: '0.17'
2409
+ VersionChanged: '1.31'
2325
2410
 
2326
2411
  Lint/UselessMethodDefinition:
2327
2412
  Description: 'Checks for useless method definitions.'
2328
2413
  Enabled: true
2329
2414
  VersionAdded: '0.90'
2415
+ VersionChanged: '0.91'
2330
2416
  Safe: false
2331
- AllowComments: true
2332
2417
 
2333
2418
  Lint/UselessRuby2Keywords:
2334
2419
  Description: 'Finds unnecessary uses of `ruby2_keywords`.'
@@ -2369,7 +2454,9 @@ Metrics/AbcSize:
2369
2454
  VersionChanged: '1.5'
2370
2455
  # The ABC size is a calculated magnitude, so this number can be an Integer or
2371
2456
  # a Float.
2372
- IgnoredMethods: []
2457
+ AllowedMethods: []
2458
+ AllowedPatterns: []
2459
+ IgnoredMethods: [] # deprecated
2373
2460
  CountRepeatedAttributes: true
2374
2461
  Max: 17
2375
2462
 
@@ -2382,10 +2469,12 @@ Metrics/BlockLength:
2382
2469
  Max: 25
2383
2470
  CountAsOne: []
2384
2471
  ExcludedMethods: [] # deprecated, retained for backwards compatibility
2385
- IgnoredMethods:
2472
+ AllowedMethods:
2386
2473
  # By default, exclude the `#refine` method, as it tends to have larger
2387
2474
  # associated blocks.
2388
2475
  - refine
2476
+ AllowedPatterns: []
2477
+ IgnoredMethods: [] # deprecated
2389
2478
  Exclude:
2390
2479
  - '**/*.gemspec'
2391
2480
 
@@ -2415,7 +2504,9 @@ Metrics/CyclomaticComplexity:
2415
2504
  Enabled: true
2416
2505
  VersionAdded: '0.25'
2417
2506
  VersionChanged: '0.81'
2418
- IgnoredMethods: []
2507
+ AllowedMethods: []
2508
+ AllowedPatterns: []
2509
+ IgnoredMethods: [] # deprecated
2419
2510
  Max: 7
2420
2511
 
2421
2512
  Metrics/MethodLength:
@@ -2428,7 +2519,9 @@ Metrics/MethodLength:
2428
2519
  Max: 10
2429
2520
  CountAsOne: []
2430
2521
  ExcludedMethods: [] # deprecated, retained for backwards compatibility
2431
- IgnoredMethods: []
2522
+ AllowedMethods: []
2523
+ AllowedPatterns: []
2524
+ IgnoredMethods: [] # deprecated
2432
2525
 
2433
2526
  Metrics/ModuleLength:
2434
2527
  Description: 'Avoid modules longer than 100 lines of code.'
@@ -2456,7 +2549,9 @@ Metrics/PerceivedComplexity:
2456
2549
  Enabled: true
2457
2550
  VersionAdded: '0.25'
2458
2551
  VersionChanged: '0.81'
2459
- IgnoredMethods: []
2552
+ AllowedMethods: []
2553
+ AllowedPatterns: []
2554
+ IgnoredMethods: [] # deprecated
2460
2555
  Max: 8
2461
2556
 
2462
2557
  ################## Migration #############################
@@ -2680,11 +2775,12 @@ Naming/MethodName:
2680
2775
  - camelCase
2681
2776
  # Method names matching patterns are always allowed.
2682
2777
  #
2683
- # IgnoredPatterns:
2778
+ # AllowedPatterns:
2684
2779
  # - '\A\s*onSelectionBulkChange\s*'
2685
2780
  # - '\A\s*onSelectionCleared\s*'
2686
2781
  #
2687
- IgnoredPatterns: []
2782
+ AllowedPatterns: []
2783
+ IgnoredPatterns: [] # deprecated
2688
2784
 
2689
2785
  Naming/MethodParameterName:
2690
2786
  Description: >-
@@ -2698,6 +2794,7 @@ Naming/MethodParameterName:
2698
2794
  AllowNamesEndingInNumbers: true
2699
2795
  # Allowed names that will not register an offense
2700
2796
  AllowedNames:
2797
+ - as
2701
2798
  - at
2702
2799
  - by
2703
2800
  - db
@@ -2760,6 +2857,7 @@ Naming/VariableName:
2760
2857
  - snake_case
2761
2858
  - camelCase
2762
2859
  AllowedIdentifiers: []
2860
+ AllowedPatterns: []
2763
2861
 
2764
2862
  Naming/VariableNumber:
2765
2863
  Description: 'Use the configured style when numbering symbols, methods and variables.'
@@ -2781,9 +2879,15 @@ Naming/VariableNumber:
2781
2879
  - rfc822 # Time#rfc822
2782
2880
  - rfc2822 # Time#rfc2822
2783
2881
  - rfc3339 # DateTime.rfc3339
2882
+ AllowedPatterns: []
2784
2883
 
2785
2884
  #################### Security ##############################
2786
2885
 
2886
+ Security/CompoundHash:
2887
+ Description: 'When overwriting Object#hash to combine values, prefer delegating to Array#hash over writing a custom implementation.'
2888
+ Enabled: pending
2889
+ VersionAdded: '1.28'
2890
+
2787
2891
  Security/Eval:
2788
2892
  Description: 'The use of eval represents a serious security risk.'
2789
2893
  Enabled: true
@@ -2845,6 +2949,7 @@ Style/AccessModifierDeclarations:
2845
2949
  - inline
2846
2950
  - group
2847
2951
  AllowModifiersOnSymbols: true
2952
+ SafeAutoCorrect: false
2848
2953
 
2849
2954
  Style/AccessorGrouping:
2850
2955
  Description: 'Checks for grouping of accessors in `class` and `module` bodies.'
@@ -2979,7 +3084,7 @@ Style/BlockDelimiters:
2979
3084
  # This looks at the usage of a block's method to determine its type (e.g. is
2980
3085
  # the result of a `map` assigned to a variable or passed to another
2981
3086
  # method) but exceptions are permitted in the `ProceduralMethods`,
2982
- # `FunctionalMethods` and `IgnoredMethods` sections below.
3087
+ # `FunctionalMethods` and `AllowedMethods` sections below.
2983
3088
  - semantic
2984
3089
  # The `braces_for_chaining` style enforces braces around single line blocks
2985
3090
  # and do..end around multi-line blocks, except for multi-line blocks whose
@@ -3020,7 +3125,7 @@ Style/BlockDelimiters:
3020
3125
  - let!
3021
3126
  - subject
3022
3127
  - watch
3023
- IgnoredMethods:
3128
+ AllowedMethods:
3024
3129
  # Methods that can be either procedural or functional and cannot be
3025
3130
  # categorised from their usage alone, e.g.
3026
3131
  #
@@ -3037,6 +3142,8 @@ Style/BlockDelimiters:
3037
3142
  - lambda
3038
3143
  - proc
3039
3144
  - it
3145
+ AllowedPatterns: []
3146
+ IgnoredMethods: [] # deprecated
3040
3147
  # The AllowBracesOnProceduralOneLiners option is ignored unless the
3041
3148
  # EnforcedStyle is set to `semantic`. If so:
3042
3149
  #
@@ -3081,9 +3188,18 @@ Style/CaseEquality:
3081
3188
  # # good
3082
3189
  # String === "string"
3083
3190
  AllowOnConstant: false
3191
+ # If `AllowOnSelfClass` option is enabled, the cop will ignore violations when the receiver of
3192
+ # the case equality operator is `self.class`.
3193
+ #
3194
+ # # bad
3195
+ # some_class === object
3196
+ #
3197
+ # # good
3198
+ # self.class === object
3199
+ AllowOnSelfClass: false
3084
3200
 
3085
3201
  Style/CaseLikeIf:
3086
- Description: 'This cop identifies places where `if-elsif` constructions can be replaced with `case-when`.'
3202
+ Description: 'Identifies places where `if-elsif` constructions can be replaced with `case-when`.'
3087
3203
  StyleGuide: '#case-vs-if-else'
3088
3204
  Enabled: true
3089
3205
  Safe: false
@@ -3140,10 +3256,12 @@ Style/ClassEqualityComparison:
3140
3256
  StyleGuide: '#instance-of-vs-class-comparison'
3141
3257
  Enabled: true
3142
3258
  VersionAdded: '0.93'
3143
- IgnoredMethods:
3259
+ AllowedMethods:
3144
3260
  - ==
3145
3261
  - equal?
3146
3262
  - eql?
3263
+ AllowedPatterns: []
3264
+ IgnoredMethods: [] # deprecated
3147
3265
 
3148
3266
  Style/ClassMethods:
3149
3267
  Description: 'Use self when defining module/class methods.'
@@ -3430,6 +3548,12 @@ Style/EmptyElse:
3430
3548
  - empty
3431
3549
  - nil
3432
3550
  - both
3551
+ AllowComments: false
3552
+
3553
+ Style/EmptyHeredoc:
3554
+ Description: 'Checks for using empty heredoc to reduce redundancy.'
3555
+ Enabled: pending
3556
+ VersionAdded: '1.32'
3433
3557
 
3434
3558
  Style/EmptyLambdaParameter:
3435
3559
  Description: 'Omit parens for empty lambda parameters.'
@@ -3478,6 +3602,12 @@ Style/EndlessMethod:
3478
3602
  - allow_always
3479
3603
  - disallow
3480
3604
 
3605
+ Style/EnvHome:
3606
+ Description: "Checks for consistent usage of `ENV['HOME']`."
3607
+ Enabled: pending
3608
+ Safe: false
3609
+ VersionAdded: '1.29'
3610
+
3481
3611
  Style/EvalWithLocation:
3482
3612
  Description: 'Pass `__FILE__` and `__LINE__` to `eval` method, as they are used by backtraces.'
3483
3613
  Enabled: true
@@ -3515,6 +3645,16 @@ Style/ExponentialNotation:
3515
3645
  - engineering
3516
3646
  - integral
3517
3647
 
3648
+ Style/FetchEnvVar:
3649
+ Description: >-
3650
+ Suggests `ENV.fetch` for the replacement of `ENV[]`.
3651
+ Reference:
3652
+ - https://rubystyle.guide/#hash-fetch-defaults
3653
+ Enabled: pending
3654
+ VersionAdded: '1.28'
3655
+ # Environment variables to be excluded from the inspection.
3656
+ AllowedVars: []
3657
+
3518
3658
  Style/FileRead:
3519
3659
  Description: 'Favor `File.(bin)read` convenience methods.'
3520
3660
  StyleGuide: '#file-read'
@@ -3583,7 +3723,9 @@ Style/FormatStringToken:
3583
3723
  MaxUnannotatedPlaceholdersAllowed: 1
3584
3724
  VersionAdded: '0.49'
3585
3725
  VersionChanged: '1.0'
3586
- IgnoredMethods: []
3726
+ AllowedMethods: []
3727
+ AllowedPatterns: []
3728
+ IgnoredMethods: [] # deprecated
3587
3729
 
3588
3730
  Style/FrozenStringLiteralComment:
3589
3731
  Description: >-
@@ -3628,10 +3770,11 @@ Style/GuardClause:
3628
3770
  StyleGuide: '#no-nested-conditionals'
3629
3771
  Enabled: true
3630
3772
  VersionAdded: '0.20'
3631
- VersionChanged: '0.22'
3773
+ VersionChanged: '1.31'
3632
3774
  # `MinBodyLength` defines the number of lines of the a body of an `if` or `unless`
3633
3775
  # needs to have to trigger this cop
3634
3776
  MinBodyLength: 1
3777
+ AllowConsecutiveConditionals: false
3635
3778
 
3636
3779
  Style/HashAsLastArrayItem:
3637
3780
  Description: >-
@@ -3668,6 +3811,7 @@ Style/HashExcept:
3668
3811
  that can be replaced with `Hash#except` method.
3669
3812
  Enabled: pending
3670
3813
  VersionAdded: '1.7'
3814
+ VersionChanged: '1.31'
3671
3815
 
3672
3816
  Style/HashLikeCase:
3673
3817
  Description: >-
@@ -3706,6 +3850,8 @@ Style/HashSyntax:
3706
3850
  - never
3707
3851
  # accepts both shorthand and explicit use of hash literal value.
3708
3852
  - either
3853
+ # like "always", but will avoid mixing styles in a single hash
3854
+ - consistent
3709
3855
  # Force hashes that have a symbol value to use hash rockets
3710
3856
  UseHashRocketsWithSymbolValues: false
3711
3857
  # Do not suggest { a?: 1 } over { :a? => 1 } in ruby19 style
@@ -3882,6 +4028,31 @@ Style/LineEndConcatenation:
3882
4028
  VersionAdded: '0.18'
3883
4029
  VersionChanged: '0.64'
3884
4030
 
4031
+ Style/MagicCommentFormat:
4032
+ Description: 'Use a consistent style for magic comments.'
4033
+ Enabled: pending
4034
+ VersionAdded: '1.35'
4035
+ EnforcedStyle: snake_case
4036
+ SupportedStyles:
4037
+ # `snake` will enforce the magic comment is written
4038
+ # in snake case (words separated by underscores).
4039
+ # Eg: froze_string_literal: true
4040
+ - snake_case
4041
+ # `kebab` will enforce the magic comment is written
4042
+ # in kebab case (words separated by hyphens).
4043
+ # Eg: froze-string-literal: true
4044
+ - kebab_case
4045
+ DirectiveCapitalization: lowercase
4046
+ ValueCapitalization: ~
4047
+ SupportedCapitalizations:
4048
+ - lowercase
4049
+ - uppercase
4050
+
4051
+ Style/MapCompactWithConditionalBlock:
4052
+ Description: 'Prefer `select` or `reject` over `map { ... }.compact`.'
4053
+ Enabled: pending
4054
+ VersionAdded: '1.30'
4055
+
3885
4056
  Style/MapToHash:
3886
4057
  Description: 'Prefer `to_h` with a block over `map.to_h`.'
3887
4058
  Enabled: pending
@@ -3895,8 +4066,10 @@ Style/MethodCallWithArgsParentheses:
3895
4066
  VersionAdded: '0.47'
3896
4067
  VersionChanged: '1.7'
3897
4068
  IgnoreMacros: true
3898
- IgnoredMethods: []
3899
- IgnoredPatterns: []
4069
+ AllowedMethods: []
4070
+ IgnoredMethods: [] # deprecated
4071
+ AllowedPatterns: []
4072
+ IgnoredPatterns: [] # deprecated
3900
4073
  IncludedMacros: []
3901
4074
  AllowParenthesesInMultilineCall: false
3902
4075
  AllowParenthesesInChaining: false
@@ -3911,7 +4084,9 @@ Style/MethodCallWithoutArgsParentheses:
3911
4084
  Description: 'Do not use parentheses for method calls with no arguments.'
3912
4085
  StyleGuide: '#method-invocation-parens'
3913
4086
  Enabled: true
3914
- IgnoredMethods: []
4087
+ AllowedMethods: []
4088
+ AllowedPatterns: []
4089
+ IgnoredMethods: [] # deprecated
3915
4090
  VersionAdded: '0.47'
3916
4091
  VersionChanged: '0.55'
3917
4092
 
@@ -4102,7 +4277,7 @@ Style/NegatedIf:
4102
4277
 
4103
4278
  Style/NegatedIfElseCondition:
4104
4279
  Description: >-
4105
- This cop checks for uses of `if-else` and ternary operators with a negated condition
4280
+ Checks for uses of `if-else` and ternary operators with a negated condition
4106
4281
  which can be simplified by inverting condition and swapping branches.
4107
4282
  Enabled: pending
4108
4283
  VersionAdded: '1.2'
@@ -4263,6 +4438,7 @@ Style/NumericLiterals:
4263
4438
  Strict: false
4264
4439
  # You can specify allowed numbers. (e.g. port number 3000, 8080, and etc)
4265
4440
  AllowedNumbers: []
4441
+ AllowedPatterns: []
4266
4442
 
4267
4443
  Style/NumericPredicate:
4268
4444
  Description: >-
@@ -4281,12 +4457,27 @@ Style/NumericPredicate:
4281
4457
  SupportedStyles:
4282
4458
  - predicate
4283
4459
  - comparison
4284
- IgnoredMethods: []
4460
+ AllowedMethods: []
4461
+ AllowedPatterns: []
4462
+ IgnoredMethods: [] # deprecated
4285
4463
  # Exclude RSpec specs because assertions like `expect(1).to be > 0` cause
4286
4464
  # false positives.
4287
4465
  Exclude:
4288
4466
  - 'spec/**/*'
4289
4467
 
4468
+ Style/ObjectThen:
4469
+ Description: 'Enforces the use of consistent method names `Object#yield_self` or `Object#then`.'
4470
+ StyleGuide: '#object-yield-self-vs-object-then'
4471
+ Enabled: pending
4472
+ VersionAdded: '1.28'
4473
+ # Use `Object#yield_self` or `Object#then`?
4474
+ # Prefer `Object#yield_self` to `Object#then` (yield_self)
4475
+ # Prefer `Object#then` to `Object#yield_self` (then)
4476
+ EnforcedStyle: 'then'
4477
+ SupportedStyles:
4478
+ - then
4479
+ - yield_self
4480
+
4290
4481
  Style/OneLineConditional:
4291
4482
  Description: >-
4292
4483
  Favor the ternary operator (?:) or multi-line constructs over
@@ -4524,10 +4715,20 @@ Style/RedundantFreeze:
4524
4715
  VersionAdded: '0.34'
4525
4716
  VersionChanged: '0.66'
4526
4717
 
4718
+ Style/RedundantInitialize:
4719
+ Description: 'Checks for redundant `initialize` methods.'
4720
+ Enabled: pending
4721
+ Safe: false
4722
+ AllowComments: true
4723
+ VersionAdded: '1.27'
4724
+ VersionChanged: '1.28'
4725
+
4527
4726
  Style/RedundantInterpolation:
4528
4727
  Description: 'Checks for strings that are just an interpolated expression.'
4529
4728
  Enabled: true
4729
+ SafeAutoCorrect: false
4530
4730
  VersionAdded: '0.76'
4731
+ VersionChanged: '1.30'
4531
4732
 
4532
4733
  Style/RedundantParentheses:
4533
4734
  Description: "Checks for parentheses that seem not to serve any purpose."
@@ -4638,14 +4839,14 @@ Style/ReturnNil:
4638
4839
 
4639
4840
  Style/SafeNavigation:
4640
4841
  Description: >-
4641
- This cop transforms usages of a method call safeguarded by
4842
+ Transforms usages of a method call safeguarded by
4642
4843
  a check for the existence of the object to
4643
4844
  safe navigation (`&.`).
4644
- Auto-correction is unsafe as it assumes the object will
4845
+ Autocorrection is unsafe as it assumes the object will
4645
4846
  be `nil` or truthy, but never `false`.
4646
4847
  Enabled: true
4647
4848
  VersionAdded: '0.43'
4648
- VersionChanged: '0.77'
4849
+ VersionChanged: '1.27'
4649
4850
  # Safe navigation may cause a statement to start returning `nil` in addition
4650
4851
  # to whatever it used to return.
4651
4852
  ConvertCodeThatCanStartToReturnNil: false
@@ -4656,6 +4857,8 @@ Style/SafeNavigation:
4656
4857
  - try
4657
4858
  - try!
4658
4859
  SafeAutoCorrect: false
4860
+ # Maximum length of method chains for register an offense.
4861
+ MaxChainLength: 2
4659
4862
 
4660
4863
  Style/Sample:
4661
4864
  Description: >-
@@ -4761,6 +4964,7 @@ Style/SpecialGlobalVars:
4761
4964
  SupportedStyles:
4762
4965
  - use_perl_names
4763
4966
  - use_english_names
4967
+ - use_builtin_english_names
4764
4968
 
4765
4969
  Style/StabbyLambdaParentheses:
4766
4970
  Description: 'Check for the usage of parentheses around stabby lambda arguments.'
@@ -4862,7 +5066,7 @@ Style/StructInheritance:
4862
5066
  VersionChanged: '1.20'
4863
5067
 
4864
5068
  Style/SwapValues:
4865
- Description: 'This cop enforces the use of shorthand-style swapping of 2 variables.'
5069
+ Description: 'Enforces the use of shorthand-style swapping of 2 variables.'
4866
5070
  StyleGuide: '#values-swapping'
4867
5071
  Enabled: pending
4868
5072
  VersionAdded: '1.1'
@@ -4890,13 +5094,16 @@ Style/SymbolProc:
4890
5094
  Enabled: true
4891
5095
  Safe: false
4892
5096
  VersionAdded: '0.26'
4893
- VersionChanged: '1.5'
5097
+ VersionChanged: '1.28'
4894
5098
  AllowMethodsWithArguments: false
4895
- # A list of method names to be ignored by the check.
5099
+ # A list of method names to be always allowed by the check.
4896
5100
  # The names should be fairly unique, otherwise you'll end up ignoring lots of code.
4897
- IgnoredMethods:
5101
+ AllowedMethods:
4898
5102
  - respond_to
4899
5103
  - define_method
5104
+ AllowedPatterns: []
5105
+ IgnoredMethods: [] # deprecated
5106
+ AllowComments: false
4900
5107
 
4901
5108
  Style/TernaryParentheses:
4902
5109
  Description: 'Checks for use of parentheses around ternary conditions.'
@@ -4911,7 +5118,7 @@ Style/TernaryParentheses:
4911
5118
  AllowSafeAssignment: true
4912
5119
 
4913
5120
  Style/TopLevelMethodDefinition:
4914
- Description: 'This cop looks for top-level method definitions.'
5121
+ Description: 'Looks for top-level method definitions.'
4915
5122
  StyleGuide: '#top-level-methods'
4916
5123
  Enabled: false
4917
5124
  VersionAdded: '1.15'