rubocop 1.12.0 → 1.13.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (401) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +3 -2
  3. data/config/default.yml +10 -0
  4. data/exe/rubocop +1 -3
  5. data/lib/rubocop.rb +1 -1
  6. data/lib/rubocop/cached_data.rb +1 -3
  7. data/lib/rubocop/cli.rb +4 -6
  8. data/lib/rubocop/cli/command/auto_genenerate_config.rb +9 -19
  9. data/lib/rubocop/cli/command/init_dotfile.rb +1 -3
  10. data/lib/rubocop/cli/command/show_cops.rb +1 -4
  11. data/lib/rubocop/comment_config.rb +2 -7
  12. data/lib/rubocop/config.rb +11 -26
  13. data/lib/rubocop/config_loader.rb +5 -11
  14. data/lib/rubocop/config_loader_resolver.rb +22 -14
  15. data/lib/rubocop/config_obsoletion/cop_rule.rb +1 -2
  16. data/lib/rubocop/config_store.rb +1 -2
  17. data/lib/rubocop/config_validator.rb +5 -10
  18. data/lib/rubocop/cop/autocorrect_logic.rb +3 -8
  19. data/lib/rubocop/cop/badge.rb +1 -2
  20. data/lib/rubocop/cop/base.rb +8 -6
  21. data/lib/rubocop/cop/bundler/duplicated_gem.rb +1 -2
  22. data/lib/rubocop/cop/bundler/gem_comment.rb +42 -8
  23. data/lib/rubocop/cop/bundler/ordered_gems.rb +1 -4
  24. data/lib/rubocop/cop/commissioner.rb +2 -8
  25. data/lib/rubocop/cop/cop.rb +4 -18
  26. data/lib/rubocop/cop/corrector.rb +1 -4
  27. data/lib/rubocop/cop/correctors/alignment_corrector.rb +3 -6
  28. data/lib/rubocop/cop/correctors/each_to_for_corrector.rb +2 -4
  29. data/lib/rubocop/cop/correctors/for_to_each_corrector.rb +1 -2
  30. data/lib/rubocop/cop/correctors/line_break_corrector.rb +3 -6
  31. data/lib/rubocop/cop/correctors/multiline_literal_brace_corrector.rb +1 -3
  32. data/lib/rubocop/cop/correctors/ordered_gem_corrector.rb +1 -3
  33. data/lib/rubocop/cop/correctors/percent_literal_corrector.rb +2 -8
  34. data/lib/rubocop/cop/gemspec/duplicated_assignment.rb +1 -2
  35. data/lib/rubocop/cop/gemspec/ordered_dependencies.rb +1 -4
  36. data/lib/rubocop/cop/generator.rb +1 -4
  37. data/lib/rubocop/cop/generator/configuration_injector.rb +1 -2
  38. data/lib/rubocop/cop/generator/require_file_injector.rb +2 -5
  39. data/lib/rubocop/cop/internal_affairs/example_description.rb +6 -4
  40. data/lib/rubocop/cop/internal_affairs/method_name_equal.rb +2 -5
  41. data/lib/rubocop/cop/internal_affairs/node_destructuring.rb +1 -3
  42. data/lib/rubocop/cop/internal_affairs/node_type_predicate.rb +1 -3
  43. data/lib/rubocop/cop/internal_affairs/offense_location_keyword.rb +1 -2
  44. data/lib/rubocop/cop/internal_affairs/style_detected_api_use.rb +1 -2
  45. data/lib/rubocop/cop/internal_affairs/useless_message_assertion.rb +1 -3
  46. data/lib/rubocop/cop/layout/access_modifier_indentation.rb +1 -2
  47. data/lib/rubocop/cop/layout/argument_alignment.rb +2 -4
  48. data/lib/rubocop/cop/layout/assignment_indentation.rb +2 -4
  49. data/lib/rubocop/cop/layout/begin_end_alignment.rb +1 -4
  50. data/lib/rubocop/cop/layout/block_alignment.rb +7 -19
  51. data/lib/rubocop/cop/layout/case_indentation.rb +1 -3
  52. data/lib/rubocop/cop/layout/class_structure.rb +4 -10
  53. data/lib/rubocop/cop/layout/closing_parenthesis_indentation.rb +4 -15
  54. data/lib/rubocop/cop/layout/comment_indentation.rb +1 -5
  55. data/lib/rubocop/cop/layout/def_end_alignment.rb +2 -6
  56. data/lib/rubocop/cop/layout/dot_position.rb +1 -3
  57. data/lib/rubocop/cop/layout/else_alignment.rb +1 -3
  58. data/lib/rubocop/cop/layout/empty_comment.rb +5 -12
  59. data/lib/rubocop/cop/layout/empty_line_after_guard_clause.rb +22 -8
  60. data/lib/rubocop/cop/layout/empty_line_between_defs.rb +2 -6
  61. data/lib/rubocop/cop/layout/empty_lines.rb +1 -3
  62. data/lib/rubocop/cop/layout/empty_lines_around_access_modifier.rb +8 -18
  63. data/lib/rubocop/cop/layout/empty_lines_around_exception_handling_keywords.rb +2 -8
  64. data/lib/rubocop/cop/layout/end_alignment.rb +1 -2
  65. data/lib/rubocop/cop/layout/end_of_line.rb +1 -1
  66. data/lib/rubocop/cop/layout/extra_spacing.rb +3 -7
  67. data/lib/rubocop/cop/layout/first_array_element_indentation.rb +1 -2
  68. data/lib/rubocop/cop/layout/first_array_element_line_break.rb +1 -2
  69. data/lib/rubocop/cop/layout/first_hash_element_indentation.rb +2 -5
  70. data/lib/rubocop/cop/layout/first_hash_element_line_break.rb +1 -2
  71. data/lib/rubocop/cop/layout/first_method_argument_line_break.rb +1 -2
  72. data/lib/rubocop/cop/layout/first_method_parameter_line_break.rb +1 -2
  73. data/lib/rubocop/cop/layout/hash_alignment.rb +3 -6
  74. data/lib/rubocop/cop/layout/heredoc_argument_closing_parenthesis.rb +2 -9
  75. data/lib/rubocop/cop/layout/heredoc_indentation.rb +2 -6
  76. data/lib/rubocop/cop/layout/indentation_style.rb +1 -3
  77. data/lib/rubocop/cop/layout/indentation_width.rb +1 -2
  78. data/lib/rubocop/cop/layout/initial_indentation.rb +1 -4
  79. data/lib/rubocop/cop/layout/line_length.rb +4 -15
  80. data/lib/rubocop/cop/layout/multiline_array_line_breaks.rb +1 -2
  81. data/lib/rubocop/cop/layout/multiline_block_layout.rb +7 -15
  82. data/lib/rubocop/cop/layout/multiline_hash_key_line_breaks.rb +1 -2
  83. data/lib/rubocop/cop/layout/multiline_method_argument_line_breaks.rb +1 -2
  84. data/lib/rubocop/cop/layout/multiline_method_call_indentation.rb +16 -10
  85. data/lib/rubocop/cop/layout/multiline_operation_indentation.rb +4 -0
  86. data/lib/rubocop/cop/layout/redundant_line_break.rb +125 -0
  87. data/lib/rubocop/cop/layout/rescue_ensure_alignment.rb +3 -6
  88. data/lib/rubocop/cop/layout/space_after_colon.rb +1 -3
  89. data/lib/rubocop/cop/layout/space_after_method_name.rb +2 -4
  90. data/lib/rubocop/cop/layout/space_around_block_parameters.rb +6 -14
  91. data/lib/rubocop/cop/layout/space_around_equals_in_parameter_default.rb +1 -2
  92. data/lib/rubocop/cop/layout/space_around_keyword.rb +3 -6
  93. data/lib/rubocop/cop/layout/space_around_operators.rb +4 -9
  94. data/lib/rubocop/cop/layout/space_before_block_braces.rb +1 -2
  95. data/lib/rubocop/cop/layout/space_before_brackets.rb +1 -3
  96. data/lib/rubocop/cop/layout/space_before_comment.rb +1 -3
  97. data/lib/rubocop/cop/layout/space_before_first_arg.rb +5 -11
  98. data/lib/rubocop/cop/layout/space_in_lambda_literal.rb +2 -4
  99. data/lib/rubocop/cop/layout/space_inside_array_literal_brackets.rb +5 -10
  100. data/lib/rubocop/cop/layout/space_inside_array_percent_literal.rb +2 -7
  101. data/lib/rubocop/cop/layout/space_inside_block_braces.rb +5 -10
  102. data/lib/rubocop/cop/layout/space_inside_hash_literal_braces.rb +1 -2
  103. data/lib/rubocop/cop/layout/space_inside_reference_brackets.rb +1 -2
  104. data/lib/rubocop/cop/legacy/corrections_proxy.rb +2 -8
  105. data/lib/rubocop/cop/legacy/corrector.rb +1 -3
  106. data/lib/rubocop/cop/lint/ambiguous_assignment.rb +1 -6
  107. data/lib/rubocop/cop/lint/ambiguous_block_association.rb +14 -7
  108. data/lib/rubocop/cop/lint/boolean_symbol.rb +1 -2
  109. data/lib/rubocop/cop/lint/constant_resolution.rb +1 -2
  110. data/lib/rubocop/cop/lint/deprecated_class_methods.rb +2 -4
  111. data/lib/rubocop/cop/lint/deprecated_constants.rb +3 -3
  112. data/lib/rubocop/cop/lint/deprecated_open_ssl_constant.rb +2 -5
  113. data/lib/rubocop/cop/lint/duplicate_branch.rb +1 -2
  114. data/lib/rubocop/cop/lint/duplicate_hash_key.rb +1 -3
  115. data/lib/rubocop/cop/lint/duplicate_methods.rb +3 -7
  116. data/lib/rubocop/cop/lint/else_layout.rb +1 -3
  117. data/lib/rubocop/cop/lint/empty_ensure.rb +1 -3
  118. data/lib/rubocop/cop/lint/empty_file.rb +1 -3
  119. data/lib/rubocop/cop/lint/empty_interpolation.rb +1 -3
  120. data/lib/rubocop/cop/lint/ensure_return.rb +1 -3
  121. data/lib/rubocop/cop/lint/erb_new_arguments.rb +3 -7
  122. data/lib/rubocop/cop/lint/float_out_of_range.rb +1 -2
  123. data/lib/rubocop/cop/lint/format_parameter_mismatch.rb +3 -6
  124. data/lib/rubocop/cop/lint/heredoc_method_call_position.rb +1 -2
  125. data/lib/rubocop/cop/lint/implicit_string_concatenation.rb +1 -2
  126. data/lib/rubocop/cop/lint/ineffective_access_modifier.rb +3 -7
  127. data/lib/rubocop/cop/lint/inherit_exception.rb +1 -2
  128. data/lib/rubocop/cop/lint/interpolation_check.rb +3 -11
  129. data/lib/rubocop/cop/lint/literal_in_interpolation.rb +3 -6
  130. data/lib/rubocop/cop/lint/loop.rb +1 -2
  131. data/lib/rubocop/cop/lint/missing_cop_enable_directive.rb +3 -7
  132. data/lib/rubocop/cop/lint/missing_super.rb +1 -2
  133. data/lib/rubocop/cop/lint/mixed_regexp_capture_types.rb +1 -2
  134. data/lib/rubocop/cop/lint/nested_method_definition.rb +1 -2
  135. data/lib/rubocop/cop/lint/nested_percent_literal.rb +1 -3
  136. data/lib/rubocop/cop/lint/non_deterministic_require_order.rb +1 -3
  137. data/lib/rubocop/cop/lint/number_conversion.rb +3 -4
  138. data/lib/rubocop/cop/lint/ordered_magic_comments.rb +1 -2
  139. data/lib/rubocop/cop/lint/out_of_range_regexp_ref.rb +1 -3
  140. data/lib/rubocop/cop/lint/parentheses_as_grouped_expression.rb +1 -3
  141. data/lib/rubocop/cop/lint/percent_symbol_array.rb +1 -3
  142. data/lib/rubocop/cop/lint/raise_exception.rb +1 -2
  143. data/lib/rubocop/cop/lint/rand_one.rb +1 -2
  144. data/lib/rubocop/cop/lint/redundant_cop_disable_directive.rb +8 -20
  145. data/lib/rubocop/cop/lint/redundant_safe_navigation.rb +1 -3
  146. data/lib/rubocop/cop/lint/redundant_splat_expansion.rb +3 -7
  147. data/lib/rubocop/cop/lint/redundant_string_coercion.rb +1 -2
  148. data/lib/rubocop/cop/lint/redundant_with_index.rb +1 -4
  149. data/lib/rubocop/cop/lint/redundant_with_object.rb +1 -4
  150. data/lib/rubocop/cop/lint/regexp_as_condition.rb +1 -3
  151. data/lib/rubocop/cop/lint/require_parentheses.rb +2 -4
  152. data/lib/rubocop/cop/lint/rescue_exception.rb +1 -2
  153. data/lib/rubocop/cop/lint/rescue_type.rb +2 -7
  154. data/lib/rubocop/cop/lint/return_in_void_context.rb +1 -2
  155. data/lib/rubocop/cop/lint/safe_navigation_chain.rb +1 -2
  156. data/lib/rubocop/cop/lint/safe_navigation_consistency.rb +4 -10
  157. data/lib/rubocop/cop/lint/safe_navigation_with_empty.rb +1 -2
  158. data/lib/rubocop/cop/lint/send_with_mixin_argument.rb +2 -7
  159. data/lib/rubocop/cop/lint/shadowed_argument.rb +4 -11
  160. data/lib/rubocop/cop/lint/shadowed_exception.rb +7 -8
  161. data/lib/rubocop/cop/lint/struct_new_override.rb +1 -2
  162. data/lib/rubocop/cop/lint/symbol_conversion.rb +2 -4
  163. data/lib/rubocop/cop/lint/syntax.rb +1 -3
  164. data/lib/rubocop/cop/lint/to_json.rb +1 -2
  165. data/lib/rubocop/cop/lint/trailing_comma_in_attribute_declaration.rb +1 -3
  166. data/lib/rubocop/cop/lint/underscore_prefixed_variable_name.rb +1 -3
  167. data/lib/rubocop/cop/lint/unreachable_code.rb +2 -5
  168. data/lib/rubocop/cop/lint/unreachable_loop.rb +2 -5
  169. data/lib/rubocop/cop/lint/unused_block_argument.rb +4 -8
  170. data/lib/rubocop/cop/lint/unused_method_argument.rb +1 -2
  171. data/lib/rubocop/cop/lint/useless_access_modifier.rb +2 -4
  172. data/lib/rubocop/cop/lint/useless_assignment.rb +4 -9
  173. data/lib/rubocop/cop/lint/useless_setter_call.rb +1 -3
  174. data/lib/rubocop/cop/lint/void.rb +4 -11
  175. data/lib/rubocop/cop/message_annotator.rb +1 -3
  176. data/lib/rubocop/cop/metrics/block_nesting.rb +2 -7
  177. data/lib/rubocop/cop/metrics/class_length.rb +1 -3
  178. data/lib/rubocop/cop/metrics/cyclomatic_complexity.rb +1 -2
  179. data/lib/rubocop/cop/metrics/module_length.rb +2 -6
  180. data/lib/rubocop/cop/metrics/parameter_lists.rb +2 -5
  181. data/lib/rubocop/cop/metrics/perceived_complexity.rb +1 -2
  182. data/lib/rubocop/cop/metrics/utils/abc_size_calculator.rb +4 -7
  183. data/lib/rubocop/cop/metrics/utils/repeated_attribute_discount.rb +2 -7
  184. data/lib/rubocop/cop/migration/department_name.rb +3 -7
  185. data/lib/rubocop/cop/mixin/alignment.rb +2 -4
  186. data/lib/rubocop/cop/mixin/check_line_breakable.rb +1 -1
  187. data/lib/rubocop/cop/mixin/code_length.rb +1 -3
  188. data/lib/rubocop/cop/mixin/configurable_enforced_style.rb +2 -2
  189. data/lib/rubocop/cop/mixin/configurable_formatting.rb +3 -8
  190. data/lib/rubocop/cop/mixin/def_node.rb +2 -5
  191. data/lib/rubocop/cop/mixin/documentation_comment.rb +2 -5
  192. data/lib/rubocop/cop/mixin/empty_lines_around_body.rb +3 -7
  193. data/lib/rubocop/cop/mixin/empty_parameter.rb +1 -3
  194. data/lib/rubocop/cop/mixin/end_keyword_alignment.rb +1 -3
  195. data/lib/rubocop/cop/mixin/enforce_superclass.rb +2 -6
  196. data/lib/rubocop/cop/mixin/first_element_line_break.rb +1 -3
  197. data/lib/rubocop/cop/mixin/frozen_string_literal.rb +3 -9
  198. data/lib/rubocop/cop/mixin/hash_alignment_styles.rb +3 -6
  199. data/lib/rubocop/cop/mixin/hash_transform_method.rb +7 -22
  200. data/lib/rubocop/cop/mixin/interpolation.rb +1 -3
  201. data/lib/rubocop/cop/mixin/line_length_help.rb +2 -4
  202. data/lib/rubocop/cop/mixin/match_range.rb +2 -5
  203. data/lib/rubocop/cop/mixin/method_complexity.rb +1 -3
  204. data/lib/rubocop/cop/mixin/method_preference.rb +1 -2
  205. data/lib/rubocop/cop/mixin/multiline_element_indentation.rb +1 -2
  206. data/lib/rubocop/cop/mixin/multiline_element_line_breaks.rb +1 -3
  207. data/lib/rubocop/cop/mixin/multiline_expression_indentation.rb +7 -37
  208. data/lib/rubocop/cop/mixin/multiline_literal_brace_layout.rb +1 -2
  209. data/lib/rubocop/cop/mixin/negative_conditional.rb +1 -2
  210. data/lib/rubocop/cop/mixin/ordered_gem_node.rb +1 -4
  211. data/lib/rubocop/cop/mixin/percent_array.rb +1 -3
  212. data/lib/rubocop/cop/mixin/percent_literal.rb +0 -6
  213. data/lib/rubocop/cop/mixin/preceding_following_alignment.rb +5 -11
  214. data/lib/rubocop/cop/mixin/preferred_delimiters.rb +3 -6
  215. data/lib/rubocop/cop/mixin/range_help.rb +10 -13
  216. data/lib/rubocop/cop/mixin/rescue_node.rb +2 -6
  217. data/lib/rubocop/cop/mixin/safe_assignment.rb +1 -2
  218. data/lib/rubocop/cop/mixin/space_after_punctuation.rb +2 -4
  219. data/lib/rubocop/cop/mixin/space_before_punctuation.rb +1 -2
  220. data/lib/rubocop/cop/mixin/statement_modifier.rb +1 -3
  221. data/lib/rubocop/cop/mixin/trailing_body.rb +1 -2
  222. data/lib/rubocop/cop/mixin/trailing_comma.rb +1 -2
  223. data/lib/rubocop/cop/mixin/uncommunicative_name.rb +3 -7
  224. data/lib/rubocop/cop/mixin/unused_argument.rb +1 -3
  225. data/lib/rubocop/cop/naming/ascii_identifiers.rb +2 -4
  226. data/lib/rubocop/cop/naming/binary_operator_parameter_name.rb +1 -2
  227. data/lib/rubocop/cop/naming/file_name.rb +7 -16
  228. data/lib/rubocop/cop/naming/memoized_instance_variable_name.rb +2 -3
  229. data/lib/rubocop/cop/naming/method_name.rb +1 -2
  230. data/lib/rubocop/cop/naming/predicate_name.rb +1 -2
  231. data/lib/rubocop/cop/offense.rb +3 -8
  232. data/lib/rubocop/cop/registry.rb +3 -11
  233. data/lib/rubocop/cop/style/access_modifier_declarations.rb +2 -4
  234. data/lib/rubocop/cop/style/accessor_grouping.rb +1 -3
  235. data/lib/rubocop/cop/style/alias.rb +5 -12
  236. data/lib/rubocop/cop/style/and_or.rb +3 -1
  237. data/lib/rubocop/cop/style/arguments_forwarding.rb +1 -3
  238. data/lib/rubocop/cop/style/ascii_comments.rb +1 -2
  239. data/lib/rubocop/cop/style/attr.rb +1 -3
  240. data/lib/rubocop/cop/style/auto_resource_cleanup.rb +2 -5
  241. data/lib/rubocop/cop/style/bisected_attr_accessor/macro.rb +1 -3
  242. data/lib/rubocop/cop/style/case_like_if.rb +1 -2
  243. data/lib/rubocop/cop/style/character_literal.rb +2 -4
  244. data/lib/rubocop/cop/style/class_and_module_children.rb +3 -6
  245. data/lib/rubocop/cop/style/class_methods.rb +1 -3
  246. data/lib/rubocop/cop/style/collection_compact.rb +1 -3
  247. data/lib/rubocop/cop/style/colon_method_call.rb +1 -3
  248. data/lib/rubocop/cop/style/combinable_loops.rb +3 -2
  249. data/lib/rubocop/cop/style/command_literal.rb +3 -8
  250. data/lib/rubocop/cop/style/comment_annotation.rb +3 -6
  251. data/lib/rubocop/cop/style/commented_keyword.rb +7 -13
  252. data/lib/rubocop/cop/style/conditional_assignment.rb +10 -24
  253. data/lib/rubocop/cop/style/copyright.rb +3 -6
  254. data/lib/rubocop/cop/style/date_time.rb +2 -5
  255. data/lib/rubocop/cop/style/def_with_parentheses.rb +1 -2
  256. data/lib/rubocop/cop/style/each_for_simple_loop.rb +1 -2
  257. data/lib/rubocop/cop/style/empty_case_condition.rb +2 -7
  258. data/lib/rubocop/cop/style/empty_else.rb +3 -9
  259. data/lib/rubocop/cop/style/empty_literal.rb +4 -8
  260. data/lib/rubocop/cop/style/empty_method.rb +3 -7
  261. data/lib/rubocop/cop/style/end_block.rb +1 -2
  262. data/lib/rubocop/cop/style/endless_method.rb +1 -3
  263. data/lib/rubocop/cop/style/eval_with_location.rb +2 -4
  264. data/lib/rubocop/cop/style/expand_path_arguments.rb +1 -3
  265. data/lib/rubocop/cop/style/explicit_block_argument.rb +1 -4
  266. data/lib/rubocop/cop/style/format_string_token.rb +1 -4
  267. data/lib/rubocop/cop/style/frozen_string_literal_comment.rb +3 -11
  268. data/lib/rubocop/cop/style/guard_clause.rb +3 -7
  269. data/lib/rubocop/cop/style/hash_conversion.rb +31 -3
  270. data/lib/rubocop/cop/style/hash_each_methods.rb +1 -2
  271. data/lib/rubocop/cop/style/hash_like_case.rb +1 -2
  272. data/lib/rubocop/cop/style/hash_syntax.rb +4 -9
  273. data/lib/rubocop/cop/style/identical_conditional_branches.rb +1 -3
  274. data/lib/rubocop/cop/style/if_unless_modifier.rb +41 -13
  275. data/lib/rubocop/cop/style/infinite_loop.rb +2 -5
  276. data/lib/rubocop/cop/style/inverse_methods.rb +3 -7
  277. data/lib/rubocop/cop/style/ip_addresses.rb +1 -2
  278. data/lib/rubocop/cop/style/lambda.rb +2 -4
  279. data/lib/rubocop/cop/style/lambda_call.rb +1 -2
  280. data/lib/rubocop/cop/style/line_end_concatenation.rb +5 -12
  281. data/lib/rubocop/cop/style/method_call_with_args_parentheses.rb +7 -3
  282. data/lib/rubocop/cop/style/method_call_with_args_parentheses/omit_parentheses.rb +10 -18
  283. data/lib/rubocop/cop/style/method_call_without_args_parentheses.rb +1 -2
  284. data/lib/rubocop/cop/style/method_called_on_do_end_block.rb +2 -4
  285. data/lib/rubocop/cop/style/method_def_parentheses.rb +4 -8
  286. data/lib/rubocop/cop/style/min_max.rb +1 -2
  287. data/lib/rubocop/cop/style/missing_else.rb +2 -4
  288. data/lib/rubocop/cop/style/missing_respond_to_missing.rb +1 -2
  289. data/lib/rubocop/cop/style/mixin_grouping.rb +4 -10
  290. data/lib/rubocop/cop/style/mixin_usage.rb +1 -2
  291. data/lib/rubocop/cop/style/module_function.rb +3 -6
  292. data/lib/rubocop/cop/style/multiline_block_chain.rb +1 -2
  293. data/lib/rubocop/cop/style/multiline_method_signature.rb +11 -6
  294. data/lib/rubocop/cop/style/multiline_ternary_operator.rb +1 -2
  295. data/lib/rubocop/cop/style/multiple_comparison.rb +2 -4
  296. data/lib/rubocop/cop/style/mutable_constant.rb +4 -10
  297. data/lib/rubocop/cop/style/negated_if.rb +1 -2
  298. data/lib/rubocop/cop/style/negated_unless.rb +1 -2
  299. data/lib/rubocop/cop/style/nested_modifier.rb +3 -7
  300. data/lib/rubocop/cop/style/nested_ternary_operator.rb +2 -3
  301. data/lib/rubocop/cop/style/next.rb +4 -9
  302. data/lib/rubocop/cop/style/non_nil_check.rb +2 -5
  303. data/lib/rubocop/cop/style/numeric_literals.rb +3 -11
  304. data/lib/rubocop/cop/style/numeric_predicate.rb +2 -7
  305. data/lib/rubocop/cop/style/one_line_conditional.rb +1 -2
  306. data/lib/rubocop/cop/style/option_hash.rb +1 -3
  307. data/lib/rubocop/cop/style/optional_arguments.rb +2 -5
  308. data/lib/rubocop/cop/style/or_assignment.rb +2 -6
  309. data/lib/rubocop/cop/style/parallel_assignment.rb +6 -9
  310. data/lib/rubocop/cop/style/percent_literal_delimiters.rb +1 -3
  311. data/lib/rubocop/cop/style/percent_q_literals.rb +1 -2
  312. data/lib/rubocop/cop/style/perl_backrefs.rb +2 -9
  313. data/lib/rubocop/cop/style/preferred_hash_methods.rb +1 -4
  314. data/lib/rubocop/cop/style/proc.rb +1 -2
  315. data/lib/rubocop/cop/style/raise_args.rb +4 -8
  316. data/lib/rubocop/cop/style/random_with_offset.rb +3 -8
  317. data/lib/rubocop/cop/style/redundant_argument.rb +2 -11
  318. data/lib/rubocop/cop/style/redundant_assignment.rb +1 -3
  319. data/lib/rubocop/cop/style/redundant_begin.rb +15 -4
  320. data/lib/rubocop/cop/style/redundant_capital_w.rb +1 -2
  321. data/lib/rubocop/cop/style/redundant_condition.rb +2 -5
  322. data/lib/rubocop/cop/style/redundant_conditional.rb +3 -6
  323. data/lib/rubocop/cop/style/redundant_exception.rb +3 -6
  324. data/lib/rubocop/cop/style/redundant_file_extension_in_require.rb +1 -1
  325. data/lib/rubocop/cop/style/redundant_freeze.rb +1 -2
  326. data/lib/rubocop/cop/style/redundant_interpolation.rb +1 -2
  327. data/lib/rubocop/cop/style/redundant_parentheses.rb +8 -20
  328. data/lib/rubocop/cop/style/redundant_percent_q.rb +1 -2
  329. data/lib/rubocop/cop/style/redundant_regexp_escape.rb +1 -4
  330. data/lib/rubocop/cop/style/redundant_return.rb +3 -5
  331. data/lib/rubocop/cop/style/redundant_self.rb +2 -6
  332. data/lib/rubocop/cop/style/redundant_self_assignment.rb +2 -2
  333. data/lib/rubocop/cop/style/redundant_sort.rb +2 -5
  334. data/lib/rubocop/cop/style/regexp_literal.rb +4 -8
  335. data/lib/rubocop/cop/style/rescue_modifier.rb +4 -0
  336. data/lib/rubocop/cop/style/rescue_standard_error.rb +3 -7
  337. data/lib/rubocop/cop/style/return_nil.rb +1 -2
  338. data/lib/rubocop/cop/style/safe_navigation.rb +10 -21
  339. data/lib/rubocop/cop/style/send.rb +1 -2
  340. data/lib/rubocop/cop/style/signal_exception.rb +3 -7
  341. data/lib/rubocop/cop/style/single_argument_dig.rb +1 -2
  342. data/lib/rubocop/cop/style/single_line_block_params.rb +2 -5
  343. data/lib/rubocop/cop/style/single_line_methods.rb +16 -4
  344. data/lib/rubocop/cop/style/sole_nested_conditional.rb +1 -2
  345. data/lib/rubocop/cop/style/special_global_vars.rb +6 -18
  346. data/lib/rubocop/cop/style/stabby_lambda_parentheses.rb +1 -2
  347. data/lib/rubocop/cop/style/stderr_puts.rb +2 -6
  348. data/lib/rubocop/cop/style/string_chars.rb +2 -1
  349. data/lib/rubocop/cop/style/string_concatenation.rb +8 -10
  350. data/lib/rubocop/cop/style/string_literals.rb +2 -5
  351. data/lib/rubocop/cop/style/struct_inheritance.rb +9 -1
  352. data/lib/rubocop/cop/style/symbol_literal.rb +1 -3
  353. data/lib/rubocop/cop/style/symbol_proc.rb +4 -9
  354. data/lib/rubocop/cop/style/ternary_parentheses.rb +3 -6
  355. data/lib/rubocop/cop/style/trailing_body_on_method_definition.rb +1 -2
  356. data/lib/rubocop/cop/style/trailing_comma_in_block_args.rb +2 -6
  357. data/lib/rubocop/cop/style/trailing_method_end_statement.rb +2 -5
  358. data/lib/rubocop/cop/style/trailing_underscore_variable.rb +4 -10
  359. data/lib/rubocop/cop/style/trivial_accessors.rb +2 -4
  360. data/lib/rubocop/cop/style/unless_else.rb +1 -2
  361. data/lib/rubocop/cop/style/unless_logical_operators.rb +2 -2
  362. data/lib/rubocop/cop/style/variable_interpolation.rb +1 -1
  363. data/lib/rubocop/cop/style/when_then.rb +1 -3
  364. data/lib/rubocop/cop/style/while_until_modifier.rb +1 -2
  365. data/lib/rubocop/cop/style/word_array.rb +1 -2
  366. data/lib/rubocop/cop/style/yoda_condition.rb +3 -11
  367. data/lib/rubocop/cop/style/zero_length_predicate.rb +1 -2
  368. data/lib/rubocop/cop/team.rb +2 -5
  369. data/lib/rubocop/cop/util.rb +8 -11
  370. data/lib/rubocop/cop/utils/format_string.rb +1 -3
  371. data/lib/rubocop/cop/variable_force.rb +6 -15
  372. data/lib/rubocop/cop/variable_force/assignment.rb +1 -2
  373. data/lib/rubocop/cop/variable_force/branch.rb +1 -2
  374. data/lib/rubocop/cop/variable_force/reference.rb +1 -3
  375. data/lib/rubocop/cop/variable_force/scope.rb +4 -8
  376. data/lib/rubocop/cop/variable_force/variable.rb +2 -4
  377. data/lib/rubocop/cops_documentation_generator.rb +7 -21
  378. data/lib/rubocop/directive_comment.rb +5 -0
  379. data/lib/rubocop/file_finder.rb +1 -3
  380. data/lib/rubocop/formatter/clang_style_formatter.rb +4 -2
  381. data/lib/rubocop/formatter/disabled_config_formatter.rb +3 -8
  382. data/lib/rubocop/formatter/git_hub_actions_formatter.rb +1 -5
  383. data/lib/rubocop/formatter/html_formatter.rb +4 -10
  384. data/lib/rubocop/formatter/json_formatter.rb +1 -5
  385. data/lib/rubocop/formatter/junit_formatter.rb +3 -9
  386. data/lib/rubocop/formatter/progress_formatter.rb +1 -3
  387. data/lib/rubocop/formatter/tap_formatter.rb +4 -2
  388. data/lib/rubocop/options.rb +27 -41
  389. data/lib/rubocop/path_util.rb +1 -3
  390. data/lib/rubocop/rake_task.rb +3 -0
  391. data/lib/rubocop/remote_config.rb +4 -7
  392. data/lib/rubocop/result_cache.rb +5 -12
  393. data/lib/rubocop/rspec/cop_helper.rb +1 -1
  394. data/lib/rubocop/rspec/expect_offense.rb +4 -9
  395. data/lib/rubocop/rspec/shared_contexts.rb +4 -15
  396. data/lib/rubocop/runner.rb +7 -14
  397. data/lib/rubocop/target_finder.rb +11 -16
  398. data/lib/rubocop/target_ruby.rb +4 -8
  399. data/lib/rubocop/version.rb +1 -1
  400. metadata +5 -5
  401. data/lib/rubocop/core_ext/hash.rb +0 -20
