rubocop 1.12.1 → 1.16.1

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 (412) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +5 -2
  3. data/config/default.yml +78 -8
  4. data/exe/rubocop +1 -3
  5. data/lib/rubocop.rb +10 -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 +43 -11
  23. data/lib/rubocop/cop/bundler/gem_version.rb +99 -0
  24. data/lib/rubocop/cop/bundler/ordered_gems.rb +1 -4
  25. data/lib/rubocop/cop/commissioner.rb +2 -8
  26. data/lib/rubocop/cop/cop.rb +4 -18
  27. data/lib/rubocop/cop/corrector.rb +1 -4
  28. data/lib/rubocop/cop/correctors/alignment_corrector.rb +3 -6
  29. data/lib/rubocop/cop/correctors/each_to_for_corrector.rb +2 -4
  30. data/lib/rubocop/cop/correctors/for_to_each_corrector.rb +1 -2
  31. data/lib/rubocop/cop/correctors/line_break_corrector.rb +3 -6
  32. data/lib/rubocop/cop/correctors/multiline_literal_brace_corrector.rb +1 -3
  33. data/lib/rubocop/cop/correctors/ordered_gem_corrector.rb +1 -3
  34. data/lib/rubocop/cop/correctors/percent_literal_corrector.rb +2 -8
  35. data/lib/rubocop/cop/gemspec/duplicated_assignment.rb +1 -2
  36. data/lib/rubocop/cop/gemspec/ordered_dependencies.rb +1 -4
  37. data/lib/rubocop/cop/generator.rb +1 -4
  38. data/lib/rubocop/cop/generator/configuration_injector.rb +1 -2
  39. data/lib/rubocop/cop/generator/require_file_injector.rb +2 -5
  40. data/lib/rubocop/cop/internal_affairs/example_description.rb +7 -5
  41. data/lib/rubocop/cop/internal_affairs/method_name_equal.rb +2 -5
  42. data/lib/rubocop/cop/internal_affairs/node_destructuring.rb +1 -3
  43. data/lib/rubocop/cop/internal_affairs/node_type_predicate.rb +1 -3
  44. data/lib/rubocop/cop/internal_affairs/offense_location_keyword.rb +1 -2
  45. data/lib/rubocop/cop/internal_affairs/style_detected_api_use.rb +1 -2
  46. data/lib/rubocop/cop/internal_affairs/useless_message_assertion.rb +1 -3
  47. data/lib/rubocop/cop/layout/access_modifier_indentation.rb +1 -2
  48. data/lib/rubocop/cop/layout/argument_alignment.rb +30 -14
  49. data/lib/rubocop/cop/layout/assignment_indentation.rb +2 -4
  50. data/lib/rubocop/cop/layout/begin_end_alignment.rb +1 -4
  51. data/lib/rubocop/cop/layout/block_alignment.rb +7 -19
  52. data/lib/rubocop/cop/layout/case_indentation.rb +57 -11
  53. data/lib/rubocop/cop/layout/class_structure.rb +4 -10
  54. data/lib/rubocop/cop/layout/closing_parenthesis_indentation.rb +4 -15
  55. data/lib/rubocop/cop/layout/comment_indentation.rb +1 -5
  56. data/lib/rubocop/cop/layout/def_end_alignment.rb +2 -6
  57. data/lib/rubocop/cop/layout/dot_position.rb +1 -3
  58. data/lib/rubocop/cop/layout/else_alignment.rb +1 -3
  59. data/lib/rubocop/cop/layout/empty_comment.rb +5 -12
  60. data/lib/rubocop/cop/layout/empty_line_after_guard_clause.rb +2 -5
  61. data/lib/rubocop/cop/layout/empty_line_between_defs.rb +2 -6
  62. data/lib/rubocop/cop/layout/empty_lines.rb +1 -3
  63. data/lib/rubocop/cop/layout/empty_lines_around_access_modifier.rb +8 -18
  64. data/lib/rubocop/cop/layout/empty_lines_around_exception_handling_keywords.rb +2 -8
  65. data/lib/rubocop/cop/layout/end_alignment.rb +1 -2
  66. data/lib/rubocop/cop/layout/end_of_line.rb +1 -1
  67. data/lib/rubocop/cop/layout/extra_spacing.rb +3 -7
  68. data/lib/rubocop/cop/layout/first_array_element_indentation.rb +1 -2
  69. data/lib/rubocop/cop/layout/first_array_element_line_break.rb +1 -2
  70. data/lib/rubocop/cop/layout/first_hash_element_indentation.rb +14 -5
  71. data/lib/rubocop/cop/layout/first_hash_element_line_break.rb +1 -2
  72. data/lib/rubocop/cop/layout/first_method_argument_line_break.rb +1 -2
  73. data/lib/rubocop/cop/layout/first_method_parameter_line_break.rb +1 -2
  74. data/lib/rubocop/cop/layout/hash_alignment.rb +36 -15
  75. data/lib/rubocop/cop/layout/heredoc_argument_closing_parenthesis.rb +2 -9
  76. data/lib/rubocop/cop/layout/heredoc_indentation.rb +2 -6
  77. data/lib/rubocop/cop/layout/indentation_style.rb +1 -3
  78. data/lib/rubocop/cop/layout/indentation_width.rb +6 -4
  79. data/lib/rubocop/cop/layout/initial_indentation.rb +1 -4
  80. data/lib/rubocop/cop/layout/line_length.rb +4 -15
  81. data/lib/rubocop/cop/layout/multiline_array_line_breaks.rb +1 -2
  82. data/lib/rubocop/cop/layout/multiline_block_layout.rb +7 -15
  83. data/lib/rubocop/cop/layout/multiline_hash_key_line_breaks.rb +1 -2
  84. data/lib/rubocop/cop/layout/multiline_method_argument_line_breaks.rb +1 -2
  85. data/lib/rubocop/cop/layout/multiline_method_call_indentation.rb +4 -10
  86. data/lib/rubocop/cop/layout/redundant_line_break.rb +137 -0
  87. data/lib/rubocop/cop/layout/rescue_ensure_alignment.rb +3 -6
  88. data/lib/rubocop/cop/layout/single_line_block_chain.rb +53 -0
  89. data/lib/rubocop/cop/layout/space_after_colon.rb +1 -3
  90. data/lib/rubocop/cop/layout/space_after_method_name.rb +2 -4
  91. data/lib/rubocop/cop/layout/space_around_block_parameters.rb +6 -14
  92. data/lib/rubocop/cop/layout/space_around_equals_in_parameter_default.rb +1 -2
  93. data/lib/rubocop/cop/layout/space_around_keyword.rb +19 -6
  94. data/lib/rubocop/cop/layout/space_around_operators.rb +4 -9
  95. data/lib/rubocop/cop/layout/space_before_block_braces.rb +1 -2
  96. data/lib/rubocop/cop/layout/space_before_brackets.rb +1 -3
  97. data/lib/rubocop/cop/layout/space_before_comment.rb +1 -3
  98. data/lib/rubocop/cop/layout/space_before_first_arg.rb +5 -11
  99. data/lib/rubocop/cop/layout/space_in_lambda_literal.rb +2 -4
  100. data/lib/rubocop/cop/layout/space_inside_array_literal_brackets.rb +5 -10
  101. data/lib/rubocop/cop/layout/space_inside_array_percent_literal.rb +2 -7
  102. data/lib/rubocop/cop/layout/space_inside_block_braces.rb +5 -10
  103. data/lib/rubocop/cop/layout/space_inside_hash_literal_braces.rb +1 -2
  104. data/lib/rubocop/cop/layout/space_inside_reference_brackets.rb +1 -2
  105. data/lib/rubocop/cop/legacy/corrections_proxy.rb +2 -8
  106. data/lib/rubocop/cop/legacy/corrector.rb +1 -3
  107. data/lib/rubocop/cop/lint/ambiguous_assignment.rb +1 -6
  108. data/lib/rubocop/cop/lint/ambiguous_block_association.rb +14 -7
  109. data/lib/rubocop/cop/lint/boolean_symbol.rb +1 -2
  110. data/lib/rubocop/cop/lint/constant_resolution.rb +1 -2
  111. data/lib/rubocop/cop/lint/deprecated_class_methods.rb +83 -41
  112. data/lib/rubocop/cop/lint/deprecated_constants.rb +3 -3
  113. data/lib/rubocop/cop/lint/deprecated_open_ssl_constant.rb +2 -5
  114. data/lib/rubocop/cop/lint/duplicate_branch.rb +1 -2
  115. data/lib/rubocop/cop/lint/duplicate_hash_key.rb +1 -3
  116. data/lib/rubocop/cop/lint/duplicate_methods.rb +3 -7
  117. data/lib/rubocop/cop/lint/else_layout.rb +1 -3
  118. data/lib/rubocop/cop/lint/empty_block.rb +18 -2
  119. data/lib/rubocop/cop/lint/empty_ensure.rb +1 -3
  120. data/lib/rubocop/cop/lint/empty_file.rb +1 -3
  121. data/lib/rubocop/cop/lint/empty_in_pattern.rb +62 -0
  122. data/lib/rubocop/cop/lint/empty_interpolation.rb +1 -3
  123. data/lib/rubocop/cop/lint/ensure_return.rb +1 -3
  124. data/lib/rubocop/cop/lint/erb_new_arguments.rb +3 -7
  125. data/lib/rubocop/cop/lint/float_out_of_range.rb +1 -2
  126. data/lib/rubocop/cop/lint/format_parameter_mismatch.rb +3 -6
  127. data/lib/rubocop/cop/lint/heredoc_method_call_position.rb +1 -2
  128. data/lib/rubocop/cop/lint/implicit_string_concatenation.rb +1 -2
  129. data/lib/rubocop/cop/lint/ineffective_access_modifier.rb +3 -7
  130. data/lib/rubocop/cop/lint/inherit_exception.rb +1 -2
  131. data/lib/rubocop/cop/lint/interpolation_check.rb +3 -11
  132. data/lib/rubocop/cop/lint/literal_in_interpolation.rb +3 -6
  133. data/lib/rubocop/cop/lint/loop.rb +1 -2
  134. data/lib/rubocop/cop/lint/missing_cop_enable_directive.rb +3 -7
  135. data/lib/rubocop/cop/lint/missing_super.rb +1 -2
  136. data/lib/rubocop/cop/lint/mixed_regexp_capture_types.rb +1 -2
  137. data/lib/rubocop/cop/lint/nested_method_definition.rb +1 -2
  138. data/lib/rubocop/cop/lint/nested_percent_literal.rb +1 -3
  139. data/lib/rubocop/cop/lint/non_deterministic_require_order.rb +1 -3
  140. data/lib/rubocop/cop/lint/number_conversion.rb +2 -3
  141. data/lib/rubocop/cop/lint/ordered_magic_comments.rb +1 -2
  142. data/lib/rubocop/cop/lint/out_of_range_regexp_ref.rb +1 -3
  143. data/lib/rubocop/cop/lint/parentheses_as_grouped_expression.rb +1 -3
  144. data/lib/rubocop/cop/lint/percent_symbol_array.rb +1 -3
  145. data/lib/rubocop/cop/lint/raise_exception.rb +1 -2
  146. data/lib/rubocop/cop/lint/rand_one.rb +1 -2
  147. data/lib/rubocop/cop/lint/redundant_cop_disable_directive.rb +18 -27
  148. data/lib/rubocop/cop/lint/redundant_safe_navigation.rb +1 -3
  149. data/lib/rubocop/cop/lint/redundant_splat_expansion.rb +3 -7
  150. data/lib/rubocop/cop/lint/redundant_string_coercion.rb +1 -2
  151. data/lib/rubocop/cop/lint/redundant_with_index.rb +1 -4
  152. data/lib/rubocop/cop/lint/redundant_with_object.rb +1 -4
  153. data/lib/rubocop/cop/lint/regexp_as_condition.rb +1 -3
  154. data/lib/rubocop/cop/lint/require_parentheses.rb +2 -4
  155. data/lib/rubocop/cop/lint/rescue_exception.rb +1 -2
  156. data/lib/rubocop/cop/lint/rescue_type.rb +2 -7
  157. data/lib/rubocop/cop/lint/return_in_void_context.rb +1 -2
  158. data/lib/rubocop/cop/lint/safe_navigation_chain.rb +1 -2
  159. data/lib/rubocop/cop/lint/safe_navigation_consistency.rb +4 -10
  160. data/lib/rubocop/cop/lint/safe_navigation_with_empty.rb +1 -2
  161. data/lib/rubocop/cop/lint/send_with_mixin_argument.rb +2 -7
  162. data/lib/rubocop/cop/lint/shadowed_argument.rb +4 -11
  163. data/lib/rubocop/cop/lint/shadowed_exception.rb +7 -8
  164. data/lib/rubocop/cop/lint/struct_new_override.rb +1 -2
  165. data/lib/rubocop/cop/lint/symbol_conversion.rb +4 -16
  166. data/lib/rubocop/cop/lint/syntax.rb +1 -3
  167. data/lib/rubocop/cop/lint/to_json.rb +1 -2
  168. data/lib/rubocop/cop/lint/trailing_comma_in_attribute_declaration.rb +1 -3
  169. data/lib/rubocop/cop/lint/underscore_prefixed_variable_name.rb +1 -3
  170. data/lib/rubocop/cop/lint/unreachable_code.rb +2 -5
  171. data/lib/rubocop/cop/lint/unreachable_loop.rb +14 -7
  172. data/lib/rubocop/cop/lint/unused_block_argument.rb +9 -7
  173. data/lib/rubocop/cop/lint/unused_method_argument.rb +1 -2
  174. data/lib/rubocop/cop/lint/useless_access_modifier.rb +2 -4
  175. data/lib/rubocop/cop/lint/useless_assignment.rb +4 -9
  176. data/lib/rubocop/cop/lint/useless_setter_call.rb +1 -3
  177. data/lib/rubocop/cop/lint/void.rb +5 -12
  178. data/lib/rubocop/cop/message_annotator.rb +1 -3
  179. data/lib/rubocop/cop/metrics/block_nesting.rb +2 -7
  180. data/lib/rubocop/cop/metrics/class_length.rb +1 -3
  181. data/lib/rubocop/cop/metrics/cyclomatic_complexity.rb +1 -2
  182. data/lib/rubocop/cop/metrics/module_length.rb +2 -6
  183. data/lib/rubocop/cop/metrics/parameter_lists.rb +2 -5
  184. data/lib/rubocop/cop/metrics/perceived_complexity.rb +1 -2
  185. data/lib/rubocop/cop/metrics/utils/abc_size_calculator.rb +4 -7
  186. data/lib/rubocop/cop/metrics/utils/repeated_attribute_discount.rb +2 -7
  187. data/lib/rubocop/cop/migration/department_name.rb +3 -7
  188. data/lib/rubocop/cop/mixin/alignment.rb +2 -4
  189. data/lib/rubocop/cop/mixin/check_line_breakable.rb +19 -3
  190. data/lib/rubocop/cop/mixin/code_length.rb +1 -3
  191. data/lib/rubocop/cop/mixin/configurable_enforced_style.rb +2 -2
  192. data/lib/rubocop/cop/mixin/configurable_formatting.rb +3 -8
  193. data/lib/rubocop/cop/mixin/def_node.rb +2 -5
  194. data/lib/rubocop/cop/mixin/documentation_comment.rb +2 -5
  195. data/lib/rubocop/cop/mixin/empty_lines_around_body.rb +3 -7
  196. data/lib/rubocop/cop/mixin/empty_parameter.rb +1 -3
  197. data/lib/rubocop/cop/mixin/end_keyword_alignment.rb +1 -3
  198. data/lib/rubocop/cop/mixin/enforce_superclass.rb +2 -6
  199. data/lib/rubocop/cop/mixin/first_element_line_break.rb +1 -3
  200. data/lib/rubocop/cop/mixin/frozen_string_literal.rb +7 -7
  201. data/lib/rubocop/cop/mixin/gem_declaration.rb +13 -0
  202. data/lib/rubocop/cop/mixin/hash_alignment_styles.rb +17 -9
  203. data/lib/rubocop/cop/mixin/hash_transform_method.rb +7 -22
  204. data/lib/rubocop/cop/mixin/interpolation.rb +1 -3
  205. data/lib/rubocop/cop/mixin/line_length_help.rb +2 -4
  206. data/lib/rubocop/cop/mixin/match_range.rb +2 -5
  207. data/lib/rubocop/cop/mixin/method_complexity.rb +1 -3
  208. data/lib/rubocop/cop/mixin/method_preference.rb +1 -2
  209. data/lib/rubocop/cop/mixin/multiline_element_indentation.rb +1 -2
  210. data/lib/rubocop/cop/mixin/multiline_element_line_breaks.rb +1 -3
  211. data/lib/rubocop/cop/mixin/multiline_expression_indentation.rb +7 -17
  212. data/lib/rubocop/cop/mixin/multiline_literal_brace_layout.rb +1 -2
  213. data/lib/rubocop/cop/mixin/negative_conditional.rb +1 -2
  214. data/lib/rubocop/cop/mixin/ordered_gem_node.rb +1 -4
  215. data/lib/rubocop/cop/mixin/percent_array.rb +1 -3
  216. data/lib/rubocop/cop/mixin/percent_literal.rb +0 -6
  217. data/lib/rubocop/cop/mixin/preceding_following_alignment.rb +5 -11
  218. data/lib/rubocop/cop/mixin/preferred_delimiters.rb +3 -6
  219. data/lib/rubocop/cop/mixin/range_help.rb +10 -13
  220. data/lib/rubocop/cop/mixin/rescue_node.rb +2 -6
  221. data/lib/rubocop/cop/mixin/safe_assignment.rb +1 -2
  222. data/lib/rubocop/cop/mixin/space_after_punctuation.rb +2 -4
  223. data/lib/rubocop/cop/mixin/space_before_punctuation.rb +1 -2
  224. data/lib/rubocop/cop/mixin/statement_modifier.rb +1 -3
  225. data/lib/rubocop/cop/mixin/string_literals_help.rb +3 -5
  226. data/lib/rubocop/cop/mixin/symbol_help.rb +13 -0
  227. data/lib/rubocop/cop/mixin/trailing_body.rb +1 -2
  228. data/lib/rubocop/cop/mixin/trailing_comma.rb +1 -2
  229. data/lib/rubocop/cop/mixin/uncommunicative_name.rb +3 -7
  230. data/lib/rubocop/cop/mixin/unused_argument.rb +1 -3
  231. data/lib/rubocop/cop/naming/ascii_identifiers.rb +2 -4
  232. data/lib/rubocop/cop/naming/binary_operator_parameter_name.rb +1 -2
  233. data/lib/rubocop/cop/naming/file_name.rb +7 -16
  234. data/lib/rubocop/cop/naming/memoized_instance_variable_name.rb +2 -3
  235. data/lib/rubocop/cop/naming/method_name.rb +1 -2
  236. data/lib/rubocop/cop/naming/predicate_name.rb +1 -2
  237. data/lib/rubocop/cop/offense.rb +3 -8
  238. data/lib/rubocop/cop/registry.rb +3 -11
  239. data/lib/rubocop/cop/style/access_modifier_declarations.rb +1 -3
  240. data/lib/rubocop/cop/style/accessor_grouping.rb +1 -3
  241. data/lib/rubocop/cop/style/alias.rb +5 -12
  242. data/lib/rubocop/cop/style/arguments_forwarding.rb +1 -3
  243. data/lib/rubocop/cop/style/ascii_comments.rb +1 -2
  244. data/lib/rubocop/cop/style/attr.rb +1 -3
  245. data/lib/rubocop/cop/style/auto_resource_cleanup.rb +2 -5
  246. data/lib/rubocop/cop/style/bisected_attr_accessor/macro.rb +1 -3
  247. data/lib/rubocop/cop/style/case_like_if.rb +1 -2
  248. data/lib/rubocop/cop/style/character_literal.rb +2 -4
  249. data/lib/rubocop/cop/style/class_and_module_children.rb +19 -10
  250. data/lib/rubocop/cop/style/class_methods.rb +1 -3
  251. data/lib/rubocop/cop/style/collection_compact.rb +1 -3
  252. data/lib/rubocop/cop/style/colon_method_call.rb +1 -3
  253. data/lib/rubocop/cop/style/combinable_loops.rb +3 -2
  254. data/lib/rubocop/cop/style/command_literal.rb +3 -8
  255. data/lib/rubocop/cop/style/comment_annotation.rb +3 -6
  256. data/lib/rubocop/cop/style/commented_keyword.rb +2 -8
  257. data/lib/rubocop/cop/style/conditional_assignment.rb +10 -24
  258. data/lib/rubocop/cop/style/copyright.rb +3 -6
  259. data/lib/rubocop/cop/style/date_time.rb +2 -5
  260. data/lib/rubocop/cop/style/def_with_parentheses.rb +1 -2
  261. data/lib/rubocop/cop/style/each_for_simple_loop.rb +1 -2
  262. data/lib/rubocop/cop/style/empty_case_condition.rb +2 -7
  263. data/lib/rubocop/cop/style/empty_else.rb +3 -9
  264. data/lib/rubocop/cop/style/empty_literal.rb +12 -9
  265. data/lib/rubocop/cop/style/empty_method.rb +3 -7
  266. data/lib/rubocop/cop/style/end_block.rb +1 -2
  267. data/lib/rubocop/cop/style/endless_method.rb +1 -3
  268. data/lib/rubocop/cop/style/eval_with_location.rb +2 -4
  269. data/lib/rubocop/cop/style/expand_path_arguments.rb +1 -3
  270. data/lib/rubocop/cop/style/explicit_block_argument.rb +1 -4
  271. data/lib/rubocop/cop/style/format_string_token.rb +1 -4
  272. data/lib/rubocop/cop/style/frozen_string_literal_comment.rb +3 -8
  273. data/lib/rubocop/cop/style/guard_clause.rb +3 -7
  274. data/lib/rubocop/cop/style/hash_conversion.rb +28 -3
  275. data/lib/rubocop/cop/style/hash_each_methods.rb +19 -3
  276. data/lib/rubocop/cop/style/hash_like_case.rb +1 -2
  277. data/lib/rubocop/cop/style/hash_syntax.rb +4 -9
  278. data/lib/rubocop/cop/style/identical_conditional_branches.rb +27 -8
  279. data/lib/rubocop/cop/style/if_unless_modifier.rb +40 -13
  280. data/lib/rubocop/cop/style/in_pattern_then.rb +56 -0
  281. data/lib/rubocop/cop/style/infinite_loop.rb +2 -5
  282. data/lib/rubocop/cop/style/inverse_methods.rb +3 -7
  283. data/lib/rubocop/cop/style/ip_addresses.rb +1 -2
  284. data/lib/rubocop/cop/style/lambda.rb +2 -4
  285. data/lib/rubocop/cop/style/lambda_call.rb +1 -2
  286. data/lib/rubocop/cop/style/line_end_concatenation.rb +5 -12
  287. data/lib/rubocop/cop/style/method_call_with_args_parentheses.rb +1 -1
  288. data/lib/rubocop/cop/style/method_call_with_args_parentheses/omit_parentheses.rb +7 -12
  289. data/lib/rubocop/cop/style/method_call_without_args_parentheses.rb +1 -2
  290. data/lib/rubocop/cop/style/method_called_on_do_end_block.rb +2 -4
  291. data/lib/rubocop/cop/style/method_def_parentheses.rb +4 -8
  292. data/lib/rubocop/cop/style/min_max.rb +1 -2
  293. data/lib/rubocop/cop/style/missing_else.rb +2 -4
  294. data/lib/rubocop/cop/style/missing_respond_to_missing.rb +1 -2
  295. data/lib/rubocop/cop/style/mixin_grouping.rb +4 -10
  296. data/lib/rubocop/cop/style/mixin_usage.rb +1 -2
  297. data/lib/rubocop/cop/style/module_function.rb +3 -6
  298. data/lib/rubocop/cop/style/multiline_block_chain.rb +1 -2
  299. data/lib/rubocop/cop/style/multiline_in_pattern_then.rb +62 -0
  300. data/lib/rubocop/cop/style/multiline_method_signature.rb +1 -3
  301. data/lib/rubocop/cop/style/multiline_ternary_operator.rb +1 -2
  302. data/lib/rubocop/cop/style/multiline_when_then.rb +2 -11
  303. data/lib/rubocop/cop/style/multiple_comparison.rb +2 -4
  304. data/lib/rubocop/cop/style/mutable_constant.rb +4 -10
  305. data/lib/rubocop/cop/style/negated_if.rb +1 -2
  306. data/lib/rubocop/cop/style/negated_if_else_condition.rb +17 -9
  307. data/lib/rubocop/cop/style/negated_unless.rb +1 -2
  308. data/lib/rubocop/cop/style/nested_modifier.rb +3 -7
  309. data/lib/rubocop/cop/style/nested_ternary_operator.rb +2 -3
  310. data/lib/rubocop/cop/style/next.rb +4 -9
  311. data/lib/rubocop/cop/style/nil_lambda.rb +29 -12
  312. data/lib/rubocop/cop/style/non_nil_check.rb +2 -5
  313. data/lib/rubocop/cop/style/numeric_literals.rb +3 -11
  314. data/lib/rubocop/cop/style/numeric_predicate.rb +2 -7
  315. data/lib/rubocop/cop/style/one_line_conditional.rb +1 -2
  316. data/lib/rubocop/cop/style/option_hash.rb +1 -3
  317. data/lib/rubocop/cop/style/optional_arguments.rb +2 -5
  318. data/lib/rubocop/cop/style/or_assignment.rb +2 -6
  319. data/lib/rubocop/cop/style/parallel_assignment.rb +6 -9
  320. data/lib/rubocop/cop/style/percent_literal_delimiters.rb +1 -3
  321. data/lib/rubocop/cop/style/percent_q_literals.rb +1 -2
  322. data/lib/rubocop/cop/style/perl_backrefs.rb +2 -9
  323. data/lib/rubocop/cop/style/preferred_hash_methods.rb +1 -4
  324. data/lib/rubocop/cop/style/proc.rb +1 -2
  325. data/lib/rubocop/cop/style/quoted_symbols.rb +110 -0
  326. data/lib/rubocop/cop/style/raise_args.rb +4 -8
  327. data/lib/rubocop/cop/style/random_with_offset.rb +3 -8
  328. data/lib/rubocop/cop/style/redundant_argument.rb +2 -11
  329. data/lib/rubocop/cop/style/redundant_assignment.rb +1 -3
  330. data/lib/rubocop/cop/style/redundant_begin.rb +4 -4
  331. data/lib/rubocop/cop/style/redundant_capital_w.rb +1 -2
  332. data/lib/rubocop/cop/style/redundant_condition.rb +2 -5
  333. data/lib/rubocop/cop/style/redundant_conditional.rb +3 -6
  334. data/lib/rubocop/cop/style/redundant_exception.rb +3 -6
  335. data/lib/rubocop/cop/style/redundant_file_extension_in_require.rb +1 -1
  336. data/lib/rubocop/cop/style/redundant_freeze.rb +1 -2
  337. data/lib/rubocop/cop/style/redundant_interpolation.rb +1 -2
  338. data/lib/rubocop/cop/style/redundant_parentheses.rb +8 -20
  339. data/lib/rubocop/cop/style/redundant_percent_q.rb +1 -2
  340. data/lib/rubocop/cop/style/redundant_regexp_escape.rb +1 -4
  341. data/lib/rubocop/cop/style/redundant_return.rb +3 -5
  342. data/lib/rubocop/cop/style/redundant_self.rb +25 -7
  343. data/lib/rubocop/cop/style/redundant_self_assignment.rb +2 -2
  344. data/lib/rubocop/cop/style/redundant_sort.rb +2 -5
  345. data/lib/rubocop/cop/style/regexp_literal.rb +4 -8
  346. data/lib/rubocop/cop/style/rescue_modifier.rb +4 -0
  347. data/lib/rubocop/cop/style/rescue_standard_error.rb +3 -7
  348. data/lib/rubocop/cop/style/return_nil.rb +1 -2
  349. data/lib/rubocop/cop/style/safe_navigation.rb +10 -21
  350. data/lib/rubocop/cop/style/send.rb +1 -2
  351. data/lib/rubocop/cop/style/signal_exception.rb +3 -7
  352. data/lib/rubocop/cop/style/single_argument_dig.rb +1 -2
  353. data/lib/rubocop/cop/style/single_line_block_params.rb +2 -5
  354. data/lib/rubocop/cop/style/single_line_methods.rb +20 -4
  355. data/lib/rubocop/cop/style/sole_nested_conditional.rb +15 -7
  356. data/lib/rubocop/cop/style/special_global_vars.rb +6 -18
  357. data/lib/rubocop/cop/style/stabby_lambda_parentheses.rb +1 -2
  358. data/lib/rubocop/cop/style/stderr_puts.rb +2 -6
  359. data/lib/rubocop/cop/style/string_chars.rb +2 -1
  360. data/lib/rubocop/cop/style/string_concatenation.rb +8 -10
  361. data/lib/rubocop/cop/style/string_literals.rb +3 -5
  362. data/lib/rubocop/cop/style/string_literals_in_interpolation.rb +1 -0
  363. data/lib/rubocop/cop/style/struct_inheritance.rb +9 -1
  364. data/lib/rubocop/cop/style/symbol_literal.rb +1 -3
  365. data/lib/rubocop/cop/style/symbol_proc.rb +4 -9
  366. data/lib/rubocop/cop/style/ternary_parentheses.rb +3 -6
  367. data/lib/rubocop/cop/style/top_level_method_definition.rb +83 -0
  368. data/lib/rubocop/cop/style/trailing_body_on_method_definition.rb +1 -2
  369. data/lib/rubocop/cop/style/trailing_comma_in_block_args.rb +2 -6
  370. data/lib/rubocop/cop/style/trailing_method_end_statement.rb +2 -5
  371. data/lib/rubocop/cop/style/trailing_underscore_variable.rb +4 -10
  372. data/lib/rubocop/cop/style/trivial_accessors.rb +67 -4
  373. data/lib/rubocop/cop/style/unless_else.rb +1 -2
  374. data/lib/rubocop/cop/style/unless_logical_operators.rb +2 -2
  375. data/lib/rubocop/cop/style/variable_interpolation.rb +1 -1
  376. data/lib/rubocop/cop/style/when_then.rb +4 -2
  377. data/lib/rubocop/cop/style/while_until_modifier.rb +1 -2
  378. data/lib/rubocop/cop/style/word_array.rb +1 -2
  379. data/lib/rubocop/cop/style/yoda_condition.rb +3 -11
  380. data/lib/rubocop/cop/style/zero_length_predicate.rb +1 -2
  381. data/lib/rubocop/cop/team.rb +2 -5
  382. data/lib/rubocop/cop/util.rb +4 -10
  383. data/lib/rubocop/cop/utils/format_string.rb +1 -3
  384. data/lib/rubocop/cop/variable_force.rb +6 -15
  385. data/lib/rubocop/cop/variable_force/assignment.rb +1 -2
  386. data/lib/rubocop/cop/variable_force/branch.rb +16 -2
  387. data/lib/rubocop/cop/variable_force/reference.rb +1 -3
  388. data/lib/rubocop/cop/variable_force/scope.rb +4 -8
  389. data/lib/rubocop/cop/variable_force/variable.rb +2 -4
  390. data/lib/rubocop/cops_documentation_generator.rb +7 -21
  391. data/lib/rubocop/directive_comment.rb +5 -1
  392. data/lib/rubocop/file_finder.rb +1 -3
  393. data/lib/rubocop/formatter/disabled_config_formatter.rb +3 -8
  394. data/lib/rubocop/formatter/git_hub_actions_formatter.rb +1 -5
  395. data/lib/rubocop/formatter/html_formatter.rb +4 -10
  396. data/lib/rubocop/formatter/json_formatter.rb +1 -5
  397. data/lib/rubocop/formatter/junit_formatter.rb +23 -14
  398. data/lib/rubocop/formatter/progress_formatter.rb +1 -3
  399. data/lib/rubocop/options.rb +30 -50
  400. data/lib/rubocop/path_util.rb +1 -3
  401. data/lib/rubocop/rake_task.rb +3 -0
  402. data/lib/rubocop/remote_config.rb +4 -7
  403. data/lib/rubocop/result_cache.rb +5 -12
  404. data/lib/rubocop/rspec/cop_helper.rb +1 -1
  405. data/lib/rubocop/rspec/expect_offense.rb +4 -9
  406. data/lib/rubocop/rspec/shared_contexts.rb +8 -15
  407. data/lib/rubocop/runner.rb +7 -14
  408. data/lib/rubocop/target_finder.rb +18 -16
  409. data/lib/rubocop/target_ruby.rb +4 -8
  410. data/lib/rubocop/version.rb +1 -1
  411. metadata +16 -7
  412. data/lib/rubocop/core_ext/hash.rb +0 -20
