rubocop 1.29.1 → 1.30.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 (452) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +1 -1
  3. data/config/default.yml +16 -2
  4. data/lib/rubocop/cli/command/auto_genenerate_config.rb +19 -4
  5. data/lib/rubocop/cli/command/execute_runner.rb +1 -1
  6. data/lib/rubocop/cli/command/show_cops.rb +1 -1
  7. data/lib/rubocop/cli.rb +1 -0
  8. data/lib/rubocop/config_loader.rb +2 -1
  9. data/lib/rubocop/config_validator.rb +15 -2
  10. data/lib/rubocop/cop/autocorrect_logic.rb +4 -2
  11. data/lib/rubocop/cop/base.rb +1 -1
  12. data/lib/rubocop/cop/bundler/gem_filename.rb +1 -1
  13. data/lib/rubocop/cop/correctors/alignment_corrector.rb +1 -1
  14. data/lib/rubocop/cop/correctors/condition_corrector.rb +1 -1
  15. data/lib/rubocop/cop/correctors/each_to_for_corrector.rb +1 -1
  16. data/lib/rubocop/cop/correctors/empty_line_corrector.rb +1 -1
  17. data/lib/rubocop/cop/correctors/for_to_each_corrector.rb +4 -2
  18. data/lib/rubocop/cop/correctors/if_then_corrector.rb +1 -1
  19. data/lib/rubocop/cop/correctors/lambda_literal_to_method_corrector.rb +1 -1
  20. data/lib/rubocop/cop/correctors/line_break_corrector.rb +7 -1
  21. data/lib/rubocop/cop/correctors/ordered_gem_corrector.rb +1 -1
  22. data/lib/rubocop/cop/correctors/parentheses_corrector.rb +1 -1
  23. data/lib/rubocop/cop/correctors/percent_literal_corrector.rb +1 -1
  24. data/lib/rubocop/cop/correctors/punctuation_corrector.rb +1 -1
  25. data/lib/rubocop/cop/correctors/space_corrector.rb +1 -1
  26. data/lib/rubocop/cop/correctors/string_literal_corrector.rb +1 -1
  27. data/lib/rubocop/cop/correctors/unused_arg_corrector.rb +1 -1
  28. data/lib/rubocop/cop/gemspec/date_assignment.rb +1 -1
  29. data/lib/rubocop/cop/gemspec/deprecated_attribute_assignment.rb +77 -0
  30. data/lib/rubocop/cop/internal_affairs/cop_description.rb +96 -0
  31. data/lib/rubocop/cop/internal_affairs/empty_line_between_expect_offense_and_correction.rb +1 -1
  32. data/lib/rubocop/cop/internal_affairs/location_line_equality_comparison.rb +1 -1
  33. data/lib/rubocop/cop/internal_affairs/method_name_end_with.rb +1 -1
  34. data/lib/rubocop/cop/internal_affairs/redundant_described_class_as_subject.rb +1 -1
  35. data/lib/rubocop/cop/internal_affairs/redundant_let_rubocop_config_new.rb +1 -1
  36. data/lib/rubocop/cop/internal_affairs.rb +1 -0
  37. data/lib/rubocop/cop/layout/argument_alignment.rb +22 -1
  38. data/lib/rubocop/cop/layout/assignment_indentation.rb +1 -1
  39. data/lib/rubocop/cop/layout/begin_end_alignment.rb +1 -1
  40. data/lib/rubocop/cop/layout/block_alignment.rb +1 -1
  41. data/lib/rubocop/cop/layout/block_end_newline.rb +1 -1
  42. data/lib/rubocop/cop/layout/case_indentation.rb +1 -1
  43. data/lib/rubocop/cop/layout/closing_parenthesis_indentation.rb +1 -1
  44. data/lib/rubocop/cop/layout/comment_indentation.rb +1 -1
  45. data/lib/rubocop/cop/layout/condition_position.rb +1 -1
  46. data/lib/rubocop/cop/layout/def_end_alignment.rb +1 -1
  47. data/lib/rubocop/cop/layout/dot_position.rb +1 -1
  48. data/lib/rubocop/cop/layout/else_alignment.rb +1 -1
  49. data/lib/rubocop/cop/layout/empty_comment.rb +1 -1
  50. data/lib/rubocop/cop/layout/empty_line_after_guard_clause.rb +1 -1
  51. data/lib/rubocop/cop/layout/empty_line_after_multiline_condition.rb +1 -1
  52. data/lib/rubocop/cop/layout/empty_line_between_defs.rb +1 -1
  53. data/lib/rubocop/cop/layout/empty_lines.rb +1 -1
  54. data/lib/rubocop/cop/layout/empty_lines_around_arguments.rb +1 -1
  55. data/lib/rubocop/cop/layout/empty_lines_around_begin_body.rb +1 -1
  56. data/lib/rubocop/cop/layout/empty_lines_around_block_body.rb +1 -1
  57. data/lib/rubocop/cop/layout/empty_lines_around_class_body.rb +1 -1
  58. data/lib/rubocop/cop/layout/empty_lines_around_exception_handling_keywords.rb +1 -1
  59. data/lib/rubocop/cop/layout/empty_lines_around_method_body.rb +1 -1
  60. data/lib/rubocop/cop/layout/empty_lines_around_module_body.rb +1 -1
  61. data/lib/rubocop/cop/layout/end_alignment.rb +1 -1
  62. data/lib/rubocop/cop/layout/end_of_line.rb +1 -1
  63. data/lib/rubocop/cop/layout/extra_spacing.rb +1 -1
  64. data/lib/rubocop/cop/layout/first_argument_indentation.rb +1 -1
  65. data/lib/rubocop/cop/layout/first_array_element_indentation.rb +1 -1
  66. data/lib/rubocop/cop/layout/first_array_element_line_break.rb +1 -1
  67. data/lib/rubocop/cop/layout/first_hash_element_indentation.rb +1 -1
  68. data/lib/rubocop/cop/layout/first_hash_element_line_break.rb +1 -1
  69. data/lib/rubocop/cop/layout/first_method_argument_line_break.rb +1 -1
  70. data/lib/rubocop/cop/layout/first_method_parameter_line_break.rb +1 -1
  71. data/lib/rubocop/cop/layout/first_parameter_indentation.rb +1 -1
  72. data/lib/rubocop/cop/layout/hash_alignment.rb +2 -0
  73. data/lib/rubocop/cop/layout/heredoc_argument_closing_parenthesis.rb +1 -1
  74. data/lib/rubocop/cop/layout/heredoc_indentation.rb +1 -1
  75. data/lib/rubocop/cop/layout/indentation_consistency.rb +1 -1
  76. data/lib/rubocop/cop/layout/indentation_style.rb +1 -1
  77. data/lib/rubocop/cop/layout/indentation_width.rb +8 -5
  78. data/lib/rubocop/cop/layout/initial_indentation.rb +1 -1
  79. data/lib/rubocop/cop/layout/leading_comment_space.rb +1 -1
  80. data/lib/rubocop/cop/layout/leading_empty_lines.rb +1 -1
  81. data/lib/rubocop/cop/layout/line_end_string_concatenation_indentation.rb +1 -1
  82. data/lib/rubocop/cop/layout/line_length.rb +1 -1
  83. data/lib/rubocop/cop/layout/multiline_array_brace_layout.rb +1 -1
  84. data/lib/rubocop/cop/layout/multiline_array_line_breaks.rb +1 -1
  85. data/lib/rubocop/cop/layout/multiline_assignment_layout.rb +1 -1
  86. data/lib/rubocop/cop/layout/multiline_block_layout.rb +1 -1
  87. data/lib/rubocop/cop/layout/multiline_hash_brace_layout.rb +1 -1
  88. data/lib/rubocop/cop/layout/multiline_hash_key_line_breaks.rb +1 -1
  89. data/lib/rubocop/cop/layout/multiline_method_argument_line_breaks.rb +1 -1
  90. data/lib/rubocop/cop/layout/multiline_method_call_brace_layout.rb +1 -1
  91. data/lib/rubocop/cop/layout/multiline_method_call_indentation.rb +1 -1
  92. data/lib/rubocop/cop/layout/multiline_method_definition_brace_layout.rb +1 -1
  93. data/lib/rubocop/cop/layout/multiline_operation_indentation.rb +1 -1
  94. data/lib/rubocop/cop/layout/redundant_line_break.rb +1 -1
  95. data/lib/rubocop/cop/layout/rescue_ensure_alignment.rb +1 -1
  96. data/lib/rubocop/cop/layout/single_line_block_chain.rb +1 -1
  97. data/lib/rubocop/cop/layout/space_after_not.rb +1 -1
  98. data/lib/rubocop/cop/layout/space_before_block_braces.rb +2 -2
  99. data/lib/rubocop/cop/layout/space_before_comment.rb +1 -1
  100. data/lib/rubocop/cop/layout/space_in_lambda_literal.rb +1 -1
  101. data/lib/rubocop/cop/layout/space_inside_block_braces.rb +3 -3
  102. data/lib/rubocop/cop/layout/space_inside_string_interpolation.rb +1 -1
  103. data/lib/rubocop/cop/layout/trailing_empty_lines.rb +1 -1
  104. data/lib/rubocop/cop/layout/trailing_whitespace.rb +1 -1
  105. data/lib/rubocop/cop/lint/ambiguous_assignment.rb +1 -1
  106. data/lib/rubocop/cop/lint/ambiguous_block_association.rb +1 -1
  107. data/lib/rubocop/cop/lint/ambiguous_operator.rb +1 -1
  108. data/lib/rubocop/cop/lint/ambiguous_operator_precedence.rb +1 -1
  109. data/lib/rubocop/cop/lint/ambiguous_range.rb +3 -3
  110. data/lib/rubocop/cop/lint/ambiguous_regexp_literal.rb +1 -1
  111. data/lib/rubocop/cop/lint/assignment_in_condition.rb +1 -1
  112. data/lib/rubocop/cop/lint/binary_operator_with_identical_operands.rb +1 -1
  113. data/lib/rubocop/cop/lint/boolean_symbol.rb +1 -1
  114. data/lib/rubocop/cop/lint/circular_argument_reference.rb +1 -1
  115. data/lib/rubocop/cop/lint/debugger.rb +1 -1
  116. data/lib/rubocop/cop/lint/deprecated_class_methods.rb +1 -1
  117. data/lib/rubocop/cop/lint/deprecated_constants.rb +1 -1
  118. data/lib/rubocop/cop/lint/disjunctive_assignment_in_constructor.rb +1 -1
  119. data/lib/rubocop/cop/lint/duplicate_branch.rb +1 -1
  120. data/lib/rubocop/cop/lint/duplicate_case_condition.rb +1 -1
  121. data/lib/rubocop/cop/lint/duplicate_elsif_condition.rb +1 -1
  122. data/lib/rubocop/cop/lint/duplicate_hash_key.rb +1 -1
  123. data/lib/rubocop/cop/lint/duplicate_methods.rb +1 -1
  124. data/lib/rubocop/cop/lint/duplicate_regexp_character_class_element.rb +1 -1
  125. data/lib/rubocop/cop/lint/duplicate_require.rb +1 -1
  126. data/lib/rubocop/cop/lint/duplicate_rescue_exception.rb +1 -1
  127. data/lib/rubocop/cop/lint/each_with_object_argument.rb +1 -1
  128. data/lib/rubocop/cop/lint/else_layout.rb +3 -3
  129. data/lib/rubocop/cop/lint/empty_block.rb +1 -1
  130. data/lib/rubocop/cop/lint/empty_class.rb +1 -1
  131. data/lib/rubocop/cop/lint/empty_conditional_body.rb +1 -1
  132. data/lib/rubocop/cop/lint/empty_ensure.rb +1 -1
  133. data/lib/rubocop/cop/lint/empty_expression.rb +1 -1
  134. data/lib/rubocop/cop/lint/empty_file.rb +1 -1
  135. data/lib/rubocop/cop/lint/empty_in_pattern.rb +1 -1
  136. data/lib/rubocop/cop/lint/empty_interpolation.rb +1 -1
  137. data/lib/rubocop/cop/lint/empty_when.rb +1 -1
  138. data/lib/rubocop/cop/lint/ensure_return.rb +1 -1
  139. data/lib/rubocop/cop/lint/flip_flop.rb +1 -1
  140. data/lib/rubocop/cop/lint/float_comparison.rb +1 -1
  141. data/lib/rubocop/cop/lint/float_out_of_range.rb +1 -1
  142. data/lib/rubocop/cop/lint/heredoc_method_call_position.rb +1 -1
  143. data/lib/rubocop/cop/lint/implicit_string_concatenation.rb +1 -1
  144. data/lib/rubocop/cop/lint/incompatible_io_select_with_fiber_scheduler.rb +1 -1
  145. data/lib/rubocop/cop/lint/ineffective_access_modifier.rb +1 -1
  146. data/lib/rubocop/cop/lint/inherit_exception.rb +1 -1
  147. data/lib/rubocop/cop/lint/interpolation_check.rb +1 -1
  148. data/lib/rubocop/cop/lint/lambda_without_literal_block.rb +2 -2
  149. data/lib/rubocop/cop/lint/literal_as_condition.rb +1 -1
  150. data/lib/rubocop/cop/lint/literal_in_interpolation.rb +1 -1
  151. data/lib/rubocop/cop/lint/loop.rb +1 -1
  152. data/lib/rubocop/cop/lint/missing_cop_enable_directive.rb +1 -1
  153. data/lib/rubocop/cop/lint/missing_super.rb +1 -1
  154. data/lib/rubocop/cop/lint/nested_method_definition.rb +1 -1
  155. data/lib/rubocop/cop/lint/nested_percent_literal.rb +1 -1
  156. data/lib/rubocop/cop/lint/non_local_exit_from_iterator.rb +1 -1
  157. data/lib/rubocop/cop/lint/number_conversion.rb +1 -1
  158. data/lib/rubocop/cop/lint/numbered_parameter_assignment.rb +1 -1
  159. data/lib/rubocop/cop/lint/or_assignment_to_constant.rb +2 -3
  160. data/lib/rubocop/cop/lint/percent_string_array.rb +1 -1
  161. data/lib/rubocop/cop/lint/percent_symbol_array.rb +1 -1
  162. data/lib/rubocop/cop/lint/raise_exception.rb +1 -1
  163. data/lib/rubocop/cop/lint/rand_one.rb +1 -1
  164. data/lib/rubocop/cop/lint/redundant_cop_disable_directive.rb +1 -1
  165. data/lib/rubocop/cop/lint/redundant_cop_enable_directive.rb +1 -1
  166. data/lib/rubocop/cop/lint/redundant_require_statement.rb +3 -0
  167. data/lib/rubocop/cop/lint/redundant_safe_navigation.rb +3 -3
  168. data/lib/rubocop/cop/lint/redundant_splat_expansion.rb +1 -1
  169. data/lib/rubocop/cop/lint/redundant_string_coercion.rb +1 -1
  170. data/lib/rubocop/cop/lint/redundant_with_index.rb +1 -1
  171. data/lib/rubocop/cop/lint/redundant_with_object.rb +1 -1
  172. data/lib/rubocop/cop/lint/refinement_import_methods.rb +1 -1
  173. data/lib/rubocop/cop/lint/regexp_as_condition.rb +1 -1
  174. data/lib/rubocop/cop/lint/require_parentheses.rb +1 -1
  175. data/lib/rubocop/cop/lint/rescue_exception.rb +1 -1
  176. data/lib/rubocop/cop/lint/return_in_void_context.rb +1 -1
  177. data/lib/rubocop/cop/lint/safe_navigation_chain.rb +3 -0
  178. data/lib/rubocop/cop/lint/safe_navigation_consistency.rb +1 -1
  179. data/lib/rubocop/cop/lint/safe_navigation_with_empty.rb +1 -1
  180. data/lib/rubocop/cop/lint/script_permission.rb +1 -1
  181. data/lib/rubocop/cop/lint/self_assignment.rb +1 -1
  182. data/lib/rubocop/cop/lint/shadowed_argument.rb +1 -1
  183. data/lib/rubocop/cop/lint/shadowed_exception.rb +1 -1
  184. data/lib/rubocop/cop/lint/shadowing_outer_local_variable.rb +1 -1
  185. data/lib/rubocop/cop/lint/struct_new_override.rb +1 -1
  186. data/lib/rubocop/cop/lint/suppressed_exception.rb +1 -1
  187. data/lib/rubocop/cop/lint/symbol_conversion.rb +1 -1
  188. data/lib/rubocop/cop/lint/syntax.rb +1 -1
  189. data/lib/rubocop/cop/lint/to_enum_arguments.rb +1 -1
  190. data/lib/rubocop/cop/lint/to_json.rb +1 -1
  191. data/lib/rubocop/cop/lint/top_level_return_with_argument.rb +1 -1
  192. data/lib/rubocop/cop/lint/trailing_comma_in_attribute_declaration.rb +1 -1
  193. data/lib/rubocop/cop/lint/triple_quotes.rb +1 -1
  194. data/lib/rubocop/cop/lint/underscore_prefixed_variable_name.rb +1 -1
  195. data/lib/rubocop/cop/lint/unexpected_block_arity.rb +1 -1
  196. data/lib/rubocop/cop/lint/unified_integer.rb +3 -1
  197. data/lib/rubocop/cop/lint/unreachable_code.rb +1 -1
  198. data/lib/rubocop/cop/lint/unreachable_loop.rb +1 -1
  199. data/lib/rubocop/cop/lint/unused_block_argument.rb +1 -1
  200. data/lib/rubocop/cop/lint/unused_method_argument.rb +1 -1
  201. data/lib/rubocop/cop/lint/uri_escape_unescape.rb +1 -1
  202. data/lib/rubocop/cop/lint/uri_regexp.rb +1 -1
  203. data/lib/rubocop/cop/lint/useless_access_modifier.rb +1 -1
  204. data/lib/rubocop/cop/lint/useless_assignment.rb +1 -1
  205. data/lib/rubocop/cop/lint/useless_method_definition.rb +1 -1
  206. data/lib/rubocop/cop/lint/useless_ruby2_keywords.rb +1 -1
  207. data/lib/rubocop/cop/lint/useless_setter_call.rb +2 -2
  208. data/lib/rubocop/cop/lint/useless_times.rb +1 -1
  209. data/lib/rubocop/cop/lint/void.rb +1 -1
  210. data/lib/rubocop/cop/metrics/abc_size.rb +1 -1
  211. data/lib/rubocop/cop/metrics/block_length.rb +1 -1
  212. data/lib/rubocop/cop/metrics/block_nesting.rb +1 -1
  213. data/lib/rubocop/cop/metrics/class_length.rb +1 -1
  214. data/lib/rubocop/cop/metrics/cyclomatic_complexity.rb +1 -1
  215. data/lib/rubocop/cop/metrics/method_length.rb +1 -1
  216. data/lib/rubocop/cop/metrics/module_length.rb +1 -1
  217. data/lib/rubocop/cop/metrics/parameter_lists.rb +1 -1
  218. data/lib/rubocop/cop/metrics/perceived_complexity.rb +1 -1
  219. data/lib/rubocop/cop/mixin/hash_shorthand_syntax.rb +7 -2
  220. data/lib/rubocop/cop/mixin/string_help.rb +1 -1
  221. data/lib/rubocop/cop/naming/accessor_method_name.rb +1 -1
  222. data/lib/rubocop/cop/naming/ascii_identifiers.rb +1 -1
  223. data/lib/rubocop/cop/naming/binary_operator_parameter_name.rb +1 -1
  224. data/lib/rubocop/cop/naming/block_forwarding.rb +2 -2
  225. data/lib/rubocop/cop/naming/block_parameter_name.rb +1 -1
  226. data/lib/rubocop/cop/naming/class_and_module_camel_case.rb +1 -1
  227. data/lib/rubocop/cop/naming/constant_name.rb +1 -1
  228. data/lib/rubocop/cop/naming/file_name.rb +1 -1
  229. data/lib/rubocop/cop/naming/heredoc_delimiter_case.rb +1 -1
  230. data/lib/rubocop/cop/naming/heredoc_delimiter_naming.rb +1 -1
  231. data/lib/rubocop/cop/naming/memoized_instance_variable_name.rb +1 -1
  232. data/lib/rubocop/cop/naming/method_name.rb +1 -1
  233. data/lib/rubocop/cop/naming/method_parameter_name.rb +1 -1
  234. data/lib/rubocop/cop/naming/predicate_name.rb +1 -1
  235. data/lib/rubocop/cop/naming/rescued_exceptions_variable_name.rb +1 -1
  236. data/lib/rubocop/cop/naming/variable_name.rb +1 -1
  237. data/lib/rubocop/cop/naming/variable_number.rb +1 -1
  238. data/lib/rubocop/cop/security/compound_hash.rb +1 -1
  239. data/lib/rubocop/cop/security/eval.rb +1 -1
  240. data/lib/rubocop/cop/security/json_load.rb +1 -1
  241. data/lib/rubocop/cop/security/marshal_load.rb +1 -1
  242. data/lib/rubocop/cop/security/open.rb +1 -1
  243. data/lib/rubocop/cop/security/yaml_load.rb +1 -1
  244. data/lib/rubocop/cop/style/accessor_grouping.rb +3 -3
  245. data/lib/rubocop/cop/style/alias.rb +1 -1
  246. data/lib/rubocop/cop/style/and_or.rb +3 -3
  247. data/lib/rubocop/cop/style/array_coercion.rb +1 -1
  248. data/lib/rubocop/cop/style/array_join.rb +1 -1
  249. data/lib/rubocop/cop/style/ascii_comments.rb +1 -1
  250. data/lib/rubocop/cop/style/attr.rb +1 -1
  251. data/lib/rubocop/cop/style/auto_resource_cleanup.rb +1 -1
  252. data/lib/rubocop/cop/style/bare_percent_literals.rb +1 -1
  253. data/lib/rubocop/cop/style/bisected_attr_accessor.rb +1 -1
  254. data/lib/rubocop/cop/style/block_comments.rb +1 -1
  255. data/lib/rubocop/cop/style/case_equality.rb +1 -1
  256. data/lib/rubocop/cop/style/case_like_if.rb +1 -1
  257. data/lib/rubocop/cop/style/class_and_module_children.rb +1 -1
  258. data/lib/rubocop/cop/style/class_check.rb +1 -1
  259. data/lib/rubocop/cop/style/class_equality_comparison.rb +1 -1
  260. data/lib/rubocop/cop/style/class_methods.rb +1 -1
  261. data/lib/rubocop/cop/style/class_methods_definitions.rb +1 -1
  262. data/lib/rubocop/cop/style/class_vars.rb +1 -1
  263. data/lib/rubocop/cop/style/collection_compact.rb +1 -1
  264. data/lib/rubocop/cop/style/collection_methods.rb +1 -1
  265. data/lib/rubocop/cop/style/colon_method_call.rb +1 -1
  266. data/lib/rubocop/cop/style/colon_method_definition.rb +1 -1
  267. data/lib/rubocop/cop/style/combinable_loops.rb +1 -1
  268. data/lib/rubocop/cop/style/command_literal.rb +1 -1
  269. data/lib/rubocop/cop/style/comment_annotation.rb +1 -1
  270. data/lib/rubocop/cop/style/commented_keyword.rb +3 -3
  271. data/lib/rubocop/cop/style/conditional_assignment.rb +1 -1
  272. data/lib/rubocop/cop/style/constant_visibility.rb +1 -1
  273. data/lib/rubocop/cop/style/date_time.rb +1 -1
  274. data/lib/rubocop/cop/style/def_with_parentheses.rb +1 -1
  275. data/lib/rubocop/cop/style/dir.rb +4 -1
  276. data/lib/rubocop/cop/style/documentation.rb +1 -1
  277. data/lib/rubocop/cop/style/documentation_method.rb +1 -1
  278. data/lib/rubocop/cop/style/double_negation.rb +1 -1
  279. data/lib/rubocop/cop/style/each_for_simple_loop.rb +1 -1
  280. data/lib/rubocop/cop/style/each_with_object.rb +1 -1
  281. data/lib/rubocop/cop/style/empty_block_parameter.rb +1 -1
  282. data/lib/rubocop/cop/style/empty_case_condition.rb +1 -1
  283. data/lib/rubocop/cop/style/empty_lambda_parameter.rb +1 -1
  284. data/lib/rubocop/cop/style/empty_literal.rb +1 -1
  285. data/lib/rubocop/cop/style/empty_method.rb +1 -1
  286. data/lib/rubocop/cop/style/encoding.rb +1 -1
  287. data/lib/rubocop/cop/style/end_block.rb +1 -1
  288. data/lib/rubocop/cop/style/endless_method.rb +1 -1
  289. data/lib/rubocop/cop/style/env_home.rb +1 -1
  290. data/lib/rubocop/cop/style/eval_with_location.rb +1 -1
  291. data/lib/rubocop/cop/style/even_odd.rb +1 -1
  292. data/lib/rubocop/cop/style/expand_path_arguments.rb +1 -1
  293. data/lib/rubocop/cop/style/explicit_block_argument.rb +1 -1
  294. data/lib/rubocop/cop/style/exponential_notation.rb +1 -1
  295. data/lib/rubocop/cop/style/fetch_env_var.rb +56 -83
  296. data/lib/rubocop/cop/style/float_division.rb +1 -1
  297. data/lib/rubocop/cop/style/for.rb +1 -1
  298. data/lib/rubocop/cop/style/format_string.rb +1 -1
  299. data/lib/rubocop/cop/style/frozen_string_literal_comment.rb +5 -2
  300. data/lib/rubocop/cop/style/global_std_stream.rb +1 -1
  301. data/lib/rubocop/cop/style/global_vars.rb +1 -1
  302. data/lib/rubocop/cop/style/guard_clause.rb +1 -1
  303. data/lib/rubocop/cop/style/hash_conversion.rb +1 -1
  304. data/lib/rubocop/cop/style/hash_each_methods.rb +1 -1
  305. data/lib/rubocop/cop/style/hash_except.rb +1 -1
  306. data/lib/rubocop/cop/style/hash_like_case.rb +1 -1
  307. data/lib/rubocop/cop/style/hash_syntax.rb +1 -1
  308. data/lib/rubocop/cop/style/hash_transform_keys.rb +6 -1
  309. data/lib/rubocop/cop/style/hash_transform_values.rb +4 -1
  310. data/lib/rubocop/cop/style/identical_conditional_branches.rb +2 -2
  311. data/lib/rubocop/cop/style/if_with_boolean_literal_branches.rb +2 -2
  312. data/lib/rubocop/cop/style/implicit_runtime_error.rb +1 -1
  313. data/lib/rubocop/cop/style/in_pattern_then.rb +1 -1
  314. data/lib/rubocop/cop/style/inline_comment.rb +1 -1
  315. data/lib/rubocop/cop/style/inverse_methods.rb +2 -2
  316. data/lib/rubocop/cop/style/ip_addresses.rb +1 -1
  317. data/lib/rubocop/cop/style/keyword_parameters_order.rb +1 -1
  318. data/lib/rubocop/cop/style/lambda.rb +1 -1
  319. data/lib/rubocop/cop/style/lambda_call.rb +1 -1
  320. data/lib/rubocop/cop/style/line_end_concatenation.rb +1 -1
  321. data/lib/rubocop/cop/style/map_compact_with_conditional_block.rb +136 -0
  322. data/lib/rubocop/cop/style/map_to_hash.rb +2 -2
  323. data/lib/rubocop/cop/style/method_call_with_args_parentheses.rb +1 -1
  324. data/lib/rubocop/cop/style/method_call_without_args_parentheses.rb +1 -1
  325. data/lib/rubocop/cop/style/method_called_on_do_end_block.rb +1 -1
  326. data/lib/rubocop/cop/style/method_def_parentheses.rb +1 -1
  327. data/lib/rubocop/cop/style/min_max.rb +1 -1
  328. data/lib/rubocop/cop/style/missing_respond_to_missing.rb +1 -1
  329. data/lib/rubocop/cop/style/mixin_grouping.rb +1 -1
  330. data/lib/rubocop/cop/style/mixin_usage.rb +1 -1
  331. data/lib/rubocop/cop/style/module_function.rb +1 -1
  332. data/lib/rubocop/cop/style/multiline_block_chain.rb +1 -1
  333. data/lib/rubocop/cop/style/multiline_in_pattern_then.rb +1 -1
  334. data/lib/rubocop/cop/style/multiline_memoization.rb +1 -1
  335. data/lib/rubocop/cop/style/multiline_method_signature.rb +1 -1
  336. data/lib/rubocop/cop/style/multiline_ternary_operator.rb +2 -2
  337. data/lib/rubocop/cop/style/multiline_when_then.rb +1 -1
  338. data/lib/rubocop/cop/style/multiple_comparison.rb +1 -1
  339. data/lib/rubocop/cop/style/mutable_constant.rb +1 -1
  340. data/lib/rubocop/cop/style/negated_if_else_condition.rb +1 -1
  341. data/lib/rubocop/cop/style/nested_file_dirname.rb +1 -1
  342. data/lib/rubocop/cop/style/nested_modifier.rb +1 -1
  343. data/lib/rubocop/cop/style/nested_parenthesized_calls.rb +1 -1
  344. data/lib/rubocop/cop/style/nested_ternary_operator.rb +1 -1
  345. data/lib/rubocop/cop/style/nil_comparison.rb +1 -1
  346. data/lib/rubocop/cop/style/nil_lambda.rb +1 -1
  347. data/lib/rubocop/cop/style/non_nil_check.rb +1 -1
  348. data/lib/rubocop/cop/style/not.rb +1 -1
  349. data/lib/rubocop/cop/style/numbered_parameters.rb +1 -1
  350. data/lib/rubocop/cop/style/numbered_parameters_limit.rb +1 -1
  351. data/lib/rubocop/cop/style/numeric_literal_prefix.rb +1 -1
  352. data/lib/rubocop/cop/style/numeric_literals.rb +1 -1
  353. data/lib/rubocop/cop/style/numeric_predicate.rb +10 -2
  354. data/lib/rubocop/cop/style/object_then.rb +1 -1
  355. data/lib/rubocop/cop/style/one_line_conditional.rb +1 -1
  356. data/lib/rubocop/cop/style/open_struct_use.rb +1 -1
  357. data/lib/rubocop/cop/style/option_hash.rb +1 -1
  358. data/lib/rubocop/cop/style/optional_arguments.rb +1 -1
  359. data/lib/rubocop/cop/style/optional_boolean_parameter.rb +1 -1
  360. data/lib/rubocop/cop/style/or_assignment.rb +1 -1
  361. data/lib/rubocop/cop/style/parentheses_around_condition.rb +1 -1
  362. data/lib/rubocop/cop/style/percent_literal_delimiters.rb +1 -1
  363. data/lib/rubocop/cop/style/percent_q_literals.rb +1 -1
  364. data/lib/rubocop/cop/style/perl_backrefs.rb +1 -1
  365. data/lib/rubocop/cop/style/preferred_hash_methods.rb +1 -1
  366. data/lib/rubocop/cop/style/proc.rb +1 -1
  367. data/lib/rubocop/cop/style/raise_args.rb +1 -1
  368. data/lib/rubocop/cop/style/random_with_offset.rb +1 -1
  369. data/lib/rubocop/cop/style/redundant_argument.rb +1 -1
  370. data/lib/rubocop/cop/style/redundant_assignment.rb +1 -1
  371. data/lib/rubocop/cop/style/redundant_begin.rb +17 -6
  372. data/lib/rubocop/cop/style/redundant_capital_w.rb +1 -1
  373. data/lib/rubocop/cop/style/redundant_condition.rb +9 -5
  374. data/lib/rubocop/cop/style/redundant_conditional.rb +1 -1
  375. data/lib/rubocop/cop/style/redundant_exception.rb +1 -1
  376. data/lib/rubocop/cop/style/redundant_fetch_block.rb +1 -1
  377. data/lib/rubocop/cop/style/redundant_file_extension_in_require.rb +1 -1
  378. data/lib/rubocop/cop/style/redundant_freeze.rb +1 -1
  379. data/lib/rubocop/cop/style/redundant_interpolation.rb +22 -1
  380. data/lib/rubocop/cop/style/redundant_parentheses.rb +1 -1
  381. data/lib/rubocop/cop/style/redundant_percent_q.rb +1 -1
  382. data/lib/rubocop/cop/style/redundant_regexp_character_class.rb +2 -2
  383. data/lib/rubocop/cop/style/redundant_regexp_escape.rb +1 -1
  384. data/lib/rubocop/cop/style/redundant_return.rb +1 -1
  385. data/lib/rubocop/cop/style/redundant_self.rb +1 -1
  386. data/lib/rubocop/cop/style/redundant_self_assignment.rb +1 -1
  387. data/lib/rubocop/cop/style/redundant_self_assignment_branch.rb +1 -1
  388. data/lib/rubocop/cop/style/redundant_sort.rb +1 -1
  389. data/lib/rubocop/cop/style/redundant_sort_by.rb +1 -1
  390. data/lib/rubocop/cop/style/regexp_literal.rb +1 -1
  391. data/lib/rubocop/cop/style/rescue_modifier.rb +1 -1
  392. data/lib/rubocop/cop/style/rescue_standard_error.rb +3 -3
  393. data/lib/rubocop/cop/style/return_nil.rb +1 -1
  394. data/lib/rubocop/cop/style/safe_navigation.rb +1 -1
  395. data/lib/rubocop/cop/style/sample.rb +1 -1
  396. data/lib/rubocop/cop/style/select_by_regexp.rb +1 -1
  397. data/lib/rubocop/cop/style/self_assignment.rb +1 -1
  398. data/lib/rubocop/cop/style/semicolon.rb +1 -1
  399. data/lib/rubocop/cop/style/send.rb +1 -1
  400. data/lib/rubocop/cop/style/signal_exception.rb +1 -1
  401. data/lib/rubocop/cop/style/single_line_block_params.rb +1 -1
  402. data/lib/rubocop/cop/style/single_line_methods.rb +2 -2
  403. data/lib/rubocop/cop/style/slicing_with_range.rb +1 -1
  404. data/lib/rubocop/cop/style/sole_nested_conditional.rb +26 -7
  405. data/lib/rubocop/cop/style/static_class.rb +1 -1
  406. data/lib/rubocop/cop/style/stderr_puts.rb +1 -1
  407. data/lib/rubocop/cop/style/string_concatenation.rb +1 -1
  408. data/lib/rubocop/cop/style/string_hash_keys.rb +1 -1
  409. data/lib/rubocop/cop/style/string_literals_in_interpolation.rb +1 -1
  410. data/lib/rubocop/cop/style/string_methods.rb +1 -1
  411. data/lib/rubocop/cop/style/strip.rb +1 -1
  412. data/lib/rubocop/cop/style/struct_inheritance.rb +2 -2
  413. data/lib/rubocop/cop/style/swap_values.rb +1 -1
  414. data/lib/rubocop/cop/style/symbol_array.rb +6 -2
  415. data/lib/rubocop/cop/style/symbol_literal.rb +1 -1
  416. data/lib/rubocop/cop/style/symbol_proc.rb +3 -3
  417. data/lib/rubocop/cop/style/ternary_parentheses.rb +1 -1
  418. data/lib/rubocop/cop/style/trailing_body_on_class.rb +1 -1
  419. data/lib/rubocop/cop/style/trailing_body_on_method_definition.rb +1 -1
  420. data/lib/rubocop/cop/style/trailing_body_on_module.rb +1 -1
  421. data/lib/rubocop/cop/style/trailing_comma_in_arguments.rb +1 -1
  422. data/lib/rubocop/cop/style/trailing_comma_in_array_literal.rb +1 -1
  423. data/lib/rubocop/cop/style/trailing_comma_in_block_args.rb +1 -1
  424. data/lib/rubocop/cop/style/trailing_comma_in_hash_literal.rb +1 -1
  425. data/lib/rubocop/cop/style/trailing_method_end_statement.rb +1 -1
  426. data/lib/rubocop/cop/style/trailing_underscore_variable.rb +1 -1
  427. data/lib/rubocop/cop/style/trivial_accessors.rb +1 -1
  428. data/lib/rubocop/cop/style/unless_else.rb +1 -1
  429. data/lib/rubocop/cop/style/unless_logical_operators.rb +1 -1
  430. data/lib/rubocop/cop/style/unpack_first.rb +4 -1
  431. data/lib/rubocop/cop/style/variable_interpolation.rb +1 -1
  432. data/lib/rubocop/cop/style/when_then.rb +1 -1
  433. data/lib/rubocop/cop/style/word_array.rb +1 -1
  434. data/lib/rubocop/cop/style/yoda_condition.rb +1 -1
  435. data/lib/rubocop/cop/style/zero_length_predicate.rb +1 -1
  436. data/lib/rubocop/cop/team.rb +2 -2
  437. data/lib/rubocop/cop/util.rb +1 -1
  438. data/lib/rubocop/formatter/disabled_config_formatter.rb +2 -2
  439. data/lib/rubocop/formatter/markdown_formatter.rb +2 -0
  440. data/lib/rubocop/formatter/simple_text_formatter.rb +4 -2
  441. data/lib/rubocop/magic_comment.rb +27 -2
  442. data/lib/rubocop/options.rb +60 -38
  443. data/lib/rubocop/rake_task.rb +3 -3
  444. data/lib/rubocop/result_cache.rb +2 -1
  445. data/lib/rubocop/rspec/cop_helper.rb +1 -1
  446. data/lib/rubocop/rspec/expect_offense.rb +3 -3
  447. data/lib/rubocop/rspec/shared_contexts.rb +20 -0
  448. data/lib/rubocop/runner.rb +3 -3
  449. data/lib/rubocop/target_ruby.rb +7 -5
  450. data/lib/rubocop/version.rb +1 -1
  451. data/lib/rubocop.rb +2 -0
  452. metadata +8 -5
