rubocop 1.12.1 → 1.16.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (412) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +5 -2
  3. data/config/default.yml +78 -8
  4. data/exe/rubocop +1 -3
  5. data/lib/rubocop.rb +10 -1
  6. data/lib/rubocop/cached_data.rb +1 -3
  7. data/lib/rubocop/cli.rb +4 -6
  8. data/lib/rubocop/cli/command/auto_genenerate_config.rb +9 -19
  9. data/lib/rubocop/cli/command/init_dotfile.rb +1 -3
  10. data/lib/rubocop/cli/command/show_cops.rb +1 -4
  11. data/lib/rubocop/comment_config.rb +2 -7
  12. data/lib/rubocop/config.rb +11 -26
  13. data/lib/rubocop/config_loader.rb +5 -11
  14. data/lib/rubocop/config_loader_resolver.rb +22 -14
  15. data/lib/rubocop/config_obsoletion/cop_rule.rb +1 -2
  16. data/lib/rubocop/config_store.rb +1 -2
  17. data/lib/rubocop/config_validator.rb +5 -10
  18. data/lib/rubocop/cop/autocorrect_logic.rb +3 -8
  19. data/lib/rubocop/cop/badge.rb +1 -2
  20. data/lib/rubocop/cop/base.rb +8 -6
  21. data/lib/rubocop/cop/bundler/duplicated_gem.rb +1 -2
  22. data/lib/rubocop/cop/bundler/gem_comment.rb +43 -11
  23. data/lib/rubocop/cop/bundler/gem_version.rb +99 -0
  24. data/lib/rubocop/cop/bundler/ordered_gems.rb +1 -4
  25. data/lib/rubocop/cop/commissioner.rb +2 -8
  26. data/lib/rubocop/cop/cop.rb +4 -18
  27. data/lib/rubocop/cop/corrector.rb +1 -4
  28. data/lib/rubocop/cop/correctors/alignment_corrector.rb +3 -6
  29. data/lib/rubocop/cop/correctors/each_to_for_corrector.rb +2 -4
  30. data/lib/rubocop/cop/correctors/for_to_each_corrector.rb +1 -2
  31. data/lib/rubocop/cop/correctors/line_break_corrector.rb +3 -6
  32. data/lib/rubocop/cop/correctors/multiline_literal_brace_corrector.rb +1 -3
  33. data/lib/rubocop/cop/correctors/ordered_gem_corrector.rb +1 -3
  34. data/lib/rubocop/cop/correctors/percent_literal_corrector.rb +2 -8
  35. data/lib/rubocop/cop/gemspec/duplicated_assignment.rb +1 -2
  36. data/lib/rubocop/cop/gemspec/ordered_dependencies.rb +1 -4
  37. data/lib/rubocop/cop/generator.rb +1 -4
  38. data/lib/rubocop/cop/generator/configuration_injector.rb +1 -2
  39. data/lib/rubocop/cop/generator/require_file_injector.rb +2 -5
  40. data/lib/rubocop/cop/internal_affairs/example_description.rb +7 -5
  41. data/lib/rubocop/cop/internal_affairs/method_name_equal.rb +2 -5
  42. data/lib/rubocop/cop/internal_affairs/node_destructuring.rb +1 -3
  43. data/lib/rubocop/cop/internal_affairs/node_type_predicate.rb +1 -3
  44. data/lib/rubocop/cop/internal_affairs/offense_location_keyword.rb +1 -2
  45. data/lib/rubocop/cop/internal_affairs/style_detected_api_use.rb +1 -2
  46. data/lib/rubocop/cop/internal_affairs/useless_message_assertion.rb +1 -3
  47. data/lib/rubocop/cop/layout/access_modifier_indentation.rb +1 -2
  48. data/lib/rubocop/cop/layout/argument_alignment.rb +30 -14
  49. data/lib/rubocop/cop/layout/assignment_indentation.rb +2 -4
  50. data/lib/rubocop/cop/layout/begin_end_alignment.rb +1 -4
  51. data/lib/rubocop/cop/layout/block_alignment.rb +7 -19
  52. data/lib/rubocop/cop/layout/case_indentation.rb +57 -11
  53. data/lib/rubocop/cop/layout/class_structure.rb +4 -10
  54. data/lib/rubocop/cop/layout/closing_parenthesis_indentation.rb +4 -15
  55. data/lib/rubocop/cop/layout/comment_indentation.rb +1 -5
  56. data/lib/rubocop/cop/layout/def_end_alignment.rb +2 -6
  57. data/lib/rubocop/cop/layout/dot_position.rb +1 -3
  58. data/lib/rubocop/cop/layout/else_alignment.rb +1 -3
  59. data/lib/rubocop/cop/layout/empty_comment.rb +5 -12
  60. data/lib/rubocop/cop/layout/empty_line_after_guard_clause.rb +2 -5
  61. data/lib/rubocop/cop/layout/empty_line_between_defs.rb +2 -6
  62. data/lib/rubocop/cop/layout/empty_lines.rb +1 -3
  63. data/lib/rubocop/cop/layout/empty_lines_around_access_modifier.rb +8 -18
  64. data/lib/rubocop/cop/layout/empty_lines_around_exception_handling_keywords.rb +2 -8
  65. data/lib/rubocop/cop/layout/end_alignment.rb +1 -2
  66. data/lib/rubocop/cop/layout/end_of_line.rb +1 -1
  67. data/lib/rubocop/cop/layout/extra_spacing.rb +3 -7
  68. data/lib/rubocop/cop/layout/first_array_element_indentation.rb +1 -2
  69. data/lib/rubocop/cop/layout/first_array_element_line_break.rb +1 -2
  70. data/lib/rubocop/cop/layout/first_hash_element_indentation.rb +14 -5
  71. data/lib/rubocop/cop/layout/first_hash_element_line_break.rb +1 -2
  72. data/lib/rubocop/cop/layout/first_method_argument_line_break.rb +1 -2
  73. data/lib/rubocop/cop/layout/first_method_parameter_line_break.rb +1 -2
  74. data/lib/rubocop/cop/layout/hash_alignment.rb +36 -15
  75. data/lib/rubocop/cop/layout/heredoc_argument_closing_parenthesis.rb +2 -9
  76. data/lib/rubocop/cop/layout/heredoc_indentation.rb +2 -6
  77. data/lib/rubocop/cop/layout/indentation_style.rb +1 -3
  78. data/lib/rubocop/cop/layout/indentation_width.rb +6 -4
  79. data/lib/rubocop/cop/layout/initial_indentation.rb +1 -4
  80. data/lib/rubocop/cop/layout/line_length.rb +4 -15
  81. data/lib/rubocop/cop/layout/multiline_array_line_breaks.rb +1 -2
  82. data/lib/rubocop/cop/layout/multiline_block_layout.rb +7 -15
  83. data/lib/rubocop/cop/layout/multiline_hash_key_line_breaks.rb +1 -2
  84. data/lib/rubocop/cop/layout/multiline_method_argument_line_breaks.rb +1 -2
  85. data/lib/rubocop/cop/layout/multiline_method_call_indentation.rb +4 -10
  86. data/lib/rubocop/cop/layout/redundant_line_break.rb +137 -0
  87. data/lib/rubocop/cop/layout/rescue_ensure_alignment.rb +3 -6
  88. data/lib/rubocop/cop/layout/single_line_block_chain.rb +53 -0
  89. data/lib/rubocop/cop/layout/space_after_colon.rb +1 -3
  90. data/lib/rubocop/cop/layout/space_after_method_name.rb +2 -4
  91. data/lib/rubocop/cop/layout/space_around_block_parameters.rb +6 -14
  92. data/lib/rubocop/cop/layout/space_around_equals_in_parameter_default.rb +1 -2
  93. data/lib/rubocop/cop/layout/space_around_keyword.rb +19 -6
  94. data/lib/rubocop/cop/layout/space_around_operators.rb +4 -9
  95. data/lib/rubocop/cop/layout/space_before_block_braces.rb +1 -2
  96. data/lib/rubocop/cop/layout/space_before_brackets.rb +1 -3
  97. data/lib/rubocop/cop/layout/space_before_comment.rb +1 -3
  98. data/lib/rubocop/cop/layout/space_before_first_arg.rb +5 -11
  99. data/lib/rubocop/cop/layout/space_in_lambda_literal.rb +2 -4
  100. data/lib/rubocop/cop/layout/space_inside_array_literal_brackets.rb +5 -10
  101. data/lib/rubocop/cop/layout/space_inside_array_percent_literal.rb +2 -7
  102. data/lib/rubocop/cop/layout/space_inside_block_braces.rb +5 -10
  103. data/lib/rubocop/cop/layout/space_inside_hash_literal_braces.rb +1 -2
  104. data/lib/rubocop/cop/layout/space_inside_reference_brackets.rb +1 -2
  105. data/lib/rubocop/cop/legacy/corrections_proxy.rb +2 -8
  106. data/lib/rubocop/cop/legacy/corrector.rb +1 -3
  107. data/lib/rubocop/cop/lint/ambiguous_assignment.rb +1 -6
  108. data/lib/rubocop/cop/lint/ambiguous_block_association.rb +14 -7
  109. data/lib/rubocop/cop/lint/boolean_symbol.rb +1 -2
  110. data/lib/rubocop/cop/lint/constant_resolution.rb +1 -2
  111. data/lib/rubocop/cop/lint/deprecated_class_methods.rb +83 -41
  112. data/lib/rubocop/cop/lint/deprecated_constants.rb +3 -3
  113. data/lib/rubocop/cop/lint/deprecated_open_ssl_constant.rb +2 -5
  114. data/lib/rubocop/cop/lint/duplicate_branch.rb +1 -2
  115. data/lib/rubocop/cop/lint/duplicate_hash_key.rb +1 -3
  116. data/lib/rubocop/cop/lint/duplicate_methods.rb +3 -7
  117. data/lib/rubocop/cop/lint/else_layout.rb +1 -3
  118. data/lib/rubocop/cop/lint/empty_block.rb +18 -2
  119. data/lib/rubocop/cop/lint/empty_ensure.rb +1 -3
  120. data/lib/rubocop/cop/lint/empty_file.rb +1 -3
  121. data/lib/rubocop/cop/lint/empty_in_pattern.rb +62 -0
  122. data/lib/rubocop/cop/lint/empty_interpolation.rb +1 -3
  123. data/lib/rubocop/cop/lint/ensure_return.rb +1 -3
  124. data/lib/rubocop/cop/lint/erb_new_arguments.rb +3 -7
  125. data/lib/rubocop/cop/lint/float_out_of_range.rb +1 -2
  126. data/lib/rubocop/cop/lint/format_parameter_mismatch.rb +3 -6
  127. data/lib/rubocop/cop/lint/heredoc_method_call_position.rb +1 -2
  128. data/lib/rubocop/cop/lint/implicit_string_concatenation.rb +1 -2
  129. data/lib/rubocop/cop/lint/ineffective_access_modifier.rb +3 -7
  130. data/lib/rubocop/cop/lint/inherit_exception.rb +1 -2
  131. data/lib/rubocop/cop/lint/interpolation_check.rb +3 -11
  132. data/lib/rubocop/cop/lint/literal_in_interpolation.rb +3 -6
  133. data/lib/rubocop/cop/lint/loop.rb +1 -2
  134. data/lib/rubocop/cop/lint/missing_cop_enable_directive.rb +3 -7
  135. data/lib/rubocop/cop/lint/missing_super.rb +1 -2
  136. data/lib/rubocop/cop/lint/mixed_regexp_capture_types.rb +1 -2
  137. data/lib/rubocop/cop/lint/nested_method_definition.rb +1 -2
  138. data/lib/rubocop/cop/lint/nested_percent_literal.rb +1 -3
  139. data/lib/rubocop/cop/lint/non_deterministic_require_order.rb +1 -3
  140. data/lib/rubocop/cop/lint/number_conversion.rb +2 -3
  141. data/lib/rubocop/cop/lint/ordered_magic_comments.rb +1 -2
  142. data/lib/rubocop/cop/lint/out_of_range_regexp_ref.rb +1 -3
  143. data/lib/rubocop/cop/lint/parentheses_as_grouped_expression.rb +1 -3
  144. data/lib/rubocop/cop/lint/percent_symbol_array.rb +1 -3
  145. data/lib/rubocop/cop/lint/raise_exception.rb +1 -2
  146. data/lib/rubocop/cop/lint/rand_one.rb +1 -2
  147. data/lib/rubocop/cop/lint/redundant_cop_disable_directive.rb +18 -27
  148. data/lib/rubocop/cop/lint/redundant_safe_navigation.rb +1 -3
  149. data/lib/rubocop/cop/lint/redundant_splat_expansion.rb +3 -7
  150. data/lib/rubocop/cop/lint/redundant_string_coercion.rb +1 -2
  151. data/lib/rubocop/cop/lint/redundant_with_index.rb +1 -4
  152. data/lib/rubocop/cop/lint/redundant_with_object.rb +1 -4
  153. data/lib/rubocop/cop/lint/regexp_as_condition.rb +1 -3
  154. data/lib/rubocop/cop/lint/require_parentheses.rb +2 -4
  155. data/lib/rubocop/cop/lint/rescue_exception.rb +1 -2
  156. data/lib/rubocop/cop/lint/rescue_type.rb +2 -7
  157. data/lib/rubocop/cop/lint/return_in_void_context.rb +1 -2
  158. data/lib/rubocop/cop/lint/safe_navigation_chain.rb +1 -2
  159. data/lib/rubocop/cop/lint/safe_navigation_consistency.rb +4 -10
  160. data/lib/rubocop/cop/lint/safe_navigation_with_empty.rb +1 -2
  161. data/lib/rubocop/cop/lint/send_with_mixin_argument.rb +2 -7
  162. data/lib/rubocop/cop/lint/shadowed_argument.rb +4 -11
  163. data/lib/rubocop/cop/lint/shadowed_exception.rb +7 -8
  164. data/lib/rubocop/cop/lint/struct_new_override.rb +1 -2
  165. data/lib/rubocop/cop/lint/symbol_conversion.rb +4 -16
  166. data/lib/rubocop/cop/lint/syntax.rb +1 -3
  167. data/lib/rubocop/cop/lint/to_json.rb +1 -2
  168. data/lib/rubocop/cop/lint/trailing_comma_in_attribute_declaration.rb +1 -3
  169. data/lib/rubocop/cop/lint/underscore_prefixed_variable_name.rb +1 -3
  170. data/lib/rubocop/cop/lint/unreachable_code.rb +2 -5
  171. data/lib/rubocop/cop/lint/unreachable_loop.rb +14 -7
  172. data/lib/rubocop/cop/lint/unused_block_argument.rb +9 -7
  173. data/lib/rubocop/cop/lint/unused_method_argument.rb +1 -2
  174. data/lib/rubocop/cop/lint/useless_access_modifier.rb +2 -4
  175. data/lib/rubocop/cop/lint/useless_assignment.rb +4 -9
  176. data/lib/rubocop/cop/lint/useless_setter_call.rb +1 -3
  177. data/lib/rubocop/cop/lint/void.rb +5 -12
  178. data/lib/rubocop/cop/message_annotator.rb +1 -3
  179. data/lib/rubocop/cop/metrics/block_nesting.rb +2 -7
  180. data/lib/rubocop/cop/metrics/class_length.rb +1 -3
  181. data/lib/rubocop/cop/metrics/cyclomatic_complexity.rb +1 -2
  182. data/lib/rubocop/cop/metrics/module_length.rb +2 -6
  183. data/lib/rubocop/cop/metrics/parameter_lists.rb +2 -5
  184. data/lib/rubocop/cop/metrics/perceived_complexity.rb +1 -2
  185. data/lib/rubocop/cop/metrics/utils/abc_size_calculator.rb +4 -7
  186. data/lib/rubocop/cop/metrics/utils/repeated_attribute_discount.rb +2 -7
  187. data/lib/rubocop/cop/migration/department_name.rb +3 -7
  188. data/lib/rubocop/cop/mixin/alignment.rb +2 -4
  189. data/lib/rubocop/cop/mixin/check_line_breakable.rb +19 -3
  190. data/lib/rubocop/cop/mixin/code_length.rb +1 -3
  191. data/lib/rubocop/cop/mixin/configurable_enforced_style.rb +2 -2
  192. data/lib/rubocop/cop/mixin/configurable_formatting.rb +3 -8
  193. data/lib/rubocop/cop/mixin/def_node.rb +2 -5
  194. data/lib/rubocop/cop/mixin/documentation_comment.rb +2 -5
  195. data/lib/rubocop/cop/mixin/empty_lines_around_body.rb +3 -7
  196. data/lib/rubocop/cop/mixin/empty_parameter.rb +1 -3
  197. data/lib/rubocop/cop/mixin/end_keyword_alignment.rb +1 -3
  198. data/lib/rubocop/cop/mixin/enforce_superclass.rb +2 -6
  199. data/lib/rubocop/cop/mixin/first_element_line_break.rb +1 -3
  200. data/lib/rubocop/cop/mixin/frozen_string_literal.rb +7 -7
  201. data/lib/rubocop/cop/mixin/gem_declaration.rb +13 -0
  202. data/lib/rubocop/cop/mixin/hash_alignment_styles.rb +17 -9
  203. data/lib/rubocop/cop/mixin/hash_transform_method.rb +7 -22
  204. data/lib/rubocop/cop/mixin/interpolation.rb +1 -3
  205. data/lib/rubocop/cop/mixin/line_length_help.rb +2 -4
  206. data/lib/rubocop/cop/mixin/match_range.rb +2 -5
  207. data/lib/rubocop/cop/mixin/method_complexity.rb +1 -3
  208. data/lib/rubocop/cop/mixin/method_preference.rb +1 -2
  209. data/lib/rubocop/cop/mixin/multiline_element_indentation.rb +1 -2
  210. data/lib/rubocop/cop/mixin/multiline_element_line_breaks.rb +1 -3
  211. data/lib/rubocop/cop/mixin/multiline_expression_indentation.rb +7 -17
  212. data/lib/rubocop/cop/mixin/multiline_literal_brace_layout.rb +1 -2
  213. data/lib/rubocop/cop/mixin/negative_conditional.rb +1 -2
  214. data/lib/rubocop/cop/mixin/ordered_gem_node.rb +1 -4
  215. data/lib/rubocop/cop/mixin/percent_array.rb +1 -3
  216. data/lib/rubocop/cop/mixin/percent_literal.rb +0 -6
  217. data/lib/rubocop/cop/mixin/preceding_following_alignment.rb +5 -11
  218. data/lib/rubocop/cop/mixin/preferred_delimiters.rb +3 -6
  219. data/lib/rubocop/cop/mixin/range_help.rb +10 -13
  220. data/lib/rubocop/cop/mixin/rescue_node.rb +2 -6
  221. data/lib/rubocop/cop/mixin/safe_assignment.rb +1 -2
  222. data/lib/rubocop/cop/mixin/space_after_punctuation.rb +2 -4
  223. data/lib/rubocop/cop/mixin/space_before_punctuation.rb +1 -2
  224. data/lib/rubocop/cop/mixin/statement_modifier.rb +1 -3
  225. data/lib/rubocop/cop/mixin/string_literals_help.rb +3 -5
  226. data/lib/rubocop/cop/mixin/symbol_help.rb +13 -0
  227. data/lib/rubocop/cop/mixin/trailing_body.rb +1 -2
  228. data/lib/rubocop/cop/mixin/trailing_comma.rb +1 -2
  229. data/lib/rubocop/cop/mixin/uncommunicative_name.rb +3 -7
  230. data/lib/rubocop/cop/mixin/unused_argument.rb +1 -3
  231. data/lib/rubocop/cop/naming/ascii_identifiers.rb +2 -4
  232. data/lib/rubocop/cop/naming/binary_operator_parameter_name.rb +1 -2
  233. data/lib/rubocop/cop/naming/file_name.rb +7 -16
  234. data/lib/rubocop/cop/naming/memoized_instance_variable_name.rb +2 -3
  235. data/lib/rubocop/cop/naming/method_name.rb +1 -2
  236. data/lib/rubocop/cop/naming/predicate_name.rb +1 -2
  237. data/lib/rubocop/cop/offense.rb +3 -8
  238. data/lib/rubocop/cop/registry.rb +3 -11
  239. data/lib/rubocop/cop/style/access_modifier_declarations.rb +1 -3
  240. data/lib/rubocop/cop/style/accessor_grouping.rb +1 -3
  241. data/lib/rubocop/cop/style/alias.rb +5 -12
  242. data/lib/rubocop/cop/style/arguments_forwarding.rb +1 -3
  243. data/lib/rubocop/cop/style/ascii_comments.rb +1 -2
  244. data/lib/rubocop/cop/style/attr.rb +1 -3
  245. data/lib/rubocop/cop/style/auto_resource_cleanup.rb +2 -5
  246. data/lib/rubocop/cop/style/bisected_attr_accessor/macro.rb +1 -3
  247. data/lib/rubocop/cop/style/case_like_if.rb +1 -2
  248. data/lib/rubocop/cop/style/character_literal.rb +2 -4
  249. data/lib/rubocop/cop/style/class_and_module_children.rb +19 -10
  250. data/lib/rubocop/cop/style/class_methods.rb +1 -3
  251. data/lib/rubocop/cop/style/collection_compact.rb +1 -3
  252. data/lib/rubocop/cop/style/colon_method_call.rb +1 -3
  253. data/lib/rubocop/cop/style/combinable_loops.rb +3 -2
  254. data/lib/rubocop/cop/style/command_literal.rb +3 -8
  255. data/lib/rubocop/cop/style/comment_annotation.rb +3 -6
  256. data/lib/rubocop/cop/style/commented_keyword.rb +2 -8
  257. data/lib/rubocop/cop/style/conditional_assignment.rb +10 -24
  258. data/lib/rubocop/cop/style/copyright.rb +3 -6
  259. data/lib/rubocop/cop/style/date_time.rb +2 -5
  260. data/lib/rubocop/cop/style/def_with_parentheses.rb +1 -2
  261. data/lib/rubocop/cop/style/each_for_simple_loop.rb +1 -2
  262. data/lib/rubocop/cop/style/empty_case_condition.rb +2 -7
  263. data/lib/rubocop/cop/style/empty_else.rb +3 -9
  264. data/lib/rubocop/cop/style/empty_literal.rb +12 -9
  265. data/lib/rubocop/cop/style/empty_method.rb +3 -7
  266. data/lib/rubocop/cop/style/end_block.rb +1 -2
  267. data/lib/rubocop/cop/style/endless_method.rb +1 -3
  268. data/lib/rubocop/cop/style/eval_with_location.rb +2 -4
  269. data/lib/rubocop/cop/style/expand_path_arguments.rb +1 -3
  270. data/lib/rubocop/cop/style/explicit_block_argument.rb +1 -4
  271. data/lib/rubocop/cop/style/format_string_token.rb +1 -4
  272. data/lib/rubocop/cop/style/frozen_string_literal_comment.rb +3 -8
  273. data/lib/rubocop/cop/style/guard_clause.rb +3 -7
  274. data/lib/rubocop/cop/style/hash_conversion.rb +28 -3
  275. data/lib/rubocop/cop/style/hash_each_methods.rb +19 -3
  276. data/lib/rubocop/cop/style/hash_like_case.rb +1 -2
  277. data/lib/rubocop/cop/style/hash_syntax.rb +4 -9
  278. data/lib/rubocop/cop/style/identical_conditional_branches.rb +27 -8
  279. data/lib/rubocop/cop/style/if_unless_modifier.rb +40 -13
  280. data/lib/rubocop/cop/style/in_pattern_then.rb +56 -0
  281. data/lib/rubocop/cop/style/infinite_loop.rb +2 -5
  282. data/lib/rubocop/cop/style/inverse_methods.rb +3 -7
  283. data/lib/rubocop/cop/style/ip_addresses.rb +1 -2
  284. data/lib/rubocop/cop/style/lambda.rb +2 -4
  285. data/lib/rubocop/cop/style/lambda_call.rb +1 -2
  286. data/lib/rubocop/cop/style/line_end_concatenation.rb +5 -12
  287. data/lib/rubocop/cop/style/method_call_with_args_parentheses.rb +1 -1
  288. data/lib/rubocop/cop/style/method_call_with_args_parentheses/omit_parentheses.rb +7 -12
  289. data/lib/rubocop/cop/style/method_call_without_args_parentheses.rb +1 -2
  290. data/lib/rubocop/cop/style/method_called_on_do_end_block.rb +2 -4
  291. data/lib/rubocop/cop/style/method_def_parentheses.rb +4 -8
  292. data/lib/rubocop/cop/style/min_max.rb +1 -2
  293. data/lib/rubocop/cop/style/missing_else.rb +2 -4
  294. data/lib/rubocop/cop/style/missing_respond_to_missing.rb +1 -2
  295. data/lib/rubocop/cop/style/mixin_grouping.rb +4 -10
  296. data/lib/rubocop/cop/style/mixin_usage.rb +1 -2
  297. data/lib/rubocop/cop/style/module_function.rb +3 -6
  298. data/lib/rubocop/cop/style/multiline_block_chain.rb +1 -2
  299. data/lib/rubocop/cop/style/multiline_in_pattern_then.rb +62 -0
  300. data/lib/rubocop/cop/style/multiline_method_signature.rb +1 -3
  301. data/lib/rubocop/cop/style/multiline_ternary_operator.rb +1 -2
  302. data/lib/rubocop/cop/style/multiline_when_then.rb +2 -11
  303. data/lib/rubocop/cop/style/multiple_comparison.rb +2 -4
  304. data/lib/rubocop/cop/style/mutable_constant.rb +4 -10
  305. data/lib/rubocop/cop/style/negated_if.rb +1 -2
  306. data/lib/rubocop/cop/style/negated_if_else_condition.rb +17 -9
  307. data/lib/rubocop/cop/style/negated_unless.rb +1 -2
  308. data/lib/rubocop/cop/style/nested_modifier.rb +3 -7
  309. data/lib/rubocop/cop/style/nested_ternary_operator.rb +2 -3
  310. data/lib/rubocop/cop/style/next.rb +4 -9
  311. data/lib/rubocop/cop/style/nil_lambda.rb +29 -12
  312. data/lib/rubocop/cop/style/non_nil_check.rb +2 -5
  313. data/lib/rubocop/cop/style/numeric_literals.rb +3 -11
  314. data/lib/rubocop/cop/style/numeric_predicate.rb +2 -7
  315. data/lib/rubocop/cop/style/one_line_conditional.rb +1 -2
  316. data/lib/rubocop/cop/style/option_hash.rb +1 -3
  317. data/lib/rubocop/cop/style/optional_arguments.rb +2 -5
  318. data/lib/rubocop/cop/style/or_assignment.rb +2 -6
  319. data/lib/rubocop/cop/style/parallel_assignment.rb +6 -9
  320. data/lib/rubocop/cop/style/percent_literal_delimiters.rb +1 -3
  321. data/lib/rubocop/cop/style/percent_q_literals.rb +1 -2
  322. data/lib/rubocop/cop/style/perl_backrefs.rb +2 -9
  323. data/lib/rubocop/cop/style/preferred_hash_methods.rb +1 -4
  324. data/lib/rubocop/cop/style/proc.rb +1 -2
  325. data/lib/rubocop/cop/style/quoted_symbols.rb +110 -0
  326. data/lib/rubocop/cop/style/raise_args.rb +4 -8
  327. data/lib/rubocop/cop/style/random_with_offset.rb +3 -8
  328. data/lib/rubocop/cop/style/redundant_argument.rb +2 -11
  329. data/lib/rubocop/cop/style/redundant_assignment.rb +1 -3
  330. data/lib/rubocop/cop/style/redundant_begin.rb +4 -4
  331. data/lib/rubocop/cop/style/redundant_capital_w.rb +1 -2
  332. data/lib/rubocop/cop/style/redundant_condition.rb +2 -5
  333. data/lib/rubocop/cop/style/redundant_conditional.rb +3 -6
  334. data/lib/rubocop/cop/style/redundant_exception.rb +3 -6
  335. data/lib/rubocop/cop/style/redundant_file_extension_in_require.rb +1 -1
  336. data/lib/rubocop/cop/style/redundant_freeze.rb +1 -2
  337. data/lib/rubocop/cop/style/redundant_interpolation.rb +1 -2
  338. data/lib/rubocop/cop/style/redundant_parentheses.rb +8 -20
  339. data/lib/rubocop/cop/style/redundant_percent_q.rb +1 -2
  340. data/lib/rubocop/cop/style/redundant_regexp_escape.rb +1 -4
  341. data/lib/rubocop/cop/style/redundant_return.rb +3 -5
  342. data/lib/rubocop/cop/style/redundant_self.rb +25 -7
  343. data/lib/rubocop/cop/style/redundant_self_assignment.rb +2 -2
  344. data/lib/rubocop/cop/style/redundant_sort.rb +2 -5
  345. data/lib/rubocop/cop/style/regexp_literal.rb +4 -8
  346. data/lib/rubocop/cop/style/rescue_modifier.rb +4 -0
  347. data/lib/rubocop/cop/style/rescue_standard_error.rb +3 -7
  348. data/lib/rubocop/cop/style/return_nil.rb +1 -2
  349. data/lib/rubocop/cop/style/safe_navigation.rb +10 -21
  350. data/lib/rubocop/cop/style/send.rb +1 -2
  351. data/lib/rubocop/cop/style/signal_exception.rb +3 -7
  352. data/lib/rubocop/cop/style/single_argument_dig.rb +1 -2
  353. data/lib/rubocop/cop/style/single_line_block_params.rb +2 -5
  354. data/lib/rubocop/cop/style/single_line_methods.rb +20 -4
  355. data/lib/rubocop/cop/style/sole_nested_conditional.rb +15 -7
  356. data/lib/rubocop/cop/style/special_global_vars.rb +6 -18
  357. data/lib/rubocop/cop/style/stabby_lambda_parentheses.rb +1 -2
  358. data/lib/rubocop/cop/style/stderr_puts.rb +2 -6
  359. data/lib/rubocop/cop/style/string_chars.rb +2 -1
  360. data/lib/rubocop/cop/style/string_concatenation.rb +8 -10
  361. data/lib/rubocop/cop/style/string_literals.rb +3 -5
  362. data/lib/rubocop/cop/style/string_literals_in_interpolation.rb +1 -0
  363. data/lib/rubocop/cop/style/struct_inheritance.rb +9 -1
  364. data/lib/rubocop/cop/style/symbol_literal.rb +1 -3
  365. data/lib/rubocop/cop/style/symbol_proc.rb +4 -9
  366. data/lib/rubocop/cop/style/ternary_parentheses.rb +3 -6
  367. data/lib/rubocop/cop/style/top_level_method_definition.rb +83 -0
  368. data/lib/rubocop/cop/style/trailing_body_on_method_definition.rb +1 -2
  369. data/lib/rubocop/cop/style/trailing_comma_in_block_args.rb +2 -6
  370. data/lib/rubocop/cop/style/trailing_method_end_statement.rb +2 -5
  371. data/lib/rubocop/cop/style/trailing_underscore_variable.rb +4 -10
  372. data/lib/rubocop/cop/style/trivial_accessors.rb +67 -4
  373. data/lib/rubocop/cop/style/unless_else.rb +1 -2
  374. data/lib/rubocop/cop/style/unless_logical_operators.rb +2 -2
  375. data/lib/rubocop/cop/style/variable_interpolation.rb +1 -1
  376. data/lib/rubocop/cop/style/when_then.rb +4 -2
  377. data/lib/rubocop/cop/style/while_until_modifier.rb +1 -2
  378. data/lib/rubocop/cop/style/word_array.rb +1 -2
  379. data/lib/rubocop/cop/style/yoda_condition.rb +3 -11
  380. data/lib/rubocop/cop/style/zero_length_predicate.rb +1 -2
  381. data/lib/rubocop/cop/team.rb +2 -5
  382. data/lib/rubocop/cop/util.rb +4 -10
  383. data/lib/rubocop/cop/utils/format_string.rb +1 -3
  384. data/lib/rubocop/cop/variable_force.rb +6 -15
  385. data/lib/rubocop/cop/variable_force/assignment.rb +1 -2
  386. data/lib/rubocop/cop/variable_force/branch.rb +16 -2
  387. data/lib/rubocop/cop/variable_force/reference.rb +1 -3
  388. data/lib/rubocop/cop/variable_force/scope.rb +4 -8
  389. data/lib/rubocop/cop/variable_force/variable.rb +2 -4
  390. data/lib/rubocop/cops_documentation_generator.rb +7 -21
  391. data/lib/rubocop/directive_comment.rb +5 -1
  392. data/lib/rubocop/file_finder.rb +1 -3
  393. data/lib/rubocop/formatter/disabled_config_formatter.rb +3 -8
  394. data/lib/rubocop/formatter/git_hub_actions_formatter.rb +1 -5
  395. data/lib/rubocop/formatter/html_formatter.rb +4 -10
  396. data/lib/rubocop/formatter/json_formatter.rb +1 -5
  397. data/lib/rubocop/formatter/junit_formatter.rb +23 -14
  398. data/lib/rubocop/formatter/progress_formatter.rb +1 -3
  399. data/lib/rubocop/options.rb +30 -50
  400. data/lib/rubocop/path_util.rb +1 -3
  401. data/lib/rubocop/rake_task.rb +3 -0
  402. data/lib/rubocop/remote_config.rb +4 -7
  403. data/lib/rubocop/result_cache.rb +5 -12
  404. data/lib/rubocop/rspec/cop_helper.rb +1 -1
  405. data/lib/rubocop/rspec/expect_offense.rb +4 -9
  406. data/lib/rubocop/rspec/shared_contexts.rb +8 -15
  407. data/lib/rubocop/runner.rb +7 -14
  408. data/lib/rubocop/target_finder.rb +18 -16
  409. data/lib/rubocop/target_ruby.rb +4 -8
  410. data/lib/rubocop/version.rb +1 -1
  411. metadata +16 -7
  412. data/lib/rubocop/core_ext/hash.rb +0 -20