@@ -25,9 +25,7 @@ module RuboCop
25
25
  def on_interpolation(begin_node)
26
26
  return unless begin_node.children.empty?
27
27
 
28
- add_offense(begin_node) do |corrector|
29
- corrector.remove(begin_node.loc.expression)
30
- end
28
+ add_offense(begin_node) { |corrector| corrector.remove(begin_node.loc.expression) }
31
29
  end
32
30
  end
33
31
  end
@@ -51,9 +51,7 @@ module RuboCop
51
51
  MSG = 'Do not return from an `ensure` block.'
52
52
 
53
53
  def on_ensure(node)
54
- node.body&.each_node(:return) do |return_node|
55
- add_offense(return_node)
56
- end
54
+ node.body&.each_node(:return) { |return_node| add_offense(return_node) }
57
55
  end
58
56
  end
59
57
  end
@@ -112,16 +112,13 @@ module RuboCop
112
112
  kwargs = build_kwargs(node)
113
113
  overridden_kwargs = override_by_legacy_args(kwargs, node)
114
114
 
115
- good_arguments = [
116
- str_arg, overridden_kwargs
117
- ].flatten.compact.join(', ')
115
+ good_arguments = [str_arg, overridden_kwargs].flatten.compact.join(', ')
118
116
 
119
117
  corrector.replace(arguments_range(node), good_arguments)