@@ -3,7 +3,7 @@
3
3
  module RuboCop
4
4
  module Cop
5
5
  module Style
6
- # This cop checks for uses of the keyword `not` instead of `!`.
6
+ # Checks for uses of the keyword `not` instead of `!`.
7
7
  #
8
8
  # @example
9
9
  #
@@ -3,7 +3,7 @@
3
3
  module RuboCop
4
4
  module Cop
5
5
  module Style
6
- # This cop checks for numbered parameters.
6
+ # Checks for numbered parameters.
7
7
  #
8
8
  # It can either restrict the use of numbered parameters to
9
9
  # single-lined blocks, or disallow completely numbered parameters.
@@ -3,7 +3,7 @@
3
3
  module RuboCop
4
4
  module Cop
5
5
  module Style
6
- # This cop detects use of an excessive amount of numbered parameters in a
6
+ # Detects use of an excessive amount of numbered parameters in a
7
7
  # single block. Having too many numbered parameters can make code too
8
8
  # cryptic and hard to read.
9
9
  #
@@ -3,7 +3,7 @@
3
3
  module RuboCop
4
4
  module Cop
5
5
  module Style
6
- # This cop checks for octal, hex, binary, and decimal literals using
6
+ # Checks for octal, hex, binary, and decimal literals using
7
7
  # uppercase prefixes and corrects them to lowercase prefix