@@ -69,9 +69,7 @@ module RuboCop
69
69
  good = good_method_name(method_name)
70
70
  message = format(MSG, good: good, bad: range.source)
71
71
 
72
- add_offense(range, message: message) do |corrector|
73
- corrector.replace(range, good)
74
- end
72
+ add_offense(range, message: message) { |corrector| corrector.replace(range, good) }
75
73
  end
76
74
 
77
75
  private
@@ -38,9 +38,7 @@ module RuboCop
38
38
  # ignore Java interop code like Java::int
39
39
  return if java_type_node?(node)
40
40
 
41
- add_offense(node.loc.dot) do |corrector|
42
- corrector.replace(node.loc.dot, '.')
43
- end
41
+ add_offense(node.loc.dot) { |corrector| corrector.replace(node.loc.dot, '.') }
44
42
  end
45
43
  end
46
44
  end
@@ -75,8 +75,9 @@ module RuboCop
75
75
  private
76
76
 
77
77
  def collection_looping_method?(node)
78
- method_name = node.send_node.method_name
79
- method_name.match?(/^each/) || method_name.match?(/_each$/)
78
+ # TODO: Remove `Symbol#to_s` after supporting only Ruby >= 2.7.
79
+ method_name = node.send_node.method_name.to_s
80
+ method_name.start_with?('each') || method_name.end_with?('_each')
80
81
  end
