rubocop 1.12.1 → 1.13.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 (395) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +3 -2
  3. data/config/default.yml +10 -0
  4. data/exe/rubocop +1 -3
  5. data/lib/rubocop.rb +1 -1
  6. data/lib/rubocop/cached_data.rb +1 -3
  7. data/lib/rubocop/cli.rb +4 -6
  8. data/lib/rubocop/cli/command/auto_genenerate_config.rb +9 -19
  9. data/lib/rubocop/cli/command/init_dotfile.rb +1 -3
  10. data/lib/rubocop/cli/command/show_cops.rb +1 -4
  11. data/lib/rubocop/comment_config.rb +2 -7
  12. data/lib/rubocop/config.rb +11 -26
  13. data/lib/rubocop/config_loader.rb +5 -11
  14. data/lib/rubocop/config_loader_resolver.rb +22 -14
  15. data/lib/rubocop/config_obsoletion/cop_rule.rb +1 -2
  16. data/lib/rubocop/config_store.rb +1 -2
  17. data/lib/rubocop/config_validator.rb +5 -10
  18. data/lib/rubocop/cop/autocorrect_logic.rb +3 -8
  19. data/lib/rubocop/cop/badge.rb +1 -2
  20. data/lib/rubocop/cop/base.rb +8 -6
  21. data/lib/rubocop/cop/bundler/duplicated_gem.rb +1 -2
  22. data/lib/rubocop/cop/bundler/gem_comment.rb +42 -8
  23. data/lib/rubocop/cop/bundler/ordered_gems.rb +1 -4
  24. data/lib/rubocop/cop/commissioner.rb +2 -8
  25. data/lib/rubocop/cop/cop.rb +4 -18
  26. data/lib/rubocop/cop/corrector.rb +1 -4
  27. data/lib/rubocop/cop/correctors/alignment_corrector.rb +3 -6
  28. data/lib/rubocop/cop/correctors/each_to_for_corrector.rb +2 -4
  29. data/lib/rubocop/cop/correctors/for_to_each_corrector.rb +1 -2
  30. data/lib/rubocop/cop/correctors/line_break_corrector.rb +3 -6
  31. data/lib/rubocop/cop/correctors/multiline_literal_brace_corrector.rb +1 -3
  32. data/lib/rubocop/cop/correctors/ordered_gem_corrector.rb +1 -3
  33. data/lib/rubocop/cop/correctors/percent_literal_corrector.rb +2 -8
  34. data/lib/rubocop/cop/gemspec/duplicated_assignment.rb +1 -2
  35. data/lib/rubocop/cop/gemspec/ordered_dependencies.rb +1 -4
  36. data/lib/rubocop/cop/generator.rb +1 -4
  37. data/lib/rubocop/cop/generator/configuration_injector.rb +1 -2
  38. data/lib/rubocop/cop/generator/require_file_injector.rb +2 -5
  39. data/lib/rubocop/cop/internal_affairs/example_description.rb +6 -4
  40. data/lib/rubocop/cop/internal_affairs/method_name_equal.rb +2 -5
  41. data/lib/rubocop/cop/internal_affairs/node_destructuring.rb +1 -3
  42. data/lib/rubocop/cop/internal_affairs/node_type_predicate.rb +1 -3
  43. data/lib/rubocop/cop/internal_affairs/offense_location_keyword.rb +1 -2
  44. data/lib/rubocop/cop/internal_affairs/style_detected_api_use.rb +1 -2
  45. data/lib/rubocop/cop/internal_affairs/useless_message_assertion.rb +1 -3
  46. data/lib/rubocop/cop/layout/access_modifier_indentation.rb +1 -2
  47. data/lib/rubocop/cop/layout/argument_alignment.rb +2 -4
  48. data/lib/rubocop/cop/layout/assignment_indentation.rb +2 -4
  49. data/lib/rubocop/cop/layout/begin_end_alignment.rb +1 -4
  50. data/lib/rubocop/cop/layout/block_alignment.rb +7 -19
  51. data/lib/rubocop/cop/layout/case_indentation.rb +1 -3
  52. data/lib/rubocop/cop/layout/class_structure.rb +4 -10
  53. data/lib/rubocop/cop/layout/closing_parenthesis_indentation.rb +4 -15
  54. data/lib/rubocop/cop/layout/comment_indentation.rb +1 -5
  55. data/lib/rubocop/cop/layout/def_end_alignment.rb +2 -6
  56. data/lib/rubocop/cop/layout/dot_position.rb +1 -3
  57. data/lib/rubocop/cop/layout/else_alignment.rb +1 -3
  58. data/lib/rubocop/cop/layout/empty_comment.rb +5 -12
  59. data/lib/rubocop/cop/layout/empty_line_after_guard_clause.rb +2 -5
  60. data/lib/rubocop/cop/layout/empty_line_between_defs.rb +2 -6
  61. data/lib/rubocop/cop/layout/empty_lines.rb +1 -3
  62. data/lib/rubocop/cop/layout/empty_lines_around_access_modifier.rb +8 -18
  63. data/lib/rubocop/cop/layout/empty_lines_around_exception_handling_keywords.rb +2 -8
  64. data/lib/rubocop/cop/layout/end_alignment.rb +1 -2
  65. data/lib/rubocop/cop/layout/end_of_line.rb +1 -1
  66. data/lib/rubocop/cop/layout/extra_spacing.rb +3 -7
  67. data/lib/rubocop/cop/layout/first_array_element_indentation.rb +1 -2
  68. data/lib/rubocop/cop/layout/first_array_element_line_break.rb +1 -2
  69. data/lib/rubocop/cop/layout/first_hash_element_indentation.rb +2 -5
  70. data/lib/rubocop/cop/layout/first_hash_element_line_break.rb +1 -2
  71. data/lib/rubocop/cop/layout/first_method_argument_line_break.rb +1 -2
  72. data/lib/rubocop/cop/layout/first_method_parameter_line_break.rb +1 -2
  73. data/lib/rubocop/cop/layout/hash_alignment.rb +3 -6
  74. data/lib/rubocop/cop/layout/heredoc_argument_closing_parenthesis.rb +2 -9
  75. data/lib/rubocop/cop/layout/heredoc_indentation.rb +2 -6
  76. data/lib/rubocop/cop/layout/indentation_style.rb +1 -3
  77. data/lib/rubocop/cop/layout/indentation_width.rb +1 -2
  78. data/lib/rubocop/cop/layout/initial_indentation.rb +1 -4
  79. data/lib/rubocop/cop/layout/line_length.rb +4 -15
  80. data/lib/rubocop/cop/layout/multiline_array_line_breaks.rb +1 -2
  81. data/lib/rubocop/cop/layout/multiline_block_layout.rb +7 -15
  82. data/lib/rubocop/cop/layout/multiline_hash_key_line_breaks.rb +1 -2
  83. data/lib/rubocop/cop/layout/multiline_method_argument_line_breaks.rb +1 -2
  84. data/lib/rubocop/cop/layout/multiline_method_call_indentation.rb +4 -10
  85. data/lib/rubocop/cop/layout/redundant_line_break.rb +125 -0
  86. data/lib/rubocop/cop/layout/rescue_ensure_alignment.rb +3 -6
  87. data/lib/rubocop/cop/layout/space_after_colon.rb +1 -3
  88. data/lib/rubocop/cop/layout/space_after_method_name.rb +2 -4
  89. data/lib/rubocop/cop/layout/space_around_block_parameters.rb +6 -14
  90. data/lib/rubocop/cop/layout/space_around_equals_in_parameter_default.rb +1 -2
  91. data/lib/rubocop/cop/layout/space_around_keyword.rb +3 -6
  92. data/lib/rubocop/cop/layout/space_around_operators.rb +4 -9
  93. data/lib/rubocop/cop/layout/space_before_block_braces.rb +1 -2
  94. data/lib/rubocop/cop/layout/space_before_brackets.rb +1 -3
  95. data/lib/rubocop/cop/layout/space_before_comment.rb +1 -3
  96. data/lib/rubocop/cop/layout/space_before_first_arg.rb +5 -11
  97. data/lib/rubocop/cop/layout/space_in_lambda_literal.rb +2 -4
  98. data/lib/rubocop/cop/layout/space_inside_array_literal_brackets.rb +5 -10
  99. data/lib/rubocop/cop/layout/space_inside_array_percent_literal.rb +2 -7
  100. data/lib/rubocop/cop/layout/space_inside_block_braces.rb +5 -10
  101. data/lib/rubocop/cop/layout/space_inside_hash_literal_braces.rb +1 -2
  102. data/lib/rubocop/cop/layout/space_inside_reference_brackets.rb +1 -2
  103. data/lib/rubocop/cop/legacy/corrections_proxy.rb +2 -8
  104. data/lib/rubocop/cop/legacy/corrector.rb +1 -3
  105. data/lib/rubocop/cop/lint/ambiguous_assignment.rb +1 -6
  106. data/lib/rubocop/cop/lint/ambiguous_block_association.rb +14 -7
  107. data/lib/rubocop/cop/lint/boolean_symbol.rb +1 -2
  108. data/lib/rubocop/cop/lint/constant_resolution.rb +1 -2
  109. data/lib/rubocop/cop/lint/deprecated_class_methods.rb +2 -4
  110. data/lib/rubocop/cop/lint/deprecated_constants.rb +3 -3
  111. data/lib/rubocop/cop/lint/deprecated_open_ssl_constant.rb +2 -5
  112. data/lib/rubocop/cop/lint/duplicate_branch.rb +1 -2
  113. data/lib/rubocop/cop/lint/duplicate_hash_key.rb +1 -3
  114. data/lib/rubocop/cop/lint/duplicate_methods.rb +3 -7
  115. data/lib/rubocop/cop/lint/else_layout.rb +1 -3
  116. data/lib/rubocop/cop/lint/empty_ensure.rb +1 -3
  117. data/lib/rubocop/cop/lint/empty_file.rb +1 -3
  118. data/lib/rubocop/cop/lint/empty_interpolation.rb +1 -3
  119. data/lib/rubocop/cop/lint/ensure_return.rb +1 -3
  120. data/lib/rubocop/cop/lint/erb_new_arguments.rb +3 -7
  121. data/lib/rubocop/cop/lint/float_out_of_range.rb +1 -2
  122. data/lib/rubocop/cop/lint/format_parameter_mismatch.rb +3 -6
  123. data/lib/rubocop/cop/lint/heredoc_method_call_position.rb +1 -2
  124. data/lib/rubocop/cop/lint/implicit_string_concatenation.rb +1 -2
  125. data/lib/rubocop/cop/lint/ineffective_access_modifier.rb +3 -7
  126. data/lib/rubocop/cop/lint/inherit_exception.rb +1 -2
  127. data/lib/rubocop/cop/lint/interpolation_check.rb +3 -11
  128. data/lib/rubocop/cop/lint/literal_in_interpolation.rb +3 -6
  129. data/lib/rubocop/cop/lint/loop.rb +1 -2
  130. data/lib/rubocop/cop/lint/missing_cop_enable_directive.rb +3 -7
  131. data/lib/rubocop/cop/lint/missing_super.rb +1 -2
  132. data/lib/rubocop/cop/lint/mixed_regexp_capture_types.rb +1 -2
  133. data/lib/rubocop/cop/lint/nested_method_definition.rb +1 -2
  134. data/lib/rubocop/cop/lint/nested_percent_literal.rb +1 -3
  135. data/lib/rubocop/cop/lint/non_deterministic_require_order.rb +1 -3
  136. data/lib/rubocop/cop/lint/number_conversion.rb +1 -2
  137. data/lib/rubocop/cop/lint/ordered_magic_comments.rb +1 -2
  138. data/lib/rubocop/cop/lint/out_of_range_regexp_ref.rb +1 -3
  139. data/lib/rubocop/cop/lint/parentheses_as_grouped_expression.rb +1 -3
  140. data/lib/rubocop/cop/lint/percent_symbol_array.rb +1 -3
  141. data/lib/rubocop/cop/lint/raise_exception.rb +1 -2
  142. data/lib/rubocop/cop/lint/rand_one.rb +1 -2
  143. data/lib/rubocop/cop/lint/redundant_cop_disable_directive.rb +8 -20
  144. data/lib/rubocop/cop/lint/redundant_safe_navigation.rb +1 -3
  145. data/lib/rubocop/cop/lint/redundant_splat_expansion.rb +3 -7
  146. data/lib/rubocop/cop/lint/redundant_string_coercion.rb +1 -2
  147. data/lib/rubocop/cop/lint/redundant_with_index.rb +1 -4
  148. data/lib/rubocop/cop/lint/redundant_with_object.rb +1 -4
  149. data/lib/rubocop/cop/lint/regexp_as_condition.rb +1 -3
  150. data/lib/rubocop/cop/lint/require_parentheses.rb +2 -4
  151. data/lib/rubocop/cop/lint/rescue_exception.rb +1 -2
  152. data/lib/rubocop/cop/lint/rescue_type.rb +2 -7
  153. data/lib/rubocop/cop/lint/return_in_void_context.rb +1 -2
  154. data/lib/rubocop/cop/lint/safe_navigation_chain.rb +1 -2
  155. data/lib/rubocop/cop/lint/safe_navigation_consistency.rb +4 -10
  156. data/lib/rubocop/cop/lint/safe_navigation_with_empty.rb +1 -2
  157. data/lib/rubocop/cop/lint/send_with_mixin_argument.rb +2 -7
  158. data/lib/rubocop/cop/lint/shadowed_argument.rb +4 -11
  159. data/lib/rubocop/cop/lint/shadowed_exception.rb +7 -8
  160. data/lib/rubocop/cop/lint/struct_new_override.rb +1 -2
  161. data/lib/rubocop/cop/lint/symbol_conversion.rb +2 -4
  162. data/lib/rubocop/cop/lint/syntax.rb +1 -3
  163. data/lib/rubocop/cop/lint/to_json.rb +1 -2
  164. data/lib/rubocop/cop/lint/trailing_comma_in_attribute_declaration.rb +1 -3
  165. data/lib/rubocop/cop/lint/underscore_prefixed_variable_name.rb +1 -3
  166. data/lib/rubocop/cop/lint/unreachable_code.rb +2 -5
  167. data/lib/rubocop/cop/lint/unreachable_loop.rb +2 -5
  168. data/lib/rubocop/cop/lint/unused_block_argument.rb +4 -8
  169. data/lib/rubocop/cop/lint/unused_method_argument.rb +1 -2
  170. data/lib/rubocop/cop/lint/useless_access_modifier.rb +2 -4
  171. data/lib/rubocop/cop/lint/useless_assignment.rb +4 -9
  172. data/lib/rubocop/cop/lint/useless_setter_call.rb +1 -3
  173. data/lib/rubocop/cop/lint/void.rb +4 -11
  174. data/lib/rubocop/cop/message_annotator.rb +1 -3
  175. data/lib/rubocop/cop/metrics/block_nesting.rb +2 -7
  176. data/lib/rubocop/cop/metrics/class_length.rb +1 -3
  177. data/lib/rubocop/cop/metrics/cyclomatic_complexity.rb +1 -2
  178. data/lib/rubocop/cop/metrics/module_length.rb +2 -6
  179. data/lib/rubocop/cop/metrics/parameter_lists.rb +2 -5
  180. data/lib/rubocop/cop/metrics/perceived_complexity.rb +1 -2
  181. data/lib/rubocop/cop/metrics/utils/abc_size_calculator.rb +4 -7
  182. data/lib/rubocop/cop/metrics/utils/repeated_attribute_discount.rb +2 -7
  183. data/lib/rubocop/cop/migration/department_name.rb +3 -7
  184. data/lib/rubocop/cop/mixin/alignment.rb +2 -4
  185. data/lib/rubocop/cop/mixin/code_length.rb +1 -3
  186. data/lib/rubocop/cop/mixin/configurable_enforced_style.rb +2 -2
  187. data/lib/rubocop/cop/mixin/configurable_formatting.rb +3 -8
  188. data/lib/rubocop/cop/mixin/def_node.rb +2 -5
  189. data/lib/rubocop/cop/mixin/documentation_comment.rb +2 -5
  190. data/lib/rubocop/cop/mixin/empty_lines_around_body.rb +3 -7
  191. data/lib/rubocop/cop/mixin/empty_parameter.rb +1 -3
  192. data/lib/rubocop/cop/mixin/end_keyword_alignment.rb +1 -3
  193. data/lib/rubocop/cop/mixin/enforce_superclass.rb +2 -6
  194. data/lib/rubocop/cop/mixin/first_element_line_break.rb +1 -3
  195. data/lib/rubocop/cop/mixin/frozen_string_literal.rb +3 -9
  196. data/lib/rubocop/cop/mixin/hash_alignment_styles.rb +3 -6
  197. data/lib/rubocop/cop/mixin/hash_transform_method.rb +7 -22
  198. data/lib/rubocop/cop/mixin/interpolation.rb +1 -3
  199. data/lib/rubocop/cop/mixin/line_length_help.rb +2 -4
  200. data/lib/rubocop/cop/mixin/match_range.rb +2 -5
  201. data/lib/rubocop/cop/mixin/method_complexity.rb +1 -3
  202. data/lib/rubocop/cop/mixin/method_preference.rb +1 -2
  203. data/lib/rubocop/cop/mixin/multiline_element_indentation.rb +1 -2
  204. data/lib/rubocop/cop/mixin/multiline_element_line_breaks.rb +1 -3
  205. data/lib/rubocop/cop/mixin/multiline_expression_indentation.rb +7 -17
  206. data/lib/rubocop/cop/mixin/multiline_literal_brace_layout.rb +1 -2
  207. data/lib/rubocop/cop/mixin/negative_conditional.rb +1 -2
  208. data/lib/rubocop/cop/mixin/ordered_gem_node.rb +1 -4
  209. data/lib/rubocop/cop/mixin/percent_array.rb +1 -3
  210. data/lib/rubocop/cop/mixin/percent_literal.rb +0 -6
  211. data/lib/rubocop/cop/mixin/preceding_following_alignment.rb +5 -11
  212. data/lib/rubocop/cop/mixin/preferred_delimiters.rb +3 -6
  213. data/lib/rubocop/cop/mixin/range_help.rb +10 -13
  214. data/lib/rubocop/cop/mixin/rescue_node.rb +2 -6
  215. data/lib/rubocop/cop/mixin/safe_assignment.rb +1 -2
  216. data/lib/rubocop/cop/mixin/space_after_punctuation.rb +2 -4
  217. data/lib/rubocop/cop/mixin/space_before_punctuation.rb +1 -2
  218. data/lib/rubocop/cop/mixin/statement_modifier.rb +1 -3
  219. data/lib/rubocop/cop/mixin/trailing_body.rb +1 -2
  220. data/lib/rubocop/cop/mixin/trailing_comma.rb +1 -2
  221. data/lib/rubocop/cop/mixin/uncommunicative_name.rb +3 -7
  222. data/lib/rubocop/cop/mixin/unused_argument.rb +1 -3
  223. data/lib/rubocop/cop/naming/ascii_identifiers.rb +2 -4
  224. data/lib/rubocop/cop/naming/binary_operator_parameter_name.rb +1 -2
  225. data/lib/rubocop/cop/naming/file_name.rb +7 -16
  226. data/lib/rubocop/cop/naming/memoized_instance_variable_name.rb +2 -3
  227. data/lib/rubocop/cop/naming/method_name.rb +1 -2
  228. data/lib/rubocop/cop/naming/predicate_name.rb +1 -2
  229. data/lib/rubocop/cop/offense.rb +3 -8
  230. data/lib/rubocop/cop/registry.rb +3 -11
  231. data/lib/rubocop/cop/style/access_modifier_declarations.rb +1 -3
  232. data/lib/rubocop/cop/style/accessor_grouping.rb +1 -3
  233. data/lib/rubocop/cop/style/alias.rb +5 -12
  234. data/lib/rubocop/cop/style/arguments_forwarding.rb +1 -3
  235. data/lib/rubocop/cop/style/ascii_comments.rb +1 -2
  236. data/lib/rubocop/cop/style/attr.rb +1 -3
  237. data/lib/rubocop/cop/style/auto_resource_cleanup.rb +2 -5
  238. data/lib/rubocop/cop/style/bisected_attr_accessor/macro.rb +1 -3
  239. data/lib/rubocop/cop/style/case_like_if.rb +1 -2
  240. data/lib/rubocop/cop/style/character_literal.rb +2 -4
  241. data/lib/rubocop/cop/style/class_and_module_children.rb +3 -6
  242. data/lib/rubocop/cop/style/class_methods.rb +1 -3
  243. data/lib/rubocop/cop/style/collection_compact.rb +1 -3
  244. data/lib/rubocop/cop/style/colon_method_call.rb +1 -3
  245. data/lib/rubocop/cop/style/combinable_loops.rb +3 -2
  246. data/lib/rubocop/cop/style/command_literal.rb +3 -8
  247. data/lib/rubocop/cop/style/comment_annotation.rb +3 -6
  248. data/lib/rubocop/cop/style/commented_keyword.rb +2 -8
  249. data/lib/rubocop/cop/style/conditional_assignment.rb +10 -24
  250. data/lib/rubocop/cop/style/copyright.rb +3 -6
  251. data/lib/rubocop/cop/style/date_time.rb +2 -5
  252. data/lib/rubocop/cop/style/def_with_parentheses.rb +1 -2
  253. data/lib/rubocop/cop/style/each_for_simple_loop.rb +1 -2
  254. data/lib/rubocop/cop/style/empty_case_condition.rb +2 -7
  255. data/lib/rubocop/cop/style/empty_else.rb +3 -9
  256. data/lib/rubocop/cop/style/empty_literal.rb +4 -8
  257. data/lib/rubocop/cop/style/empty_method.rb +3 -7
  258. data/lib/rubocop/cop/style/end_block.rb +1 -2
  259. data/lib/rubocop/cop/style/endless_method.rb +1 -3
  260. data/lib/rubocop/cop/style/eval_with_location.rb +2 -4
  261. data/lib/rubocop/cop/style/expand_path_arguments.rb +1 -3
  262. data/lib/rubocop/cop/style/explicit_block_argument.rb +1 -4
  263. data/lib/rubocop/cop/style/format_string_token.rb +1 -4
  264. data/lib/rubocop/cop/style/frozen_string_literal_comment.rb +3 -8
  265. data/lib/rubocop/cop/style/guard_clause.rb +3 -7
  266. data/lib/rubocop/cop/style/hash_conversion.rb +28 -3
  267. data/lib/rubocop/cop/style/hash_each_methods.rb +1 -2
  268. data/lib/rubocop/cop/style/hash_like_case.rb +1 -2
  269. data/lib/rubocop/cop/style/hash_syntax.rb +4 -9
  270. data/lib/rubocop/cop/style/identical_conditional_branches.rb +1 -3
  271. data/lib/rubocop/cop/style/if_unless_modifier.rb +41 -13
  272. data/lib/rubocop/cop/style/infinite_loop.rb +2 -5
  273. data/lib/rubocop/cop/style/inverse_methods.rb +3 -7
  274. data/lib/rubocop/cop/style/ip_addresses.rb +1 -2
  275. data/lib/rubocop/cop/style/lambda.rb +2 -4
  276. data/lib/rubocop/cop/style/lambda_call.rb +1 -2
  277. data/lib/rubocop/cop/style/line_end_concatenation.rb +5 -12
  278. data/lib/rubocop/cop/style/method_call_with_args_parentheses.rb +1 -1
  279. data/lib/rubocop/cop/style/method_call_with_args_parentheses/omit_parentheses.rb +7 -13
  280. data/lib/rubocop/cop/style/method_call_without_args_parentheses.rb +1 -2
  281. data/lib/rubocop/cop/style/method_called_on_do_end_block.rb +2 -4
  282. data/lib/rubocop/cop/style/method_def_parentheses.rb +4 -8
  283. data/lib/rubocop/cop/style/min_max.rb +1 -2
  284. data/lib/rubocop/cop/style/missing_else.rb +2 -4
  285. data/lib/rubocop/cop/style/missing_respond_to_missing.rb +1 -2
  286. data/lib/rubocop/cop/style/mixin_grouping.rb +4 -10
  287. data/lib/rubocop/cop/style/mixin_usage.rb +1 -2
  288. data/lib/rubocop/cop/style/module_function.rb +3 -6
  289. data/lib/rubocop/cop/style/multiline_block_chain.rb +1 -2
  290. data/lib/rubocop/cop/style/multiline_method_signature.rb +1 -3
  291. data/lib/rubocop/cop/style/multiline_ternary_operator.rb +1 -2
  292. data/lib/rubocop/cop/style/multiple_comparison.rb +2 -4
  293. data/lib/rubocop/cop/style/mutable_constant.rb +4 -10
  294. data/lib/rubocop/cop/style/negated_if.rb +1 -2
  295. data/lib/rubocop/cop/style/negated_unless.rb +1 -2
  296. data/lib/rubocop/cop/style/nested_modifier.rb +3 -7
  297. data/lib/rubocop/cop/style/nested_ternary_operator.rb +2 -3
  298. data/lib/rubocop/cop/style/next.rb +4 -9
  299. data/lib/rubocop/cop/style/non_nil_check.rb +2 -5
  300. data/lib/rubocop/cop/style/numeric_literals.rb +3 -11
  301. data/lib/rubocop/cop/style/numeric_predicate.rb +2 -7
  302. data/lib/rubocop/cop/style/one_line_conditional.rb +1 -2
  303. data/lib/rubocop/cop/style/option_hash.rb +1 -3
  304. data/lib/rubocop/cop/style/optional_arguments.rb +2 -5
  305. data/lib/rubocop/cop/style/or_assignment.rb +2 -6
  306. data/lib/rubocop/cop/style/parallel_assignment.rb +6 -9
  307. data/lib/rubocop/cop/style/percent_literal_delimiters.rb +1 -3
  308. data/lib/rubocop/cop/style/percent_q_literals.rb +1 -2
  309. data/lib/rubocop/cop/style/perl_backrefs.rb +2 -9
  310. data/lib/rubocop/cop/style/preferred_hash_methods.rb +1 -4
  311. data/lib/rubocop/cop/style/proc.rb +1 -2
  312. data/lib/rubocop/cop/style/raise_args.rb +4 -8
  313. data/lib/rubocop/cop/style/random_with_offset.rb +3 -8
  314. data/lib/rubocop/cop/style/redundant_argument.rb +2 -11
  315. data/lib/rubocop/cop/style/redundant_assignment.rb +1 -3
  316. data/lib/rubocop/cop/style/redundant_begin.rb +4 -4
  317. data/lib/rubocop/cop/style/redundant_capital_w.rb +1 -2
  318. data/lib/rubocop/cop/style/redundant_condition.rb +2 -5
  319. data/lib/rubocop/cop/style/redundant_conditional.rb +3 -6
  320. data/lib/rubocop/cop/style/redundant_exception.rb +3 -6
  321. data/lib/rubocop/cop/style/redundant_file_extension_in_require.rb +1 -1
  322. data/lib/rubocop/cop/style/redundant_freeze.rb +1 -2
  323. data/lib/rubocop/cop/style/redundant_interpolation.rb +1 -2
  324. data/lib/rubocop/cop/style/redundant_parentheses.rb +8 -20
  325. data/lib/rubocop/cop/style/redundant_percent_q.rb +1 -2
  326. data/lib/rubocop/cop/style/redundant_regexp_escape.rb +1 -4
  327. data/lib/rubocop/cop/style/redundant_return.rb +3 -5
  328. data/lib/rubocop/cop/style/redundant_self.rb +2 -6
  329. data/lib/rubocop/cop/style/redundant_self_assignment.rb +2 -2
  330. data/lib/rubocop/cop/style/redundant_sort.rb +2 -5
  331. data/lib/rubocop/cop/style/regexp_literal.rb +4 -8
  332. data/lib/rubocop/cop/style/rescue_modifier.rb +4 -0
  333. data/lib/rubocop/cop/style/rescue_standard_error.rb +3 -7
  334. data/lib/rubocop/cop/style/return_nil.rb +1 -2
  335. data/lib/rubocop/cop/style/safe_navigation.rb +10 -21
  336. data/lib/rubocop/cop/style/send.rb +1 -2
  337. data/lib/rubocop/cop/style/signal_exception.rb +3 -7
  338. data/lib/rubocop/cop/style/single_argument_dig.rb +1 -2
  339. data/lib/rubocop/cop/style/single_line_block_params.rb +2 -5
  340. data/lib/rubocop/cop/style/single_line_methods.rb +15 -4
  341. data/lib/rubocop/cop/style/sole_nested_conditional.rb +1 -2
  342. data/lib/rubocop/cop/style/special_global_vars.rb +6 -18
  343. data/lib/rubocop/cop/style/stabby_lambda_parentheses.rb +1 -2
  344. data/lib/rubocop/cop/style/stderr_puts.rb +2 -6
  345. data/lib/rubocop/cop/style/string_chars.rb +2 -1
  346. data/lib/rubocop/cop/style/string_concatenation.rb +8 -10
  347. data/lib/rubocop/cop/style/string_literals.rb +2 -5
  348. data/lib/rubocop/cop/style/struct_inheritance.rb +9 -1
  349. data/lib/rubocop/cop/style/symbol_literal.rb +1 -3
  350. data/lib/rubocop/cop/style/symbol_proc.rb +4 -9
  351. data/lib/rubocop/cop/style/ternary_parentheses.rb +3 -6
  352. data/lib/rubocop/cop/style/trailing_body_on_method_definition.rb +1 -2
  353. data/lib/rubocop/cop/style/trailing_comma_in_block_args.rb +2 -6
  354. data/lib/rubocop/cop/style/trailing_method_end_statement.rb +2 -5
  355. data/lib/rubocop/cop/style/trailing_underscore_variable.rb +4 -10
  356. data/lib/rubocop/cop/style/trivial_accessors.rb +2 -4
  357. data/lib/rubocop/cop/style/unless_else.rb +1 -2
  358. data/lib/rubocop/cop/style/unless_logical_operators.rb +2 -2
  359. data/lib/rubocop/cop/style/variable_interpolation.rb +1 -1
  360. data/lib/rubocop/cop/style/when_then.rb +1 -3
  361. data/lib/rubocop/cop/style/while_until_modifier.rb +1 -2
  362. data/lib/rubocop/cop/style/word_array.rb +1 -2
  363. data/lib/rubocop/cop/style/yoda_condition.rb +3 -11
  364. data/lib/rubocop/cop/style/zero_length_predicate.rb +1 -2
  365. data/lib/rubocop/cop/team.rb +2 -5
  366. data/lib/rubocop/cop/util.rb +4 -10
  367. data/lib/rubocop/cop/utils/format_string.rb +1 -3
  368. data/lib/rubocop/cop/variable_force.rb +6 -15
  369. data/lib/rubocop/cop/variable_force/assignment.rb +1 -2
  370. data/lib/rubocop/cop/variable_force/branch.rb +1 -2
  371. data/lib/rubocop/cop/variable_force/reference.rb +1 -3
  372. data/lib/rubocop/cop/variable_force/scope.rb +4 -8
  373. data/lib/rubocop/cop/variable_force/variable.rb +2 -4
  374. data/lib/rubocop/cops_documentation_generator.rb +7 -21
  375. data/lib/rubocop/file_finder.rb +1 -3
  376. data/lib/rubocop/formatter/disabled_config_formatter.rb +3 -8
  377. data/lib/rubocop/formatter/git_hub_actions_formatter.rb +1 -5
  378. data/lib/rubocop/formatter/html_formatter.rb +4 -10
  379. data/lib/rubocop/formatter/json_formatter.rb +1 -5
  380. data/lib/rubocop/formatter/junit_formatter.rb +3 -9
  381. data/lib/rubocop/formatter/progress_formatter.rb +1 -3
  382. data/lib/rubocop/options.rb +27 -41
  383. data/lib/rubocop/path_util.rb +1 -3
  384. data/lib/rubocop/rake_task.rb +3 -0
  385. data/lib/rubocop/remote_config.rb +4 -7
  386. data/lib/rubocop/result_cache.rb +5 -12
  387. data/lib/rubocop/rspec/cop_helper.rb +1 -1
  388. data/lib/rubocop/rspec/expect_offense.rb +4 -9
  389. data/lib/rubocop/rspec/shared_contexts.rb +4 -15
  390. data/lib/rubocop/runner.rb +7 -14
  391. data/lib/rubocop/target_finder.rb +11 -16
  392. data/lib/rubocop/target_ruby.rb +4 -8
  393. data/lib/rubocop/version.rb +1 -1
  394. metadata +5 -5
  395. data/lib/rubocop/core_ext/hash.rb +0 -20
