rubocop 1.9.1 → 1.13.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (488) 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 +77 -17
  5. data/config/obsoletion.yml +4 -0
  6. data/exe/rubocop +1 -3
  7. data/lib/rubocop.rb +5 -1
  8. data/lib/rubocop/cached_data.rb +1 -3
  9. data/lib/rubocop/cli.rb +4 -6
  10. data/lib/rubocop/cli/command/auto_genenerate_config.rb +9 -19
  11. data/lib/rubocop/cli/command/execute_runner.rb +1 -1
  12. data/lib/rubocop/cli/command/init_dotfile.rb +1 -3
  13. data/lib/rubocop/cli/command/show_cops.rb +1 -4
  14. data/lib/rubocop/cli/command/suggest_extensions.rb +3 -2
  15. data/lib/rubocop/comment_config.rb +45 -101
  16. data/lib/rubocop/config.rb +11 -26
  17. data/lib/rubocop/config_loader.rb +5 -11
  18. data/lib/rubocop/config_loader_resolver.rb +22 -14
  19. data/lib/rubocop/config_obsoletion/cop_rule.rb +1 -2
  20. data/lib/rubocop/config_store.rb +1 -2
  21. data/lib/rubocop/config_validator.rb +5 -10
  22. data/lib/rubocop/cop/autocorrect_logic.rb +3 -8
  23. data/lib/rubocop/cop/badge.rb +1 -2
  24. data/lib/rubocop/cop/base.rb +8 -6
  25. data/lib/rubocop/cop/bundler/duplicated_gem.rb +3 -3
  26. data/lib/rubocop/cop/bundler/gem_comment.rb +43 -8
  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 +57 -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 +12 -6
  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_assignment_layout.rb +26 -0
  101. data/lib/rubocop/cop/layout/multiline_block_layout.rb +7 -15
  102. data/lib/rubocop/cop/layout/multiline_hash_key_line_breaks.rb +1 -2
  103. data/lib/rubocop/cop/layout/multiline_method_argument_line_breaks.rb +1 -2
  104. data/lib/rubocop/cop/layout/multiline_method_call_indentation.rb +22 -15
  105. data/lib/rubocop/cop/layout/multiline_operation_indentation.rb +10 -5
  106. data/lib/rubocop/cop/layout/parameter_alignment.rb +6 -5
  107. data/lib/rubocop/cop/layout/redundant_line_break.rb +125 -0
  108. data/lib/rubocop/cop/layout/rescue_ensure_alignment.rb +3 -6
  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 +2 -4
  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 +60 -14
  134. data/lib/rubocop/cop/lint/deprecated_class_methods.rb +2 -4
  135. data/lib/rubocop/cop/lint/deprecated_constants.rb +3 -3
  136. data/lib/rubocop/cop/lint/deprecated_open_ssl_constant.rb +16 -9
  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 +3 -2
  141. data/lib/rubocop/cop/lint/each_with_object_argument.rb +1 -0
  142. data/lib/rubocop/cop/lint/else_layout.rb +2 -4
  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 +5 -4
  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 +12 -4
  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 +10 -10
  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 +3 -5
  205. data/lib/rubocop/cop/lint/unused_block_argument.rb +4 -8
  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/hash_alignment_styles.rb +3 -6
  239. data/lib/rubocop/cop/mixin/hash_transform_method.rb +8 -22
  240. data/lib/rubocop/cop/mixin/interpolation.rb +1 -3
  241. data/lib/rubocop/cop/mixin/line_length_help.rb +13 -10
  242. data/lib/rubocop/cop/mixin/match_range.rb +2 -5
  243. data/lib/rubocop/cop/mixin/method_complexity.rb +2 -3
  244. data/lib/rubocop/cop/mixin/method_preference.rb +1 -2
  245. data/lib/rubocop/cop/mixin/multiline_element_indentation.rb +4 -3
  246. data/lib/rubocop/cop/mixin/multiline_element_line_breaks.rb +1 -3
  247. data/lib/rubocop/cop/mixin/multiline_expression_indentation.rb +11 -40
  248. data/lib/rubocop/cop/mixin/multiline_literal_brace_layout.rb +1 -2
  249. data/lib/rubocop/cop/mixin/negative_conditional.rb +4 -2
  250. data/lib/rubocop/cop/mixin/ordered_gem_node.rb +1 -4
  251. data/lib/rubocop/cop/mixin/percent_array.rb +1 -3
  252. data/lib/rubocop/cop/mixin/percent_literal.rb +0 -6
  253. data/lib/rubocop/cop/mixin/preceding_following_alignment.rb +5 -11
  254. data/lib/rubocop/cop/mixin/preferred_delimiters.rb +6 -9
  255. data/lib/rubocop/cop/mixin/range_help.rb +10 -13
  256. data/lib/rubocop/cop/mixin/rational_literal.rb +1 -0
  257. data/lib/rubocop/cop/mixin/rescue_node.rb +2 -6
  258. data/lib/rubocop/cop/mixin/safe_assignment.rb +6 -2
  259. data/lib/rubocop/cop/mixin/space_after_punctuation.rb +2 -4
  260. data/lib/rubocop/cop/mixin/space_before_punctuation.rb +1 -2
  261. data/lib/rubocop/cop/mixin/statement_modifier.rb +1 -3
  262. data/lib/rubocop/cop/mixin/trailing_body.rb +1 -2
  263. data/lib/rubocop/cop/mixin/trailing_comma.rb +1 -2
  264. data/lib/rubocop/cop/mixin/uncommunicative_name.rb +7 -13
  265. data/lib/rubocop/cop/mixin/unused_argument.rb +1 -3
  266. data/lib/rubocop/cop/mixin/visibility_help.rb +1 -0
  267. data/lib/rubocop/cop/naming/ascii_identifiers.rb +2 -4
  268. data/lib/rubocop/cop/naming/binary_operator_parameter_name.rb +2 -2
  269. data/lib/rubocop/cop/naming/constant_name.rb +2 -0
  270. data/lib/rubocop/cop/naming/file_name.rb +7 -16
  271. data/lib/rubocop/cop/naming/memoized_instance_variable_name.rb +8 -3
  272. data/lib/rubocop/cop/naming/method_name.rb +4 -2
  273. data/lib/rubocop/cop/naming/predicate_name.rb +2 -2
  274. data/lib/rubocop/cop/naming/rescued_exceptions_variable_name.rb +10 -0
  275. data/lib/rubocop/cop/offense.rb +3 -8
  276. data/lib/rubocop/cop/registry.rb +13 -12
  277. data/lib/rubocop/cop/security/eval.rb +1 -0
  278. data/lib/rubocop/cop/security/json_load.rb +1 -0
  279. data/lib/rubocop/cop/security/marshal_load.rb +1 -0
  280. data/lib/rubocop/cop/security/open.rb +1 -0
  281. data/lib/rubocop/cop/security/yaml_load.rb +1 -0
  282. data/lib/rubocop/cop/style/access_modifier_declarations.rb +4 -5
  283. data/lib/rubocop/cop/style/accessor_grouping.rb +1 -3
  284. data/lib/rubocop/cop/style/alias.rb +6 -12
  285. data/lib/rubocop/cop/style/and_or.rb +3 -1
  286. data/lib/rubocop/cop/style/arguments_forwarding.rb +4 -3
  287. data/lib/rubocop/cop/style/array_coercion.rb +2 -0
  288. data/lib/rubocop/cop/style/array_join.rb +1 -0
  289. data/lib/rubocop/cop/style/ascii_comments.rb +1 -2
  290. data/lib/rubocop/cop/style/attr.rb +2 -3
  291. data/lib/rubocop/cop/style/auto_resource_cleanup.rb +2 -5
  292. data/lib/rubocop/cop/style/bisected_attr_accessor.rb +59 -71
  293. data/lib/rubocop/cop/style/bisected_attr_accessor/macro.rb +60 -0
  294. data/lib/rubocop/cop/style/case_equality.rb +2 -1
  295. data/lib/rubocop/cop/style/case_like_if.rb +16 -6
  296. data/lib/rubocop/cop/style/character_literal.rb +2 -4
  297. data/lib/rubocop/cop/style/class_and_module_children.rb +3 -6
  298. data/lib/rubocop/cop/style/class_equality_comparison.rb +3 -0
  299. data/lib/rubocop/cop/style/class_methods.rb +1 -3
  300. data/lib/rubocop/cop/style/collection_compact.rb +3 -3
  301. data/lib/rubocop/cop/style/colon_method_call.rb +2 -3
  302. data/lib/rubocop/cop/style/combinable_loops.rb +3 -2
  303. data/lib/rubocop/cop/style/command_literal.rb +4 -9
  304. data/lib/rubocop/cop/style/comment_annotation.rb +3 -6
  305. data/lib/rubocop/cop/style/commented_keyword.rb +7 -13
  306. data/lib/rubocop/cop/style/conditional_assignment.rb +12 -24
  307. data/lib/rubocop/cop/style/constant_visibility.rb +28 -0
  308. data/lib/rubocop/cop/style/copyright.rb +3 -6
  309. data/lib/rubocop/cop/style/date_time.rb +5 -5
  310. data/lib/rubocop/cop/style/def_with_parentheses.rb +1 -2
  311. data/lib/rubocop/cop/style/dir.rb +1 -0
  312. data/lib/rubocop/cop/style/disable_cops_within_source_code_directive.rb +2 -2
  313. data/lib/rubocop/cop/style/documentation.rb +30 -3
  314. data/lib/rubocop/cop/style/documentation_method.rb +1 -0
  315. data/lib/rubocop/cop/style/double_negation.rb +3 -2
  316. data/lib/rubocop/cop/style/each_for_simple_loop.rb +2 -2
  317. data/lib/rubocop/cop/style/each_with_object.rb +1 -0
  318. data/lib/rubocop/cop/style/empty_case_condition.rb +2 -7
  319. data/lib/rubocop/cop/style/empty_else.rb +3 -9
  320. data/lib/rubocop/cop/style/empty_literal.rb +13 -8
  321. data/lib/rubocop/cop/style/empty_method.rb +3 -7
  322. data/lib/rubocop/cop/style/end_block.rb +1 -2
  323. data/lib/rubocop/cop/style/endless_method.rb +2 -3
  324. data/lib/rubocop/cop/style/eval_with_location.rb +91 -31
  325. data/lib/rubocop/cop/style/even_odd.rb +1 -0
  326. data/lib/rubocop/cop/style/expand_path_arguments.rb +4 -3
  327. data/lib/rubocop/cop/style/explicit_block_argument.rb +3 -5
  328. data/lib/rubocop/cop/style/exponential_notation.rb +6 -7
  329. data/lib/rubocop/cop/style/float_division.rb +4 -0
  330. data/lib/rubocop/cop/style/format_string.rb +2 -0
  331. data/lib/rubocop/cop/style/format_string_token.rb +2 -4
  332. data/lib/rubocop/cop/style/frozen_string_literal_comment.rb +3 -11
  333. data/lib/rubocop/cop/style/global_std_stream.rb +1 -0
  334. data/lib/rubocop/cop/style/guard_clause.rb +3 -7
  335. data/lib/rubocop/cop/style/hash_conversion.rb +133 -0
  336. data/lib/rubocop/cop/style/hash_each_methods.rb +2 -2
  337. data/lib/rubocop/cop/style/hash_except.rb +1 -0
  338. data/lib/rubocop/cop/style/hash_like_case.rb +2 -2
  339. data/lib/rubocop/cop/style/hash_syntax.rb +20 -24
  340. data/lib/rubocop/cop/style/hash_transform_keys.rb +4 -0
  341. data/lib/rubocop/cop/style/hash_transform_values.rb +4 -0
  342. data/lib/rubocop/cop/style/identical_conditional_branches.rb +1 -3
  343. data/lib/rubocop/cop/style/if_unless_modifier.rb +41 -13
  344. data/lib/rubocop/cop/style/if_with_boolean_literal_branches.rb +2 -0
  345. data/lib/rubocop/cop/style/implicit_runtime_error.rb +1 -0
  346. data/lib/rubocop/cop/style/infinite_loop.rb +2 -5
  347. data/lib/rubocop/cop/style/inverse_methods.rb +5 -7
  348. data/lib/rubocop/cop/style/ip_addresses.rb +1 -2
  349. data/lib/rubocop/cop/style/lambda.rb +2 -4
  350. data/lib/rubocop/cop/style/lambda_call.rb +1 -2
  351. data/lib/rubocop/cop/style/line_end_concatenation.rb +5 -12
  352. data/lib/rubocop/cop/style/method_call_with_args_parentheses.rb +47 -3
  353. data/lib/rubocop/cop/style/method_call_with_args_parentheses/omit_parentheses.rb +26 -16
  354. data/lib/rubocop/cop/style/method_call_without_args_parentheses.rb +1 -2
  355. data/lib/rubocop/cop/style/method_called_on_do_end_block.rb +2 -4
  356. data/lib/rubocop/cop/style/method_def_parentheses.rb +4 -8
  357. data/lib/rubocop/cop/style/min_max.rb +2 -2
  358. data/lib/rubocop/cop/style/missing_else.rb +2 -4
  359. data/lib/rubocop/cop/style/missing_respond_to_missing.rb +1 -2
  360. data/lib/rubocop/cop/style/mixin_grouping.rb +4 -10
  361. data/lib/rubocop/cop/style/mixin_usage.rb +3 -2
  362. data/lib/rubocop/cop/style/module_function.rb +8 -6
  363. data/lib/rubocop/cop/style/multiline_block_chain.rb +1 -2
  364. data/lib/rubocop/cop/style/multiline_method_signature.rb +11 -6
  365. data/lib/rubocop/cop/style/multiline_ternary_operator.rb +1 -2
  366. data/lib/rubocop/cop/style/multiple_comparison.rb +22 -5
  367. data/lib/rubocop/cop/style/mutable_constant.rb +7 -10
  368. data/lib/rubocop/cop/style/negated_if.rb +1 -2
  369. data/lib/rubocop/cop/style/negated_if_else_condition.rb +16 -2
  370. data/lib/rubocop/cop/style/negated_unless.rb +1 -2
  371. data/lib/rubocop/cop/style/nested_modifier.rb +3 -7
  372. data/lib/rubocop/cop/style/nested_ternary_operator.rb +2 -3
  373. data/lib/rubocop/cop/style/next.rb +4 -9
  374. data/lib/rubocop/cop/style/nil_comparison.rb +3 -0
  375. data/lib/rubocop/cop/style/nil_lambda.rb +1 -0
  376. data/lib/rubocop/cop/style/non_nil_check.rb +9 -5
  377. data/lib/rubocop/cop/style/numeric_literals.rb +3 -11
  378. data/lib/rubocop/cop/style/numeric_predicate.rb +5 -7
  379. data/lib/rubocop/cop/style/one_line_conditional.rb +1 -2
  380. data/lib/rubocop/cop/style/option_hash.rb +2 -3
  381. data/lib/rubocop/cop/style/optional_arguments.rb +2 -5
  382. data/lib/rubocop/cop/style/or_assignment.rb +4 -6
  383. data/lib/rubocop/cop/style/parallel_assignment.rb +12 -9
  384. data/lib/rubocop/cop/style/parentheses_around_condition.rb +1 -0
  385. data/lib/rubocop/cop/style/percent_literal_delimiters.rb +1 -3
  386. data/lib/rubocop/cop/style/percent_q_literals.rb +1 -2
  387. data/lib/rubocop/cop/style/perl_backrefs.rb +2 -9
  388. data/lib/rubocop/cop/style/preferred_hash_methods.rb +1 -4
  389. data/lib/rubocop/cop/style/proc.rb +2 -2
  390. data/lib/rubocop/cop/style/raise_args.rb +4 -8
  391. data/lib/rubocop/cop/style/random_with_offset.rb +8 -8
  392. data/lib/rubocop/cop/style/redundant_argument.rb +2 -11
  393. data/lib/rubocop/cop/style/redundant_assignment.rb +2 -3
  394. data/lib/rubocop/cop/style/redundant_begin.rb +47 -7
  395. data/lib/rubocop/cop/style/redundant_capital_w.rb +1 -2
  396. data/lib/rubocop/cop/style/redundant_condition.rb +2 -5
  397. data/lib/rubocop/cop/style/redundant_conditional.rb +5 -6
  398. data/lib/rubocop/cop/style/redundant_exception.rb +5 -6
  399. data/lib/rubocop/cop/style/redundant_fetch_block.rb +2 -0
  400. data/lib/rubocop/cop/style/redundant_file_extension_in_require.rb +2 -1
  401. data/lib/rubocop/cop/style/redundant_freeze.rb +2 -2
  402. data/lib/rubocop/cop/style/redundant_interpolation.rb +1 -2
  403. data/lib/rubocop/cop/style/redundant_parentheses.rb +21 -20
  404. data/lib/rubocop/cop/style/redundant_percent_q.rb +1 -2
  405. data/lib/rubocop/cop/style/redundant_regexp_escape.rb +1 -4
  406. data/lib/rubocop/cop/style/redundant_return.rb +6 -4
  407. data/lib/rubocop/cop/style/redundant_self.rb +9 -9
  408. data/lib/rubocop/cop/style/redundant_self_assignment.rb +4 -2
  409. data/lib/rubocop/cop/style/redundant_sort.rb +3 -5
  410. data/lib/rubocop/cop/style/redundant_sort_by.rb +1 -0
  411. data/lib/rubocop/cop/style/regexp_literal.rb +4 -8
  412. data/lib/rubocop/cop/style/rescue_modifier.rb +21 -14
  413. data/lib/rubocop/cop/style/rescue_standard_error.rb +5 -7
  414. data/lib/rubocop/cop/style/return_nil.rb +7 -2
  415. data/lib/rubocop/cop/style/safe_navigation.rb +12 -21
  416. data/lib/rubocop/cop/style/sample.rb +1 -0
  417. data/lib/rubocop/cop/style/send.rb +1 -2
  418. data/lib/rubocop/cop/style/signal_exception.rb +6 -7
  419. data/lib/rubocop/cop/style/single_argument_dig.rb +2 -2
  420. data/lib/rubocop/cop/style/single_line_block_params.rb +2 -5
  421. data/lib/rubocop/cop/style/single_line_methods.rb +16 -4
  422. data/lib/rubocop/cop/style/slicing_with_range.rb +1 -0
  423. data/lib/rubocop/cop/style/sole_nested_conditional.rb +17 -2
  424. data/lib/rubocop/cop/style/special_global_vars.rb +6 -18
  425. data/lib/rubocop/cop/style/stabby_lambda_parentheses.rb +1 -2
  426. data/lib/rubocop/cop/style/stderr_puts.rb +3 -6
  427. data/lib/rubocop/cop/style/string_chars.rb +39 -0
  428. data/lib/rubocop/cop/style/string_concatenation.rb +9 -10
  429. data/lib/rubocop/cop/style/string_hash_keys.rb +2 -0
  430. data/lib/rubocop/cop/style/string_literals.rb +2 -5
  431. data/lib/rubocop/cop/style/strip.rb +1 -0
  432. data/lib/rubocop/cop/style/struct_inheritance.rb +11 -0
  433. data/lib/rubocop/cop/style/symbol_literal.rb +1 -3
  434. data/lib/rubocop/cop/style/symbol_proc.rb +29 -10
  435. data/lib/rubocop/cop/style/ternary_parentheses.rb +4 -6
  436. data/lib/rubocop/cop/style/trailing_body_on_method_definition.rb +6 -2
  437. data/lib/rubocop/cop/style/trailing_comma_in_block_args.rb +2 -6
  438. data/lib/rubocop/cop/style/trailing_method_end_statement.rb +3 -6
  439. data/lib/rubocop/cop/style/trailing_underscore_variable.rb +4 -10
  440. data/lib/rubocop/cop/style/trivial_accessors.rb +3 -4
  441. data/lib/rubocop/cop/style/unless_else.rb +1 -2
  442. data/lib/rubocop/cop/style/unless_logical_operators.rb +105 -0
  443. data/lib/rubocop/cop/style/unpack_first.rb +1 -0
  444. data/lib/rubocop/cop/style/variable_interpolation.rb +1 -1
  445. data/lib/rubocop/cop/style/when_then.rb +1 -3
  446. data/lib/rubocop/cop/style/while_until_modifier.rb +1 -2
  447. data/lib/rubocop/cop/style/word_array.rb +1 -2
  448. data/lib/rubocop/cop/style/yoda_condition.rb +4 -11
  449. data/lib/rubocop/cop/style/zero_length_predicate.rb +6 -2
  450. data/lib/rubocop/cop/team.rb +2 -5
  451. data/lib/rubocop/cop/util.rb +8 -11
  452. data/lib/rubocop/cop/utils/format_string.rb +1 -3
  453. data/lib/rubocop/cop/variable_force.rb +6 -15
  454. data/lib/rubocop/cop/variable_force/assignment.rb +1 -2
  455. data/lib/rubocop/cop/variable_force/branch.rb +1 -2
  456. data/lib/rubocop/cop/variable_force/reference.rb +1 -3
  457. data/lib/rubocop/cop/variable_force/scope.rb +4 -8
  458. data/lib/rubocop/cop/variable_force/variable.rb +2 -4
  459. data/lib/rubocop/cops_documentation_generator.rb +7 -21
  460. data/lib/rubocop/directive_comment.rb +69 -9
  461. data/lib/rubocop/ext/regexp_parser.rb +3 -6
  462. data/lib/rubocop/file_finder.rb +1 -3
  463. data/lib/rubocop/formatter/clang_style_formatter.rb +4 -2
  464. data/lib/rubocop/formatter/disabled_config_formatter.rb +3 -8
  465. data/lib/rubocop/formatter/git_hub_actions_formatter.rb +1 -5
  466. data/lib/rubocop/formatter/html_formatter.rb +4 -10
  467. data/lib/rubocop/formatter/json_formatter.rb +1 -5
  468. data/lib/rubocop/formatter/junit_formatter.rb +3 -9
  469. data/lib/rubocop/formatter/offense_count_formatter.rb +1 -1
  470. data/lib/rubocop/formatter/progress_formatter.rb +1 -3
  471. data/lib/rubocop/formatter/tap_formatter.rb +4 -2
  472. data/lib/rubocop/formatter/worst_offenders_formatter.rb +1 -1
  473. data/lib/rubocop/magic_comment.rb +1 -1
  474. data/lib/rubocop/name_similarity.rb +1 -1
  475. data/lib/rubocop/options.rb +27 -41
  476. data/lib/rubocop/path_util.rb +1 -3
  477. data/lib/rubocop/rake_task.rb +3 -0
  478. data/lib/rubocop/remote_config.rb +4 -7
  479. data/lib/rubocop/result_cache.rb +5 -12
  480. data/lib/rubocop/rspec/cop_helper.rb +1 -1
  481. data/lib/rubocop/rspec/expect_offense.rb +4 -9
  482. data/lib/rubocop/rspec/shared_contexts.rb +4 -15
  483. data/lib/rubocop/runner.rb +7 -14
  484. data/lib/rubocop/target_finder.rb +12 -16
  485. data/lib/rubocop/target_ruby.rb +25 -21
  486. data/lib/rubocop/version.rb +1 -1
  487. metadata +15 -9
  488. data/lib/rubocop/core_ext/hash.rb +0 -20
