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
@@ -29,7 +29,7 @@ module RuboCop
29
29
  include RangeHelp
30
30
  extend AutoCorrector
31
31
 
32
- def on_block(node)
32
+ def on_block(node) # rubocop:disable InternalAffairs/NumblockHandler
33
33
  arguments = node.arguments
34
34
 
35
35
  return unless node.arguments? && pipes?(arguments)
@@ -113,7 +113,7 @@ module RuboCop
113
113
  def last_end_pos_inside_pipes(arguments, range)
114
114
  pos = range.end_pos
115
115
  num = pos - arguments.source_range.begin_pos
116
- trailing_comma_index = arguments.source[num..-1].index(',')
116
+ trailing_comma_index = arguments.source[num..].index(',')
117
117
 
118
118
  trailing_comma_index ? pos + trailing_comma_index + 1 : pos
119
119
  end
@@ -127,7 +127,7 @@ module RuboCop
127
127
 
128
128
  expr = arg.source_range
129
129
  check_no_space(
130
- range_with_surrounding_space(range: expr, side: :left).begin_pos,
130
+ range_with_surrounding_space(expr, side: :left).begin_pos,
131
131
  expr.begin_pos - 1,
132
132
  'Extra space before'
133
133
  )
@@ -41,7 +41,7 @@ module RuboCop
41
41
  check(node, [:operator].freeze) if node.keyword?
42
42
  end
43
43
 
44
- def on_block(node)
44
+ def on_block(node) # rubocop:disable InternalAffairs/NumblockHandler
45
45
  check(node, %i[begin end].freeze)
46
46
  end
47
47
 
@@ -161,7 +161,7 @@ module RuboCop
161
161
  end
162
162
 
163
163
  def check_operator(type, operator, right_operand)
164
- with_space = range_with_surrounding_space(range: operator)
164
+ with_space = range_with_surrounding_space(operator)
165
165
  return if with_space.source.start_with?("\n")
166
166
 
167
167
  offense(type, operator, with_space, right_operand) do |msg|
@@ -57,15 +57,15 @@ module RuboCop
57
57
  return if node.keywords?
58
58
 
59
59
  # Do not register an offense for multi-line braces when specifying
60
- # `EnforcedStyle: no_space`. It will conflict with auto-correction
60
+ # `EnforcedStyle: no_space`. It will conflict with autocorrection
61
61
  # by `EnforcedStyle: line_count_based` of `Style/BlockDelimiters` cop.
62
- # That means preventing auto-correction to incorrect auto-corrected
62
+ # That means preventing autocorrection to incorrect autocorrected
63
63
  # code.
64
64
  # See: https://github.com/rubocop/rubocop/issues/7534
65
65
  return if conflict_with_block_delimiters?(node)
66
66
 
67
67
  left_brace = node.loc.begin
68
- space_plus_brace = range_with_surrounding_space(range: left_brace)
68
+ space_plus_brace = range_with_surrounding_space(left_brace)
69
69
  used_style =
70
70
  space_plus_brace.source.start_with?('{') ? :no_space : :space
71
71
 
@@ -76,6 +76,8 @@ module RuboCop
76
76
  end
77
77
  end
78
78
 
79
+ alias on_numblock on_block
80
+
79
81
  private
80
82
 
81
83
  def check_empty(left_brace, space_plus_brace, used_style)
@@ -37,6 +37,7 @@ module RuboCop
37
37
  receiver_end_pos = node.receiver.source_range.end_pos
38
38
  selector_begin_pos = node.loc.selector.begin_pos
39
39
  return if receiver_end_pos >= selector_begin_pos
40
+ return if dot_before_brackets?(node, receiver_end_pos, selector_begin_pos)
40
41
 
41
42
  range_between(receiver_end_pos, selector_begin_pos)
42
43
  elsif node.method?(:[]=)
@@ -44,6 +45,12 @@ module RuboCop
44
45
  end
45
46
  end
46
47
 
48
+ def dot_before_brackets?(node, receiver_end_pos, selector_begin_pos)
49
+ return false unless node.loc.respond_to?(:dot) && (dot = node.loc.dot)
50
+
51
+ dot.begin_pos == receiver_end_pos && dot.end_pos == selector_begin_pos
52
+ end
53
+
47
54
  def offense_range_for_assignment(node, begin_pos)
48
55
  end_pos = node.receiver.source_range.end_pos
49
56
 
@@ -3,7 +3,7 @@
3
3
  module RuboCop
4
4
  module Cop