120
118
  end
121
119
 
122
120
  def correct_arguments?(arguments)
123
- arguments.size == 1 ||
124
- arguments.size == 2 && arguments[1].hash_type?
121
+ arguments.size == 1 || arguments.size == 2 && arguments[1].hash_type?
125
122
  end
126
123
 
127
124
  def build_kwargs(node)
@@ -157,8 +154,7 @@ module RuboCop
157
154
  def arguments_range(node)
158
155
  arguments = node.arguments
159
156
 
160
- range_between(arguments.first.source_range.begin_pos,
161
- arguments.last.source_range.end_pos)
157
+ range_between(arguments.first.source_range.begin_pos, arguments.last.source_range.end_pos)
162
158
  end
163
159
  end
164
160
  end
@@ -24,8 +24,7 @@ module RuboCop
24
24
  def on_float(node)
25
25
  value, = *node
26
26
 
27
- return unless value.infinite? ||
28
- value.zero? && /[1-9]/.match?(node.source)
27
+ return unless value.infinite? || value.zero? && /[1-9]/.match?(node.source)
29
28
 
30
29
  add_offense(node)
31
30
  end
@@ -140,8 +140,7 @@ module RuboCop
140
140
  end
141
141
 
142
142
  def format_method?(name, node)
143
- return false if node.const_receiver? &&
144
- !node.receiver.loc.name.is?(KERNEL)
143
+ return false if node.const_receiver? && !node.receiver.loc.name.is?(KERNEL)
145
144
  return false unless node.method?(name)