@@ -59,8 +59,7 @@ module RuboCop
59
59
  contains_multiple_levels_of_exceptions?(group)
60
60
  end
61
61
 
62
- return if !rescue_group_rescues_multiple_levels &&
63
- sorted?(rescued_groups)
62
+ return if !rescue_group_rescues_multiple_levels && sorted?(rescued_groups)
64
63
 
65
64
  add_offense(offense_range(rescues))
66
65
  end
@@ -74,18 +73,14 @@ module RuboCop
74
73
  end
75
74
 
76
75
  def rescued_groups_for(rescues)
77
- rescues.map do |group|
78
- evaluate_exceptions(group)
79
- end
76
+ rescues.map { |group| evaluate_exceptions(group) }
80
77
  end
81
78
 
82
79
  def contains_multiple_levels_of_exceptions?(group)
83
80
  # Always treat `Exception` as the highest level exception.
84
81
  return true if group.size > 1 && group.include?(Exception)
85
82
 
86
- group.combination(2).any? do |a, b|
87
- compare_exceptions(a, b)
88
- end
83
+ group.combination(2).any? { |a, b| compare_exceptions(a, b) }
89
84
  end
90
85
 
91
86
  def compare_exceptions(exception, other_exception)
@@ -111,6 +106,9 @@ module RuboCop
111
106
 