5
5
  module Layout
6
- # This cop checks for missing space between a token and a comment on the
6
+ # Checks for missing space between a token and a comment on the
7
7
  # same line.
8
8
  #
9
9
  # @example
@@ -36,7 +36,7 @@ module RuboCop
36
36
  return unless regular_method_call_with_arguments?(node)
37
37
 
38
38
  first_arg = node.first_argument.source_range
39
- first_arg_with_space = range_with_surrounding_space(range: first_arg, side: :left)
39
+ first_arg_with_space = range_with_surrounding_space(first_arg, side: :left)
40
40
  space = range_between(first_arg_with_space.begin_pos, first_arg.begin_pos)
41
41
  return if space.length == 1
42
42
  return unless expect_params_after_method_name?(node)
@@ -3,7 +3,7 @@
3
3
  module RuboCop
4
4
  module Cop
5
5
  module Layout
6
- # This cop checks for spaces between `->` and opening parameter
6
+ # Checks for spaces between `->` and opening parameter
7
7
  # parenthesis (`(`) in lambda literals.
8
8
  #
9
9
  # @example EnforcedStyle: require_no_space (default)
@@ -6,16 +6,6 @@ module RuboCop
6
6
  # Checks that brackets used for array literals have or don't have
7
7
  # surrounding space depending on configuration.
8
8
  #
9
- # @example EnforcedStyle: space
10
- # # The `space` style enforces that array literals have
11
- # # surrounding space.
12
- #
13
- # # bad
14
- # array = [a, b, c, d]
15
- #
16
- # # good
17
- # array = [ a, b, c, d ]
18
- #
19
9
  # @example EnforcedStyle: no_space (default)
20
10
  # # The `no_space` style enforces that array literals have
21
11
  # # no surrounding space.
@@ -26,6 +16,16 @@ module RuboCop
26
16
  # # good
27
17
  # array = [a, b, c, d]
28
18
  #
19
+ # @example EnforcedStyle: space
20
+ # # The `space` style enforces that array literals have
21
+ # # surrounding space.
22
+ #
23
+ # # bad
24
+ # array = [a, b, c, d]
25
+ #
26
+ # # good
27
+ # array = [ a, b, c, d ]
28
+ #
29
29
  # @example EnforcedStyle: compact
30
30
  # # The `compact` style normally requires a space inside
31
31
  # # array brackets, with the exception that successive left
@@ -86,9 +86,9 @@ module RuboCop
86
86
  return if node.keywords?
87
87
 
88
88
  # Do not register an offense for multi-line empty braces. That means
89
- # preventing auto-correction to single-line empty braces. It will
90
- # conflict with auto-correction by `Layout/SpaceInsideBlockBraces` cop
91
- # if auto-corrected to a single-line empty braces.
89
+ # preventing autocorrection to single-line empty braces. It will
90
+ # conflict with autocorrection by `Layout/SpaceInsideBlockBraces` cop
91
+ # if autocorrected to a single-line empty braces.
92
92
  # See: https://github.com/rubocop/rubocop/issues/7363
93
93
  return if node.body.nil? && node.multiline?
94
94
 
@@ -98,6 +98,8 @@ module RuboCop
98
98
  check_inside(node, left_brace, right_brace)
99
99
  end
100
100
 
101
+ alias on_numblock on_block
102
+
101
103
  private
102
104
 
103
105
  def check_inside(node, left_brace, right_brace)
@@ -126,10 +128,10 @@ module RuboCop
126
128
  end
127
129
 
128
130
  def braces_with_contents_inside(node, inner)
129
- args_delimiter = node.arguments.loc.begin # Can be ( | or nil.
131
+ args_delimiter = node.arguments.loc.begin if node.block_type? # Can be ( | or nil.
130
132
 
131
133
  check_left_brace(inner, node.loc.begin, args_delimiter)
132
- check_right_brace(inner, node.loc.begin, node.loc.end, node.single_line?)
134
+ check_right_brace(node, inner, node.loc.begin, node.loc.end, node.single_line?)
133
135
  end
134
136
 
135
137
  def check_left_brace(inner, left_brace, args_delimiter)
@@ -140,14 +142,15 @@ module RuboCop
140
142
  end
141
143
  end
142
144
 
143
- def check_right_brace(inner, left_brace, right_brace, single_line)
145
+ def check_right_brace(node, inner, left_brace, right_brace, single_line)
144
146
  if single_line && /\S$/.match?(inner)