146
145
 
147
146
  node.arguments.size > 1 && node.first_argument.str_type?
@@ -174,11 +173,9 @@ module RuboCop
174
173
  receiver = node.receiver
175
174
 
176
175
  percent = node.method?(:%) &&
177
- (STRING_TYPES.include?(receiver.type) ||
178
- node.first_argument.array_type?)
176
+ (STRING_TYPES.include?(receiver.type) || node.first_argument.array_type?)
179
177
 
180
- return false if percent && STRING_TYPES.include?(receiver.type) &&
181
- heredoc?(node)
178
+ return false if percent && STRING_TYPES.include?(receiver.type) && heredoc?(node)
182
179
 
183
180
  percent
184
181
  end
@@ -34,8 +34,7 @@ module RuboCop
34
34
  include RangeHelp
35
35
  extend AutoCorrector
36
36
 
37
- MSG = 'Put a method call with a HEREDOC receiver on the ' \
38
- 'same line as the HEREDOC opening.'
37
+ MSG = 'Put a method call with a HEREDOC receiver on the same line as the HEREDOC opening.'
39
38
 
40
39
  def on_send(node)
41
40
  heredoc = heredoc_node_descendent_receiver(node)
@@ -73,8 +73,7 @@ module RuboCop
73
73
  end
74
74
 