8
8
  # or no prefix (in case of decimals).
9
9
  #
@@ -3,7 +3,7 @@
3
3
  module RuboCop
4
4
  module Cop
5
5
  module Style
6
- # This cop checks for big numeric literals without _ between groups
6
+ # Checks for big numeric literals without _ between groups
7
7
  # of digits in them.
8
8
  #
9
9
  # @example
@@ -3,7 +3,7 @@
3
3
  module RuboCop
4
4
  module Cop
5
5
  module Style
6
- # This cop checks for usage of comparison operators (`==`,
6
+ # Checks for usage of comparison operators (`==`,
7
7
  # `>`, `<`) to test numbers as zero, positive, or negative.
8
8
  # These can be replaced by their respective predicate methods.
9
9
  # The cop can also be configured to do the reverse.
@@ -82,7 +82,7 @@ module RuboCop
82
82
  predicate(node)
83
83
  end
84
84
 
85
- return unless numeric && operator
85
+ return unless numeric && operator && replacement_supported?(operator)
86
86
 
87
87
  [numeric, replacement(numeric, operator)]
88
88
  end
@@ -107,6 +107,14 @@ module RuboCop
107
107
  node.send_type? && node.binary_operation? && !node.parenthesized?
108
108
  end
109
109
 
110
+ def replacement_supported?(operator)
111
+ if %i[> <].include?(operator)
112
+ target_ruby_version >= 2.3
113
+ else
114
+ true
115
+ end
116
+ end
117
+
110
118
  def invert