@@ -81,9 +81,7 @@ module RuboCop
81
81
  end
82
82
 
83
83
  def check_rescue_node(node)
84
- node.child_nodes.each do |child_node|
85
- check_branch(child_node)
86
- end
84
+ node.child_nodes.each { |child_node| check_branch(child_node) }
87
85
  end
88
86
 
89
87
  def check_ensure_node(node)
@@ -36,7 +36,6 @@ module RuboCop
36
36
  # do_something
37
37
  #
38
38
  # # bad
39
- # # When using Ruby 2.5 or later.
40
39
  # do_something do
41
40
  # begin
42
41
  # something
@@ -76,8 +75,6 @@ module RuboCop
76
75
  alias on_defs on_def
77
76
 
78
77
  def on_block(node)
79
- return if target_ruby_version < 2.5
80
-
81
78
  return if node.send_node.lambda_literal?
82
79
  return if node.braces?
83
80
  return unless node.body&.kwbegin_type?
@@ -112,7 +109,10 @@ module RuboCop
112
109
  def replace_begin_with_statement(corrector, offense_range, node)
113
110
  first_child = node.children.first
114
111
 
115
- corrector.replace(offense_range, first_child.source)
112
+ source = first_child.source
113
+ source = "(#{source})" if first_child.if_type?
114
+
115
+ corrector.replace(offense_range, source)
116
116
  corrector.remove(range_between(offense_range.end_pos, first_child.source_range.end_pos))