@@ -21,9 +21,7 @@ module RuboCop
21
21
  message =
22
22
  "#{diagnostic.message}\n(Using Ruby #{ruby_version} parser; " \
23
23
  'configure using `TargetRubyVersion` parameter, under `AllCops`)'
24
- add_offense(diagnostic.location,
25
- message: message,
26
- severity: diagnostic.level)
24
+ add_offense(diagnostic.location, message: message, severity: diagnostic.level)
27
25
  end
28
26
 
29
27
  def add_offense_from_error(error)
@@ -23,14 +23,17 @@ module RuboCop
23
23
 
24
24
  RESTRICT_ON_SEND = %i[to_enum enum_for].freeze
25
25
 
26
+ # @!method enum_conversion_call?(node)
26
27
  def_node_matcher :enum_conversion_call?, <<~PATTERN
27
28
  (send {nil? self} {:to_enum :enum_for} $_ $...)
28
29
  PATTERN
29
30
 
31
+ # @!method method_name?(node, name)
30
32
  def_node_matcher :method_name?, <<~PATTERN
31
33
  {(send nil? {:__method__ :__callee__}) (sym %1)}
32
34
  PATTERN
33
35
 
36
+ # @!method passing_keyword_arg?(node, name)
34
37
  def_node_matcher :passing_keyword_arg?, <<~PATTERN