111
119
  lambda do |comparison, numeric|
112
120
  comparison = { :> => :<, :< => :> }[comparison] || comparison
@@ -3,7 +3,7 @@
3
3
  module RuboCop
4
4
  module Cop
5
5
  module Style
6
- # This cop enforces the use of consistent method names
6
+ # Enforces the use of consistent method names
7
7
  # `Object#yield_self` or `Object#then`.
8
8
  #
9
9
  # @example EnforcedStyle: then (default)
@@ -6,7 +6,7 @@ module RuboCop
6
6
  # Checks for uses of if/then/else/end constructs on a single line.
7
7
  # AlwaysCorrectToMultiline config option can be set to true to auto-convert all offenses to
8
8
  # multi-line constructs. When AlwaysCorrectToMultiline is false (default case) the
9
- # auto-correct will first try converting them to ternary operators.
9
+ # autocorrect will first try converting them to ternary operators.
10
10
  #
11
11
  # @example
12
12
  # # bad
@@ -3,7 +3,7 @@
3
3
  module RuboCop
4
4
  module Cop
5
5
  module Style
6
- # This cop flags uses of OpenStruct, as it is now officially discouraged
6
+ # Flags uses of OpenStruct, as it is now officially discouraged
7
7
  # to be used for performance, version compatibility, and potential security issues.