117
117
 
118
118
  restore_removed_comments(corrector, offense_range, node, first_child)
@@ -18,8 +18,7 @@ module RuboCop
18
18
  include PercentLiteral
19
19
  extend AutoCorrector
20
20
 
21
- MSG = 'Do not use `%W` unless interpolation is needed. ' \
22
- 'If not, use `%w`.'
21
+ MSG = 'Do not use `%W` unless interpolation is needed. If not, use `%w`.'
23
22
 
24
23
  def on_array(node)
25
24
  process(node, '%W')
@@ -78,9 +78,7 @@ module RuboCop
78
78
  return false if use_if_branch?(else_branch) || use_hash_key_assignment?(else_branch)
79
79
 
80
80
  condition == if_branch && !node.elsif? && (
81
- node.ternary? ||
82
- !else_branch.instance_of?(AST::Node) ||
83
- else_branch.single_line?
81
+ node.ternary? || !else_branch.instance_of?(AST::Node) || else_branch.single_line?
84
82
  )
85
83
  end
86
84
 
@@ -104,8 +102,7 @@ module RuboCop
104
102
 
105
103
  def make_ternary_form(node)
106
104
  _condition, if_branch, else_branch = *node
107
- ternary_form = [if_branch.source,
108
- else_source(else_branch)].join(' || ')
105
+ ternary_form = [if_branch.source, else_source(else_branch)].join(' || ')
109
106
 