112
107
  if rescued_exceptions.any?
113
108
  rescued_exceptions.each_with_object([]) do |exception, converted|
109
+ # FIXME: Workaround `rubocop:disable` comment for JRuby.
110
+ # https://github.com/jruby/jruby/issues/6642
111
+ # rubocop:disable Style/RedundantBegin
114
112
  begin
115
113
  RuboCop::Util.silence_warnings do
116
114
  # Avoid printing deprecation warnings about constants
@@ -119,6 +117,7 @@ module RuboCop
119
117
  rescue NameError
120
118
  converted << nil
121
119
  end
120
+ # rubocop:enable Style/RedundantBegin
122
121
  end
123
122
  else
124
123
  # treat an empty `rescue` as `rescue StandardError`
@@ -48,8 +48,7 @@ module RuboCop
48
48
 
49
49
  next unless STRUCT_METHOD_NAMES.include?(member_name.to_sym)
50
50
 
51
- message = format(MSG, member_name: member_name.inspect,
52
- method_name: member_name.to_s)
51
+ message = format(MSG, member_name: member_name.inspect, method_name: member_name.to_s)
53
52
  add_offense(arg, message: message)
54
53
  end
55
54
  end
@@ -114,9 +114,7 @@ module RuboCop
114
114
  private
115
115
 