8
8
  #
9
9
  # @safety
@@ -3,7 +3,7 @@
3
3
  module RuboCop
4
4
  module Cop
5
5
  module Style
6
- # This cop checks for options hashes and discourages them if the
6
+ # Checks for options hashes and discourages them if the
7
7
  # current Ruby version supports keyword arguments.
8
8
  #
9
9
  # @example
@@ -3,7 +3,7 @@
3
3
  module RuboCop
4
4
  module Cop
5
5
  module Style
6
- # This cop checks for optional arguments to methods
6
+ # Checks for optional arguments to methods
7
7
  # that do not come at the end of the argument list.
8
8
  #
9
9
  # @safety
@@ -3,7 +3,7 @@
3
3
  module RuboCop
4
4
  module Cop
5
5
  module Style
6
- # This cop checks for places where keyword arguments can be used instead of
6
+ # Checks for places where keyword arguments can be used instead of
7
7
  # boolean arguments when defining methods. `respond_to_missing?` method is allowed by default.
8
8
  # These are customizable with `AllowedMethods` option.
9
9
  #
@@ -3,7 +3,7 @@
3
3
  module RuboCop
4
4
  module Cop
5
5
  module Style
6
- # This cop checks for potential usage of the `||=` operator.
6
+ # Checks for potential usage of the `||=` operator.
7
7
  #
