rubocop 1.12.0 → 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 (401) 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 +22 -8
  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 +16 -10
  85. data/lib/rubocop/cop/layout/multiline_operation_indentation.rb +4 -0
  86. data/lib/rubocop/cop/layout/redundant_line_break.rb +125 -0
  87. data/lib/rubocop/cop/layout/rescue_ensure_alignment.rb +3 -6
  88. data/lib/rubocop/cop/layout/space_after_colon.rb +1 -3
  89. data/lib/rubocop/cop/layout/space_after_method_name.rb +2 -4
  90. data/lib/rubocop/cop/layout/space_around_block_parameters.rb +6 -14
  91. data/lib/rubocop/cop/layout/space_around_equals_in_parameter_default.rb +1 -2
  92. data/lib/rubocop/cop/layout/space_around_keyword.rb +3 -6
  93. data/lib/rubocop/cop/layout/space_around_operators.rb +4 -9
  94. data/lib/rubocop/cop/layout/space_before_block_braces.rb +1 -2
  95. data/lib/rubocop/cop/layout/space_before_brackets.rb +1 -3
  96. data/lib/rubocop/cop/layout/space_before_comment.rb +1 -3
  97. data/lib/rubocop/cop/layout/space_before_first_arg.rb +5 -11
  98. data/lib/rubocop/cop/layout/space_in_lambda_literal.rb +2 -4
  99. data/lib/rubocop/cop/layout/space_inside_array_literal_brackets.rb +5 -10
  100. data/lib/rubocop/cop/layout/space_inside_array_percent_literal.rb +2 -7
  101. data/lib/rubocop/cop/layout/space_inside_block_braces.rb +5 -10
  102. data/lib/rubocop/cop/layout/space_inside_hash_literal_braces.rb +1 -2
  103. data/lib/rubocop/cop/layout/space_inside_reference_brackets.rb +1 -2
  104. data/lib/rubocop/cop/legacy/corrections_proxy.rb +2 -8
  105. data/lib/rubocop/cop/legacy/corrector.rb +1 -3
  106. data/lib/rubocop/cop/lint/ambiguous_assignment.rb +1 -6
  107. data/lib/rubocop/cop/lint/ambiguous_block_association.rb +14 -7
  108. data/lib/rubocop/cop/lint/boolean_symbol.rb +1 -2
  109. data/lib/rubocop/cop/lint/constant_resolution.rb +1 -2
  110. data/lib/rubocop/cop/lint/deprecated_class_methods.rb +2 -4
  111. data/lib/rubocop/cop/lint/deprecated_constants.rb +3 -3
  112. data/lib/rubocop/cop/lint/deprecated_open_ssl_constant.rb +2 -5
  113. data/lib/rubocop/cop/lint/duplicate_branch.rb +1 -2
  114. data/lib/rubocop/cop/lint/duplicate_hash_key.rb +1 -3
  115. data/lib/rubocop/cop/lint/duplicate_methods.rb +3 -7
  116. data/lib/rubocop/cop/lint/else_layout.rb +1 -3
  117. data/lib/rubocop/cop/lint/empty_ensure.rb +1 -3
  118. data/lib/rubocop/cop/lint/empty_file.rb +1 -3
  119. data/lib/rubocop/cop/lint/empty_interpolation.rb +1 -3
  120. data/lib/rubocop/cop/lint/ensure_return.rb +1 -3
  121. data/lib/rubocop/cop/lint/erb_new_arguments.rb +3 -7
  122. data/lib/rubocop/cop/lint/float_out_of_range.rb +1 -2
  123. data/lib/rubocop/cop/lint/format_parameter_mismatch.rb +3 -6
  124. data/lib/rubocop/cop/lint/heredoc_method_call_position.rb +1 -2
  125. data/lib/rubocop/cop/lint/implicit_string_concatenation.rb +1 -2
  126. data/lib/rubocop/cop/lint/ineffective_access_modifier.rb +3 -7
  127. data/lib/rubocop/cop/lint/inherit_exception.rb +1 -2
  128. data/lib/rubocop/cop/lint/interpolation_check.rb +3 -11
  129. data/lib/rubocop/cop/lint/literal_in_interpolation.rb +3 -6
  130. data/lib/rubocop/cop/lint/loop.rb +1 -2
  131. data/lib/rubocop/cop/lint/missing_cop_enable_directive.rb +3 -7
  132. data/lib/rubocop/cop/lint/missing_super.rb +1 -2
  133. data/lib/rubocop/cop/lint/mixed_regexp_capture_types.rb +1 -2
  134. data/lib/rubocop/cop/lint/nested_method_definition.rb +1 -2
  135. data/lib/rubocop/cop/lint/nested_percent_literal.rb +1 -3
  136. data/lib/rubocop/cop/lint/non_deterministic_require_order.rb +1 -3
  137. data/lib/rubocop/cop/lint/number_conversion.rb +3 -4
  138. data/lib/rubocop/cop/lint/ordered_magic_comments.rb +1 -2
  139. data/lib/rubocop/cop/lint/out_of_range_regexp_ref.rb +1 -3
  140. data/lib/rubocop/cop/lint/parentheses_as_grouped_expression.rb +1 -3
  141. data/lib/rubocop/cop/lint/percent_symbol_array.rb +1 -3
  142. data/lib/rubocop/cop/lint/raise_exception.rb +1 -2
  143. data/lib/rubocop/cop/lint/rand_one.rb +1 -2
  144. data/lib/rubocop/cop/lint/redundant_cop_disable_directive.rb +8 -20
  145. data/lib/rubocop/cop/lint/redundant_safe_navigation.rb +1 -3
  146. data/lib/rubocop/cop/lint/redundant_splat_expansion.rb +3 -7
  147. data/lib/rubocop/cop/lint/redundant_string_coercion.rb +1 -2
  148. data/lib/rubocop/cop/lint/redundant_with_index.rb +1 -4
  149. data/lib/rubocop/cop/lint/redundant_with_object.rb +1 -4
  150. data/lib/rubocop/cop/lint/regexp_as_condition.rb +1 -3
  151. data/lib/rubocop/cop/lint/require_parentheses.rb +2 -4
  152. data/lib/rubocop/cop/lint/rescue_exception.rb +1 -2
  153. data/lib/rubocop/cop/lint/rescue_type.rb +2 -7
  154. data/lib/rubocop/cop/lint/return_in_void_context.rb +1 -2
  155. data/lib/rubocop/cop/lint/safe_navigation_chain.rb +1 -2
  156. data/lib/rubocop/cop/lint/safe_navigation_consistency.rb +4 -10
  157. data/lib/rubocop/cop/lint/safe_navigation_with_empty.rb +1 -2
  158. data/lib/rubocop/cop/lint/send_with_mixin_argument.rb +2 -7
  159. data/lib/rubocop/cop/lint/shadowed_argument.rb +4 -11
  160. data/lib/rubocop/cop/lint/shadowed_exception.rb +7 -8
  161. data/lib/rubocop/cop/lint/struct_new_override.rb +1 -2
  162. data/lib/rubocop/cop/lint/symbol_conversion.rb +2 -4
  163. data/lib/rubocop/cop/lint/syntax.rb +1 -3
  164. data/lib/rubocop/cop/lint/to_json.rb +1 -2
  165. data/lib/rubocop/cop/lint/trailing_comma_in_attribute_declaration.rb +1 -3
  166. data/lib/rubocop/cop/lint/underscore_prefixed_variable_name.rb +1 -3
  167. data/lib/rubocop/cop/lint/unreachable_code.rb +2 -5
  168. data/lib/rubocop/cop/lint/unreachable_loop.rb +2 -5
  169. data/lib/rubocop/cop/lint/unused_block_argument.rb +4 -8
  170. data/lib/rubocop/cop/lint/unused_method_argument.rb +1 -2
  171. data/lib/rubocop/cop/lint/useless_access_modifier.rb +2 -4
  172. data/lib/rubocop/cop/lint/useless_assignment.rb +4 -9
  173. data/lib/rubocop/cop/lint/useless_setter_call.rb +1 -3
  174. data/lib/rubocop/cop/lint/void.rb +4 -11
  175. data/lib/rubocop/cop/message_annotator.rb +1 -3
  176. data/lib/rubocop/cop/metrics/block_nesting.rb +2 -7
  177. data/lib/rubocop/cop/metrics/class_length.rb +1 -3
  178. data/lib/rubocop/cop/metrics/cyclomatic_complexity.rb +1 -2
  179. data/lib/rubocop/cop/metrics/module_length.rb +2 -6
  180. data/lib/rubocop/cop/metrics/parameter_lists.rb +2 -5
  181. data/lib/rubocop/cop/metrics/perceived_complexity.rb +1 -2
  182. data/lib/rubocop/cop/metrics/utils/abc_size_calculator.rb +4 -7
  183. data/lib/rubocop/cop/metrics/utils/repeated_attribute_discount.rb +2 -7
  184. data/lib/rubocop/cop/migration/department_name.rb +3 -7
  185. data/lib/rubocop/cop/mixin/alignment.rb +2 -4
  186. data/lib/rubocop/cop/mixin/check_line_breakable.rb +1 -1
  187. data/lib/rubocop/cop/mixin/code_length.rb +1 -3
  188. data/lib/rubocop/cop/mixin/configurable_enforced_style.rb +2 -2
  189. data/lib/rubocop/cop/mixin/configurable_formatting.rb +3 -8
  190. data/lib/rubocop/cop/mixin/def_node.rb +2 -5
  191. data/lib/rubocop/cop/mixin/documentation_comment.rb +2 -5
  192. data/lib/rubocop/cop/mixin/empty_lines_around_body.rb +3 -7
  193. data/lib/rubocop/cop/mixin/empty_parameter.rb +1 -3
  194. data/lib/rubocop/cop/mixin/end_keyword_alignment.rb +1 -3
  195. data/lib/rubocop/cop/mixin/enforce_superclass.rb +2 -6
  196. data/lib/rubocop/cop/mixin/first_element_line_break.rb +1 -3
  197. data/lib/rubocop/cop/mixin/frozen_string_literal.rb +3 -9
  198. data/lib/rubocop/cop/mixin/hash_alignment_styles.rb +3 -6
  199. data/lib/rubocop/cop/mixin/hash_transform_method.rb +7 -22
  200. data/lib/rubocop/cop/mixin/interpolation.rb +1 -3
  201. data/lib/rubocop/cop/mixin/line_length_help.rb +2 -4
  202. data/lib/rubocop/cop/mixin/match_range.rb +2 -5
  203. data/lib/rubocop/cop/mixin/method_complexity.rb +1 -3
  204. data/lib/rubocop/cop/mixin/method_preference.rb +1 -2
  205. data/lib/rubocop/cop/mixin/multiline_element_indentation.rb +1 -2
  206. data/lib/rubocop/cop/mixin/multiline_element_line_breaks.rb +1 -3
  207. data/lib/rubocop/cop/mixin/multiline_expression_indentation.rb +7 -37
  208. data/lib/rubocop/cop/mixin/multiline_literal_brace_layout.rb +1 -2
  209. data/lib/rubocop/cop/mixin/negative_conditional.rb +1 -2
  210. data/lib/rubocop/cop/mixin/ordered_gem_node.rb +1 -4
  211. data/lib/rubocop/cop/mixin/percent_array.rb +1 -3
  212. data/lib/rubocop/cop/mixin/percent_literal.rb +0 -6
  213. data/lib/rubocop/cop/mixin/preceding_following_alignment.rb +5 -11
  214. data/lib/rubocop/cop/mixin/preferred_delimiters.rb +3 -6
  215. data/lib/rubocop/cop/mixin/range_help.rb +10 -13
  216. data/lib/rubocop/cop/mixin/rescue_node.rb +2 -6
  217. data/lib/rubocop/cop/mixin/safe_assignment.rb +1 -2
  218. data/lib/rubocop/cop/mixin/space_after_punctuation.rb +2 -4
  219. data/lib/rubocop/cop/mixin/space_before_punctuation.rb +1 -2
  220. data/lib/rubocop/cop/mixin/statement_modifier.rb +1 -3
  221. data/lib/rubocop/cop/mixin/trailing_body.rb +1 -2
  222. data/lib/rubocop/cop/mixin/trailing_comma.rb +1 -2
  223. data/lib/rubocop/cop/mixin/uncommunicative_name.rb +3 -7
  224. data/lib/rubocop/cop/mixin/unused_argument.rb +1 -3
  225. data/lib/rubocop/cop/naming/ascii_identifiers.rb +2 -4
  226. data/lib/rubocop/cop/naming/binary_operator_parameter_name.rb +1 -2
  227. data/lib/rubocop/cop/naming/file_name.rb +7 -16
  228. data/lib/rubocop/cop/naming/memoized_instance_variable_name.rb +2 -3
  229. data/lib/rubocop/cop/naming/method_name.rb +1 -2
  230. data/lib/rubocop/cop/naming/predicate_name.rb +1 -2
  231. data/lib/rubocop/cop/offense.rb +3 -8
  232. data/lib/rubocop/cop/registry.rb +3 -11
  233. data/lib/rubocop/cop/style/access_modifier_declarations.rb +2 -4
  234. data/lib/rubocop/cop/style/accessor_grouping.rb +1 -3
  235. data/lib/rubocop/cop/style/alias.rb +5 -12
  236. data/lib/rubocop/cop/style/and_or.rb +3 -1
  237. data/lib/rubocop/cop/style/arguments_forwarding.rb +1 -3
  238. data/lib/rubocop/cop/style/ascii_comments.rb +1 -2
  239. data/lib/rubocop/cop/style/attr.rb +1 -3
  240. data/lib/rubocop/cop/style/auto_resource_cleanup.rb +2 -5
  241. data/lib/rubocop/cop/style/bisected_attr_accessor/macro.rb +1 -3
  242. data/lib/rubocop/cop/style/case_like_if.rb +1 -2
  243. data/lib/rubocop/cop/style/character_literal.rb +2 -4
  244. data/lib/rubocop/cop/style/class_and_module_children.rb +3 -6
  245. data/lib/rubocop/cop/style/class_methods.rb +1 -3
  246. data/lib/rubocop/cop/style/collection_compact.rb +1 -3
  247. data/lib/rubocop/cop/style/colon_method_call.rb +1 -3
  248. data/lib/rubocop/cop/style/combinable_loops.rb +3 -2
  249. data/lib/rubocop/cop/style/command_literal.rb +3 -8
  250. data/lib/rubocop/cop/style/comment_annotation.rb +3 -6
  251. data/lib/rubocop/cop/style/commented_keyword.rb +7 -13
  252. data/lib/rubocop/cop/style/conditional_assignment.rb +10 -24
  253. data/lib/rubocop/cop/style/copyright.rb +3 -6
  254. data/lib/rubocop/cop/style/date_time.rb +2 -5
  255. data/lib/rubocop/cop/style/def_with_parentheses.rb +1 -2
  256. data/lib/rubocop/cop/style/each_for_simple_loop.rb +1 -2
  257. data/lib/rubocop/cop/style/empty_case_condition.rb +2 -7
  258. data/lib/rubocop/cop/style/empty_else.rb +3 -9
  259. data/lib/rubocop/cop/style/empty_literal.rb +4 -8
  260. data/lib/rubocop/cop/style/empty_method.rb +3 -7
  261. data/lib/rubocop/cop/style/end_block.rb +1 -2
  262. data/lib/rubocop/cop/style/endless_method.rb +1 -3
  263. data/lib/rubocop/cop/style/eval_with_location.rb +2 -4
  264. data/lib/rubocop/cop/style/expand_path_arguments.rb +1 -3
  265. data/lib/rubocop/cop/style/explicit_block_argument.rb +1 -4
  266. data/lib/rubocop/cop/style/format_string_token.rb +1 -4
  267. data/lib/rubocop/cop/style/frozen_string_literal_comment.rb +3 -11
  268. data/lib/rubocop/cop/style/guard_clause.rb +3 -7
  269. data/lib/rubocop/cop/style/hash_conversion.rb +31 -3
  270. data/lib/rubocop/cop/style/hash_each_methods.rb +1 -2
  271. data/lib/rubocop/cop/style/hash_like_case.rb +1 -2
  272. data/lib/rubocop/cop/style/hash_syntax.rb +4 -9
  273. data/lib/rubocop/cop/style/identical_conditional_branches.rb +1 -3
  274. data/lib/rubocop/cop/style/if_unless_modifier.rb +41 -13
  275. data/lib/rubocop/cop/style/infinite_loop.rb +2 -5
  276. data/lib/rubocop/cop/style/inverse_methods.rb +3 -7
  277. data/lib/rubocop/cop/style/ip_addresses.rb +1 -2
  278. data/lib/rubocop/cop/style/lambda.rb +2 -4
  279. data/lib/rubocop/cop/style/lambda_call.rb +1 -2
  280. data/lib/rubocop/cop/style/line_end_concatenation.rb +5 -12
  281. data/lib/rubocop/cop/style/method_call_with_args_parentheses.rb +7 -3
  282. data/lib/rubocop/cop/style/method_call_with_args_parentheses/omit_parentheses.rb +10 -18
  283. data/lib/rubocop/cop/style/method_call_without_args_parentheses.rb +1 -2
  284. data/lib/rubocop/cop/style/method_called_on_do_end_block.rb +2 -4
  285. data/lib/rubocop/cop/style/method_def_parentheses.rb +4 -8
  286. data/lib/rubocop/cop/style/min_max.rb +1 -2
  287. data/lib/rubocop/cop/style/missing_else.rb +2 -4
  288. data/lib/rubocop/cop/style/missing_respond_to_missing.rb +1 -2
  289. data/lib/rubocop/cop/style/mixin_grouping.rb +4 -10
  290. data/lib/rubocop/cop/style/mixin_usage.rb +1 -2
  291. data/lib/rubocop/cop/style/module_function.rb +3 -6
  292. data/lib/rubocop/cop/style/multiline_block_chain.rb +1 -2
  293. data/lib/rubocop/cop/style/multiline_method_signature.rb +11 -6
  294. data/lib/rubocop/cop/style/multiline_ternary_operator.rb +1 -2
  295. data/lib/rubocop/cop/style/multiple_comparison.rb +2 -4
  296. data/lib/rubocop/cop/style/mutable_constant.rb +4 -10
  297. data/lib/rubocop/cop/style/negated_if.rb +1 -2
  298. data/lib/rubocop/cop/style/negated_unless.rb +1 -2
  299. data/lib/rubocop/cop/style/nested_modifier.rb +3 -7
  300. data/lib/rubocop/cop/style/nested_ternary_operator.rb +2 -3
  301. data/lib/rubocop/cop/style/next.rb +4 -9
  302. data/lib/rubocop/cop/style/non_nil_check.rb +2 -5
  303. data/lib/rubocop/cop/style/numeric_literals.rb +3 -11
  304. data/lib/rubocop/cop/style/numeric_predicate.rb +2 -7
  305. data/lib/rubocop/cop/style/one_line_conditional.rb +1 -2
  306. data/lib/rubocop/cop/style/option_hash.rb +1 -3
  307. data/lib/rubocop/cop/style/optional_arguments.rb +2 -5
  308. data/lib/rubocop/cop/style/or_assignment.rb +2 -6
  309. data/lib/rubocop/cop/style/parallel_assignment.rb +6 -9
  310. data/lib/rubocop/cop/style/percent_literal_delimiters.rb +1 -3
  311. data/lib/rubocop/cop/style/percent_q_literals.rb +1 -2
  312. data/lib/rubocop/cop/style/perl_backrefs.rb +2 -9
  313. data/lib/rubocop/cop/style/preferred_hash_methods.rb +1 -4
  314. data/lib/rubocop/cop/style/proc.rb +1 -2
  315. data/lib/rubocop/cop/style/raise_args.rb +4 -8
  316. data/lib/rubocop/cop/style/random_with_offset.rb +3 -8
  317. data/lib/rubocop/cop/style/redundant_argument.rb +2 -11
  318. data/lib/rubocop/cop/style/redundant_assignment.rb +1 -3
  319. data/lib/rubocop/cop/style/redundant_begin.rb +15 -4
  320. data/lib/rubocop/cop/style/redundant_capital_w.rb +1 -2
  321. data/lib/rubocop/cop/style/redundant_condition.rb +2 -5
  322. data/lib/rubocop/cop/style/redundant_conditional.rb +3 -6
  323. data/lib/rubocop/cop/style/redundant_exception.rb +3 -6
  324. data/lib/rubocop/cop/style/redundant_file_extension_in_require.rb +1 -1
  325. data/lib/rubocop/cop/style/redundant_freeze.rb +1 -2
  326. data/lib/rubocop/cop/style/redundant_interpolation.rb +1 -2
  327. data/lib/rubocop/cop/style/redundant_parentheses.rb +8 -20
  328. data/lib/rubocop/cop/style/redundant_percent_q.rb +1 -2
  329. data/lib/rubocop/cop/style/redundant_regexp_escape.rb +1 -4
  330. data/lib/rubocop/cop/style/redundant_return.rb +3 -5
  331. data/lib/rubocop/cop/style/redundant_self.rb +2 -6
  332. data/lib/rubocop/cop/style/redundant_self_assignment.rb +2 -2
  333. data/lib/rubocop/cop/style/redundant_sort.rb +2 -5
  334. data/lib/rubocop/cop/style/regexp_literal.rb +4 -8
  335. data/lib/rubocop/cop/style/rescue_modifier.rb +4 -0
  336. data/lib/rubocop/cop/style/rescue_standard_error.rb +3 -7
  337. data/lib/rubocop/cop/style/return_nil.rb +1 -2
  338. data/lib/rubocop/cop/style/safe_navigation.rb +10 -21
  339. data/lib/rubocop/cop/style/send.rb +1 -2
  340. data/lib/rubocop/cop/style/signal_exception.rb +3 -7
  341. data/lib/rubocop/cop/style/single_argument_dig.rb +1 -2
  342. data/lib/rubocop/cop/style/single_line_block_params.rb +2 -5
  343. data/lib/rubocop/cop/style/single_line_methods.rb +16 -4
  344. data/lib/rubocop/cop/style/sole_nested_conditional.rb +1 -2
  345. data/lib/rubocop/cop/style/special_global_vars.rb +6 -18
  346. data/lib/rubocop/cop/style/stabby_lambda_parentheses.rb +1 -2
  347. data/lib/rubocop/cop/style/stderr_puts.rb +2 -6
  348. data/lib/rubocop/cop/style/string_chars.rb +2 -1
  349. data/lib/rubocop/cop/style/string_concatenation.rb +8 -10
  350. data/lib/rubocop/cop/style/string_literals.rb +2 -5
  351. data/lib/rubocop/cop/style/struct_inheritance.rb +9 -1
  352. data/lib/rubocop/cop/style/symbol_literal.rb +1 -3
  353. data/lib/rubocop/cop/style/symbol_proc.rb +4 -9
  354. data/lib/rubocop/cop/style/ternary_parentheses.rb +3 -6
  355. data/lib/rubocop/cop/style/trailing_body_on_method_definition.rb +1 -2
  356. data/lib/rubocop/cop/style/trailing_comma_in_block_args.rb +2 -6
  357. data/lib/rubocop/cop/style/trailing_method_end_statement.rb +2 -5
  358. data/lib/rubocop/cop/style/trailing_underscore_variable.rb +4 -10
  359. data/lib/rubocop/cop/style/trivial_accessors.rb +2 -4
  360. data/lib/rubocop/cop/style/unless_else.rb +1 -2
  361. data/lib/rubocop/cop/style/unless_logical_operators.rb +2 -2
  362. data/lib/rubocop/cop/style/variable_interpolation.rb +1 -1
  363. data/lib/rubocop/cop/style/when_then.rb +1 -3
  364. data/lib/rubocop/cop/style/while_until_modifier.rb +1 -2
  365. data/lib/rubocop/cop/style/word_array.rb +1 -2
  366. data/lib/rubocop/cop/style/yoda_condition.rb +3 -11
  367. data/lib/rubocop/cop/style/zero_length_predicate.rb +1 -2
  368. data/lib/rubocop/cop/team.rb +2 -5
  369. data/lib/rubocop/cop/util.rb +8 -11
  370. data/lib/rubocop/cop/utils/format_string.rb +1 -3
  371. data/lib/rubocop/cop/variable_force.rb +6 -15
  372. data/lib/rubocop/cop/variable_force/assignment.rb +1 -2
  373. data/lib/rubocop/cop/variable_force/branch.rb +1 -2
  374. data/lib/rubocop/cop/variable_force/reference.rb +1 -3
  375. data/lib/rubocop/cop/variable_force/scope.rb +4 -8
  376. data/lib/rubocop/cop/variable_force/variable.rb +2 -4
  377. data/lib/rubocop/cops_documentation_generator.rb +7 -21
  378. data/lib/rubocop/directive_comment.rb +5 -0
  379. data/lib/rubocop/file_finder.rb +1 -3
  380. data/lib/rubocop/formatter/clang_style_formatter.rb +4 -2
  381. data/lib/rubocop/formatter/disabled_config_formatter.rb +3 -8
  382. data/lib/rubocop/formatter/git_hub_actions_formatter.rb +1 -5
  383. data/lib/rubocop/formatter/html_formatter.rb +4 -10
  384. data/lib/rubocop/formatter/json_formatter.rb +1 -5
  385. data/lib/rubocop/formatter/junit_formatter.rb +3 -9
  386. data/lib/rubocop/formatter/progress_formatter.rb +1 -3
  387. data/lib/rubocop/formatter/tap_formatter.rb +4 -2
  388. data/lib/rubocop/options.rb +27 -41
  389. data/lib/rubocop/path_util.rb +1 -3
  390. data/lib/rubocop/rake_task.rb +3 -0
  391. data/lib/rubocop/remote_config.rb +4 -7
  392. data/lib/rubocop/result_cache.rb +5 -12
  393. data/lib/rubocop/rspec/cop_helper.rb +1 -1
  394. data/lib/rubocop/rspec/expect_offense.rb +4 -9
  395. data/lib/rubocop/rspec/shared_contexts.rb +4 -15
  396. data/lib/rubocop/runner.rb +7 -14
  397. data/lib/rubocop/target_finder.rb +11 -16
  398. data/lib/rubocop/target_ruby.rb +4 -8
  399. data/lib/rubocop/version.rb +1 -1
  400. metadata +5 -5
  401. data/lib/rubocop/core_ext/hash.rb +0 -20