116
116
  def register_offense(node, correction:, message: format(MSG, correction: correction))
117
- add_offense(node, message: message) do |corrector|
118
- corrector.replace(node, correction)
119
- end
117
+ add_offense(node, message: message) { |corrector| corrector.replace(node, correction) }
120
118
  end
121
119
 
122
120
  def properly_quoted?(source, value)
@@ -152,7 +150,7 @@ module RuboCop
152
150
  # will be ignored.
153
151
  return unless node.value.to_s.match?(/\A[a-z0-9_]/i)
154
152
 
155
- correction = node.value.inspect.gsub(/\A:/, '')
153
+ correction = node.value.inspect.delete_prefix(':')
156
154
  return if properly_quoted?(node.source, correction)
157
155
 
158
156
  register_offense(
@@ -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)
@@ -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)
@@ -81,8 +81,7 @@ module RuboCop
81
81
  def check_if(node)
82
82
  if_branch = node.if_branch
83
83
  else_branch = node.else_branch
84
- if_branch && else_branch &&
85
- flow_expression?(if_branch) && flow_expression?(else_branch)
84
+ if_branch && else_branch && flow_expression?(if_branch) && flow_expression?(else_branch)
86
85
  end
87
86
 
88
87
  def check_case(node)
@@ -90,9 +89,7 @@ module RuboCop
90
89
  return false unless else_branch