81
82
 
82
83
  def same_collection_looping?(node, sibling)
@@ -97,17 +97,13 @@ module RuboCop
97
97
  def check_backtick_literal(node, message)
98
98
  return if allowed_backtick_literal?(node)
99
99
 
100
- add_offense(node, message: message) do |corrector|
101
- autocorrect(corrector, node)
102
- end
100
+ add_offense(node, message: message) { |corrector| autocorrect(corrector, node) }
103
101
  end
104
102
 
105
103
  def check_percent_x_literal(node, message)
106
104
  return if allowed_percent_x_literal?(node)
107
105
 
108
- add_offense(node, message: message) do |corrector|
109
- autocorrect(corrector, node)
110
- end
106
+ add_offense(node, message: message) { |corrector| autocorrect(corrector, node) }
111
107
  end
112
108
 
113
109
  def autocorrect(corrector, node)
@@ -177,8 +173,7 @@ module RuboCop
177
173
  end
178
174
 
179
175
  def preferred_delimiters_config
180
- config.for_cop('Style/PercentLiteralDelimiters') \
181
- ['PreferredDelimiters']
176
+ config.for_cop('Style/PercentLiteralDelimiters') ['PreferredDelimiters']
182
177
  end
183
178
  end
184
179
  end
@@ -44,8 +44,7 @@ module RuboCop
44
44
  MSG = 'Annotation keywords like `%<keyword>s` should be all ' \