35
38
  (pair (sym %1) (lvar %1))
36
39
  PATTERN
@@ -31,8 +31,7 @@ module RuboCop
31
31
  class ToJSON < Base
32
32
  extend AutoCorrector
33
33
 
34
- MSG = '`#to_json` requires an optional argument to be parsable ' \
35
- 'via JSON.generate(obj).'
34
+ MSG = '`#to_json` requires an optional argument to be parsable via JSON.generate(obj).'
36
35
 
37
36
  def on_def(node)
38
37
  return unless node.method?(:to_json) && node.arguments.empty?
@@ -38,9 +38,7 @@ module RuboCop
38
38
 
39
39
  trailing_comma = trailing_comma_range(node)
40
40
 
41
- add_offense(trailing_comma) do |corrector|
42
- corrector.remove(trailing_comma)
43
- end
41
+ add_offense(trailing_comma) { |corrector| corrector.remove(trailing_comma) }
44
42
  end
45
43
 
46
44
  private
@@ -48,9 +48,7 @@ module RuboCop
48
48
  end
49
49
 
50
50
  def after_leaving_scope(scope, _variable_table)
51
- scope.variables.each_value do |variable|
52
- check_variable(variable)
53
- end
51
+ scope.variables.each_value { |variable| check_variable(variable) }
54
52
  end