8
8
  # @example
9
9
  # # bad
@@ -3,7 +3,7 @@
3
3
  module RuboCop
4
4
  module Cop
5
5
  module Style
6
- # This cop checks for the presence of superfluous parentheses around the
6
+ # Checks for the presence of superfluous parentheses around the
7
7
  # condition of if/unless/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 Style
6
- # This cop enforces the consistent usage of `%`-literal delimiters.
6
+ # Enforces the consistent usage of `%`-literal delimiters.
7
7
  #
8
8
  # Specify the 'default' key to set all preferred delimiters at once. You
9
9
  # can continue to specify individual preferred delimiters to override the
@@ -3,7 +3,7 @@
3
3
  module RuboCop
4
4
  module Cop
5
5
  module Style
6
- # This cop checks for usage of the %Q() syntax when %q() would do.
6
+ # Checks for usage of the %Q() syntax when %q() would do.
7
7
  #
8
8
  # @example EnforcedStyle: lower_case_q (default)
9
9
  # # The `lower_case_q` style prefers `%q` unless
@@ -3,7 +3,7 @@
3
3
  module RuboCop
4
4
  module Cop
5
5
  module Style
6
- # This cop looks for uses of Perl-style regexp match
6
+ # Looks for uses of Perl-style regexp match
7
7
  # backreferences and their English versions like
8
8
  # $1, $2, $&, &+, $MATCH, $PREMATCH, etc.
9
9
  #
@@ -3,7 +3,7 @@
3
3
  module RuboCop
4
4
  module Cop
5
5
  module Style
6
- # This cop checks for uses of methods `Hash#has_key?` and
6
+ # Checks for uses of methods `Hash#has_key?` and
7
7
  # `Hash#has_value?`, and suggests using `Hash#key?` and `Hash#value?` instead.
8
8
  #
9
9
  # It is configurable to enforce the verbose method names, by using the
@@ -3,7 +3,7 @@
3
3
  module RuboCop
4
4
  module Cop
5
5
  module Style
6
- # This cop checks for uses of Proc.new where Kernel#proc
6
+ # Checks for uses of Proc.new where Kernel#proc
7
7
  # would be more appropriate.
8
8
  #
9
9
  # @example
@@ -3,7 +3,7 @@
3
3
  module RuboCop
4
4
  module Cop
5
5
  module Style
6
- # This cop checks the args passed to `fail` and `raise`. For exploded
6
+ # Checks the args passed to `fail` and `raise`. For exploded
7
7
  # style (default), it recommends passing the exception class and message
