rubocop 1.10.0 → 1.14.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 (487) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +15 -14
  3. data/assets/output.html.erb +1 -1
  4. data/config/default.yml +60 -3
  5. data/exe/rubocop +1 -3
  6. data/lib/rubocop.rb +6 -1
  7. data/lib/rubocop/cached_data.rb +1 -3
  8. data/lib/rubocop/cli.rb +4 -6
  9. data/lib/rubocop/cli/command/auto_genenerate_config.rb +9 -19
  10. data/lib/rubocop/cli/command/execute_runner.rb +1 -1
  11. data/lib/rubocop/cli/command/init_dotfile.rb +1 -3
  12. data/lib/rubocop/cli/command/show_cops.rb +1 -4
  13. data/lib/rubocop/cli/command/suggest_extensions.rb +3 -2
  14. data/lib/rubocop/comment_config.rb +45 -101
  15. data/lib/rubocop/config.rb +11 -26
  16. data/lib/rubocop/config_loader.rb +5 -11
  17. data/lib/rubocop/config_loader_resolver.rb +22 -14
  18. data/lib/rubocop/config_obsoletion/cop_rule.rb +1 -2
  19. data/lib/rubocop/config_store.rb +1 -2
  20. data/lib/rubocop/config_validator.rb +5 -10
  21. data/lib/rubocop/cop/autocorrect_logic.rb +3 -8
  22. data/lib/rubocop/cop/badge.rb +1 -2
  23. data/lib/rubocop/cop/base.rb +8 -6
  24. data/lib/rubocop/cop/bundler/duplicated_gem.rb +3 -3
  25. data/lib/rubocop/cop/bundler/gem_comment.rb +43 -10
  26. data/lib/rubocop/cop/bundler/gem_version.rb +99 -0
  27. data/lib/rubocop/cop/bundler/insecure_protocol_source.rb +1 -0
  28. data/lib/rubocop/cop/bundler/ordered_gems.rb +2 -4
  29. data/lib/rubocop/cop/commissioner.rb +2 -8
  30. data/lib/rubocop/cop/cop.rb +4 -18
  31. data/lib/rubocop/cop/corrector.rb +1 -4
  32. data/lib/rubocop/cop/correctors/alignment_corrector.rb +6 -12
  33. data/lib/rubocop/cop/correctors/each_to_for_corrector.rb +2 -4
  34. data/lib/rubocop/cop/correctors/for_to_each_corrector.rb +1 -2
  35. data/lib/rubocop/cop/correctors/line_break_corrector.rb +3 -6
  36. data/lib/rubocop/cop/correctors/multiline_literal_brace_corrector.rb +1 -3
  37. data/lib/rubocop/cop/correctors/ordered_gem_corrector.rb +1 -3
  38. data/lib/rubocop/cop/correctors/percent_literal_corrector.rb +2 -8
  39. data/lib/rubocop/cop/gemspec/date_assignment.rb +1 -0
  40. data/lib/rubocop/cop/gemspec/duplicated_assignment.rb +3 -2
  41. data/lib/rubocop/cop/gemspec/ordered_dependencies.rb +2 -4
  42. data/lib/rubocop/cop/gemspec/required_ruby_version.rb +2 -0
  43. data/lib/rubocop/cop/gemspec/ruby_version_globals_usage.rb +2 -0
  44. data/lib/rubocop/cop/generator.rb +3 -6
  45. data/lib/rubocop/cop/generator/configuration_injector.rb +1 -2
  46. data/lib/rubocop/cop/generator/require_file_injector.rb +2 -5
  47. data/lib/rubocop/cop/internal_affairs.rb +1 -0
  48. data/lib/rubocop/cop/internal_affairs/example_description.rb +7 -4
  49. data/lib/rubocop/cop/internal_affairs/method_name_equal.rb +3 -5
  50. data/lib/rubocop/cop/internal_affairs/node_destructuring.rb +3 -3
  51. data/lib/rubocop/cop/internal_affairs/node_matcher_directive.rb +151 -0
  52. data/lib/rubocop/cop/internal_affairs/node_type_predicate.rb +2 -3
  53. data/lib/rubocop/cop/internal_affairs/offense_location_keyword.rb +3 -2
  54. data/lib/rubocop/cop/internal_affairs/redundant_described_class_as_subject.rb +1 -0
  55. data/lib/rubocop/cop/internal_affairs/redundant_let_rubocop_config_new.rb +1 -0
  56. data/lib/rubocop/cop/internal_affairs/redundant_location_argument.rb +1 -0
  57. data/lib/rubocop/cop/internal_affairs/redundant_message_argument.rb +3 -0
  58. data/lib/rubocop/cop/internal_affairs/style_detected_api_use.rb +5 -2
  59. data/lib/rubocop/cop/internal_affairs/useless_message_assertion.rb +3 -3
  60. data/lib/rubocop/cop/layout/access_modifier_indentation.rb +12 -10
  61. data/lib/rubocop/cop/layout/argument_alignment.rb +8 -9
  62. data/lib/rubocop/cop/layout/array_alignment.rb +7 -6
  63. data/lib/rubocop/cop/layout/assignment_indentation.rb +8 -7
  64. data/lib/rubocop/cop/layout/begin_end_alignment.rb +1 -4
  65. data/lib/rubocop/cop/layout/block_alignment.rb +8 -19
  66. data/lib/rubocop/cop/layout/block_end_newline.rb +4 -8
  67. data/lib/rubocop/cop/layout/case_indentation.rb +1 -3
  68. data/lib/rubocop/cop/layout/class_structure.rb +5 -10
  69. data/lib/rubocop/cop/layout/closing_parenthesis_indentation.rb +18 -30
  70. data/lib/rubocop/cop/layout/comment_indentation.rb +17 -21
  71. data/lib/rubocop/cop/layout/def_end_alignment.rb +2 -6
  72. data/lib/rubocop/cop/layout/dot_position.rb +1 -3
  73. data/lib/rubocop/cop/layout/else_alignment.rb +10 -9
  74. data/lib/rubocop/cop/layout/empty_comment.rb +5 -12
  75. data/lib/rubocop/cop/layout/empty_line_after_guard_clause.rb +22 -8
  76. data/lib/rubocop/cop/layout/empty_line_between_defs.rb +2 -6
  77. data/lib/rubocop/cop/layout/empty_lines.rb +1 -3
  78. data/lib/rubocop/cop/layout/empty_lines_around_access_modifier.rb +8 -18
  79. data/lib/rubocop/cop/layout/empty_lines_around_exception_handling_keywords.rb +2 -8
  80. data/lib/rubocop/cop/layout/end_alignment.rb +1 -2
  81. data/lib/rubocop/cop/layout/end_of_line.rb +1 -1
  82. data/lib/rubocop/cop/layout/extra_spacing.rb +5 -9
  83. data/lib/rubocop/cop/layout/first_argument_indentation.rb +11 -5
  84. data/lib/rubocop/cop/layout/first_array_element_indentation.rb +10 -8
  85. data/lib/rubocop/cop/layout/first_array_element_line_break.rb +1 -2
  86. data/lib/rubocop/cop/layout/first_hash_element_indentation.rb +24 -20
  87. data/lib/rubocop/cop/layout/first_hash_element_line_break.rb +1 -2
  88. data/lib/rubocop/cop/layout/first_method_argument_line_break.rb +1 -2
  89. data/lib/rubocop/cop/layout/first_method_parameter_line_break.rb +1 -2
  90. data/lib/rubocop/cop/layout/first_parameter_indentation.rb +6 -5
  91. data/lib/rubocop/cop/layout/hash_alignment.rb +3 -6
  92. data/lib/rubocop/cop/layout/heredoc_argument_closing_parenthesis.rb +2 -9
  93. data/lib/rubocop/cop/layout/heredoc_indentation.rb +2 -6
  94. data/lib/rubocop/cop/layout/indentation_consistency.rb +9 -6
  95. data/lib/rubocop/cop/layout/indentation_style.rb +25 -30
  96. data/lib/rubocop/cop/layout/indentation_width.rb +21 -11
  97. data/lib/rubocop/cop/layout/initial_indentation.rb +1 -4
  98. data/lib/rubocop/cop/layout/line_length.rb +4 -15
  99. data/lib/rubocop/cop/layout/multiline_array_line_breaks.rb +1 -2
  100. data/lib/rubocop/cop/layout/multiline_block_layout.rb +7 -15
  101. data/lib/rubocop/cop/layout/multiline_hash_key_line_breaks.rb +1 -2
  102. data/lib/rubocop/cop/layout/multiline_method_argument_line_breaks.rb +1 -2
  103. data/lib/rubocop/cop/layout/multiline_method_call_indentation.rb +22 -15
  104. data/lib/rubocop/cop/layout/multiline_operation_indentation.rb +10 -5
  105. data/lib/rubocop/cop/layout/parameter_alignment.rb +6 -5
  106. data/lib/rubocop/cop/layout/redundant_line_break.rb +137 -0
  107. data/lib/rubocop/cop/layout/rescue_ensure_alignment.rb +3 -6
  108. data/lib/rubocop/cop/layout/single_line_block_chain.rb +53 -0
  109. data/lib/rubocop/cop/layout/space_after_colon.rb +1 -3
  110. data/lib/rubocop/cop/layout/space_after_method_name.rb +2 -4
  111. data/lib/rubocop/cop/layout/space_around_block_parameters.rb +6 -14
  112. data/lib/rubocop/cop/layout/space_around_equals_in_parameter_default.rb +1 -2
  113. data/lib/rubocop/cop/layout/space_around_keyword.rb +3 -6
  114. data/lib/rubocop/cop/layout/space_around_operators.rb +4 -9
  115. data/lib/rubocop/cop/layout/space_before_block_braces.rb +2 -3
  116. data/lib/rubocop/cop/layout/space_before_brackets.rb +1 -3
  117. data/lib/rubocop/cop/layout/space_before_comment.rb +1 -3
  118. data/lib/rubocop/cop/layout/space_before_first_arg.rb +5 -11
  119. data/lib/rubocop/cop/layout/space_in_lambda_literal.rb +2 -4
  120. data/lib/rubocop/cop/layout/space_inside_array_literal_brackets.rb +5 -10
  121. data/lib/rubocop/cop/layout/space_inside_array_percent_literal.rb +2 -7
  122. data/lib/rubocop/cop/layout/space_inside_block_braces.rb +6 -11
  123. data/lib/rubocop/cop/layout/space_inside_hash_literal_braces.rb +1 -2
  124. data/lib/rubocop/cop/layout/space_inside_reference_brackets.rb +1 -2
  125. data/lib/rubocop/cop/legacy/corrections_proxy.rb +2 -8
  126. data/lib/rubocop/cop/legacy/corrector.rb +1 -3
  127. data/lib/rubocop/cop/lint/ambiguous_assignment.rb +1 -6
  128. data/lib/rubocop/cop/lint/ambiguous_block_association.rb +14 -7
  129. data/lib/rubocop/cop/lint/big_decimal_new.rb +1 -0
  130. data/lib/rubocop/cop/lint/boolean_symbol.rb +2 -2
  131. data/lib/rubocop/cop/lint/constant_definition_in_block.rb +2 -0
  132. data/lib/rubocop/cop/lint/constant_resolution.rb +2 -2
  133. data/lib/rubocop/cop/lint/debugger.rb +3 -1
  134. data/lib/rubocop/cop/lint/deprecated_class_methods.rb +79 -41
  135. data/lib/rubocop/cop/lint/deprecated_constants.rb +3 -3
  136. data/lib/rubocop/cop/lint/deprecated_open_ssl_constant.rb +3 -5
  137. data/lib/rubocop/cop/lint/duplicate_branch.rb +2 -3
  138. data/lib/rubocop/cop/lint/duplicate_hash_key.rb +1 -3
  139. data/lib/rubocop/cop/lint/duplicate_methods.rb +6 -7
  140. data/lib/rubocop/cop/lint/duplicate_require.rb +1 -0
  141. data/lib/rubocop/cop/lint/each_with_object_argument.rb +1 -0
  142. data/lib/rubocop/cop/lint/else_layout.rb +1 -3
  143. data/lib/rubocop/cop/lint/empty_ensure.rb +1 -3
  144. data/lib/rubocop/cop/lint/empty_file.rb +1 -3
  145. data/lib/rubocop/cop/lint/empty_interpolation.rb +1 -3
  146. data/lib/rubocop/cop/lint/ensure_return.rb +1 -3
  147. data/lib/rubocop/cop/lint/erb_new_arguments.rb +4 -7
  148. data/lib/rubocop/cop/lint/float_out_of_range.rb +1 -2
  149. data/lib/rubocop/cop/lint/format_parameter_mismatch.rb +4 -6
  150. data/lib/rubocop/cop/lint/hash_compare_by_identity.rb +1 -0
  151. data/lib/rubocop/cop/lint/heredoc_method_call_position.rb +1 -2
  152. data/lib/rubocop/cop/lint/implicit_string_concatenation.rb +1 -2
  153. data/lib/rubocop/cop/lint/ineffective_access_modifier.rb +4 -7
  154. data/lib/rubocop/cop/lint/inherit_exception.rb +2 -2
  155. data/lib/rubocop/cop/lint/interpolation_check.rb +3 -11
  156. data/lib/rubocop/cop/lint/literal_in_interpolation.rb +3 -6
  157. data/lib/rubocop/cop/lint/loop.rb +1 -2
  158. data/lib/rubocop/cop/lint/missing_cop_enable_directive.rb +3 -7
  159. data/lib/rubocop/cop/lint/missing_super.rb +1 -2
  160. data/lib/rubocop/cop/lint/mixed_regexp_capture_types.rb +1 -2
  161. data/lib/rubocop/cop/lint/multiple_comparison.rb +1 -0
  162. data/lib/rubocop/cop/lint/nested_method_definition.rb +4 -2
  163. data/lib/rubocop/cop/lint/nested_percent_literal.rb +1 -3
  164. data/lib/rubocop/cop/lint/next_without_accumulator.rb +1 -0
  165. data/lib/rubocop/cop/lint/non_deterministic_require_order.rb +8 -3
  166. data/lib/rubocop/cop/lint/non_local_exit_from_iterator.rb +3 -0
  167. data/lib/rubocop/cop/lint/number_conversion.rb +13 -5
  168. data/lib/rubocop/cop/lint/ordered_magic_comments.rb +1 -2
  169. data/lib/rubocop/cop/lint/out_of_range_regexp_ref.rb +1 -3
  170. data/lib/rubocop/cop/lint/parentheses_as_grouped_expression.rb +1 -3
  171. data/lib/rubocop/cop/lint/percent_symbol_array.rb +1 -3
  172. data/lib/rubocop/cop/lint/raise_exception.rb +3 -2
  173. data/lib/rubocop/cop/lint/rand_one.rb +2 -2
  174. data/lib/rubocop/cop/lint/redundant_cop_disable_directive.rb +9 -22
  175. data/lib/rubocop/cop/lint/redundant_require_statement.rb +1 -0
  176. data/lib/rubocop/cop/lint/redundant_safe_navigation.rb +2 -3
  177. data/lib/rubocop/cop/lint/redundant_splat_expansion.rb +5 -7
  178. data/lib/rubocop/cop/lint/redundant_string_coercion.rb +2 -2
  179. data/lib/rubocop/cop/lint/redundant_with_index.rb +2 -4
  180. data/lib/rubocop/cop/lint/redundant_with_object.rb +2 -4
  181. data/lib/rubocop/cop/lint/regexp_as_condition.rb +1 -3
  182. data/lib/rubocop/cop/lint/require_parentheses.rb +2 -4
  183. data/lib/rubocop/cop/lint/rescue_exception.rb +1 -2
  184. data/lib/rubocop/cop/lint/rescue_type.rb +2 -7
  185. data/lib/rubocop/cop/lint/return_in_void_context.rb +1 -2
  186. data/lib/rubocop/cop/lint/safe_navigation_chain.rb +2 -2
  187. data/lib/rubocop/cop/lint/safe_navigation_consistency.rb +4 -10
  188. data/lib/rubocop/cop/lint/safe_navigation_with_empty.rb +2 -2
  189. data/lib/rubocop/cop/lint/send_with_mixin_argument.rb +3 -7
  190. data/lib/rubocop/cop/lint/shadowed_argument.rb +5 -11
  191. data/lib/rubocop/cop/lint/shadowed_exception.rb +7 -8
  192. data/lib/rubocop/cop/lint/shadowing_outer_local_variable.rb +1 -0
  193. data/lib/rubocop/cop/lint/struct_new_override.rb +2 -2
  194. data/lib/rubocop/cop/lint/suppressed_exception.rb +44 -1
  195. data/lib/rubocop/cop/lint/symbol_conversion.rb +91 -6
  196. data/lib/rubocop/cop/lint/syntax.rb +1 -3
  197. data/lib/rubocop/cop/lint/to_enum_arguments.rb +3 -0
  198. data/lib/rubocop/cop/lint/to_json.rb +1 -2
  199. data/lib/rubocop/cop/lint/trailing_comma_in_attribute_declaration.rb +1 -3
  200. data/lib/rubocop/cop/lint/underscore_prefixed_variable_name.rb +1 -3
  201. data/lib/rubocop/cop/lint/unified_integer.rb +1 -0
  202. data/lib/rubocop/cop/lint/unmodified_reduce_accumulator.rb +5 -0
  203. data/lib/rubocop/cop/lint/unreachable_code.rb +3 -5
  204. data/lib/rubocop/cop/lint/unreachable_loop.rb +15 -7
  205. data/lib/rubocop/cop/lint/unused_block_argument.rb +9 -7
  206. data/lib/rubocop/cop/lint/unused_method_argument.rb +2 -2
  207. data/lib/rubocop/cop/lint/uri_escape_unescape.rb +1 -0
  208. data/lib/rubocop/cop/lint/useless_access_modifier.rb +6 -4
  209. data/lib/rubocop/cop/lint/useless_assignment.rb +4 -9
  210. data/lib/rubocop/cop/lint/useless_setter_call.rb +2 -3
  211. data/lib/rubocop/cop/lint/useless_times.rb +3 -0
  212. data/lib/rubocop/cop/lint/void.rb +4 -11
  213. data/lib/rubocop/cop/message_annotator.rb +1 -3
  214. data/lib/rubocop/cop/metrics/block_nesting.rb +2 -7
  215. data/lib/rubocop/cop/metrics/class_length.rb +1 -3
  216. data/lib/rubocop/cop/metrics/cyclomatic_complexity.rb +1 -2
  217. data/lib/rubocop/cop/metrics/module_length.rb +3 -6
  218. data/lib/rubocop/cop/metrics/parameter_lists.rb +3 -5
  219. data/lib/rubocop/cop/metrics/perceived_complexity.rb +1 -2
  220. data/lib/rubocop/cop/metrics/utils/abc_size_calculator.rb +4 -7
  221. data/lib/rubocop/cop/metrics/utils/code_length_calculator.rb +6 -4
  222. data/lib/rubocop/cop/metrics/utils/repeated_attribute_discount.rb +4 -7
  223. data/lib/rubocop/cop/migration/department_name.rb +3 -7
  224. data/lib/rubocop/cop/mixin/alignment.rb +12 -7
  225. data/lib/rubocop/cop/mixin/check_line_breakable.rb +1 -1
  226. data/lib/rubocop/cop/mixin/code_length.rb +1 -3
  227. data/lib/rubocop/cop/mixin/comments_help.rb +5 -1
  228. data/lib/rubocop/cop/mixin/configurable_enforced_style.rb +2 -2
  229. data/lib/rubocop/cop/mixin/configurable_formatting.rb +3 -8
  230. data/lib/rubocop/cop/mixin/def_node.rb +3 -5
  231. data/lib/rubocop/cop/mixin/documentation_comment.rb +3 -6
  232. data/lib/rubocop/cop/mixin/empty_lines_around_body.rb +6 -7
  233. data/lib/rubocop/cop/mixin/empty_parameter.rb +2 -3
  234. data/lib/rubocop/cop/mixin/end_keyword_alignment.rb +1 -3
  235. data/lib/rubocop/cop/mixin/enforce_superclass.rb +4 -6
  236. data/lib/rubocop/cop/mixin/first_element_line_break.rb +1 -3
  237. data/lib/rubocop/cop/mixin/frozen_string_literal.rb +3 -9
  238. data/lib/rubocop/cop/mixin/gem_declaration.rb +13 -0
  239. data/lib/rubocop/cop/mixin/hash_alignment_styles.rb +3 -6
  240. data/lib/rubocop/cop/mixin/hash_transform_method.rb +8 -22
  241. data/lib/rubocop/cop/mixin/interpolation.rb +1 -3
  242. data/lib/rubocop/cop/mixin/line_length_help.rb +13 -10
  243. data/lib/rubocop/cop/mixin/match_range.rb +2 -5
  244. data/lib/rubocop/cop/mixin/method_complexity.rb +2 -3
  245. data/lib/rubocop/cop/mixin/method_preference.rb +1 -2
  246. data/lib/rubocop/cop/mixin/multiline_element_indentation.rb +4 -3
  247. data/lib/rubocop/cop/mixin/multiline_element_line_breaks.rb +1 -3
  248. data/lib/rubocop/cop/mixin/multiline_expression_indentation.rb +11 -40
  249. data/lib/rubocop/cop/mixin/multiline_literal_brace_layout.rb +1 -2
  250. data/lib/rubocop/cop/mixin/negative_conditional.rb +4 -2
  251. data/lib/rubocop/cop/mixin/ordered_gem_node.rb +1 -4
  252. data/lib/rubocop/cop/mixin/percent_array.rb +1 -3
  253. data/lib/rubocop/cop/mixin/percent_literal.rb +0 -6
  254. data/lib/rubocop/cop/mixin/preceding_following_alignment.rb +5 -11
  255. data/lib/rubocop/cop/mixin/preferred_delimiters.rb +4 -7
  256. data/lib/rubocop/cop/mixin/range_help.rb +10 -13
  257. data/lib/rubocop/cop/mixin/rational_literal.rb +1 -0
  258. data/lib/rubocop/cop/mixin/rescue_node.rb +2 -6
  259. data/lib/rubocop/cop/mixin/safe_assignment.rb +6 -2
  260. data/lib/rubocop/cop/mixin/space_after_punctuation.rb +2 -4
  261. data/lib/rubocop/cop/mixin/space_before_punctuation.rb +1 -2
  262. data/lib/rubocop/cop/mixin/statement_modifier.rb +1 -3
  263. data/lib/rubocop/cop/mixin/string_literals_help.rb +1 -1
  264. data/lib/rubocop/cop/mixin/trailing_body.rb +1 -2
  265. data/lib/rubocop/cop/mixin/trailing_comma.rb +1 -2
  266. data/lib/rubocop/cop/mixin/uncommunicative_name.rb +7 -13
  267. data/lib/rubocop/cop/mixin/unused_argument.rb +1 -3
  268. data/lib/rubocop/cop/mixin/visibility_help.rb +1 -0
  269. data/lib/rubocop/cop/naming/ascii_identifiers.rb +2 -4
  270. data/lib/rubocop/cop/naming/binary_operator_parameter_name.rb +2 -2
  271. data/lib/rubocop/cop/naming/constant_name.rb +2 -0
  272. data/lib/rubocop/cop/naming/file_name.rb +7 -16
  273. data/lib/rubocop/cop/naming/memoized_instance_variable_name.rb +8 -3
  274. data/lib/rubocop/cop/naming/method_name.rb +4 -2
  275. data/lib/rubocop/cop/naming/predicate_name.rb +2 -2
  276. data/lib/rubocop/cop/naming/rescued_exceptions_variable_name.rb +10 -0
  277. data/lib/rubocop/cop/offense.rb +3 -8
  278. data/lib/rubocop/cop/registry.rb +12 -11
  279. data/lib/rubocop/cop/security/eval.rb +1 -0
  280. data/lib/rubocop/cop/security/json_load.rb +1 -0
  281. data/lib/rubocop/cop/security/marshal_load.rb +1 -0
  282. data/lib/rubocop/cop/security/open.rb +1 -0
  283. data/lib/rubocop/cop/security/yaml_load.rb +1 -0
  284. data/lib/rubocop/cop/style/access_modifier_declarations.rb +4 -5
  285. data/lib/rubocop/cop/style/accessor_grouping.rb +1 -3
  286. data/lib/rubocop/cop/style/alias.rb +6 -12
  287. data/lib/rubocop/cop/style/and_or.rb +3 -1
  288. data/lib/rubocop/cop/style/arguments_forwarding.rb +4 -3
  289. data/lib/rubocop/cop/style/array_coercion.rb +2 -0
  290. data/lib/rubocop/cop/style/array_join.rb +1 -0
  291. data/lib/rubocop/cop/style/ascii_comments.rb +1 -2
  292. data/lib/rubocop/cop/style/attr.rb +2 -3
  293. data/lib/rubocop/cop/style/auto_resource_cleanup.rb +2 -5
  294. data/lib/rubocop/cop/style/bisected_attr_accessor.rb +59 -71
  295. data/lib/rubocop/cop/style/bisected_attr_accessor/macro.rb +60 -0
  296. data/lib/rubocop/cop/style/case_equality.rb +2 -1
  297. data/lib/rubocop/cop/style/case_like_if.rb +16 -6
  298. data/lib/rubocop/cop/style/character_literal.rb +2 -4
  299. data/lib/rubocop/cop/style/class_and_module_children.rb +6 -9
  300. data/lib/rubocop/cop/style/class_equality_comparison.rb +3 -0
  301. data/lib/rubocop/cop/style/class_methods.rb +1 -3
  302. data/lib/rubocop/cop/style/collection_compact.rb +3 -3
  303. data/lib/rubocop/cop/style/colon_method_call.rb +2 -3
  304. data/lib/rubocop/cop/style/combinable_loops.rb +3 -2
  305. data/lib/rubocop/cop/style/command_literal.rb +4 -9
  306. data/lib/rubocop/cop/style/comment_annotation.rb +3 -6
  307. data/lib/rubocop/cop/style/commented_keyword.rb +7 -13
  308. data/lib/rubocop/cop/style/conditional_assignment.rb +12 -24
  309. data/lib/rubocop/cop/style/constant_visibility.rb +1 -0
  310. data/lib/rubocop/cop/style/copyright.rb +3 -6
  311. data/lib/rubocop/cop/style/date_time.rb +5 -5
  312. data/lib/rubocop/cop/style/def_with_parentheses.rb +1 -2
  313. data/lib/rubocop/cop/style/dir.rb +1 -0
  314. data/lib/rubocop/cop/style/disable_cops_within_source_code_directive.rb +2 -2
  315. data/lib/rubocop/cop/style/documentation.rb +30 -3
  316. data/lib/rubocop/cop/style/documentation_method.rb +1 -0
  317. data/lib/rubocop/cop/style/double_negation.rb +1 -0
  318. data/lib/rubocop/cop/style/each_for_simple_loop.rb +2 -2
  319. data/lib/rubocop/cop/style/each_with_object.rb +1 -0
  320. data/lib/rubocop/cop/style/empty_case_condition.rb +2 -7
  321. data/lib/rubocop/cop/style/empty_else.rb +3 -9
  322. data/lib/rubocop/cop/style/empty_literal.rb +13 -8
  323. data/lib/rubocop/cop/style/empty_method.rb +3 -7
  324. data/lib/rubocop/cop/style/end_block.rb +1 -2
  325. data/lib/rubocop/cop/style/endless_method.rb +2 -3
  326. data/lib/rubocop/cop/style/eval_with_location.rb +5 -5
  327. data/lib/rubocop/cop/style/even_odd.rb +1 -0
  328. data/lib/rubocop/cop/style/expand_path_arguments.rb +4 -3
  329. data/lib/rubocop/cop/style/explicit_block_argument.rb +2 -4
  330. data/lib/rubocop/cop/style/float_division.rb +4 -0
  331. data/lib/rubocop/cop/style/format_string.rb +2 -0
  332. data/lib/rubocop/cop/style/format_string_token.rb +2 -4
  333. data/lib/rubocop/cop/style/frozen_string_literal_comment.rb +3 -11
  334. data/lib/rubocop/cop/style/global_std_stream.rb +1 -0
  335. data/lib/rubocop/cop/style/guard_clause.rb +3 -7
  336. data/lib/rubocop/cop/style/hash_conversion.rb +57 -5
  337. data/lib/rubocop/cop/style/hash_each_methods.rb +2 -2
  338. data/lib/rubocop/cop/style/hash_except.rb +1 -0
  339. data/lib/rubocop/cop/style/hash_like_case.rb +2 -2
  340. data/lib/rubocop/cop/style/hash_syntax.rb +20 -24
  341. data/lib/rubocop/cop/style/hash_transform_keys.rb +4 -0
  342. data/lib/rubocop/cop/style/hash_transform_values.rb +4 -0
  343. data/lib/rubocop/cop/style/identical_conditional_branches.rb +1 -3
  344. data/lib/rubocop/cop/style/if_unless_modifier.rb +40 -13
  345. data/lib/rubocop/cop/style/if_with_boolean_literal_branches.rb +2 -0
  346. data/lib/rubocop/cop/style/implicit_runtime_error.rb +1 -0
  347. data/lib/rubocop/cop/style/infinite_loop.rb +2 -5
  348. data/lib/rubocop/cop/style/inverse_methods.rb +5 -7
  349. data/lib/rubocop/cop/style/ip_addresses.rb +1 -2
  350. data/lib/rubocop/cop/style/lambda.rb +2 -4
  351. data/lib/rubocop/cop/style/lambda_call.rb +1 -2
  352. data/lib/rubocop/cop/style/line_end_concatenation.rb +5 -12
  353. data/lib/rubocop/cop/style/method_call_with_args_parentheses.rb +47 -3
  354. data/lib/rubocop/cop/style/method_call_with_args_parentheses/omit_parentheses.rb +26 -16
  355. data/lib/rubocop/cop/style/method_call_without_args_parentheses.rb +1 -2
  356. data/lib/rubocop/cop/style/method_called_on_do_end_block.rb +2 -4
  357. data/lib/rubocop/cop/style/method_def_parentheses.rb +4 -8
  358. data/lib/rubocop/cop/style/min_max.rb +2 -2
  359. data/lib/rubocop/cop/style/missing_else.rb +2 -4
  360. data/lib/rubocop/cop/style/missing_respond_to_missing.rb +1 -2
  361. data/lib/rubocop/cop/style/mixin_grouping.rb +4 -10
  362. data/lib/rubocop/cop/style/mixin_usage.rb +3 -2
  363. data/lib/rubocop/cop/style/module_function.rb +8 -6
  364. data/lib/rubocop/cop/style/multiline_block_chain.rb +1 -2
  365. data/lib/rubocop/cop/style/multiline_method_signature.rb +11 -6
  366. data/lib/rubocop/cop/style/multiline_ternary_operator.rb +1 -2
  367. data/lib/rubocop/cop/style/multiple_comparison.rb +22 -5
  368. data/lib/rubocop/cop/style/mutable_constant.rb +7 -10
  369. data/lib/rubocop/cop/style/negated_if.rb +1 -2
  370. data/lib/rubocop/cop/style/negated_if_else_condition.rb +24 -2
  371. data/lib/rubocop/cop/style/negated_unless.rb +1 -2
  372. data/lib/rubocop/cop/style/nested_modifier.rb +3 -7
  373. data/lib/rubocop/cop/style/nested_ternary_operator.rb +2 -3
  374. data/lib/rubocop/cop/style/next.rb +4 -9
  375. data/lib/rubocop/cop/style/nil_comparison.rb +3 -0
  376. data/lib/rubocop/cop/style/nil_lambda.rb +1 -0
  377. data/lib/rubocop/cop/style/non_nil_check.rb +9 -5
  378. data/lib/rubocop/cop/style/numeric_literals.rb +3 -11
  379. data/lib/rubocop/cop/style/numeric_predicate.rb +5 -7
  380. data/lib/rubocop/cop/style/one_line_conditional.rb +1 -2
  381. data/lib/rubocop/cop/style/option_hash.rb +2 -3
  382. data/lib/rubocop/cop/style/optional_arguments.rb +2 -5
  383. data/lib/rubocop/cop/style/or_assignment.rb +4 -6
  384. data/lib/rubocop/cop/style/parallel_assignment.rb +12 -9
  385. data/lib/rubocop/cop/style/parentheses_around_condition.rb +1 -0
  386. data/lib/rubocop/cop/style/percent_literal_delimiters.rb +1 -3
  387. data/lib/rubocop/cop/style/percent_q_literals.rb +1 -2
  388. data/lib/rubocop/cop/style/perl_backrefs.rb +2 -9
  389. data/lib/rubocop/cop/style/preferred_hash_methods.rb +1 -4
  390. data/lib/rubocop/cop/style/proc.rb +2 -2
  391. data/lib/rubocop/cop/style/raise_args.rb +4 -8
  392. data/lib/rubocop/cop/style/random_with_offset.rb +8 -8
  393. data/lib/rubocop/cop/style/redundant_argument.rb +2 -11
  394. data/lib/rubocop/cop/style/redundant_assignment.rb +2 -3
  395. data/lib/rubocop/cop/style/redundant_begin.rb +47 -7
  396. data/lib/rubocop/cop/style/redundant_capital_w.rb +1 -2
  397. data/lib/rubocop/cop/style/redundant_condition.rb +2 -5
  398. data/lib/rubocop/cop/style/redundant_conditional.rb +5 -6
  399. data/lib/rubocop/cop/style/redundant_exception.rb +5 -6
  400. data/lib/rubocop/cop/style/redundant_fetch_block.rb +2 -0
  401. data/lib/rubocop/cop/style/redundant_file_extension_in_require.rb +2 -1
  402. data/lib/rubocop/cop/style/redundant_freeze.rb +2 -2
  403. data/lib/rubocop/cop/style/redundant_interpolation.rb +1 -2
  404. data/lib/rubocop/cop/style/redundant_parentheses.rb +21 -20
  405. data/lib/rubocop/cop/style/redundant_percent_q.rb +1 -2
  406. data/lib/rubocop/cop/style/redundant_regexp_escape.rb +1 -4
  407. data/lib/rubocop/cop/style/redundant_return.rb +6 -4
  408. data/lib/rubocop/cop/style/redundant_self.rb +9 -9
  409. data/lib/rubocop/cop/style/redundant_self_assignment.rb +4 -2
  410. data/lib/rubocop/cop/style/redundant_sort.rb +3 -5
  411. data/lib/rubocop/cop/style/redundant_sort_by.rb +1 -0
  412. data/lib/rubocop/cop/style/regexp_literal.rb +4 -8
  413. data/lib/rubocop/cop/style/rescue_modifier.rb +21 -14
  414. data/lib/rubocop/cop/style/rescue_standard_error.rb +5 -7
  415. data/lib/rubocop/cop/style/return_nil.rb +7 -2
  416. data/lib/rubocop/cop/style/safe_navigation.rb +12 -21
  417. data/lib/rubocop/cop/style/sample.rb +1 -0
  418. data/lib/rubocop/cop/style/send.rb +1 -2
  419. data/lib/rubocop/cop/style/signal_exception.rb +6 -7
  420. data/lib/rubocop/cop/style/single_argument_dig.rb +2 -2
  421. data/lib/rubocop/cop/style/single_line_block_params.rb +2 -5
  422. data/lib/rubocop/cop/style/single_line_methods.rb +21 -4
  423. data/lib/rubocop/cop/style/slicing_with_range.rb +1 -0
  424. data/lib/rubocop/cop/style/sole_nested_conditional.rb +31 -7
  425. data/lib/rubocop/cop/style/special_global_vars.rb +6 -18
  426. data/lib/rubocop/cop/style/stabby_lambda_parentheses.rb +1 -2
  427. data/lib/rubocop/cop/style/stderr_puts.rb +3 -6
  428. data/lib/rubocop/cop/style/string_chars.rb +39 -0
  429. data/lib/rubocop/cop/style/string_concatenation.rb +9 -10
  430. data/lib/rubocop/cop/style/string_hash_keys.rb +2 -0
  431. data/lib/rubocop/cop/style/string_literals.rb +2 -5
  432. data/lib/rubocop/cop/style/strip.rb +1 -0
  433. data/lib/rubocop/cop/style/struct_inheritance.rb +11 -0
  434. data/lib/rubocop/cop/style/symbol_literal.rb +1 -3
  435. data/lib/rubocop/cop/style/symbol_proc.rb +29 -10
  436. data/lib/rubocop/cop/style/ternary_parentheses.rb +4 -6
  437. data/lib/rubocop/cop/style/trailing_body_on_method_definition.rb +6 -2
  438. data/lib/rubocop/cop/style/trailing_comma_in_block_args.rb +2 -6
  439. data/lib/rubocop/cop/style/trailing_method_end_statement.rb +3 -6
  440. data/lib/rubocop/cop/style/trailing_underscore_variable.rb +4 -10
  441. data/lib/rubocop/cop/style/trivial_accessors.rb +3 -4
  442. data/lib/rubocop/cop/style/unless_else.rb +1 -2
  443. data/lib/rubocop/cop/style/unless_logical_operators.rb +105 -0
  444. data/lib/rubocop/cop/style/unpack_first.rb +1 -0
  445. data/lib/rubocop/cop/style/variable_interpolation.rb +1 -1
  446. data/lib/rubocop/cop/style/when_then.rb +1 -3
  447. data/lib/rubocop/cop/style/while_until_modifier.rb +1 -2
  448. data/lib/rubocop/cop/style/word_array.rb +1 -2
  449. data/lib/rubocop/cop/style/yoda_condition.rb +4 -11
  450. data/lib/rubocop/cop/style/zero_length_predicate.rb +6 -2
  451. data/lib/rubocop/cop/team.rb +2 -5
  452. data/lib/rubocop/cop/util.rb +8 -11
  453. data/lib/rubocop/cop/utils/format_string.rb +1 -3
  454. data/lib/rubocop/cop/variable_force.rb +6 -15
  455. data/lib/rubocop/cop/variable_force/assignment.rb +1 -2
  456. data/lib/rubocop/cop/variable_force/branch.rb +16 -2
  457. data/lib/rubocop/cop/variable_force/reference.rb +1 -3
  458. data/lib/rubocop/cop/variable_force/scope.rb +4 -8
  459. data/lib/rubocop/cop/variable_force/variable.rb +2 -4
  460. data/lib/rubocop/cops_documentation_generator.rb +7 -21
  461. data/lib/rubocop/directive_comment.rb +69 -9
  462. data/lib/rubocop/ext/regexp_parser.rb +3 -6
  463. data/lib/rubocop/file_finder.rb +1 -3
  464. data/lib/rubocop/formatter/clang_style_formatter.rb +4 -2
  465. data/lib/rubocop/formatter/disabled_config_formatter.rb +3 -8
  466. data/lib/rubocop/formatter/git_hub_actions_formatter.rb +1 -5
  467. data/lib/rubocop/formatter/html_formatter.rb +4 -10
  468. data/lib/rubocop/formatter/json_formatter.rb +1 -5
  469. data/lib/rubocop/formatter/junit_formatter.rb +3 -9
  470. data/lib/rubocop/formatter/progress_formatter.rb +1 -3
  471. data/lib/rubocop/formatter/tap_formatter.rb +4 -2
  472. data/lib/rubocop/magic_comment.rb +1 -1
  473. data/lib/rubocop/name_similarity.rb +1 -1
  474. data/lib/rubocop/options.rb +27 -41
  475. data/lib/rubocop/path_util.rb +1 -3
  476. data/lib/rubocop/rake_task.rb +3 -0
  477. data/lib/rubocop/remote_config.rb +4 -7
  478. data/lib/rubocop/result_cache.rb +5 -12
  479. data/lib/rubocop/rspec/cop_helper.rb +1 -1
  480. data/lib/rubocop/rspec/expect_offense.rb +4 -9
  481. data/lib/rubocop/rspec/shared_contexts.rb +8 -15
  482. data/lib/rubocop/runner.rb +7 -14
  483. data/lib/rubocop/target_finder.rb +19 -16
  484. data/lib/rubocop/target_ruby.rb +25 -21
  485. data/lib/rubocop/version.rb +1 -1
  486. metadata +18 -11
  487. data/lib/rubocop/core_ext/hash.rb +0 -20