110
107
  if node.parent&.send_type?
111
108
  "(#{ternary_form})"
@@ -31,8 +31,7 @@ module RuboCop
31
31
  operators = RuboCop::AST::Node::COMPARISON_OPERATORS.to_a
32
32
  COMPARISON_OPERATOR_MATCHER = "{:#{operators.join(' :')}}"
33
33
 
34
- MSG = 'This conditional expression can just be replaced ' \
35
- 'by `%<msg>s`.'
34
+ MSG = 'This conditional expression can just be replaced by `%<msg>s`.'
36
35
 
37
36
  def on_if(node)
38
37
  return unless offense?(node)
@@ -78,11 +77,9 @@ module RuboCop
78
77
 
79
78
  def invert_expression?(node)
80
79
  (
81
- (node.if? || node.elsif? || node.ternary?) &&
82
- redundant_condition_inverted?(node)
80
+ (node.if? || node.elsif? || node.ternary?) && redundant_condition_inverted?(node)
83
81
  ) || (
84
- node.unless? &&
85
- redundant_condition?(node)
82
+ node.unless? && redundant_condition?(node)
86
83
  )
87
84
  end
88
85
 
@@ -20,8 +20,7 @@ module RuboCop
20
20
  extend AutoCorrector
21
21
 
22
22
  MSG_1 = 'Redundant `RuntimeError` argument can be removed.'