45
45
  'upper case, followed by a colon, and a space, ' \
46
46
  'then a note describing the problem.'
47
- MISSING_NOTE = 'Annotation comment, with keyword `%<keyword>s`, ' \
48
- 'is missing a note.'
47
+ MISSING_NOTE = 'Annotation comment, with keyword `%<keyword>s`, is missing a note.'
49
48
 
50
49
  def on_new_investigation
51
50
  processed_source.comments.each_with_index do |comment, index|
@@ -53,8 +52,7 @@ module RuboCop
53
52
  inline_comment?(comment)
54
53
 
55
54
  margin, first_word, colon, space, note = split_comment(comment)
56
- next unless annotation?(comment) &&
57
- !correct_annotation?(first_word, colon, space, note)
55
+ next unless annotation?(comment) && !correct_annotation?(first_word, colon, space, note)
58
56
 
59
57
  range = annotation_range(comment, margin, first_word, colon, space)
60
58
 
@@ -76,8 +74,7 @@ module RuboCop
76
74
  end
77
75
 
78
76
  def first_comment_line?(comments, index)
79
- index.zero? ||
80
- comments[index - 1].loc.line < comments[index].loc.line - 1
77
+ index.zero? || comments[index - 1].loc.line < comments[index].loc.line - 1
81
78
  end