145
147
  no_space(right_brace.begin_pos, right_brace.end_pos, 'Space missing inside }.')
146
148
  else
149
+ column = node.loc.expression.column
147
150
  return if multiline_block?(left_brace, right_brace) &&
148
- aligned_braces?(left_brace, right_brace)
151
+ aligned_braces?(inner, right_brace, column)
149
152
 
150
- space_inside_right_brace(right_brace)
153
+ space_inside_right_brace(inner, right_brace, column)
151
154
  end
152
155
  end
153
156
 
@@ -155,8 +158,12 @@ module RuboCop
155
158
  left_brace.first_line != right_brace.first_line
156
159
  end
157
160
 
158
- def aligned_braces?(left_brace, right_brace)
159
- left_brace.first_line == right_brace.last_column
161
+ def aligned_braces?(inner, right_brace, column)
162
+ column == right_brace.column || column == inner_last_space_count(inner)
163
+ end
164
+
165
+ def inner_last_space_count(inner)
166
+ inner.split("\n").last.count(' ')
160
167
  end
161
168
 
162
169
  def no_space_inside_left_brace(left_brace, args_delimiter)
@@ -185,7 +192,7 @@ module RuboCop
185
192
  'Space between { and | detected.')
186
193
  end
187
194
  else
188
- brace_with_space = range_with_surrounding_space(range: left_brace, side: :right)
195
+ brace_with_space = range_with_surrounding_space(left_brace, side: :right)
189
196
  space(brace_with_space.begin_pos + 1, brace_with_space.end_pos,
190
197
  'Space inside { detected.')
191
198
  end
@@ -195,10 +202,21 @@ module RuboCop
195
202
  args_delimiter&.is?('|')
196
203
  end
197
204
 
198
- def space_inside_right_brace(right_brace)
199
- brace_with_space = range_with_surrounding_space(range: right_brace, side: :left)
200
- space(brace_with_space.begin_pos, brace_with_space.end_pos - 1,
201
- 'Space inside } detected.')
205
+ def space_inside_right_brace(inner, right_brace, column)
206
+ brace_with_space = range_with_surrounding_space(right_brace, side: :left)
207
+ begin_pos = brace_with_space.begin_pos
208
+ end_pos = brace_with_space.end_pos - 1
209
+
210
+ if brace_with_space.source.match?(/\R/)
211
+ begin_pos = end_pos - (right_brace.column - column)
212
+ end
213
+
214
+ if inner.end_with?(']')
215
+ end_pos -= 1
216
+ begin_pos = end_pos - (inner_last_space_count(inner) - column)
217
+ end
218
+
219
+ space(begin_pos, end_pos, 'Space inside } detected.')
202
220
  end
203
221
 
204
222
  def no_space(begin_pos, end_pos, msg)
@@ -118,7 +118,7 @@ module RuboCop
118
118
  i = tokens.index(opening_bracket)
119
119
  inner_left_brackets_needing_closure = 0
120
120
 
121
- tokens[i..-1].each do |token|
121
+ tokens[i..].each do |token|
122
122
  inner_left_brackets_needing_closure += 1 if token.left_bracket?
123
123
  inner_left_brackets_needing_closure -= 1 if token.right_bracket?
124
124
  return token if inner_left_brackets_needing_closure.zero? && token.right_bracket?
@@ -3,7 +3,7 @@
3
3
  module RuboCop
4
4
  module Cop
5
5
  module Layout
6
- # This cop checks for whitespace within string interpolations.
6
+ # Checks for whitespace within string interpolations.
7
7
  #
8
8
  # @example EnforcedStyle: no_space (default)
9
9
  # # bad
@@ -3,15 +3,15 @@
3
3
  module RuboCop
4
4
  module Cop
5
5
  module Layout
6
- # This cop looks for trailing blank lines and a final newline in the
6
+ # Looks for trailing blank lines and a final newline in the
7
7
  # source code.
8
8
  #
9
- # @example EnforcedStyle: final_blank_line
10
- # # `final_blank_line` looks for one blank line followed by a new line
11
- # # at the end of files.
9
+ # @example EnforcedStyle: final_newline (default)
10
+ # # `final_newline` looks for one newline at the end of files.
12
11
  #
13
12
  # # bad
14
13
  # class Foo; end
14
+ #
15
15
  # # EOF
16
16
  #
17
17
  # # bad
@@ -19,15 +19,14 @@ module RuboCop
19
19
  #
20
20
  # # good
21
21
  # class Foo; end