23
- MSG_2 = 'Redundant `RuntimeError.new` call can be replaced with ' \
24
- 'just the message.'
23
+ MSG_2 = 'Redundant `RuntimeError.new` call can be replaced with just the message.'
25
24
 
26
25
  RESTRICT_ON_SEND = %i[raise fail].freeze
27
26
 
@@ -35,11 +34,9 @@ module RuboCop
35
34
  exploded?(node) do |command, message|
36
35
  add_offense(node, message: MSG_1) do |corrector|
37
36
  if node.parenthesized?
38
- corrector.replace(node,
39
- "#{command}(#{message.source})")
37
+ corrector.replace(node, "#{command}(#{message.source})")
40
38
  else
41
- corrector.replace(node,
42
- "#{command} #{message.source}")
39
+ corrector.replace(node, "#{command} #{message.source}")
43
40
  end
44
41
  end
45
42
  end
@@ -40,7 +40,7 @@ module RuboCop
40
40
  return unless name_node.value.end_with?('.rb')
41
41
 
42
42
  add_offense(name_node) do |corrector|
43
- correction = name_node.value.sub(/\.rb\z/, '')
43
+ correction = name_node.value.delete_suffix('.rb')
44
44
 
45
45
  corrector.replace(name_node, "'#{correction}'")