@@ -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?
@@ -25,6 +25,7 @@ module RuboCop
25
25
  SET_OPERATION_OPERATORS = %i[& | ^].freeze
26
26
  RESTRICT_ON_SEND = COMPARISON_METHODS
27
27
 
28
+ # @!method multiple_compare?(node)
28
29
  def_node_matcher :multiple_compare?, <<~PATTERN
29
30
  (send (send _ {:< :> :<= :>=} $_) {:#{COMPARISON_METHODS.join(' :')}} _)
30
31
  PATTERN
@@ -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
@@ -81,14 +80,17 @@ module RuboCop
81
80
  class_or_module_or_struct_new_call?(child)
82
81
  end
83
82
 
83
+ # @!method eval_call?(node)
84
84
  def_node_matcher :eval_call?, <<~PATTERN
85
85
  (block (send _ {:instance_eval :class_eval :module_eval} ...) ...)
86
86
  PATTERN
87
87
 
88
+ # @!method exec_call?(node)
88
89
  def_node_matcher :exec_call?, <<~PATTERN
89
90
  (block (send _ {:instance_exec :class_exec :module_exec} ...) ...)
90
91
  PATTERN
91
92
 
93
+ # @!method class_or_module_or_struct_new_call?(node)
92
94
  def_node_matcher :class_or_module_or_struct_new_call?, <<~PATTERN
93
95
  (block (send (const {nil? cbase} {:Class :Module :Struct}) :new ...) ...)
94
96
  PATTERN
@@ -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)
@@ -25,6 +25,7 @@ module RuboCop
25
25
  class NextWithoutAccumulator < Base
26
26
  MSG = 'Use `next` with an accumulator argument in a `reduce`.'
27
27
 
28
+ # @!method on_body_of_reduce(node)
28
29
  def_node_matcher :on_body_of_reduce, <<~PATTERN
29
30
  (block (send _recv {:reduce :inject} !sym) _blockargs $(begin ...))
30
31
  PATTERN
@@ -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
 
@@ -129,32 +127,39 @@ module RuboCop
129
127
  unsorted_dir_glob_pass?(node) || unsorted_dir_each_pass?(node)
130
128
  end
131
129
 
130
+ # @!method unsorted_dir_block?(node)
132
131
  def_node_matcher :unsorted_dir_block?, <<~PATTERN
133
132
  (send (const {nil? cbase} :Dir) :glob ...)
134
133
  PATTERN
135
134
 
135
+ # @!method unsorted_dir_each?(node)
136
136
  def_node_matcher :unsorted_dir_each?, <<~PATTERN
137
137
  (send (send (const {nil? cbase} :Dir) {:[] :glob} ...) :each)
138
138
  PATTERN
139
139
 
140
+ # @!method method_require?(node)
140
141
  def_node_matcher :method_require?, <<~PATTERN
141
142
  (block-pass (send nil? :method (sym :require)))
142
143
  PATTERN
143
144
 
145
+ # @!method unsorted_dir_glob_pass?(node)
144
146
  def_node_matcher :unsorted_dir_glob_pass?, <<~PATTERN
145
147
  (send (const {nil? cbase} :Dir) :glob ...
146
148
  (block-pass (send nil? :method (sym :require))))
147
149
  PATTERN
148
150
 
151
+ # @!method unsorted_dir_each_pass?(node)
149
152
  def_node_matcher :unsorted_dir_each_pass?, <<~PATTERN
150
153
  (send (send (const {nil? cbase} :Dir) {:[] :glob} ...) :each
151
154
  (block-pass (send nil? :method (sym :require))))
152
155
  PATTERN
153
156
 
157
+ # @!method loop_variable(node)
154
158
  def_node_matcher :loop_variable, <<~PATTERN
155
159
  (args (arg $_))
156
160
  PATTERN
157
161
 
162
+ # @!method var_is_required?(node, name)
158
163
  def_node_search :var_is_required?, <<~PATTERN
159
164
  (send nil? :require (lvar %1))
160
165
  PATTERN
@@ -73,7 +73,10 @@ module RuboCop
73
73
  !return_node.children.empty?
74
74
  end
75
75
 
76
+ # @!method chained_send?(node)
76
77
  def_node_matcher :chained_send?, '(send !nil? ...)'
78
+
79
+ # @!method define_method?(node)
77
80
  def_node_matcher :define_method?, <<~PATTERN
78
81
  (send _ {:define_method :define_singleton_method} _)
79
82
  PATTERN
@@ -58,14 +58,16 @@ module RuboCop
58
58
  }.freeze