82
79
 
83
80
  def inline_comment?(comment)
@@ -40,18 +40,12 @@ module RuboCop
40
40
  include RangeHelp
41
41
  extend AutoCorrector
42
42
 
43
- MSG = 'Do not place comments on the same line as the ' \
44
- '`%<keyword>s` keyword.'
43
+ MSG = 'Do not place comments on the same line as the `%<keyword>s` keyword.'
45
44
 
46
45
  KEYWORDS = %w[begin class def end module].freeze
47
46
  KEYWORD_REGEXES = KEYWORDS.map { |w| /^\s*#{w}\s/ }.freeze
48
47
 
49
- ALLOWED_COMMENTS = %w[
50
- :nodoc:
51
- :yields:
52
- rubocop:disable
53
- rubocop:todo
54
- ].freeze
48
+ ALLOWED_COMMENTS = %w[:nodoc: :yields: rubocop:disable rubocop:todo].freeze
55
49
  ALLOWED_COMMENT_REGEXES = ALLOWED_COMMENTS.map { |c| /#\s*#{c}/ }.freeze
56
50
 
57
51
  def on_new_investigation
@@ -103,8 +103,7 @@ module RuboCop
103
103
  end
104
104
 
105
105
  def setter_method?(method_name)
106
- method_name.to_s.end_with?(EQUAL) &&
107
- !%i[!= == === >= <=].include?(method_name)
106
+ method_name.to_s.end_with?(EQUAL) && !%i[!= == === >= <=].include?(method_name)
108
107
  end
109
108
 
110
109
  def assignment_rhs_exist?(node)
@@ -214,14 +213,10 @@ module RuboCop
214
213
  include IgnoredNode
215
214
  extend AutoCorrector
216
215
 
217
- MSG = 'Use the return of the conditional for variable assignment ' \
218
- 'and comparison.'
219
- ASSIGN_TO_CONDITION_MSG =
220
- 'Assign variables inside of conditionals'
221
- VARIABLE_ASSIGNMENT_TYPES =
222
- %i[casgn cvasgn gvasgn ivasgn lvasgn].freeze
223
- ASSIGNMENT_TYPES = VARIABLE_ASSIGNMENT_TYPES +
224
- %i[and_asgn or_asgn op_asgn masgn].freeze
216
+ MSG = 'Use the return of the conditional for variable assignment and comparison.'
217
+ ASSIGN_TO_CONDITION_MSG = 'Assign variables inside of conditionals'
218
+ VARIABLE_ASSIGNMENT_TYPES = %i[casgn cvasgn gvasgn ivasgn lvasgn].freeze
219
+ ASSIGNMENT_TYPES = VARIABLE_ASSIGNMENT_TYPES + %i[and_asgn or_asgn op_asgn masgn].freeze
225
220
  LINE_LENGTH = 'Layout/LineLength'
226
221
  INDENTATION_WIDTH = 'Layout/IndentationWidth'
227
222
  ENABLED = 'Enabled'
@@ -368,9 +363,7 @@ module RuboCop
368
363
  return if allowed_single_line?(branches)
369
364
  return if correction_exceeds_line_limit?(node, branches)
370
365
 
371
- add_offense(node) do |corrector|
372
- autocorrect(corrector, node)
373
- end
366
+ add_offense(node) { |corrector| autocorrect(corrector, node) }
374
367
  end
375
368
 
376
369
  def autocorrect(corrector, node)
@@ -411,9 +404,7 @@ module RuboCop
411
404
 
412
405
  def longest_line(node, assignment)
413
406
  assignment_regex = /\s*#{Regexp.escape(assignment).gsub('\ ', '\s*')}/
414
- lines = node.source.lines.map do |line|
415
- line.chomp.sub(assignment_regex, '')
416
- end
407
+ lines = node.source.lines.map { |line| line.chomp.sub(assignment_regex, '') }
417
408
  longest_line = lines.max_by(&:length)
418
409
  assignment + longest_line
419
410
  end
@@ -457,9 +448,7 @@ module RuboCop
457
448
  expression = node.loc.expression
458
449
  begin_pos = expression.begin_pos - (expression.column - column - 2)
459
450
 
460
- Parser::Source::Range.new(expression.source_buffer,
461
- begin_pos,
462
- expression.begin_pos)
451
+ Parser::Source::Range.new(expression.source_buffer, begin_pos, expression.begin_pos)
463
452
  end
464
453
 
465
454
  def assignment(node)
@@ -532,9 +521,7 @@ module RuboCop
532
521
  _variable, *_operator, if_rhs = *node.if_branch
533
522
  _else_variable, *_operator, else_rhs = *node.else_branch
534
523
 
535
- expr = "#{node.condition.source} ? " \
536
- "#{if_rhs.source} : " \
537
- "#{else_rhs.source}"
524
+ expr = "#{node.condition.source} ? #{if_rhs.source} : #{else_rhs.source}"
538
525
 
539
526
  element_assignment?(node.if_branch) ? "(#{expr})" : expr
540
527
  end
@@ -596,8 +583,7 @@ module RuboCop
596
583
  def move_branch_inside_condition(corrector, branch, condition,
597
584
  assignment, column)
598
585
  branch_assignment = tail(branch)
599
- corrector.insert_before(branch_assignment,
600
- assignment.source)
586
+ corrector.insert_before(branch_assignment, assignment.source)
601
587
 
602
588
  remove_whitespace_in_branches(corrector, branch, condition, column)
603
589
 
@@ -19,10 +19,8 @@ module RuboCop
19
19
  include RangeHelp
20
20
  extend AutoCorrector
21
21
 
22
- MSG = 'Include a copyright notice matching /%<notice>s/ before ' \
23
- 'any code.'
24
- AUTOCORRECT_EMPTY_WARNING = 'An AutocorrectNotice must be defined in ' \
25
- 'your RuboCop config'
22
+ MSG = 'Include a copyright notice matching /%<notice>s/ before any code.'
23
+ AUTOCORRECT_EMPTY_WARNING = 'An AutocorrectNotice must be defined in your RuboCop config'
26
24
 
27
25
  def on_new_investigation
28
26
  return if notice.empty? || notice_found?(processed_source)
@@ -57,8 +55,7 @@ module RuboCop
57
55
  regex = Regexp.new(notice)
58
56
  return if autocorrect_notice&.match?(regex)
59
57
 
60
- raise Warning, "AutocorrectNotice '#{autocorrect_notice}' must " \
61
- "match Notice /#{notice}/"
58
+ raise Warning, "AutocorrectNotice '#{autocorrect_notice}' must match Notice /#{notice}/"
62
59
  end
63
60
 
64
61
  def insert_notice_before(processed_source)
@@ -63,15 +63,12 @@ module RuboCop
63
63
  PATTERN
64
64
 
65
65
  def on_send(node)
66
- return unless date_time?(node) ||
67
- (to_datetime?(node) && disallow_coercion?)
66
+ return unless date_time?(node) || (to_datetime?(node) && disallow_coercion?)
68
67
  return if historic_date?(node)
69
68
 
70
69
  message = to_datetime?(node) ? COERCION_MSG : CLASS_MSG
71
70
 
72
- add_offense(node, message: message) do |corrector|
73
- autocorrect(corrector, node)
74
- end
71
+ add_offense(node, message: message) { |corrector| autocorrect(corrector, node) }
75
72
  end
76
73
 
77
74
  private
@@ -36,8 +36,7 @@ module RuboCop
36
36
  class DefWithParentheses < Base
37
37
  extend AutoCorrector
38
38
 
39
- MSG = "Omit the parentheses in defs when the method doesn't accept " \
40
- 'any arguments.'
39
+ MSG = "Omit the parentheses in defs when the method doesn't accept any arguments."
41
40
 
42
41
  def on_def(node)
43
42
  return if node.single_line?
@@ -25,8 +25,7 @@ module RuboCop
25
25
  class EachForSimpleLoop < Base
26
26
  extend AutoCorrector
27
27
 
28
- MSG = 'Use `Integer#times` for a simple loop which iterates a fixed ' \
29
- 'number of times.'
28
+ MSG = 'Use `Integer#times` for a simple loop which iterates a fixed number of times.'
30
29
 
31
30
  def on_block(node)
32
31
  return unless offending_each_range(node)
@@ -44,19 +44,14 @@ module RuboCop
44
44
  def on_case(case_node)
45
45
  return if case_node.condition
46
46
 
47
- branch_bodies = [
48
- *case_node.when_branches.map(&:body),
49
- case_node.else_branch
50
- ].compact
47
+ branch_bodies = [*case_node.when_branches.map(&:body), case_node.else_branch].compact
51
48
 
52
49
  return if branch_bodies.any? do |body|
53
50
  body.return_type? ||
54
51
  body.each_descendant.any?(&:return_type?)
55
52
  end
56
53
 
57
- add_offense(case_node.loc.keyword) do |corrector|
58
- autocorrect(corrector, case_node)
59
- end
54
+ add_offense(case_node.loc.keyword) { |corrector| autocorrect(corrector, case_node) }
60
55
  end
61
56
 
62
57
  private
@@ -123,17 +123,13 @@ module RuboCop
123
123
  def empty_check(node)
124
124
  return unless node.else? && !node.else_branch
125
125
 
126
- add_offense(node.loc.else) do |corrector|
127
- autocorrect(corrector, node)
128
- end
126
+ add_offense(node.loc.else) { |corrector| autocorrect(corrector, node) }
129
127
  end
130
128
 
131
129
  def nil_check(node)
132
130
  return unless node.else_branch&.nil_type?
133
131
 
134
- add_offense(node.loc.else) do |corrector|
135
- autocorrect(corrector, node)
136
- end
132
+ add_offense(node.loc.else) { |corrector| autocorrect(corrector, node) }
137
133
  end
138
134
 
139
135
  def autocorrect(corrector, node)
@@ -154,9 +150,7 @@ module RuboCop
154
150
  return node if node.case_type?
155
151
  return node unless node.elsif?
156
152
 
157
- node.each_ancestor(:if, :case, :when).find(-> { node }) do |parent|
158
- parent.loc.end
159
- end
153
+ node.each_ancestor(:if, :case, :when).find(-> { node }) { |parent| parent.loc.end }
160
154
  end
161
155
 
162
156
  def autocorrect_forbidden?(type)
@@ -37,8 +37,7 @@ module RuboCop
37
37
  def_node_matcher :str_node, '(send (const {nil? cbase} :String) :new)'
38
38
 
39
39
  # @!method array_with_block(node)
40
- def_node_matcher :array_with_block,
41
- '(block (send (const {nil? cbase} :Array) :new) args _)'
40
+ def_node_matcher :array_with_block, '(block (send (const {nil? cbase} :Array) :new) args _)'
42
41
 
43
42
  # @!method hash_with_block(node)
44
43
  def_node_matcher :hash_with_block, <<~PATTERN
@@ -63,7 +62,7 @@ module RuboCop
63
62
  ARR_MSG
64
63
  elsif offense_hash_node?(node)
65
64
  HASH_MSG
66
- elsif str_node(node) && !frozen_string_literals_enabled?
65
+ elsif str_node(node) && !frozen_strings?
67
66
  format(STR_MSG, prefer: preferred_string_literal)
68
67
  end
69
68
  end
@@ -84,20 +83,17 @@ module RuboCop
84
83
  parent = node.parent
85
84
  return false unless parent && %i[send super zsuper].include?(parent.type)
86
85
 
87
- node.equal?(parent.arguments.first) &&
88
- !parentheses?(node.parent)
86
+ node.equal?(parent.arguments.first) && !parentheses?(node.parent)
89
87
  end
90
88
 
91
89
  def replacement_range(node)
92
- if hash_node(node) &&
93
- first_argument_unparenthesized?(node)
90
+ if hash_node(node) && first_argument_unparenthesized?(node)
94
91
  # `some_method {}` is not same as `some_method Hash.new`
95
92
  # because the braces are interpreted as a block. We will have
96
93
  # to rewrite the arguments to wrap them in parenthesis.
97
94
  args = node.parent.arguments
98
95
 
99
- range_between(args[0].source_range.begin_pos - 1,
100
- args[-1].source_range.end_pos)
96
+ range_between(args[0].source_range.begin_pos - 1, args[-1].source_range.end_pos)
101
97
  else
102
98
  node.source_range
103
99
  end
@@ -129,6 +125,13 @@ module RuboCop
129
125
  end
130
126
  end
131
127
  end
128
+
129
+ def frozen_strings?
130
+ return true if frozen_string_literals_enabled?
131
+
132
+ frozen_string_cop_enabled = config.for_cop('Style/FrozenStringLiteral')['Enabled']
133
+ frozen_string_cop_enabled && !frozen_string_literals_disabled?
134
+ end
132
135
  end
133
136
  end
134
137
  end
@@ -45,16 +45,13 @@ module RuboCop
45
45
  extend AutoCorrector
46
46
 
47
47
  MSG_COMPACT = 'Put empty method definitions on a single line.'
48
- MSG_EXPANDED = 'Put the `end` of empty method definitions on the ' \
49
- 'next line.'
48
+ MSG_EXPANDED = 'Put the `end` of empty method definitions on the next line.'
50
49
 
51
50
  def on_def(node)
52
51
  return if node.body || comment_lines?(node)
53
52
  return if correct_style?(node)
54
53
 
55
- add_offense(node) do |corrector|
56
- corrector.replace(node, corrected(node))
57
- end
54
+ add_offense(node) { |corrector| corrector.replace(node, corrected(node)) }
58
55
  end
59
56
  alias on_defs on_def
60
57
 
@@ -65,8 +62,7 @@ module RuboCop
65
62
  end
66
63
 
67
64
  def correct_style?(node)
68
- compact_style? && compact?(node) ||
69
- expanded_style? && expanded?(node)
65
+ compact_style? && compact?(node) || expanded_style? && expanded?(node)
70
66
  end
71
67
 
72
68
  def corrected(node)
@@ -15,8 +15,7 @@ module RuboCop
15
15
  class EndBlock < Base
16
16
  extend AutoCorrector
17
17
 
18
- MSG = 'Avoid the use of `END` blocks. ' \
19
- 'Use `Kernel#at_exit` instead.'
18
+ MSG = 'Avoid the use of `END` blocks. Use `Kernel#at_exit` instead.'
20
19
 
21
20
  def on_postexe(node)
22
21
  add_offense(node.loc.keyword) do |corrector|
@@ -79,9 +79,7 @@ module RuboCop
79
79
  def handle_disallow_style(node)
80
80
  return unless node.endless?
81
81
 
82
- add_offense(node) do |corrector|
83
- correct_to_multiline(corrector, node)
84
- end
82
+ add_offense(node) { |corrector| correct_to_multiline(corrector, node) }
85
83
  end
86
84
 
87
85
  def correct_to_multiline(corrector, node)
@@ -112,13 +112,11 @@ module RuboCop
112
112
  end
113
113
 
114
114
  def special_file_keyword?(node)
115
- node.str_type? &&
116
- node.source == '__FILE__'
115
+ node.str_type? && node.source == '__FILE__'
117
116
  end
118
117
 
119
118
  def special_line_keyword?(node)
120
- node.int_type? &&
121
- node.source == '__LINE__'
119
+ node.int_type? && node.source == '__LINE__'
122
120
  end
123
121
 
124
122
  def file_and_line(node)
@@ -85,9 +85,7 @@ module RuboCop
85
85
  elsif (default_dir = pathname_parent_expand_path(node))
86
86
  return unless unrecommended_argument?(default_dir)
87
87
 
88
- add_offense(node, message: PATHNAME_MSG) do |corrector|
89
- autocorrect(corrector, node)
90
- end
88
+ add_offense(node, message: PATHNAME_MSG) { |corrector| autocorrect(corrector, node) }
91
89
  elsif (default_dir = pathname_new_parent_expand_path(node))
92
90
  return unless unrecommended_argument?(default_dir)
93
91