91
90
  return false unless flow_expression?(else_branch)
92
91
 
93
- node.when_branches.all? do |branch|
94
- branch.body && flow_expression?(branch.body)
95
- end
92
+ node.when_branches.all? { |branch| branch.body && flow_expression?(branch.body) }
96
93
  end
97
94
  end
98
95
  end
@@ -162,8 +162,7 @@ module RuboCop
162
162
  def check_if(node)
163
163
  if_branch = node.if_branch
164
164
  else_branch = node.else_branch
165
- if_branch && else_branch &&
166
- break_statement?(if_branch) && break_statement?(else_branch)
165
+ if_branch && else_branch && break_statement?(if_branch) && break_statement?(else_branch)
167
166
  end
168
167
 
169
168
  def check_case(node)
@@ -171,9 +170,7 @@ module RuboCop
171
170
  return false unless else_branch
172
171
  return false unless break_statement?(else_branch)
173
172
 
174
- node.when_branches.all? do |branch|
175
- branch.body && break_statement?(branch.body)
176
- end
173
+ node.when_branches.all? { |branch| branch.body && break_statement?(branch.body) }
177
174
  end
178
175
 
179
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
@@ -80,8 +80,7 @@ module RuboCop
80
80
 
81
81
  def check_argument(variable)
82
82
  return unless variable.method_argument?