59
59
  MSG = 'Replace unsafe number conversion with number '\
60
60
  'class parsing, instead of using '\
61
- '%<current>s, use stricter '\
62
- '%<corrected_method>s.'
61
+ '`%<current>s`, use stricter '\
62
+ '`%<corrected_method>s`.'
63
63
  METHODS = CONVERSION_METHOD_CLASS_MAPPING.keys.map(&:inspect).join(' ')
64
64
 
65
+ # @!method to_method(node)
65
66
  def_node_matcher :to_method, <<~PATTERN
66
67
  (send $_ ${#{METHODS}})
67
68
  PATTERN
68
69
 
70
+ # @!method to_method_symbol(node)
69
71
  def_node_matcher :to_method_symbol, <<~PATTERN
70
72
  {(send _ $_ ${(sym ${#{METHODS}})} ...)
71
73
  (send _ $_ ${(block_pass (sym ${#{METHODS}}))} ...)}
@@ -95,7 +97,7 @@ module RuboCop
95
97
 
96
98
  def handle_as_symbol(node)
97
99
  to_method_symbol(node) do |receiver, sym_node, to_method|
98
- next if receiver.nil?
100
+ next if receiver.nil? || !node.arguments.one?
99
101
 
100
102
  message = format(
101
103
  MSG,
@@ -103,14 +105,15 @@ module RuboCop
103
105
  corrected_method: correct_sym_method(to_method)
104
106
  )
105
107
  add_offense(node, message: message) do |corrector|
108
+ remove_parentheses(corrector, node) if node.parenthesized?
109
+
106
110
  corrector.replace(sym_node, correct_sym_method(to_method))
107
111
  end
108
112
  end
109
113
  end
110
114
 
111
115
  def correct_method(node, receiver)
112
- format(CONVERSION_METHOD_CLASS_MAPPING[node.method_name],
113
- number_object: receiver.source)
116
+ format(CONVERSION_METHOD_CLASS_MAPPING[node.method_name], number_object: receiver.source)
114
117
  end
115
118
 
116
119
  def correct_sym_method(to_method)
@@ -118,6 +121,11 @@ module RuboCop
118
121
  "{ |i| #{body} }"
119
122
  end
120
123
 
124
+ def remove_parentheses(corrector, node)
125
+ corrector.replace(node.loc.begin, ' ')
126
+ corrector.remove(node.loc.end)
127
+ end
128
+
121
129
  def ignore_receiver?(receiver)
122
130
  if receiver.send_type? && ignored_method?(receiver.method_name)
123
131
  true
@@ -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
@@ -33,18 +33,19 @@ module RuboCop
33
33
  MSG = 'Use `StandardError` over `Exception`.'
34
34
  RESTRICT_ON_SEND = %i[raise fail].freeze
35
35
 
36
+ # @!method exception?(node)
36
37
  def_node_matcher :exception?, <<~PATTERN
37
38
  (send nil? {:raise :fail} $(const ${cbase nil?} :Exception) ... )
38
39
  PATTERN
39
40
 
41
+ # @!method exception_new_with_message?(node)
40
42
  def_node_matcher :exception_new_with_message?, <<~PATTERN
41
43
  (send nil? {:raise :fail}
42
44
  (send $(const ${cbase nil?} :Exception) :new ... ))
43
45
  PATTERN
44
46
 
45
47
  def on_send(node)
46
- exception?(node, &check(node)) ||
47
- exception_new_with_message?(node, &check(node))
48
+ exception?(node, &check(node)) || exception_new_with_message?(node, &check(node))
48
49
  end
49
50
 
50
51
  private
@@ -21,10 +21,10 @@ 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
 
27
+ # @!method rand_one?(node)
28
28
  def_node_matcher :rand_one?, <<~PATTERN
29
29
  (send {(const {nil? cbase} :Kernel) nil?} :rand {(int {-1 1}) (float {-1.0 1.0})})
30
30
  PATTERN
@@ -69,9 +69,7 @@ module RuboCop
69
69
  # Eat the entire comment, the preceding space, and the preceding
70
70
  # newline if there is one.
71
71
  original_begin = range.begin_pos
72
- range = range_with_surrounding_space(range: range,
73
- side: :left,
74
- newlines: true)
72
+ range = range_with_surrounding_space(range: range, side: :left, newlines: true)
75
73
 
76
74
  range_with_surrounding_space(range: range,
77
75
  side: :right,
@@ -93,9 +91,7 @@ module RuboCop
93
91
 
94
92
  range = range_with_surrounding_comma(range, :right)
95
93
  # Eat following spaces up to EOL, but not the newline itself.
96
- range_with_surrounding_space(range: range,
97
- side: :right,
98
- newlines: false)
94
+ range_with_surrounding_space(range: range, side: :right, newlines: false)
99
95
  end
100
96
 
101
97
  def each_redundant_disable(cop_disabled_line_ranges, offenses,
@@ -103,13 +99,9 @@ module RuboCop
103
99
  disabled_ranges = cop_disabled_line_ranges[COP_NAME] || [0..0]
104
100
 
105
101
  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
102
+ each_already_disabled(line_ranges, disabled_ranges) { |comment| yield comment, cop }
110
103
 
111
- each_line_range(line_ranges, disabled_ranges, offenses,
112
- cop, &block)
104
+ each_line_range(line_ranges, disabled_ranges, offenses, cop, &block)
113
105
  end
114
106
  end
115
107
 
@@ -119,8 +111,7 @@ module RuboCop
119
111
  comment = processed_source.comment_at_line(line_range.begin)
120
112
  next if ignore_offense?(disabled_ranges, line_range)
121
113
 
122
- redundant_cop = find_redundant(comment, offenses, cop, line_range,
123
- line_ranges[ix + 1])
114
+ redundant_cop = find_redundant(comment, offenses, cop, line_range, line_ranges[ix + 1])
124
115
  yield comment, redundant_cop if redundant_cop
125
116
  end
126
117
  end
@@ -151,8 +142,7 @@ module RuboCop
151
142
  # comment. If the disable all comment is truly redundant, we will
152
143
  # detect that when examining the comments of another cop, and we
153
144
  # get the full line range for the disable all.
154
- if (next_line_range.nil? ||
155
- line_range.last != next_line_range.first) &&
145
+ if (next_line_range.nil? || line_range.last != next_line_range.first) &&
156
146
  offenses.none? { |o| line_range.cover?(o.line) }
157
147
  'all'
158
148
  end
@@ -174,15 +164,13 @@ module RuboCop
174
164
  end
175
165
 
176
166
  def directive_count(comment)
177
- match = comment.text.match(CommentConfig::COMMENT_DIRECTIVE_REGEXP)
178
- _, cops_string = match.captures
167
+ _, cops_string = DirectiveComment.new(comment).match_captures
179
168
  cops_string.split(/,\s*/).size
180
169
  end
181
170
 
182
171
  def add_offenses(redundant_cops)
183
172
  redundant_cops.each do |comment, cops|
184
- if all_disabled?(comment) ||
185
- directive_count(comment) == cops.size
173
+ if all_disabled?(comment) || directive_count(comment) == cops.size
186
174
  add_offense_for_entire_comment(comment, cops)
187
175
  else
188
176
  add_offense_for_some_cops(comment, cops)
@@ -230,8 +218,7 @@ module RuboCop
230
218
  return unless offset
231
219
 
232
220
  offset += haystack.begin_pos
233
- Parser::Source::Range.new(haystack.source_buffer, offset,
234
- offset + needle.size)
221
+ Parser::Source::Range.new(haystack.source_buffer, offset, offset + needle.size)
235
222
  end
236
223
 
237
224
  def trailing_range?(ranges, range)
@@ -28,6 +28,7 @@ module RuboCop
28
28
  MSG = 'Remove unnecessary `require` statement.'
29
29
  RESTRICT_ON_SEND = %i[require].freeze
30
30
 
31
+ # @!method unnecessary_require_statement?(node)
31
32
  def_node_matcher :unnecessary_require_statement?, <<~PATTERN
32
33
  (send nil? :require
33
34
  (str {"enumerator" "rational" "complex" "thread"}))
@@ -43,6 +43,7 @@ module RuboCop
43
43
 
44
44
  NIL_SPECIFIC_METHODS = (nil.methods - Object.new.methods).to_set.freeze
45
45
 
46
+ # @!method respond_to_nil_specific_method?(node)
46
47
  def_node_matcher :respond_to_nil_specific_method?, <<~PATTERN
47
48
  (csend _ :respond_to? (sym %NIL_SPECIFIC_METHODS))
48
49
  PATTERN
@@ -52,9 +53,7 @@ module RuboCop
52
53
  return if respond_to_nil_specific_method?(node)
53
54
 
54
55
  range = range_between(node.loc.dot.begin_pos, node.source_range.end_pos)
55
- add_offense(range) do |corrector|
56
- corrector.replace(node.loc.dot, '.')
57
- end
56
+ add_offense(range) { |corrector| corrector.replace(node.loc.dot, '.') }
58
57
  end
59
58
 
60
59
  private
@@ -79,6 +79,7 @@ module RuboCop
79
79
  PERCENT_CAPITAL_I = '%I'
80
80
  ASSIGNMENT_TYPES = %i[lvasgn ivasgn cvasgn gvasgn].freeze
81
81
 
82
+ # @!method array_new?(node)
82
83
  def_node_matcher :array_new?, <<~PATTERN
83
84
  {
84
85
  $(send (const {nil? cbase} :Array) :new ...)
@@ -86,14 +87,14 @@ module RuboCop
86
87
  }
87
88
  PATTERN
88
89
 
90
+ # @!method literal_expansion(node)
89
91
  def_node_matcher :literal_expansion, <<~PATTERN
90
92
  (splat {$({str dstr int float array} ...) (block $#array_new? ...) $#array_new?} ...)
91
93
  PATTERN
92
94
 
93
95
  def on_splat(node)
94
96
  redundant_splat_expansion(node) do
95
- if array_splat?(node) &&
96
- (method_argument?(node) || part_of_an_array?(node))
97
+ if array_splat?(node) && (method_argument?(node) || part_of_an_array?(node))
97
98
  return if allow_percent_literal_array_argument? &&
98
99
  use_percent_literal_array_argument?(node)
99
100
 
@@ -101,9 +102,7 @@ module RuboCop
101
102
  autocorrect(corrector, node)
102
103
  end
103
104
  else
104
- add_offense(node) do |corrector|
105
- autocorrect(corrector, node)
106
- end
105
+ add_offense(node) { |corrector| autocorrect(corrector, node) }
107
106
  end
108
107
  end
109
108
  end
@@ -122,8 +121,7 @@ module RuboCop
122
121
  return if array_new_inside_array_literal?(expanded_item)
123
122
 
124
123
  grandparent = node.parent.parent
125
- return if grandparent &&
126
- !ASSIGNMENT_TYPES.include?(grandparent.type)
124
+ return if grandparent && !ASSIGNMENT_TYPES.include?(grandparent.type)
127
125
  end
128
126
 
129
127
  yield
@@ -22,9 +22,9 @@ module RuboCop
22
22
  extend AutoCorrector
23
23
 
24
24
  MSG_DEFAULT = 'Redundant use of `Object#to_s` in interpolation.'
25
- MSG_SELF = 'Use `self` instead of `Object#to_s` in ' \
26
- 'interpolation.'
25
+ MSG_SELF = 'Use `self` instead of `Object#to_s` in interpolation.'
27
26
 
27
+ # @!method to_s_without_args?(node)
28
28
  def_node_matcher :to_s_without_args?, '(send _ :to_s)'
29
29
 
30
30
  def on_interpolation(begin_node)