22
- #
23
22
  # # EOF
24
23
  #
25
- # @example EnforcedStyle: final_newline (default)
26
- # # `final_newline` looks for one newline at the end of files.
24
+ # @example EnforcedStyle: final_blank_line
25
+ # # `final_blank_line` looks for one blank line followed by a new line
26
+ # # at the end of files.
27
27
  #
28
28
  # # bad
29
29
  # class Foo; end
30
- #
31
30
  # # EOF
32
31
  #
33
32
  # # bad
@@ -35,6 +34,7 @@ module RuboCop
35
34
  #
36
35
  # # good
37
36
  # class Foo; end
37
+ #
38
38
  # # EOF
39
39
  #
40
40
  class TrailingEmptyLines < Base
@@ -82,7 +82,7 @@ module RuboCop
82
82
  return true if buffer.source.strip.start_with?('__END__')
83
83
  return false if processed_source.tokens.empty?
84
84
 
85
- extra = buffer.source[processed_source.tokens.last.end_pos..-1]
85
+ extra = buffer.source[processed_source.tokens.last.end_pos..]
86
86
  extra&.strip&.start_with?('__END__')
87
87
  end
88
88
 
@@ -3,7 +3,7 @@
3
3
  module RuboCop
4
4
  module Cop
5
5
  module Layout
6
- # This cop looks for trailing whitespace in the source code.
6
+ # Looks for trailing whitespace in the source code.
7
7
  #
8
8
  # @example
9
9
  # # The line in this example contains spaces after the 0.
@@ -85,11 +85,11 @@ module RuboCop
85
85
  end
86
86
 
87
87
  def whitespace_is_indentation?(range, level)
88
- range.source[/ +/].length <= level
88
+ range.source[/[ \t]+/].length <= level
89
89
  end
90
90
 
91
91
  def whitespace_only?(range)
92
- source = range_with_surrounding_space(range: range).source
92
+ source = range_with_surrounding_space(range).source
93
93
  source.start_with?("\n") && source.end_with?("\n")
94
94
  end
95
95
 
@@ -4,7 +4,7 @@ module RuboCop
4
4
  module Cop
5
5
  module Legacy
6
6
  # Legacy support for Corrector#corrections
7
- # See https://docs.rubocop.org/rubocop/cop_api_v1_changelog.html
7
+ # See https://docs.rubocop.org/rubocop/v1_upgrade_notes.html
8
8
  class CorrectionsProxy
9
9
  def initialize(corrector)
10
10
  @corrector = corrector
@@ -4,7 +4,7 @@ module RuboCop
4
4
  module Cop
5
5
  module Legacy
6
6
  # Legacy Corrector for v0 API support.
7
- # See https://docs.rubocop.org/rubocop/cop_api_v1_changelog.html
7
+ # See https://docs.rubocop.org/rubocop/v1_upgrade_notes.html
8
8
  class Corrector < RuboCop::Cop::Corrector
9
9
  # Support legacy second argument
10
10
  def initialize(source, corr = [])
@@ -3,7 +3,7 @@
3
3
  module RuboCop
4
4
  module Cop
5
5
  module Lint
6
- # This cop checks for mistyped shorthand assignments.
6
+ # Checks for mistyped shorthand assignments.
7
7
  #
8
8
  # @example
9
9
  # # bad
@@ -3,10 +3,11 @@
3
3
  module RuboCop
4
4
  module Cop
5
5
  module Lint
6
- # This cop checks for ambiguous block association with method
6
+ # Checks for ambiguous block association with method
7
7
  # when param passed without parentheses.
8
8
  #
9
- # This cop can customize ignored methods with `IgnoredMethods`.
9
+ # This cop can customize allowed methods with `AllowedMethods`.
10
+ # By default, there are no methods to allowed.
10
11
  #
11
12
  # @example
12
13
  #
@@ -29,12 +30,30 @@ module RuboCop
29
30
  # # Lambda arguments require no disambiguation
30
31
  # foo = ->(bar) { bar.baz }
31
32
  #
32
- # @example IgnoredMethods: [change]
33
+ # @example AllowedMethods: [] (default)
34
+ #
35
+ # # bad
36
+ # expect { do_something }.to change { object.attribute }
37
+ #
38
+ # @example AllowedMethods: [change]
33
39
  #
34
40
  # # good
35
41
  # expect { do_something }.to change { object.attribute }