@@ -81,10 +81,7 @@ module RuboCop
81
81
  end
82
82
 
83
83
  def width_message(indentation_width)
84
- format(
85
- WIDTH_MSG,
86
- indentation_width: indentation_width
87
- )
84
+ format(WIDTH_MSG, indentation_width: indentation_width)
88
85
  end
89
86
 
90
87
  def line_too_long?(node)
@@ -126,8 +123,7 @@ module RuboCop
126
123
  body = heredoc_body(node)
127
124
  body_indent_level = indent_level(body)
128
125
  correct_indent_level = base_indent_level(node) + indentation_width
129
- body.gsub(/^[^\S\r\n]{#{body_indent_level}}/,
130
- ' ' * correct_indent_level)
126
+ body.gsub(/^[^\S\r\n]{#{body_indent_level}}/, ' ' * correct_indent_level)
131
127
  end
132
128
 
133
129
  def indented_end(node)
@@ -46,9 +46,7 @@ module RuboCop
46
46
  next unless (range = find_offence(line, lineno))
47
47
  next if in_string_literal?(str_ranges, range)
48
48
 
49
- add_offense(range) do |corrector|
50
- autocorrect(corrector, range)
51
- end
49
+ add_offense(range) { |corrector| autocorrect(corrector, range) }
52
50
  end
53
51
  end
54
52
 
@@ -135,8 +135,7 @@ module RuboCop
135
135
  check_indentation(when_node.loc.keyword, when_node.body)
136
136
  end
137
137
 
138
- check_indentation(case_node.when_branches.last.loc.keyword,
139
- case_node.else_branch)
138
+ check_indentation(case_node.when_branches.last.loc.keyword, case_node.else_branch)
140
139
  end
141
140
 
142
141
  def on_if(node, base = node)
@@ -41,10 +41,7 @@ module RuboCop
41
41
  return unless token
42
42
  return if token.column.zero?
43
43
 
44
- space_range =
45
- range_with_surrounding_space(range: token.pos,
46
- side: :left,
47
- newlines: false)
44
+ space_range = range_with_surrounding_space(range: token.pos, side: :left, newlines: false)
48
45
  # If the file starts with a byte order mark (BOM), the column can be
49
46
  # non-zero, but then we find out here if there's no space to the left
50
47
  # of the first token.
@@ -122,8 +122,7 @@ module RuboCop
122
122
  range = breakable_block_range(block_node)
123
123
  pos = range.begin_pos + 1
124
124
 
125
- breakable_range_by_line_index[line_index] =
126
- range_between(pos, pos + 1)
125
+ breakable_range_by_line_index[line_index] = range_between(pos, pos + 1)
127
126
  end
128
127
 
129
128
  def breakable_block_range(block_node)
@@ -171,11 +170,7 @@ module RuboCop
171
170
  end
172
171
  return check_uri_line(line, line_index) if allow_uri?
173
172
 
174
- register_offense(
175
- excess_range(nil, line, line_index),
176
- line,
177
- line_index
178
- )
173
+ register_offense(excess_range(nil, line, line_index), line, line_index)
179
174
  end
180
175
 
181
176
  def ignored_line?(line, line_index)
@@ -242,9 +237,7 @@ module RuboCop
242
237
  end
243
238
 
244
239
  def line_in_heredoc?(line_number)
245
- heredocs.any? do |range, _delimiter|
246
- range.cover?(line_number)
247
- end
240
+ heredocs.any? { |range, _delimiter| range.cover?(line_number) }
248
241
  end
249
242
 
250
243
  def check_directive_line(line, line_index)
@@ -266,11 +259,7 @@ module RuboCop
266
259
  uri_range = find_excessive_uri_range(line)
267
260
  return if uri_range && allowed_uri_position?(line, uri_range)
268
261
 
269
- register_offense(
270
- excess_range(uri_range, line, line_index),
271
- line,
272
- line_index
273
- )
262
+ register_offense(excess_range(uri_range, line, line_index), line, line_index)
274
263
  end
275
264
  end
276
265
  end
@@ -24,8 +24,7 @@ module RuboCop
24
24
  include MultilineElementLineBreaks
25
25
  extend AutoCorrector
26
26
 
27
- MSG = 'Each item in a multi-line array must start ' \
28
- 'on a separate line.'
27
+ MSG = 'Each item in a multi-line array must start on a separate line.'
29
28
 
30
29
  def on_array(node)
31
30
  check_line_breaks(node, node.children)
@@ -52,17 +52,14 @@ module RuboCop
52
52
  include RangeHelp
53
53
  extend AutoCorrector
54
54
 
55
- MSG = 'Block body expression is on the same line as ' \
56
- 'the block start.'
57
- ARG_MSG = 'Block argument expression is not on the same line as the ' \
58
- 'block start.'
55
+ MSG = 'Block body expression is on the same line as the block start.'
56
+ ARG_MSG = 'Block argument expression is not on the same line as the block start.'
59
57
  PIPE_SIZE = '|'.length
60
58
 
61
59
  def on_block(node)
62
60
  return if node.single_line?
63
61
 
64
- unless args_on_beginning_line?(node) ||
65
- line_break_necessary_in_args?(node)
62
+ unless args_on_beginning_line?(node) || line_break_necessary_in_args?(node)
66
63
  add_offense_for_expression(node, node.arguments, ARG_MSG)
67
64
  end
68
65
 
@@ -74,8 +71,7 @@ module RuboCop
74
71
  private
75
72
 
76
73
  def args_on_beginning_line?(node)
77
- !node.arguments? ||
78
- node.loc.begin.line == node.arguments.loc.last_line
74
+ !node.arguments? || node.loc.begin.line == node.arguments.loc.last_line
79
75
  end
80
76
 
81
77
  def line_break_necessary_in_args?(node)
@@ -101,9 +97,7 @@ module RuboCop
101
97
  expression = expr.source_range
102
98
  range = range_between(expression.begin_pos, expression.end_pos)
103
99
 
104
- add_offense(range, message: msg) do |corrector|
105
- autocorrect(corrector, node)
106
- end
100
+ add_offense(range, message: msg) { |corrector| autocorrect(corrector, node) }
107
101
  end
108
102
 
109
103
  def autocorrect(corrector, node)
@@ -128,8 +122,7 @@ module RuboCop
128
122
  newlines: false
129
123
  ).end_pos
130
124
  range = range_between(node.loc.begin.end.begin_pos, end_pos)
131
- corrector.replace(range,
132
- " |#{block_arg_string(node, node.arguments)}|")
125
+ corrector.replace(range, " |#{block_arg_string(node, node.arguments)}|")
133
126
  end
134
127
 
135
128
  def autocorrect_body(corrector, node, block_body)
@@ -141,8 +134,7 @@ module RuboCop
141
134
 
142
135
  block_start_col = node.source_range.column
143
136
 
144
- corrector.insert_before(first_node,
145
- "\n #{' ' * block_start_col}")
137
+ corrector.insert_before(first_node, "\n #{' ' * block_start_col}")
146
138
  end
147
139
 
148
140
  def block_arg_string(node, args)
@@ -24,8 +24,7 @@ module RuboCop
24
24
  include MultilineElementLineBreaks
25
25
  extend AutoCorrector
26
26
 
27
- MSG = 'Each key in a multi-line hash must start on a ' \
28
- 'separate line.'
27
+ MSG = 'Each key in a multi-line hash must start on a separate line.'
29
28
 
30
29
  def on_hash(node)
31
30
  # This cop only deals with hashes wrapped by a set of curly
@@ -23,8 +23,7 @@ module RuboCop
23
23
  include MultilineElementLineBreaks
24
24
  extend AutoCorrector
25
25
 
26
- MSG = 'Each argument in a multi-line method call must start ' \
27
- 'on a separate line.'
26
+ MSG = 'Each argument in a multi-line method call must start on a separate line.'
28
27
 
29
28
  def on_send(node)
30
29
  return if node.method?(:[]=)
@@ -72,6 +72,18 @@ module RuboCop
72
72
  send_node.loc.dot # Only check method calls with dot operator
73
73
  end
74
74
 
75
+ def right_hand_side(send_node)
76
+ dot = send_node.loc.dot
77
+ selector = send_node.loc.selector
78
+ if send_node.dot? && selector && dot.line == selector.line
79
+ dot.join(selector)
80
+ elsif selector
81
+ selector
82
+ elsif send_node.implicit_call?
83
+ dot.join(send_node.loc.begin)
84
+ end
85
+ end
86
+
75
87
  def offending_range(node, lhs, rhs, given_style)
76
88
  return false unless begins_its_line?(rhs)
77
89
  return false if not_for_this_cop?(node)
@@ -140,8 +152,7 @@ module RuboCop
140
152
  def alignment_base(node, rhs, given_style)
141
153
  case given_style
142
154
  when :aligned
143
- semantic_alignment_base(node, rhs) ||
144
- syntactic_alignment_base(node, rhs)
155
+ semantic_alignment_base(node, rhs) || syntactic_alignment_base(node, rhs)
145
156
  when :indented
146
157
  nil
147
158
  when :indented_relative_to_receiver
@@ -158,15 +169,11 @@ module RuboCop
158
169
 
159
170
  # a = b
160
171
  # .c
161
- part_of_assignment_rhs(lhs, rhs) do |base|
162
- return assignment_rhs(base).source_range
163
- end
172
+ part_of_assignment_rhs(lhs, rhs) { |base| return assignment_rhs(base).source_range }
164
173
 
165
174
  # a + b
166
175
  # .c
167
- operation_rhs(lhs) do |base|
168
- return base.source_range
169
- end
176
+ operation_rhs(lhs) { |base| return base.source_range }
170
177
  end
171
178
 
172
179
  # a.b
@@ -216,8 +223,7 @@ module RuboCop
216
223
  end
217
224
 
218
225
  def operator_rhs?(node, receiver)
219
- node.operator_method? && node.arguments? &&
220
- within_node?(receiver, node.first_argument)
226
+ node.operator_method? && node.arguments? && within_node?(receiver, node.first_argument)
221
227
  end
222
228
  end
223
229
  end
@@ -118,6 +118,10 @@ module RuboCop
118
118
  "spaces for indenting #{what} spanning multiple lines."
119
119
  end
120
120
  end
121
+
122
+ def right_hand_side(send_node)
123
+ send_node.first_argument.source_range
124
+ end
121
125
  end
122
126
  end
123
127
  end
@@ -0,0 +1,125 @@
1
+ # frozen_string_literal: true
2
+
3
+ module RuboCop
4
+ module Cop
5
+ module Layout
6
+ # This cop checks whether certain expressions, e.g. method calls, that could fit
7
+ # completely on a single line, are broken up into multiple lines unnecessarily.
8
+ #
9
+ # @example any configuration
10
+ # # bad
11
+ # foo(
12
+ # a,
13
+ # b
14
+ # )
15
+ #
16
+ # puts 'string that fits on ' \
17
+ # 'a single line'
18
+ #
19
+ # things
20
+ # .select { |thing| thing.cond? }
21
+ # .join('-')
22
+ #
23
+ # # good
24
+ # foo(a, b)
25
+ #
26
+ # puts 'string that fits on a single line'
27
+ #
28
+ # things.select { |thing| thing.cond? }.join('-')
29
+ #
30
+ # @example InspectBlocks: false (default)
31
+ # # good
32
+ # foo(a) do |x|
33
+ # puts x
34
+ # end
35
+ #
36
+ # @example InspectBlocks: true
37
+ # # bad
38
+ # foo(a) do |x|
39
+ # puts x
40
+ # end
41
+ #
42
+ # # good
43
+ # foo(a) { |x| puts x }
44
+ #
45
+ class RedundantLineBreak < Cop
46
+ include CheckAssignment
47
+
48
+ MSG = 'Redundant line break detected.'
49
+
50
+ def on_send(node)
51
+ # Include "the whole expression".
52
+ node = node.parent while convertible_block?(node) ||
53
+ node.parent.is_a?(RuboCop::AST::BinaryOperatorNode) ||
54
+ node.parent&.send_type?
55
+
56
+ return unless offense?(node) && !part_of_ignored_node?(node)
57
+
58
+ add_offense(node)
59
+ ignore_node(node)
60
+ end
61
+
62
+ def check_assignment(node, _rhs)
63
+ return unless offense?(node)
64
+
65
+ add_offense(node)
66
+ ignore_node(node)
67
+ end
68
+
69
+ def autocorrect(node)
70
+ ->(corrector) { corrector.replace(node.source_range, to_single_line(node.source).strip) }
71
+ end
72
+
73
+ private
74
+
75
+ def offense?(node)
76
+ return false if configured_to_not_be_inspected?(node)
77
+
78
+ node.multiline? && !too_long?(node) && suitable_as_single_line?(node)
79
+ end
80
+
81
+ def configured_to_not_be_inspected?(node)
82
+ !cop_config['InspectBlocks'] && (node.block_type? ||
83
+ node.each_child_node(:block).any?(&:multiline?))
84
+ end
85
+
86
+ def suitable_as_single_line?(node)
87
+ !comment_within?(node) &&
88
+ node.each_descendant(:if, :case, :kwbegin, :def).none? &&
89
+ node.each_descendant(:dstr, :str).none?(&:heredoc?) &&
90
+ node.each_descendant(:begin).none? { |b| b.first_line != b.last_line }
91
+ end
92
+
93
+ def convertible_block?(node)
94
+ return false unless node.parent&.block_type?
95
+
96
+ send_node = node.parent&.send_node
97
+ send_node.parenthesized? || !send_node.arguments?
98
+ end
99
+
100
+ def comment_within?(node)
101
+ processed_source.comments.map(&:loc).map(&:line).any? do |comment_line_number|
102
+ comment_line_number >= node.first_line && comment_line_number <= node.last_line
103
+ end
104
+ end
105
+
106
+ def too_long?(node)
107
+ lines = processed_source.lines[(node.first_line - 1)...node.last_line]
108
+ to_single_line(lines.join("\n")).length > max_line_length
109
+ end
110
+
111
+ def to_single_line(source)
112
+ source
113
+ .gsub(/" *\\\n\s*'/, %q(" + ')) # Double quote, backslash, and then single quote
114
+ .gsub(/' *\\\n\s*"/, %q(' + ")) # Single quote, backslash, and then double quote
115
+ .gsub(/(["']) *\\\n\s*\1/, '') # Double or single quote, backslash, then same quote
116
+ .gsub(/\s*\\?\n\s*/, ' ') # Any other line break, with or without backslash
117
+ end
118
+
119
+ def max_line_length
120
+ config.for_cop('Layout/LineLength')['Max']
121
+ end
122
+ end
123
+ end
124
+ end
125
+ end
@@ -32,8 +32,7 @@ module RuboCop
32
32
  ANCESTOR_TYPES = %i[kwbegin def defs class module].freeze
33
33
  RUBY_2_5_ANCESTOR_TYPES = (ANCESTOR_TYPES + %i[block]).freeze
34
34
  ANCESTOR_TYPES_WITH_ACCESS_MODIFIERS = %i[def defs].freeze
35
- ALTERNATIVE_ACCESS_MODIFIERS = %i[public_class_method
36
- private_class_method].freeze
35
+ ALTERNATIVE_ACCESS_MODIFIERS = %i[public_class_method private_class_method].freeze
37
36
 
38
37
  def on_resbody(node)
39
38
  check(node) unless modifier?(node)
@@ -118,8 +117,7 @@ module RuboCop
118
117
  def alignment_node(node)
119
118
  ancestor_node = ancestor_node(node)
120
119
 
121
- return ancestor_node if ancestor_node.nil? ||
122
- ancestor_node.kwbegin_type?
120
+ return ancestor_node if ancestor_node.nil? || ancestor_node.kwbegin_type?
123
121
 
124
122
  assignment_node = assignment_node(ancestor_node)
125
123
  return assignment_node if same_line?(ancestor_node, assignment_node)
@@ -173,8 +171,7 @@ module RuboCop
173
171
  end
174
172
 
175
173
  def access_modifier?(node)
176
- return true if node.respond_to?(:access_modifier?) &&
177
- node.access_modifier?
174
+ return true if node.respond_to?(:access_modifier?) && node.access_modifier?
178
175
 
179
176
  return true if node.respond_to?(:method_name) &&
180
177
  ALTERNATIVE_ACCESS_MODIFIERS.include?(node.method_name)
@@ -37,9 +37,7 @@ module RuboCop
37
37
  private
38
38
 
39
39
  def register_offense(colon)
40
- add_offense(colon) do |corrector|
41
- corrector.insert_after(colon, ' ')
42
- end
40
+ add_offense(colon) { |corrector| corrector.insert_after(colon, ' ') }
43
41
  end
44
42
 
45
43
  def followed_by_space?(colon)
@@ -18,16 +18,14 @@ module RuboCop
18
18
  include RangeHelp
19
19
  extend AutoCorrector
20
20
 
21
- MSG = 'Do not put a space between a method name and the opening ' \
22
- 'parenthesis.'
21
+ MSG = 'Do not put a space between a method name and the opening parenthesis.'
23
22
 
24
23
  def on_def(node)
25
24
  args = node.arguments
26
25
  return unless args.loc.begin&.is?('(')
27
26
 
28
27
  expr = args.source_range
29
- pos_before_left_paren = range_between(expr.begin_pos - 1,
30
- expr.begin_pos)
28
+ pos_before_left_paren = range_between(expr.begin_pos - 1, expr.begin_pos)
31
29
  return unless pos_before_left_paren.source.start_with?(' ')
32
30
 
33
31
  add_offense(pos_before_left_paren) do |corrector|