8
8
  # to `raise`, rather than construct an instance of the error. It will
9
9
  # still allow passing just a message, or the construction of an error
@@ -3,7 +3,7 @@
3
3
  module RuboCop
4
4
  module Cop
5
5
  module Style
6
- # This cop checks for the use of randomly generated numbers,
6
+ # Checks for the use of randomly generated numbers,
7
7
  # added/subtracted with integer literals, as well as those with
8
8
  # Integer#succ and Integer#pred methods. Prefer using ranges instead,
9
9
  # as it clearly states the intentions.
@@ -3,7 +3,7 @@
3
3
  module RuboCop
4
4
  module Cop
5
5
  module Style
6
- # This cop checks for a redundant argument passed to certain methods.
6
+ # Checks for a redundant argument passed to certain methods.
7
7
  #
8
8
  # NOTE: This cop is limited to methods with single parameter.
9
9
  #
@@ -3,7 +3,7 @@
3
3
  module RuboCop
4
4
  module Cop
5
5
  module Style
6
- # This cop checks for redundant assignment before returning.
6
+ # Checks for redundant assignment before returning.
7
7
  #
8
8
  # @example
9
9
  # # bad
@@ -3,7 +3,7 @@
3
3
  module RuboCop
4
4
  module Cop
5
5
  module Style
6
- # This cop checks for redundant `begin` blocks.
6
+ # Checks for redundant `begin` blocks.
7
7
  #
8
8
  # Currently it checks for code like this:
9
9
  #
@@ -36,6 +36,7 @@ module RuboCop
36
36
  # do_something
37
37
  #
38
38
  # # bad
39
+ # # When using Ruby 2.5 or later.
39
40
  # do_something do
40
41
  # begin
41
42
  # something
@@ -67,6 +68,11 @@ module RuboCop
67
68
 
68
69
  MSG = 'Redundant `begin` block detected.'
69
70
 