55
53
 
56
54
  def check_variable(variable)
@@ -22,6 +22,7 @@ module RuboCop
22
22
 
23
23
  MSG = 'Use `Integer` instead of `%<klass>s`.'
24
24
 
25
+ # @!method fixnum_or_bignum_const(node)
25
26
  def_node_matcher :fixnum_or_bignum_const, <<~PATTERN
26
27
  (:const {nil? (:cbase)} ${:Fixnum :Bignum})
27
28
  PATTERN
@@ -66,6 +66,7 @@ module RuboCop
66
66
  MSG = 'Ensure the accumulator `%<accum>s` will be modified by `%<method>s`.'
67
67
  MSG_INDEX = 'Do not return an element of the accumulator in `%<method>s`.'
68
68
 
69
+ # @!method reduce_with_block?(node)
69
70
  def_node_matcher :reduce_with_block?, <<~PATTERN
70
71
  {
71
72
  (block (send _recv {:reduce :inject} ...) args ...)
@@ -73,10 +74,12 @@ module RuboCop
73
74
  }
74
75
  PATTERN
75
76
 
77
+ # @!method accumulator_index?(node, accumulator_name)
76
78
  def_node_matcher :accumulator_index?, <<~PATTERN
77
79
  (send (lvar %1) {:[] :[]=} ...)