42
+ #
43
+ # @example AllowedPatterns: [] (default)
44
+ #
45
+ # # bad
46
+ # expect { do_something }.to change { object.attribute }
47
+ #
48
+ # @example AllowedPatterns: [/change/]
49
+ #
50
+ # # good
51
+ # expect { do_something }.to change { object.attribute }
52
+ # expect { do_something }.to not_change { object.attribute }
53
+ #
36
54
  class AmbiguousBlockAssociation < Base
37
- include IgnoredMethods
55
+ include AllowedMethods
56
+ include AllowedPattern
38
57
 
39
58
  MSG = 'Parenthesize the param `%<param>s` to make sure that the ' \
40
59
  'block will be associated with the `%<method>s` method ' \
@@ -44,7 +63,8 @@ module RuboCop
44
63
  return unless node.arguments?
45
64
 
46
65
  return unless ambiguous_block_association?(node)
47
- return if node.parenthesized? || node.last_argument.lambda? || allowed_method?(node)
66
+ return if node.parenthesized? || node.last_argument.lambda? || node.last_argument.proc? ||
67
+ allowed_method_pattern?(node)
48
68
 
49
69
  message = message(node)
50
70
 
@@ -58,9 +78,10 @@ module RuboCop
58
78
  send_node.last_argument.block_type? && !send_node.last_argument.send_node.arguments?
59
79
  end
60
80
 
61
- def allowed_method?(node)
81
+ def allowed_method_pattern?(node)
62
82
  node.assignment? || node.operator_method? || node.method?(:[]) ||
63
- ignored_method?(node.last_argument.send_node.source)
83
+ allowed_method?(node.last_argument.method_name) ||
84
+ matches_allowed_pattern?(node.last_argument.send_node.source)
64
85
  end
65
86
 
66
87
  def message(send_node)
@@ -3,7 +3,7 @@
3
3
  module RuboCop
4
4
  module Cop
5
5
  module Lint
6
- # This cop checks for ambiguous operators in the first argument of a
6
+ # Checks for ambiguous operators in the first argument of a
7
7
  # method invocation without parentheses.
8
8
  #
9
9
  # @example
@@ -24,11 +24,11 @@ module RuboCop
24
24
  extend AutoCorrector
25
25
 
26
26
  AMBIGUITIES = {
27
- '+' => { actual: 'positive number', possible: 'addition' },
28
- '-' => { actual: 'negative number', possible: 'subtraction' },
29
- '*' => { actual: 'splat', possible: 'multiplication' },
30
- '&' => { actual: 'block', possible: 'binary AND' },
31
- '**' => { actual: 'keyword splat', possible: 'exponent' }
27
+ '+' => { actual: 'positive number', possible: 'an addition' },
28
+ '-' => { actual: 'negative number', possible: 'a subtraction' },
29
+ '*' => { actual: 'splat', possible: 'a multiplication' },
30
+ '&' => { actual: 'block', possible: 'a binary AND' },
31
+ '**' => { actual: 'keyword splat', possible: 'an exponent' }
32
32
  }.each do |key, hash|
33
33
  hash[:operator] = key
34
34
  end
@@ -36,7 +36,7 @@ module RuboCop
36
36
  MSG_FORMAT = 'Ambiguous %<actual>s operator. Parenthesize the method ' \
37
37
  "arguments if it's surely a %<actual>s operator, or add " \
38
38
  'a whitespace to the right of the `%<operator>s` if it ' \
39
- 'should be a %<possible>s.'
39
+ 'should be %<possible>s.'
40
40
 
41
41
  def on_new_investigation
42
42
  processed_source.diagnostics.each do |diagnostic|
@@ -3,7 +3,7 @@
3
3
  module RuboCop
4
4
  module Cop
5
5
  module Lint
6
- # This cop looks for expressions containing multiple binary operators
6
+ # Looks for expressions containing multiple binary operators
7
7
  # where precedence is ambiguous due to lack of parentheses. For example,
8
8
  # in `1 + 2 * 3`, the multiplication will happen before the addition, but
9
9
  # lexically it appears that the addition will happen first.
@@ -3,9 +3,9 @@
3
3
  module RuboCop
4
4
  module Cop
5
5
  module Lint
6
- # This cop checks for ambiguous ranges.
6
+ # Checks for ambiguous ranges.
7
7
  #
8
- # Ranges have quite low precedence, which leads to unexpected behaviour when
8
+ # Ranges have quite low precedence, which leads to unexpected behavior when
9
9
  # using a range with other operators. This cop avoids that by making ranges
10
10
  # explicit by requiring parenthesis around complex range boundaries (anything