71
+ # @!method offensive_kwbegins(node)
72
+ def_node_search :offensive_kwbegins, <<~PATTERN
73
+ [(kwbegin ...) !#allowable_kwbegin?]
74
+ PATTERN
75
+
70
76
  def on_def(node)
71
77
  return unless node.body&.kwbegin_type?
72
78
 
@@ -75,6 +81,7 @@ module RuboCop
75
81
  alias on_defs on_def
76
82
 
77
83
  def on_block(node)
84
+ return if target_ruby_version < 2.5
78
85
  return if node.send_node.lambda_literal?
79
86
  return if node.braces?
80
87
  return unless node.body&.kwbegin_type?
@@ -83,16 +90,20 @@ module RuboCop
83
90
  end
84
91
 
85
92
  def on_kwbegin(node)
86
- return if empty_begin?(node) ||
87
- begin_block_has_multiline_statements?(node) ||
88
- contain_rescue_or_ensure?(node) ||
89
- valid_context_using_only_begin?(node)
93
+ return unless (target_node = offensive_kwbegins(node).to_a.last)
90
94
 
91
- register_offense(node)
95
+ register_offense(target_node)
92
96
  end
93
97
 
94
98
  private
95
99
 
100
+ def allowable_kwbegin?(node)
101
+ empty_begin?(node) ||
102
+ begin_block_has_multiline_statements?(node) ||
103
+ contain_rescue_or_ensure?(node) ||
104
+ valid_context_using_only_begin?(node)
105
+ end
106
+
96
107
  def register_offense(node)
97
108
  offense_range = node.loc.begin
98
109
 
@@ -3,7 +3,7 @@
3
3
  module RuboCop
4
4
  module Cop
5
5
  module Style
6
- # This cop checks for usage of the %W() syntax when %w() would do.
6
+ # Checks for usage of the %W() syntax when %w() would do.
7
7
  #
8
8
  # @example
9
9
  # # bad
@@ -3,7 +3,7 @@
3
3
  module RuboCop
4
4
  module Cop
5
5
  module Style
6
- # This cop checks for unnecessary conditional expressions.
6
+ # Checks for unnecessary conditional expressions.
7
7
  #
8
8
  # @example
9
9
  # # bad
@@ -46,7 +46,7 @@ module RuboCop
46
46
  add_offense(range_of_offense(node), message: message) do |corrector|
47
47
  if node.ternary? && !branches_have_method?(node)
48
48
  correct_ternary(corrector, node)
49
- elsif redudant_condition?(node)
49
+ elsif redundant_condition?(node)
50
50
  corrector.replace(node, node.if_branch.source)
51
51
  else
52
52
  corrected = make_ternary_form(node)
@@ -59,7 +59,7 @@ module RuboCop
59
59
  private
60
60
 
61
61
  def message(node)
62
- if redudant_condition?(node)
62
+ if redundant_condition?(node)
63
63
  REDUNDANT_CONDITION
64
64
  else
65
65
  MSG
@@ -82,7 +82,7 @@ module RuboCop
82
82
  (node.ternary? || !else_branch.instance_of?(AST::Node) || else_branch.single_line?)
83
83
  end
84
84
 
85
- def redudant_condition?(node)
85
+ def redundant_condition?(node)
86
86
  node.modifier_form? || !node.else_branch
87
87
  end
88
88
 
@@ -147,7 +147,11 @@ module RuboCop
147
147
 
148
148
  if_branch.send_type? && if_branch.arguments.count == 1 &&
149
149
  else_branch.send_type? && else_branch.arguments.count == 1 &&
150
- if_branch.method?(else_branch.method_name)
150
+ same_method?(if_branch, else_branch)
151
+ end
152
+
153
+ def same_method?(if_branch, else_branch)
154
+ if_branch.method?(else_branch.method_name) && if_branch.receiver == else_branch.receiver
151
155
  end
152
156
 
153
157
  def if_source(if_branch)
@@ -3,7 +3,7 @@
3
3
  module RuboCop
4
4
  module Cop
5
5
  module Style
6
- # This cop checks for redundant returning of true/false in conditionals.
6
+ # Checks for redundant returning of true/false in conditionals.
7
7
  #
8
8
  # @example
9
9
  # # bad
@@ -3,7 +3,7 @@
3
3
  module RuboCop
4
4
  module Cop
5
5
  module Style
6
- # This cop checks for RuntimeError as the argument of raise/fail.
6
+ # Checks for RuntimeError as the argument of raise/fail.
7
7
  #
8
8
  # It checks for code like this:
9
9
  #
@@ -3,7 +3,7 @@
3
3
  module RuboCop
4
4
  module Cop
5
5
  module Style
6
- # This cop identifies places where `fetch(key) { value }`
6
+ # Identifies places where `fetch(key) { value }`
7
7
  # can be replaced by `fetch(key, value)`.
8
8
  #
9
9
  # In such cases `fetch(key, value)` method is faster
@@ -3,7 +3,7 @@
3
3
  module RuboCop
4
4
  module Cop
5
5
  module Style
6
- # This cop checks for the presence of superfluous `.rb` extension in
6
+ # Checks for the presence of superfluous `.rb` extension in
7
7
  # the filename provided to `require` and `require_relative`.
8
8
  #
9
9
  # Note: If the extension is omitted, Ruby tries adding '.rb', '.so',
@@ -3,7 +3,7 @@
3
3
  module RuboCop
4
4
  module Cop
5
5
  module Style
6
- # This cop check for uses of `Object#freeze` on immutable objects.
6
+ # Check for uses of `Object#freeze` on immutable objects.
7
7
  #
8
8
  # NOTE: Regexp and Range literals are frozen objects since Ruby 3.0.
9
9
  #
@@ -3,7 +3,28 @@
3
3
  module RuboCop
4
4
  module Cop
5
5
  module Style
6
- # This cop checks for strings that are just an interpolated expression.
6
+ # Checks for strings that are just an interpolated expression.
7
+ #
8
+ # @safety
9
+ # Autocorrection is unsafe because when calling a destructive method to string,
10
+ # the resulting string may have different behavior or raise `FrozenError`.
11
+ #
12
+ # [source,ruby]
13
+ # ----
14
+ # x = 'a'
15
+ # y = "#{x}"
16
+ # y << 'b' # return 'ab'
17
+ # x # return 'a'
18
+ # y = x.to_s
19
+ # y << 'b' # return 'ab'
20
+ # x # return 'ab'
21
+ #
22
+ # x = 'a'.freeze
23
+ # y = "#{x}"
24
+ # y << 'b' # return 'ab'.
25
+ # y = x.to_s
26
+ # y << 'b' # raise `FrozenError`.
27
+ # ----
7
28
  #
8
29
  # @example
9
30
  #
@@ -3,7 +3,7 @@
3
3
  module RuboCop
4
4
  module Cop
5
5
  module Style
6
- # This cop checks for redundant parentheses.
6
+ # Checks for redundant parentheses.
7
7
  #
8
8
  # @example
9
9
  #
@@ -3,7 +3,7 @@
3
3
  module RuboCop
4
4
  module Cop
5
5
  module Style
6
- # This cop checks for usage of the %q/%Q syntax when '' or "" would do.
6
+ # Checks for usage of the %q/%Q syntax when '' or "" would do.
7
7
  #
8
8
  # @example
9
9
  #
@@ -3,7 +3,7 @@
3
3
  module RuboCop
4
4
  module Cop
5
5
  module Style
6
- # This cop checks for unnecessary single-element Regexp character classes.
6
+ # Checks for unnecessary single-element Regexp character classes.
7
7
  #
8
8
  # @example
9
9
  #
@@ -87,7 +87,7 @@ module RuboCop
87
87
  def without_character_class(loc)
88
88
  without_character_class = loc.source[1..-2]
89
89
 
90
- # Adds `\` to prevent auto-correction that changes to an interpolated string when `[#]`.
90
+ # Adds `\` to prevent autocorrection that changes to an interpolated string when `[#]`.
91
91
  # e.g. From `/[#]{0}/` to `/#{0}/`
92
92
  loc.source == '[#]' ? "\\#{without_character_class}" : without_character_class
93
93
  end
@@ -3,7 +3,7 @@
3
3
  module RuboCop
4
4
  module Cop
5
5
  module Style
6
- # This cop checks for redundant escapes inside Regexp literals.
6
+ # Checks for redundant escapes inside Regexp literals.
7
7
  #
8
8
  # @example
9
9
  # # bad
@@ -3,7 +3,7 @@
3
3
  module RuboCop
4
4
  module Cop
5
5
  module Style
6
- # This cop checks for redundant `return` expressions.
6
+ # Checks for redundant `return` expressions.
7
7
  #
8
8
  # @example
9
9
  # # These bad cases should be extended to handle methods whose body is
@@ -3,7 +3,7 @@
3
3
  module RuboCop
4
4
  module Cop
5
5
  module Style
6
- # This cop checks for redundant uses of `self`.
6
+ # Checks for redundant uses of `self`.
7
7
  #
8
8
  # The usage of `self` is only needed when:
9
9
  #
@@ -3,7 +3,7 @@
3
3
  module RuboCop
4
4
  module Cop
5
5
  module Style
6
- # This cop checks for places where redundant assignments are made for in place
6
+ # Checks for places where redundant assignments are made for in place
7
7
  # modification methods.
8
8
  #
9
9
  # @safety
@@ -3,7 +3,7 @@
3
3
  module RuboCop
4
4
  module Cop
5
5
  module Style
6
- # This cop checks for places where conditional branch makes redundant self-assignment.
6
+ # Checks for places where conditional branch makes redundant self-assignment.
7
7
  #
8
8
  # It only detects local variable because it may replace state of instance variable,
9
9
  # class variable, and global variable that have state across methods with `nil`.
@@ -3,7 +3,7 @@
3
3
  module RuboCop
4
4
  module Cop
5
5
  module Style
6
- # This cop is used to identify instances of sorting and then
6
+ # Identifies instances of sorting and then
7
7
  # taking only the first or last element. The same behavior can
8
8
  # be accomplished without a relatively expensive sort by using
9
9
  # `Enumerable#min` instead of sorting and taking the first
@@ -3,7 +3,7 @@
3
3
  module RuboCop
4
4
  module Cop
5
5
  module Style
6
- # This cop identifies places where `sort_by { ... }` can be replaced by
6
+ # Identifies places where `sort_by { ... }` can be replaced by
7
7
  # `sort`.
8
8
  #
9
9
  # @example
@@ -3,7 +3,7 @@
3
3
  module RuboCop
4
4
  module Cop
5
5
  module Style
6
- # This cop enforces using // or %r around regular expressions.
6
+ # Enforces using // or %r around regular expressions.
7
7
  #
8
8
  # @example EnforcedStyle: slashes (default)
9
9
  # # bad
@@ -3,7 +3,7 @@
3
3
  module RuboCop
4
4
  module Cop
5
5
  module Style
6
- # This cop checks for uses of rescue in its modifier form.
6
+ # Checks for uses of rescue in its modifier form.
7
7
  #
8
8
  # The cop to check `rescue` in its modifier form is added for following
9
9
  # reasons:
@@ -3,7 +3,7 @@
3
3
  module RuboCop
4
4
  module Cop
5
5
  module Style
6
- # This cop checks for rescuing `StandardError`. There are two supported
6
+ # Checks for rescuing `StandardError`. There are two supported
7
7
  # styles `implicit` and `explicit`. This cop will not register an offense
8
8
  # if any error other than `StandardError` is specified.
9
9
  #
@@ -98,7 +98,7 @@ module RuboCop
98
98
  offense_for_implicit_enforced_style(node, error)
99
99
  end
100
100
  when :explicit
101
- rescue_without_error_class?(node) { offense_for_exlicit_enforced_style(node) }
101
+ rescue_without_error_class?(node) { offense_for_explicit_enforced_style(node) }
102
102
  end
103
103
  end
104
104
 
@@ -115,7 +115,7 @@ module RuboCop
115
115
  end
116
116
  end
117
117
 
118
- def offense_for_exlicit_enforced_style(node)
118
+ def offense_for_explicit_enforced_style(node)
119
119
  add_offense(node.loc.keyword, message: MSG_EXPLICIT) do |corrector|
120
120
  corrector.insert_after(node.loc.keyword, ' StandardError')
121
121
  end
@@ -3,7 +3,7 @@
3
3
  module RuboCop
4
4
  module Cop
5
5
  module Style
6
- # This cop enforces consistency between 'return nil' and 'return'.
6
+ # Enforces consistency between 'return nil' and 'return'.
7
7
  #
8
8
  # Supported styles are: return, return_nil.
9
9
  #
@@ -3,7 +3,7 @@
3
3
  module RuboCop
4
4
  module Cop
5
5
  module Style
6
- # This cop transforms usages of a method call safeguarded by a non `nil`
6
+ # Transforms usages of a method call safeguarded by a non `nil`
7
7
  # check for the variable whose method is being called to
8
8
  # safe navigation (`&.`). If there is a method chain, all of the methods
9
9
  # in the chain need to be checked for safety, and all of the methods will
@@ -3,7 +3,7 @@
3
3
  module RuboCop
4
4
  module Cop
5
5
  module Style
6
- # This cop is used to identify usages of `shuffle.first`,
6
+ # Identifies usages of `shuffle.first`,
7
7
  # `shuffle.last`, and `shuffle[]` and change them to use
8
8
  # `sample` instead.
9
9
  #