78
80
  PATTERN
79
81
 
82
+ # @!method element_modified?(node, element_name)
80
83
  def_node_search :element_modified?, <<~PATTERN
81
84
  {
82
85
  (send _receiver !{:[] :[]=} <`(lvar %1) `_ ...>) # method(el, ...)
@@ -86,6 +89,7 @@ module RuboCop
86
89
  }
87
90
  PATTERN
88
91
 
92
+ # @!method lvar_used?(node, name)
89
93
  def_node_matcher :lvar_used?, <<~PATTERN
90
94
  {
91
95
  (lvar %1)
@@ -96,6 +100,7 @@ module RuboCop
96
100
  }
97
101
  PATTERN
98
102
 
103
+ # @!method expression_values(node)
99
104
  def_node_search :expression_values, <<~PATTERN
100
105
  {
101
106
  (%RuboCop::AST::Node::VARIABLES $_)
@@ -51,6 +51,7 @@ module RuboCop
51
51
 
52
52
  private
53
53
 
54
+ # @!method flow_command?(node)
54
55
  def_node_matcher :flow_command?, <<~PATTERN
55
56
  {
56
57
  return next break retry redo
@@ -80,8 +81,7 @@ module RuboCop
80
81
  def check_if(node)
81
82
  if_branch = node.if_branch
82
83
  else_branch = node.else_branch
83
- if_branch && else_branch &&
84
- flow_expression?(if_branch) && flow_expression?(else_branch)
84
+ if_branch && else_branch && flow_expression?(if_branch) && flow_expression?(else_branch)
85
85
  end
86
86
 
87
87
  def check_case(node)
@@ -89,9 +89,7 @@ module RuboCop
89
89
  return false unless else_branch
90
90
  return false unless flow_expression?(else_branch)
91
91
 
92
- node.when_branches.all? do |branch|
93
- branch.body && flow_expression?(branch.body)
94
- end
92
+ node.when_branches.all? { |branch| branch.body && flow_expression?(branch.body) }
95
93
  end
96
94
  end
97
95
  end
@@ -131,6 +131,7 @@ module RuboCop
131
131
  end
132
132
  end
133
133
 
134
+ # @!method break_command?(node)
134
135
  def_node_matcher :break_command?, <<~PATTERN
135
136
  {
136
137
  return break
@@ -161,8 +162,7 @@ module RuboCop
161
162
  def check_if(node)
162
163
  if_branch = node.if_branch
163
164
  else_branch = node.else_branch
164
- if_branch && else_branch &&
165
- break_statement?(if_branch) && break_statement?(else_branch)
165
+ if_branch && else_branch && break_statement?(if_branch) && break_statement?(else_branch)
166
166
  end
167
167
 
168
168
  def check_case(node)
@@ -170,9 +170,7 @@ module RuboCop
170
170
  return false unless else_branch
171
171
  return false unless break_statement?(else_branch)
172
172
 
173
- node.when_branches.all? do |branch|
174
- branch.body && break_statement?(branch.body)
175
- end
173
+ node.when_branches.all? { |branch| branch.body && break_statement?(branch.body) }
176
174
  end
177
175
 
178
176
  def preceded_by_continue_statement?(break_statement)
@@ -67,20 +67,17 @@ module RuboCop
67
67
  end
68
68
 
69
69
  def check_argument(variable)
70
- return if allowed_block?(variable) ||
71
- allowed_keyword_argument?(variable)
70
+ return if allowed_block?(variable) || allowed_keyword_argument?(variable)
72
71
 
73
72
  super
74
73
  end
75
74
 
76
75
  def allowed_block?(variable)
77
- !variable.block_argument? ||
78
- (ignore_empty_blocks? && empty_block?(variable))
76
+ !variable.block_argument? || (ignore_empty_blocks? && empty_block?(variable))
79
77
  end
80
78
 
81
79
  def allowed_keyword_argument?(variable)
82
- variable.keyword_argument? &&
83
- allow_unused_keyword_arguments?
80
+ variable.keyword_argument? && allow_unused_keyword_arguments?
84
81
  end
85
82
 
86
83
  def message(variable)
@@ -115,8 +112,7 @@ module RuboCop
115
112
  end
116
113
 
117
114
  def message_for_normal_block(variable, all_arguments)
118
- if all_arguments.none?(&:referenced?) &&
119
- !define_method_call?(variable)
115
+ if all_arguments.none?(&:referenced?) && !define_method_call?(variable)
120
116
  if all_arguments.count > 1
121
117
  "You can omit all the arguments if you don't care about them."
122
118
  else
@@ -62,6 +62,7 @@ module RuboCop
62
62
  include UnusedArgument
63
63
  extend AutoCorrector
64
64
 
65
+ # @!method not_implemented?(node)
65
66
  def_node_matcher :not_implemented?, <<~PATTERN
66
67
  {(send nil? :raise (const {nil? cbase} :NotImplementedError))
67
68
  (send nil? :fail ...)}
@@ -79,8 +80,7 @@ module RuboCop
79
80
 
80
81
  def check_argument(variable)
81
82
  return unless variable.method_argument?
82
- return if variable.keyword_argument? &&
83
- cop_config['AllowUnusedKeywordArguments']
83
+ return if variable.keyword_argument? && cop_config['AllowUnusedKeywordArguments']
84
84
  return if ignored_method?(variable.scope.node.body)
85
85
 
86
86
  super
@@ -47,6 +47,7 @@ module RuboCop
47
47
  METHOD_NAMES = %i[escape encode unescape decode].freeze
48
48
  RESTRICT_ON_SEND = METHOD_NAMES
49
49
 
50
+ # @!method uri_escape_unescape?(node)
50
51
  def_node_matcher :uri_escape_unescape?, <<~PATTERN
51
52
  (send
52
53
  (const ${nil? cbase} :URI) ${:#{METHOD_NAMES.join(' :')}}
@@ -150,18 +150,22 @@ module RuboCop
150
150
  corrector.remove(range)
151
151
  end
152
152
 
153
+ # @!method static_method_definition?(node)
153
154
  def_node_matcher :static_method_definition?, <<~PATTERN
154
155
  {def (send nil? {:attr :attr_reader :attr_writer :attr_accessor} ...)}
155
156
  PATTERN
156
157
 
158
+ # @!method dynamic_method_definition?(node)
157
159
  def_node_matcher :dynamic_method_definition?, <<~PATTERN
158
160
  {(send nil? :define_method ...) (block (send nil? :define_method ...) ...)}
159
161
  PATTERN
160
162
 
163
+ # @!method class_or_instance_eval?(node)
161
164
  def_node_matcher :class_or_instance_eval?, <<~PATTERN
162
165
  (block (send _ {:class_eval :instance_eval}) ...)
163
166
  PATTERN
164
167
 
168
+ # @!method class_or_module_or_struct_new_call?(node)
165
169
  def_node_matcher :class_or_module_or_struct_new_call?, <<~PATTERN
166
170
  (block (send (const {nil? cbase} {:Class :Module :Struct}) :new ...) ...)
167
171
  PATTERN
@@ -179,8 +183,7 @@ module RuboCop
179
183
  end
180
184
 
181
185
  def access_modifier?(node)
182
- node.bare_access_modifier? ||
183
- node.method?(:private_class_method)
186
+ node.bare_access_modifier? || node.method?(:private_class_method)
184
187
  end
185
188
 
186
189
  def check_scope(node)
@@ -260,8 +263,7 @@ module RuboCop
260
263
  end
261
264
 
262
265
  def start_of_new_scope?(child)
263
- child.module_type? || child.class_type? ||
264
- child.sclass_type? || eval_call?(child)
266
+ child.module_type? || child.class_type? || child.sclass_type? || eval_call?(child)
265
267
  end
266
268
 
267
269
  def eval_call?(child)
@@ -38,9 +38,7 @@ module RuboCop
38
38
  end
39
39
 
40
40
  def after_leaving_scope(scope, _variable_table)
41
- scope.variables.each_value do |variable|
42
- check_for_unused_assignments(variable)
43
- end
41
+ scope.variables.each_value { |variable| check_for_unused_assignments(variable) }
44
42
  end
45
43
 
46
44
  def check_for_unused_assignments(variable)
@@ -64,8 +62,7 @@ module RuboCop
64
62
  def message_for_useless_assignment(assignment)
65
63
  variable = assignment.variable
66
64
 
67
- format(MSG, variable: variable.name) +
68
- message_specification(assignment, variable).to_s
65
+ format(MSG, variable: variable.name) + message_specification(assignment, variable).to_s
69
66
  end
70
67
 
71
68
  def message_specification(assignment, variable)
@@ -85,8 +82,7 @@ module RuboCop
85
82
 
86
83
  def operator_assignment_message(scope, assignment)
87
84
  return_value_node = return_value_node_of_scope(scope)
88
- return unless assignment.meta_assignment_node
89
- .equal?(return_value_node)
85
+ return unless assignment.meta_assignment_node.equal?(return_value_node)
90
86
 
91
87
  " Use `#{assignment.operator.sub(/=$/, '')}` " \
92
88
  "instead of `#{assignment.operator}`."
@@ -94,8 +90,7 @@ module RuboCop
94
90
 
95
91
  def similar_name_message(variable)
96
92
  variable_like_names = collect_variable_like_names(variable.scope)
97
- similar_name = NameSimilarity.find_similar_name(variable.name,
98
- variable_like_names)
93
+ similar_name = NameSimilarity.find_similar_name(variable.name, variable_like_names)
99
94
  " Did you mean `#{similar_name}`?" if similar_name
100
95
  end
101
96
 
@@ -56,6 +56,7 @@ module RuboCop
56
56
 
57
57
  private
58
58
 
59
+ # @!method setter_call_to_local_variable?(node)
59
60
  def_node_matcher :setter_call_to_local_variable?, <<~PATTERN
60
61
  [(send (lvar _) ...) setter_method?]
61
62
  PATTERN
@@ -89,9 +90,7 @@ module RuboCop
89
90
  catch(:skip_children) do
90
91
  yield node
91
92
 
92
- node.each_child_node do |child_node|
93
- scan(child_node, &block)
94
- end
93
+ node.each_child_node { |child_node| scan(child_node, &block) }
95
94
  end
96
95
  end
97
96
 
@@ -27,14 +27,17 @@ module RuboCop
27
27
  MSG = 'Useless call to `%<count>i.times` detected.'
28
28
  RESTRICT_ON_SEND = %i[times].freeze
29
29
 
30
+ # @!method times_call?(node)
30
31
  def_node_matcher :times_call?, <<~PATTERN
31
32
  (send (int $_) :times (block-pass (sym $_))?)
32
33
  PATTERN
33
34
 
35
+ # @!method block_arg(node)
34
36
  def_node_matcher :block_arg, <<~PATTERN
35
37
  (block _ (args (arg $_)) ...)
36
38
  PATTERN
37
39
 
40
+ # @!method block_reassigns_arg?(node)
38
41
  def_node_search :block_reassigns_arg?, <<~PATTERN
39
42
  (lvasgn %)
40
43
  PATTERN
@@ -46,8 +46,7 @@ module RuboCop
46
46
  LIT_MSG = 'Literal `%<lit>s` used in void context.'
47
47
  SELF_MSG = '`self` used in void context.'
48
48
  DEFINED_MSG = '`%<defined>s` used in void context.'
49
- NONMUTATING_MSG = 'Method `#%<method>s` used in void context. ' \
50
- 'Did you mean `#%<method>s!`?'
49
+ NONMUTATING_MSG = 'Method `#%<method>s` used in void context. Did you mean `#%<method>s!`?'
51
50
 
52
51
  BINARY_OPERATORS = %i[* / % + - == === != < > <= >= <=>].freeze
53
52
  UNARY_OPERATORS = %i[+@ -@ ~ !].freeze
@@ -78,9 +77,7 @@ module RuboCop
78
77
  def check_begin(node)
79
78
  expressions = *node
80
79
  expressions.pop unless in_void_context?(node)
81
- expressions.each do |expr|
82
- check_expression(expr)
83
- end
80
+ expressions.each { |expr| check_expression(expr) }
84
81
  end
85
82
 
86
83
  def check_expression(expr)
@@ -125,13 +122,9 @@ module RuboCop
125
122
  end
126
123
 
127
124
  def check_nonmutating(node)
128
- unless node.send_type? &&
129
- NONMUTATING_METHODS.include?(node.method_name)
130
- return
131
- end
125
+ return unless node.send_type? && NONMUTATING_METHODS.include?(node.method_name)
132
126
 
133
- add_offense(node, message: format(NONMUTATING_MSG,
134
- method: node.method_name))
127
+ add_offense(node, message: format(NONMUTATING_MSG, method: node.method_name))
135
128
  end
136
129
 
137
130
  def in_void_context?(node)
@@ -96,9 +96,7 @@ module RuboCop
96
96
  end
97
97
 
98
98
  def display_style_guide?
99
- (options[:display_style_guide] ||
100
- config.for_all_cops['DisplayStyleGuide']) &&
101
- !urls.empty?
99
+ (options[:display_style_guide] || config.for_all_cops['DisplayStyleGuide']) && !urls.empty?
102
100
  end
103
101
 
104
102
  def reference_urls
@@ -12,10 +12,7 @@ module RuboCop
12
12
  #
13
13
  # The maximum level of nesting allowed is configurable.
14
14
  class BlockNesting < Base
15
- NESTING_BLOCKS = %i[
16
- case if while while_post
17
- until until_post for resbody
18
- ].freeze
15
+ NESTING_BLOCKS = %i[case if while while_post until until_post for resbody].freeze
19
16
 
20
17
  exclude_limit 'Max'
21
18
 
@@ -34,9 +31,7 @@ module RuboCop
34
31
  if current_level > max
35
32
  self.max = current_level
36
33
  unless part_of_ignored_node?(node)
37
- add_offense(node, message: message(max)) do
38
- ignore_node(node)
39
- end
34
+ add_offense(node, message: message(max)) { ignore_node(node) }
40
35
  end
41
36
  end
42
37
  end
@@ -57,9 +57,7 @@ module RuboCop
57
57
  private
58
58
 
59
59
  def message(length, max_length)
60
- format('Class has too many lines. [%<length>d/%<max>d]',
61
- length: length,
62
- max: max_length)
60
+ format('Class has too many lines. [%<length>d/%<max>d]', length: length, max: max_length)
63
61
  end
64
62
  end
65
63
  end
@@ -33,8 +33,7 @@ module RuboCop
33
33
  include MethodComplexity
34
34
  include Utils::IteratingBlock
35
35
 
36
- MSG = 'Cyclomatic complexity for %<method>s is too high. ' \
37
- '[%<complexity>d/%<max>d]'
36
+ MSG = 'Cyclomatic complexity for %<method>s is too high. [%<complexity>d/%<max>d]'
38
37
  COUNTED_NODES = %i[if while until for csend block block_pass
39
38
  rescue when and or or_asgn and_asgn].freeze
40
39