46
46
  end
@@ -17,8 +17,7 @@ module RuboCop
17
17
  extend AutoCorrector
18
18
  include FrozenStringLiteral
19
19
 
20
- MSG = 'Do not freeze immutable objects, as freezing them has no ' \
21
- 'effect.'
20
+ MSG = 'Do not freeze immutable objects, as freezing them has no effect.'
22
21
  RESTRICT_ON_SEND = %i[freeze].freeze
23
22
 
24
23
  def on_send(node)
@@ -72,8 +72,7 @@ module RuboCop
72
72
  end
73
73
 
74
74
  def embedded_in_percent_array?(node)
75
- node.parent&.array_type? &&
76
- percent_literal?(node.parent)
75
+ node.parent&.array_type? && percent_literal?(node.parent)
77
76
  end
78
77
 
79
78
  def autocorrect_variable_interpolation(corrector, embedded_node, node)
@@ -18,8 +18,7 @@ module RuboCop
18
18
  extend AutoCorrector
19
19
 
20
20
  # @!method square_brackets?(node)
21
- def_node_matcher :square_brackets?,
22
- '(send {(send _recv _msg) str array hash} :[] ...)'
21
+ def_node_matcher :square_brackets?, '(send {(send _recv _msg) str array hash} :[] ...)'
23
22
 
24
23
  # @!method range_end?(node)
25
24
  def_node_matcher :range_end?, '^^{irange erange}'
@@ -31,8 +30,7 @@ module RuboCop
31
30
  def_node_matcher :rescue?, '{^resbody ^^resbody}'
32
31
 
33
32
  # @!method arg_in_call_with_block?(node)
34
- def_node_matcher :arg_in_call_with_block?,
35
- '^^(block (send _ _ equal?(%0) ...) ...)'
33
+ def_node_matcher :arg_in_call_with_block?, '^^(block (send _ _ equal?(%0) ...) ...)'
36
34
 
37
35
  def on_begin(node)
38
36
  return if !parentheses?(node) || parens_allowed?(node) || ignore_syntax?(node)
@@ -135,8 +133,7 @@ module RuboCop
135
133
 
136
134
  node = node.children.first while suspect_unary?(node)
137
135
 