83
- return if variable.keyword_argument? &&
84
- cop_config['AllowUnusedKeywordArguments']
83
+ return if variable.keyword_argument? && cop_config['AllowUnusedKeywordArguments']
85
84
  return if ignored_method?(variable.scope.node.body)
86
85
 
87
86
  super
@@ -183,8 +183,7 @@ module RuboCop
183
183
  end
184
184
 
185
185
  def access_modifier?(node)
186
- node.bare_access_modifier? ||
187
- node.method?(:private_class_method)
186
+ node.bare_access_modifier? || node.method?(:private_class_method)
188
187
  end
189
188
 
190
189
  def check_scope(node)
@@ -264,8 +263,7 @@ module RuboCop
264
263
  end
265
264
 
266
265
  def start_of_new_scope?(child)
267
- child.module_type? || child.class_type? ||
268
- child.sclass_type? || eval_call?(child)
266
+ child.module_type? || child.class_type? || child.sclass_type? || eval_call?(child)
269
267
  end
270
268
 
271
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
 
@@ -90,9 +90,7 @@ module RuboCop
90
90
  catch(:skip_children) do
91
91
  yield node
92
92
 
93
- node.each_child_node do |child_node|
94
- scan(child_node, &block)
95
- end
93
+ node.each_child_node { |child_node| scan(child_node, &block) }
96
94
  end