75
75
  def string_literal?(node)
76
- node.str_type? ||
77
- (node.dstr_type? && node.children.all? { |c| string_literal?(c) })
76
+ node.str_type? || (node.dstr_type? && node.children.all? { |c| string_literal?(c) })
78
77
  end
79
78
 
80
79
  def string_literals?(node1, node2)
@@ -48,10 +48,8 @@ module RuboCop
48
48
  class IneffectiveAccessModifier < Base
49
49
  MSG = '`%<modifier>s` (on line %<line>d) does not make singleton ' \
50
50
  'methods %<modifier>s. Use %<alternative>s instead.'
51
- ALTERNATIVE_PRIVATE = '`private_class_method` or `private` inside a ' \
52
- '`class << self` block'
53
- ALTERNATIVE_PROTECTED = '`protected` inside a `class << self` ' \
54
- 'block'
51
+ ALTERNATIVE_PRIVATE = '`private_class_method` or `private` inside a `class << self` block'
52
+ ALTERNATIVE_PROTECTED = '`protected` inside a `class << self` block'
55
53
 
56
54
  # @!method private_class_methods(node)
57
55
  def_node_search :private_class_methods, <<~PATTERN
@@ -74,9 +72,7 @@ module RuboCop
74
72
  end
75
73
 
76
74
  def private_class_method_names(node)