138
- return if node.send_type? &&
139
- !method_call_with_redundant_parentheses?(node)
136
+ return if node.send_type? && !method_call_with_redundant_parentheses?(node)
140
137
 
141
138
  offense(begin_node, 'an unary operation')
142
139
  end
@@ -161,16 +158,11 @@ module RuboCop
161
158
  # { a: (1
162
159
  # ), }
163
160
  # ```
164
- (hash_element?(node) || array_element?(node)) &&
165
- only_closing_paren_before_comma?(node)
161
+ hash_or_array_element?(node) && only_closing_paren_before_comma?(node)
166
162
  end
167
163
 
168
- def hash_element?(node)
169
- node.parent&.pair_type?
170
- end
171
-
172
- def array_element?(node)
173
- node.parent&.array_type?
164
+ def hash_or_array_element?(node)
165
+ node.each_ancestor(:array, :hash).any?
174
166
  end
175
167
 
176
168
  def only_closing_paren_before_comma?(node)
@@ -181,9 +173,7 @@ module RuboCop
181
173
  end
182
174
 
183
175
  def disallowed_literal?(begin_node, node)
184
- node.literal? &&
185
- !node.range_type? &&
186
- !raised_to_power_negative_numeric?(begin_node, node)
176
+ node.literal? && !node.range_type? && !raised_to_power_negative_numeric?(begin_node, node)
187
177
  end
188
178
 
189
179
  def raised_to_power_negative_numeric?(begin_node, node)
@@ -225,9 +215,7 @@ module RuboCop
225
215
  end
226
216
 
227
217
  def first_argument?(node)
228
- first_send_argument?(node) ||
229
- first_super_argument?(node) ||
230
- first_yield_argument?(node)
218
+ first_send_argument?(node) || first_super_argument?(node) || first_yield_argument?(node)
231
219
  end
232
220
 
233
221
  # @!method first_send_argument?(node)
@@ -22,8 +22,7 @@ module RuboCop
22
22
 
23
23
  MSG = 'Use `%<q_type>s` only for strings that contain both ' \
24
24
  'single quotes and double quotes%<extra>s.'
25
- DYNAMIC_MSG = ', or for dynamic strings that contain ' \
26
- 'double quotes'
25
+ DYNAMIC_MSG = ', or for dynamic strings that contain double quotes'
27
26
  SINGLE_QUOTE = "'"
28
27
  QUOTE = '"'
29
28
  EMPTY = ''
@@ -72,10 +72,7 @@ module RuboCop
72
72
  end
73
73
 
74
74
  def delimiter?(node, char)
75
- delimiters = [
76
- node.loc.begin.source[-1],
77
- node.loc.end.source[0]
78
- ]
75
+ delimiters = [node.loc.begin.source[-1], node.loc.end.source[0]]
79
76
 
80
77
  delimiters.include?(char)
81
78
  end
@@ -73,11 +73,10 @@ module RuboCop
73
73
  end
74
74
  if return_node.splat_argument?
75
75
  first_argument = return_node.first_argument
76
- corrector.replace(first_argument, first_argument.source.gsub(/\A\*/, ''))
76
+ corrector.replace(first_argument, first_argument.source.delete_prefix('*'))
77
77
  end
78
78
 
79
- keyword = range_with_surrounding_space(range: return_node.loc.keyword,
80
- side: :right)
79
+ keyword = range_with_surrounding_space(range: return_node.loc.keyword, side: :right)
81
80
  corrector.remove(keyword)
82
81
  end
83
82
 
@@ -113,8 +112,7 @@ module RuboCop
113
112
  # rubocop:enable Metrics/CyclomaticComplexity
114
113
 
115
114
  def check_return_node(node)
116
- return if cop_config['AllowMultipleReturnValues'] &&
117
- node.children.size > 1
115
+ return if cop_config['AllowMultipleReturnValues'] && node.children.size > 1
118
116
 
119
117
  add_offense(node.loc.keyword, message: message(node)) do |corrector|
120
118
  if node.arguments?
@@ -92,9 +92,7 @@ module RuboCop
92
92
 
93
93
  def on_masgn(node)
94
94
  lhs, rhs = *node
95
- lhs.children.each do |child|
96
- add_lhs_to_local_variables_scopes(rhs, child.to_a.first)
97
- end
95
+ lhs.children.each { |child| add_lhs_to_local_variables_scopes(rhs, child.to_a.first) }
98
96
  end
99
97
 
100
98
  def on_lvasgn(node)
@@ -160,9 +158,7 @@ module RuboCop
160
158
 
161
159
  def add_lhs_to_local_variables_scopes(rhs, lhs)
162
160
  if rhs&.send_type? && !rhs.arguments.empty?
163
- rhs.arguments.each do |argument|
164
- @local_variables_scopes[argument] << lhs
165
- end
161
+ rhs.arguments.each { |argument| @local_variables_scopes[argument] << lhs }
166
162
  else
167
163
  @local_variables_scopes[rhs] << lhs
168
164
  end
@@ -66,8 +66,8 @@ module RuboCop
66
66
  alias on_gvasgn on_lvasgn
67
67
 
68
68
  def on_send(node)
69
- # TODO: replace with #end_with? after supporting only ruby >= 2.7
70
- return unless node.method_name.match?(/=$/)
69
+ # TODO: Remove `Symbol#to_s` after supporting only Ruby >= 2.7.
70
+ return unless node.method_name.to_s.end_with?('=')
71
71
  return unless redundant_assignment?(node)
72
72
 
73
73
  message = format(MSG, method_name: node.first_argument.method_name)
@@ -53,8 +53,7 @@ module RuboCop
53
53
  include RangeHelp
54
54
  extend AutoCorrector
55
55
 
56
- MSG = 'Use `%<suggestion>s` instead of '\
57
- '`%<sorter>s...%<accessor_source>s`.'
56
+ MSG = 'Use `%<suggestion>s` instead of `%<sorter>s...%<accessor_source>s`.'
58
57
 
59
58
  RESTRICT_ON_SEND = %i[sort sort_by].freeze
60
59
 
@@ -112,9 +111,7 @@ module RuboCop
112
111
  ).source
113
112
 
114
113
  format(MSG,
115
- suggestion: suggestion(sorter,
116
- accessor,
117
- arg_value(node)),
114
+ suggestion: suggestion(sorter, accessor, arg_value(node)),
118
115
  sorter: sorter,
119
116
  accessor_source: accessor_source)
120
117
  end
@@ -107,13 +107,11 @@ module RuboCop
107
107
  private
108
108
 
109
109
  def allowed_slash_literal?(node)
110
- style == :slashes && !contains_disallowed_slash?(node) ||
111
- allowed_mixed_slash?(node)
110
+ style == :slashes && !contains_disallowed_slash?(node) || allowed_mixed_slash?(node)
112
111
  end
113
112
 
114
113
  def allowed_mixed_slash?(node)