97
95
  end
98
96
 
@@ -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
 
@@ -37,9 +37,7 @@ module RuboCop
37
37
  end
38
38
 
39
39
  def on_casgn(node)
40
- module_definition?(node) do
41
- check_code_length(node)
42
- end
40
+ module_definition?(node) { check_code_length(node) }
43
41
  end
44
42
 
45
43
  private
@@ -50,9 +48,7 @@ module RuboCop
50
48
  PATTERN
51
49
 
52
50
  def message(length, max_length)
53
- format('Module has too many lines. [%<length>d/%<max>d]',
54
- length: length,
55
- max: max_length)
51
+ format('Module has too many lines. [%<length>d/%<max>d]', length: length, max: max_length)
56
52
  end
57
53
  end
58
54
  end
@@ -54,8 +54,7 @@ module RuboCop
54
54
  exclude_limit 'Max'
55
55
  exclude_limit 'MaxOptionalParameters'
56
56
 
57
- MSG = 'Avoid parameter lists longer than %<max>d parameters. ' \
58
- '[%<count>d/%<max>d]'
57
+ MSG = 'Avoid parameter lists longer than %<max>d parameters. [%<count>d/%<max>d]'
59
58
  OPTIONAL_PARAMETERS_MSG = 'Method has too many optional parameters. [%<count>d/%<max>d]'