77
- private_class_methods(node).to_a.flatten
78
- .select(&:basic_literal?)
79
- .map(&:value)
75
+ private_class_methods(node).to_a.flatten.select(&:basic_literal?).map(&:value)
80
76
  end
81
77
 
82
78
  def format_message(modifier)
@@ -66,8 +66,7 @@ module RuboCop
66
66
  PATTERN
67
67
 
68
68
  def on_class(node)
69
- return unless node.parent_class &&
70
- illegal_class_name?(node.parent_class)
69
+ return unless node.parent_class && illegal_class_name?(node.parent_class)
71
70
 
72
71
  message = message(node.parent_class)
73
72
 
@@ -23,23 +23,16 @@ module RuboCop
23
23
  'Use double quoted strings if you need interpolation.'
24
24
 
25
25
  def on_str(node)
26
- return unless node
27
- return if string_or_regex?(node.parent)
26
+ return if node.parent&.regexp_type?
28
27
  return unless /(?<!\\)#\{.*\}/.match?(node.source)
29
28
  return if heredoc?(node)
30
29
  return unless node.loc.begin && node.loc.end
31
30
 
32
- add_offense(node) do |corrector|
33
- autocorrect(corrector, node)
34
- end
31
+ add_offense(node) { |corrector| autocorrect(corrector, node) }
35
32
  end
36
33
 
37
34
  private
38
35
 
39
- def string_or_regex?(node)
40
- node&.dstr_type? || node&.regexp_type?
41
- end
42
-
43
36
  def autocorrect(corrector, node)
44
37
  starting_token, ending_token = if node.source.include?('"')
45
38
  ['%{', '}']
@@ -52,8 +45,7 @@ module RuboCop
52
45
  end
53
46
 
54
47
  def heredoc?(node)
55
- node.loc.is_a?(Parser::Source::Map::Heredoc) ||
56
- (node.parent && heredoc?(node.parent))
48
+ node.loc.is_a?(Parser::Source::Map::Heredoc) || (node.parent && heredoc?(node.parent))
57
49
  end
58
50
  end
59
51
  end
@@ -34,8 +34,7 @@ module RuboCop
34
34
  # interpolation should not be removed if the expanded value
35
35
  # contains a space character.
36
36
  expanded_value = autocorrected_value(final_node)
37
- return if in_array_percent_literal?(begin_node) &&
38
- /\s/.match?(expanded_value)
37
+ return if in_array_percent_literal?(begin_node) && /\s/.match?(expanded_value)
39
38
 
40
39
  add_offense(final_node) do |corrector|