11
11
  # that is not a literal: numerics, strings, symbols, etc.).
@@ -18,10 +18,10 @@ module RuboCop
18
18
  # value, it will be wrapped in order to prevent the ambiguity of `1..2.to_a`.
19
19
  #
20
20
  # @safety
21
- # The cop auto-corrects by wrapping the entire boundary in parentheses, which
21
+ # The cop autocorrects by wrapping the entire boundary in parentheses, which
22
22
  # makes the outcome more explicit but is possible to not be the intention of the
23
- # programmer. For this reason, this cop's auto-correct is unsafe (it will not
24
- # change the behaviour of the code, but will not necessarily match the
23
+ # programmer. For this reason, this cop's autocorrect is unsafe (it will not
24
+ # change the behavior of the code, but will not necessarily match the
25
25
  # intent of the program).
26
26
  #
27
27
  # @example
@@ -3,7 +3,7 @@
3
3
  module RuboCop
4
4
  module Cop
5
5
  module Lint
6
- # This cop checks for ambiguous regexp literals in the first argument of
6
+ # Checks for ambiguous regexp literals in the first argument of
7
7
  # a method invocation without parentheses.
8
8
  #
9
9
  # @example
@@ -3,7 +3,7 @@
3
3
  module RuboCop
4
4
  module Cop
5
5
  module Lint
6
- # This cop checks for assignments in the conditions of
6
+ # Checks for assignments in the conditions of
7
7
  # if/while/until.
8
8
  #
9
9
  # `AllowSafeAssignment` option for safe assignment.
@@ -3,7 +3,7 @@
3
3
  module RuboCop
4
4
  module Cop
5
5
  module Lint
6
- # This cop checks for places where binary operator has identical operands.
6
+ # Checks for places where binary operator has identical operands.
7
7
  #
8
8
  # It covers arithmetic operators: `-`, `/`, `%`;
9
9
  # comparison operators: `==`, `===`, `=~`, `>`, `>=`, `<`, `<=`;
@@ -3,7 +3,7 @@
3
3
  module RuboCop
4
4
  module Cop
5
5
  module Lint
6
- # This cop checks for `:true` and `:false` symbols.
6
+ # Checks for `:true` and `:false` symbols.
7
7
  # In most cases it would be a typo.
8
8
  #
9
9
  # @safety
@@ -3,7 +3,7 @@
3
3
  module RuboCop
4
4
  module Cop
5
5
  module Lint
6
- # This cop checks for circular argument references in optional keyword
6
+ # Checks for circular argument references in optional keyword
7
7
  # arguments and optional ordinal arguments.
8
8
  #
9
9
  # This cop mirrors a warning produced by MRI since 2.2.
@@ -0,0 +1,51 @@
1
+ # frozen_string_literal: true
2
+
3
+ module RuboCop
4
+ module Cop
5
+ module Lint
6
+ # Checks for overwriting an exception with an exception result by use `rescue =>`.
7
+ #
8
+ # You intended to write as `rescue StandardError`.
9
+ # However, you have written `rescue => StandardError`.
10
+ # In that case, the result of `rescue` will overwrite `StandardError`.
11
+ #
12
+ # @example
13
+ #
14
+ # # bad
15
+ # begin
16
+ # something
17
+ # rescue => StandardError
18
+ # end
19
+ #
20
+ # # good
21
+ # begin
22
+ # something
23
+ # rescue StandardError
24
+ # end
25
+ #
26
+ class ConstantOverwrittenInRescue < Base
27
+ extend AutoCorrector
28
+ include RangeHelp
29
+
30
+ MSG = '`%<constant>s` is overwritten by `rescue =>`.'
31
+
32
+ # @!method overwritten_constant(node)
33
+ def_node_matcher :overwritten_constant, <<~PATTERN
34
+ (resbody nil? (casgn nil? $_) nil?)
35
+ PATTERN
36
+
37
+ def self.autocorrect_incompatible_with
38
+ [Naming::RescuedExceptionsVariableName, Style::RescueStandardError]
39
+ end
40
+
41
+ def on_resbody(node)
42
+ return unless (constant = overwritten_constant(node))
43
+
44
+ add_offense(node.loc.assoc, message: format(MSG, constant: constant)) do |corrector|
45
+ corrector.remove(range_between(node.loc.keyword.end_pos, node.loc.assoc.end_pos))
46
+ end
47
+ end
48
+ end
49
+ end
50
+ end
51
+ end