60
59
 
61
60
  NAMED_KEYWORD_TYPES = %i[kwoptarg kwarg].freeze
@@ -71,9 +70,7 @@ module RuboCop
71
70
  count: optargs.count
72
71
  )
73
72
 
74
- add_offense(node, message: message) do
75
- self.max_optional_parameters = optargs.count
76
- end
73
+ add_offense(node, message: message) { self.max_optional_parameters = optargs.count }
77
74
  end
78
75
  alias on_defs on_def
79
76
 
@@ -27,8 +27,7 @@ module RuboCop
27
27
  # end # ===
28
28
  # end # 7 complexity points
29
29
  class PerceivedComplexity < CyclomaticComplexity
30
- MSG = 'Perceived complexity for %<method>s is too high. ' \
31
- '[%<complexity>d/%<max>d]'
30
+ MSG = 'Perceived complexity for %<method>s is too high. [%<complexity>d/%<max>d]'
32
31
 
33
32
  COUNTED_NODES = (CyclomaticComplexity::COUNTED_NODES - [:when] + [:case]).freeze
34
33
 
@@ -43,9 +43,7 @@ module RuboCop
43
43
  end
44
44
 
45
45
  def calculate
46
- visit_depth_last(@node) do |child|
47
- calculate_node(child)
48
- end
46
+ visit_depth_last(@node) { |child| calculate_node(child) }
49
47
 
50
48
  [
51
49
  Math.sqrt(@assignment**2 + @branch**2 + @condition**2).round(2),
@@ -68,9 +66,7 @@ module RuboCop
68
66
  end
69
67
 
70
68
  def else_branch?(node)
71
- %i[case if].include?(node.type) &&
72
- node.else? &&
73
- node.loc.else.is?('else')
69
+ %i[case if].include?(node.type) && node.else? && node.loc.else.is?('else')
74
70
  end
75
71
 
76
72
  private
@@ -125,7 +121,8 @@ module RuboCop
125
121
  end
126
122
 
127
123
  def capturing_variable?(name)
128
- name && !/^_/.match?(name)
124
+ # TODO: Remove `Symbol#to_s` after supporting only Ruby >= 2.7.
125
+ name && !name.to_s.start_with?('_')
129
126
  end
130
127
 
131
128
  def branch?(node)