41
40
  return if final_node.dstr_type? # nested, fixed in next iteration
@@ -56,8 +55,7 @@ module RuboCop
56
55
 
57
56
  def special_keyword?(node)
58
57
  # handle strings like __FILE__
59
- (node.str_type? && !node.loc.respond_to?(:begin)) ||
60
- node.source_range.is?('__LINE__')
58
+ (node.str_type? && !node.loc.respond_to?(:begin)) || node.source_range.is?('__LINE__')
61
59
  end
62
60
 
63
61
  def autocorrected_value(node)
@@ -101,8 +99,7 @@ module RuboCop
101
99
  # Does node print its own source when converted to a string?
102
100
  def prints_as_self?(node)
103
101
  node.basic_literal? ||
104
- (COMPOSITE.include?(node.type) &&
105
- node.children.all? { |child| prints_as_self?(child) })
102
+ (COMPOSITE.include?(node.type) && node.children.all? { |child| prints_as_self?(child) })
106
103
  end
107
104
 
108
105
  def space_literal?(node)
@@ -49,8 +49,7 @@ module RuboCop
49
49
  class Loop < Base
50
50
  extend AutoCorrector
51
51
 
52
- MSG = 'Use `Kernel#loop` with `break` rather than ' \
53
- '`begin/end/until`(or `while`).'
52
+ MSG = 'Use `Kernel#loop` with `break` rather than `begin/end/until`(or `while`).'
54
53
 
55
54
  def on_while_post(node)
56
55
  register_offense(node)
@@ -45,10 +45,8 @@ module RuboCop
45
45
  class MissingCopEnableDirective < Base
46
46
  include RangeHelp
47
47
 
48
- MSG = 'Re-enable %<cop>s cop with `# rubocop:enable` after ' \
49
- 'disabling it.'
50
- MSG_BOUND = 'Re-enable %<cop>s cop within %<max_range>s lines after ' \
51
- 'disabling it.'
48
+ MSG = 'Re-enable %<cop>s cop with `# rubocop:enable` after disabling it.'
49
+ MSG_BOUND = 'Re-enable %<cop>s cop within %<max_range>s lines after disabling it.'
52
50
 
53
51
  # rubocop:disable Metrics/AbcSize
54
52
  def on_new_investigation
@@ -59,9 +57,7 @@ module RuboCop
59
57
  # the case when max_range is Float::INFINITY
60
58
  next if line_range.max - line_range.min < max_range + 2
61
59
 
62
- range = source_range(processed_source.buffer,
63
- line_range.min,
64
- (0..0))
60
+ range = source_range(processed_source.buffer, line_range.min, (0..0))
65
61
 
66
62
  add_offense(range, message: message(max_range: max_range, cop: cop))
67
63
  end
@@ -53,8 +53,7 @@ module RuboCop
53
53
  singleton_method_added singleton_method_removed
54
54
  singleton_method_undefined].freeze
55
55
 
56
- CALLBACKS = (CLASS_LIFECYCLE_CALLBACKS +
57
- METHOD_LIFECYCLE_CALLBACKS).to_set.freeze
56
+ CALLBACKS = (CLASS_LIFECYCLE_CALLBACKS + METHOD_LIFECYCLE_CALLBACKS).to_set.freeze
58
57
 
59
58
  def on_def(node)
60
59
  return unless offender?(node)
@@ -21,8 +21,7 @@ module RuboCop
21
21
  # /(FOO)(BAR)/
22
22
  #
23
23
  class MixedRegexpCaptureTypes < Base
24
- MSG = 'Do not mix named captures and numbered captures ' \
25
- 'in a Regexp literal.'
24
+ MSG = 'Do not mix named captures and numbered captures in a Regexp literal.'
26
25
 
27
26
  def on_regexp(node)
28
27
  return if node.interpolation?
@@ -55,8 +55,7 @@ module RuboCop
55
55
  # end
56
56
  # end
57
57
  class NestedMethodDefinition < Base
58
- MSG = 'Method definitions must not be nested. ' \
59
- 'Use `lambda` instead.'
58
+ MSG = 'Method definitions must not be nested. Use `lambda` instead.'
60
59
 
61
60
  def on_def(node)
62
61
  subject, = *node
@@ -39,9 +39,7 @@ module RuboCop
39
39
  # if found within a percent literal expression, will cause a
40
40
  # NestedPercentLiteral violation to be emitted.
41
41
  PERCENT_LITERAL_TYPES = PreferredDelimiters::PERCENT_LITERAL_TYPES