115
- style == :mixed && node.single_line? &&
116
- !contains_disallowed_slash?(node)
114
+ style == :mixed && node.single_line? && !contains_disallowed_slash?(node)
117
115
  end
118
116
 
119
117
  def allowed_percent_r_literal?(node)
@@ -123,8 +121,7 @@ module RuboCop
123
121
  end
124
122
 
125
123
  def allowed_mixed_percent_r?(node)
126
- style == :mixed && node.multiline? ||
127
- contains_disallowed_slash?(node)
124
+ style == :mixed && node.multiline? || contains_disallowed_slash?(node)
128
125
  end
129
126
 
130
127
  def contains_disallowed_slash?(node)
@@ -149,8 +146,7 @@ module RuboCop
149
146
  end
150
147
 
151
148
  def preferred_delimiters
152
- config.for_cop('Style/PercentLiteralDelimiters') \
153
- ['PreferredDelimiters']['%r'].chars
149
+ config.for_cop('Style/PercentLiteralDelimiters') ['PreferredDelimiters']['%r'].chars
154
150
  end
155
151
 
156
152
  def correct_delimiters(node, corrector)
@@ -47,6 +47,10 @@ module RuboCop
47
47
 
48
48
  MSG = 'Avoid using `rescue` in its modifier form.'
49
49
 
50
+ def self.autocorrect_incompatible_with
51
+ [Style::MethodCallWithArgsParentheses]
52
+ end
53
+
50
54
  def on_resbody(node)
51
55
  return unless rescue_modifier?(node)
52
56
 
@@ -76,10 +76,8 @@ module RuboCop
76
76
  include RangeHelp
77
77
  extend AutoCorrector
78
78
 
79
- MSG_IMPLICIT = 'Omit the error class when rescuing ' \
80
- '`StandardError` by itself.'
81
- MSG_EXPLICIT = 'Avoid rescuing without specifying ' \
82
- 'an error class.'
79
+ MSG_IMPLICIT = 'Omit the error class when rescuing `StandardError` by itself.'
80
+ MSG_EXPLICIT = 'Avoid rescuing without specifying an error class.'
83
81
 
84
82
  # @!method rescue_without_error_class?(node)
85
83
  def_node_matcher :rescue_without_error_class?, <<~PATTERN
@@ -100,9 +98,7 @@ module RuboCop
100
98
  offense_for_implicit_enforced_style(node, error)
101
99
  end
102
100
  when :explicit
103
- rescue_without_error_class?(node) do
104
- offense_for_exlicit_enforced_style(node)
105
- end
101
+ rescue_without_error_class?(node) { offense_for_exlicit_enforced_style(node) }
106
102
  end
107
103
  end
108
104
 
@@ -74,8 +74,7 @@ module RuboCop
74
74
  end
75
75
 
76
76
  def correct_style?(node)
77
- style == :return && !return_nil_node?(node) ||
78
- style == :return_nil && !return_node?(node)
77
+ style == :return && !return_nil_node?(node) || style == :return_nil && !return_node?(node)
79
78
  end
80
79
 
81
80
  def scoped_node?(node)
@@ -69,8 +69,7 @@ module RuboCop
69
69
 
70
70
  MSG = 'Use safe navigation (`&.`) instead of checking if an object ' \
71
71
  'exists before calling the method.'
72
- LOGIC_JUMP_KEYWORDS = %i[break fail next raise
73
- return throw yield].freeze
72
+ LOGIC_JUMP_KEYWORDS = %i[break fail next raise return throw yield].freeze
74
73
 
75
74
  # if format: (if checked_variable body nil)
76
75
  # unless format: (if checked_variable nil body)
@@ -112,9 +111,7 @@ module RuboCop
112
111
  return if unsafe_method_used?(method_chain, method)
113
112
  return if method_chain.method?(:empty?)
114
113
 
115
- add_offense(node) do |corrector|
116
- autocorrect(corrector, node)
117
- end
114
+ add_offense(node) { |corrector| autocorrect(corrector, node) }
118
115
  end
119
116
 
120
117
  def use_var_only_in_unless_modifier?(node, variable)
@@ -139,8 +136,7 @@ module RuboCop
139
136
  comments = comments(node)
140
137
  return if comments.empty?
141
138
 
142
- corrector.insert_before(method_call,
143
- "#{comments.map(&:text).join("\n")}\n")
139
+ corrector.insert_before(method_call, "#{comments.map(&:text).join("\n")}\n")
144
140
  end
145
141
 
146
142
  def comments(node)
@@ -181,11 +177,9 @@ module RuboCop
181
177
  end
182
178
 
183
179
  def extract_parts_from_if(node)
184
- variable, receiver =
185
- modifier_if_safe_navigation_candidate(node)
180
+ variable, receiver = modifier_if_safe_navigation_candidate(node)
186
181
 
187
- checked_variable, matching_receiver, method =
188
- extract_common_parts(receiver, variable)
182
+ checked_variable, matching_receiver, method = extract_common_parts(receiver, variable)
189
183
 
190
184
  matching_receiver = nil if receiver && LOGIC_JUMP_KEYWORDS.include?(receiver.type)
191
185
 
@@ -195,18 +189,15 @@ module RuboCop
195
189
  def extract_parts_from_and(node)
196
190
  checked_variable, rhs = *node
197
191
  if cop_config['ConvertCodeThatCanStartToReturnNil']
198
- checked_variable =
199
- not_nil_check?(checked_variable) || checked_variable
192
+ checked_variable = not_nil_check?(checked_variable) || checked_variable
200
193
  end
201
194
 
202
- checked_variable, matching_receiver, method =
203
- extract_common_parts(rhs, checked_variable)
195
+ checked_variable, matching_receiver, method = extract_common_parts(rhs, checked_variable)
204
196
  [checked_variable, matching_receiver, rhs, method]
205
197
  end
206
198
 
207
199
  def extract_common_parts(method_chain, checked_variable)
208
- matching_receiver =
209
- find_matching_receiver_invocation(method_chain, checked_variable)
200
+ matching_receiver = find_matching_receiver_invocation(method_chain, checked_variable)
210
201
 
211
202
  method = matching_receiver.parent if matching_receiver
212
203
 
@@ -264,13 +255,11 @@ module RuboCop
264
255
  end
265
256
 
266
257
  def begin_range(node, method_call)
267
- range_between(node.loc.expression.begin_pos,
268
- method_call.loc.expression.begin_pos)
258
+ range_between(node.loc.expression.begin_pos, method_call.loc.expression.begin_pos)
269
259
  end
270
260
 
271
261
  def end_range(node, method_call)
272
- range_between(method_call.loc.expression.end_pos,
273
- node.loc.expression.end_pos)
262
+ range_between(method_call.loc.expression.end_pos, node.loc.expression.end_pos)
274
263
  end
275
264
 
276
265
  def add_safe_nav_to_all_methods_in_chain(corrector,