42
- REGEXES = PERCENT_LITERAL_TYPES.map do |percent_literal|
43
- /\A#{percent_literal}\W/
44
- end.freeze
42
+ REGEXES = PERCENT_LITERAL_TYPES.map { |percent_literal| /\A#{percent_literal}\W/ }.freeze
45
43
 
46
44
  def on_array(node)
47
45
  process(node, *PERCENT_LITERAL_TYPES)
@@ -66,9 +66,7 @@ module RuboCop
66
66
  loop_variable(node.arguments) do |var_name|
67
67
  return unless var_is_required?(node.body, var_name)
68
68
 
69
- add_offense(node.send_node) do |corrector|
70
- correct_block(corrector, node.send_node)
71
- end
69
+ add_offense(node.send_node) { |corrector| correct_block(corrector, node.send_node) }
72
70
  end
73
71
  end
74
72
 
@@ -97,7 +97,7 @@ module RuboCop
97
97
 
98
98
  def handle_as_symbol(node)
99
99
  to_method_symbol(node) do |receiver, sym_node, to_method|
100
- next if receiver.nil?
100
+ next if receiver.nil? || !node.arguments.one?
101
101
 
102
102
  message = format(
103
103
  MSG,
@@ -113,8 +113,7 @@ module RuboCop
113
113
  end
114
114
 
115
115
  def correct_method(node, receiver)
116
- format(CONVERSION_METHOD_CLASS_MAPPING[node.method_name],
117
- number_object: receiver.source)
116
+ format(CONVERSION_METHOD_CLASS_MAPPING[node.method_name], number_object: receiver.source)
118
117
  end
119
118
 
120
119
  def correct_sym_method(to_method)
@@ -31,8 +31,7 @@ module RuboCop
31
31
  include FrozenStringLiteral
32
32
  extend AutoCorrector
33
33
 
34
- MSG = 'The encoding magic comment should precede all other ' \
35
- 'magic comments.'
34
+ MSG = 'The encoding magic comment should precede all other magic comments.'
36
35
 
37
36
  def on_new_investigation
38
37
  return if processed_source.buffer.source.empty?
@@ -48,9 +48,7 @@ module RuboCop
48
48
  def on_when(node)
49
49
  regexp_conditions = node.conditions.select(&:regexp_type?)
50
50
 
51
- @valid_ref = regexp_conditions.map do |condition|
52
- check_regexp(condition)
53
- end.compact.max
51
+ @valid_ref = regexp_conditions.map { |condition| check_regexp(condition) }.compact.max
54
52
  end
55
53
 
56
54
  def on_nth_ref(node)
@@ -29,9 +29,7 @@ module RuboCop
29
29
 
30
30
  range = space_range(node.first_argument.source_range, space_length)
31
31
 
32
- add_offense(range) do |corrector|
33
- corrector.remove(range)
34
- end
32
+ add_offense(range) { |corrector| corrector.remove(range) }
35
33
  end
36
34
  alias on_csend on_send
37
35
 
@@ -34,9 +34,7 @@ module RuboCop
34
34
  def on_percent_literal(node)
35
35
  return unless contains_colons_or_commas?(node)
36
36
 
37
- add_offense(node) do |corrector|
38
- autocorrect(corrector, node)
39
- end
37
+ add_offense(node) { |corrector| autocorrect(corrector, node) }
40
38
  end
41
39
 
42
40
  private
@@ -45,8 +45,7 @@ module RuboCop
45
45
  PATTERN
46
46
 
47
47
  def on_send(node)
48
- exception?(node, &check(node)) ||
49
- exception_new_with_message?(node, &check(node))
48
+ exception?(node, &check(node)) || exception_new_with_message?(node, &check(node))
50
49
  end
51
50
 
52
51
  private
@@ -21,8 +21,7 @@ module RuboCop
21
21
  #
22
22
  # 0 # just use 0 instead
23
23
  class RandOne < Base
24
- MSG = '`%<method>s` always returns `0`. ' \
25
- 'Perhaps you meant `rand(2)` or `rand`?'
24
+ MSG = '`%<method>s` always returns `0`. Perhaps you meant `rand(2)` or `rand`?'
26
25
  RESTRICT_ON_SEND = %i[rand].freeze
27
26
 
28
27
  # @!method rand_one?(node)
@@ -60,18 +60,19 @@ module RuboCop
60
60
  processed_source.buffer.source_line(range.line - 1).blank?
61
61
  end
62
62
 
63
- def comment_range_with_surrounding_space(range)
64
- if previous_line_blank?(range) &&
65
- processed_source.comment_config.comment_only_line?(range.line)
63
+ def comment_range_with_surrounding_space(directive_comment_range, line_comment_range)
64
+ if previous_line_blank?(directive_comment_range) &&
65
+ processed_source.comment_config.comment_only_line?(directive_comment_range.line) &&
66
+ directive_comment_range.begin_pos == line_comment_range.begin_pos
66
67
  # When the previous line is blank, it should be retained
67
- range_with_surrounding_space(range: range, side: :right)
68
+ range_with_surrounding_space(range: directive_comment_range, side: :right)
68
69
  else
69
70
  # Eat the entire comment, the preceding space, and the preceding
70
71
  # newline if there is one.
71
- original_begin = range.begin_pos
72
- range = range_with_surrounding_space(range: range,
73
- side: :left,
74
- newlines: true)
72
+ original_begin = directive_comment_range.begin_pos
73
+ range = range_with_surrounding_space(
74
+ range: directive_comment_range, side: :left, newlines: true
75
+ )
75
76
 
76
77
  range_with_surrounding_space(range: range,
77
78
  side: :right,
@@ -93,9 +94,7 @@ module RuboCop
93
94
 
94
95
  range = range_with_surrounding_comma(range, :right)
95
96
  # Eat following spaces up to EOL, but not the newline itself.
96
- range_with_surrounding_space(range: range,
97
- side: :right,
98
- newlines: false)
97
+ range_with_surrounding_space(range: range, side: :right, newlines: false)
99
98
  end
100
99
 
101
100
  def each_redundant_disable(cop_disabled_line_ranges, offenses,
@@ -103,13 +102,9 @@ module RuboCop
103
102
  disabled_ranges = cop_disabled_line_ranges[COP_NAME] || [0..0]
104
103
 
105
104
  cop_disabled_line_ranges.each do |cop, line_ranges|
106
- each_already_disabled(line_ranges,
107
- disabled_ranges) do |comment|
108
- yield comment, cop
109
- end
105
+ each_already_disabled(line_ranges, disabled_ranges) { |comment| yield comment, cop }
110
106
 
111
- each_line_range(line_ranges, disabled_ranges, offenses,
112
- cop, &block)
107
+ each_line_range(line_ranges, disabled_ranges, offenses, cop, &block)
113
108
  end
114
109
  end
115
110
 
@@ -119,8 +114,7 @@ module RuboCop
119
114
  comment = processed_source.comment_at_line(line_range.begin)
120
115
  next if ignore_offense?(disabled_ranges, line_range)
121
116
 
122
- redundant_cop = find_redundant(comment, offenses, cop, line_range,
123
- line_ranges[ix + 1])
117
+ redundant_cop = find_redundant(comment, offenses, cop, line_range, line_ranges[ix + 1])
124
118
  yield comment, redundant_cop if redundant_cop
125
119
  end
126
120
  end
@@ -151,8 +145,7 @@ module RuboCop
151
145
  # comment. If the disable all comment is truly redundant, we will
152
146
  # detect that when examining the comments of another cop, and we
153
147
  # get the full line range for the disable all.
154
- if (next_line_range.nil? ||
155
- line_range.last != next_line_range.first) &&
148
+ if (next_line_range.nil? || line_range.last != next_line_range.first) &&
156
149
  offenses.none? { |o| line_range.cover?(o.line) }
157
150
  'all'
158
151
  end
@@ -180,8 +173,7 @@ module RuboCop
180
173
 
181
174
  def add_offenses(redundant_cops)
182
175
  redundant_cops.each do |comment, cops|
183
- if all_disabled?(comment) ||
184
- directive_count(comment) == cops.size
176
+ if all_disabled?(comment) || directive_count(comment) == cops.size
185
177
  add_offense_for_entire_comment(comment, cops)
186
178
  else
187
179
  add_offense_for_some_cops(comment, cops)
@@ -190,14 +182,14 @@ module RuboCop
190
182
  end
191
183
 
192
184
  def add_offense_for_entire_comment(comment, cops)
193
- location = comment.loc.expression
185
+ location = DirectiveComment.new(comment).range
194
186
  cop_list = cops.sort.map { |c| describe(c) }
195
187
 
196
188
  add_offense(
197
189
  location,
198
190
  message: "Unnecessary disabling of #{cop_list.join(', ')}."
199
191
  ) do |corrector|
200
- range = comment_range_with_surrounding_space(location)
192
+ range = comment_range_with_surrounding_space(location, comment.loc.expression)
201
193
  corrector.remove(range)
202
194
  end
203
195
  end
@@ -229,8 +221,7 @@ module RuboCop
229
221
  return unless offset
230
222
 
231
223
  offset += haystack.begin_pos
232
- Parser::Source::Range.new(haystack.source_buffer, offset,
233
- offset + needle.size)
224
+ Parser::Source::Range.new(haystack.source_buffer, offset, offset + needle.size)
234
225
  end
235
226
 
236
227
  def trailing_range?(ranges, range)