rubocop 1.11.0 → 1.15.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 (425) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +6 -3
  3. data/config/default.yml +58 -6
  4. data/exe/rubocop +1 -3
  5. data/lib/rubocop.rb +6 -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/cli/command/suggest_extensions.rb +3 -2
  12. data/lib/rubocop/comment_config.rb +45 -101
  13. data/lib/rubocop/config.rb +11 -26
  14. data/lib/rubocop/config_loader.rb +5 -11
  15. data/lib/rubocop/config_loader_resolver.rb +22 -14
  16. data/lib/rubocop/config_obsoletion/cop_rule.rb +1 -2
  17. data/lib/rubocop/config_store.rb +1 -2
  18. data/lib/rubocop/config_validator.rb +5 -10
  19. data/lib/rubocop/cop/autocorrect_logic.rb +3 -8
  20. data/lib/rubocop/cop/badge.rb +1 -2
  21. data/lib/rubocop/cop/base.rb +8 -6
  22. data/lib/rubocop/cop/bundler/duplicated_gem.rb +1 -2
  23. data/lib/rubocop/cop/bundler/gem_comment.rb +43 -11
  24. data/lib/rubocop/cop/bundler/gem_version.rb +99 -0
  25. data/lib/rubocop/cop/bundler/ordered_gems.rb +1 -4
  26. data/lib/rubocop/cop/commissioner.rb +2 -8
  27. data/lib/rubocop/cop/cop.rb +4 -18
  28. data/lib/rubocop/cop/corrector.rb +1 -4
  29. data/lib/rubocop/cop/correctors/alignment_corrector.rb +6 -12
  30. data/lib/rubocop/cop/correctors/each_to_for_corrector.rb +2 -4
  31. data/lib/rubocop/cop/correctors/for_to_each_corrector.rb +1 -2
  32. data/lib/rubocop/cop/correctors/line_break_corrector.rb +3 -6
  33. data/lib/rubocop/cop/correctors/multiline_literal_brace_corrector.rb +1 -3
  34. data/lib/rubocop/cop/correctors/ordered_gem_corrector.rb +1 -3
  35. data/lib/rubocop/cop/correctors/percent_literal_corrector.rb +2 -8
  36. data/lib/rubocop/cop/gemspec/duplicated_assignment.rb +1 -2
  37. data/lib/rubocop/cop/gemspec/ordered_dependencies.rb +1 -4
  38. data/lib/rubocop/cop/generator.rb +1 -4
  39. data/lib/rubocop/cop/generator/configuration_injector.rb +1 -2
  40. data/lib/rubocop/cop/generator/require_file_injector.rb +2 -5
  41. data/lib/rubocop/cop/internal_affairs/example_description.rb +7 -5
  42. data/lib/rubocop/cop/internal_affairs/method_name_equal.rb +2 -5
  43. data/lib/rubocop/cop/internal_affairs/node_destructuring.rb +1 -3
  44. data/lib/rubocop/cop/internal_affairs/node_type_predicate.rb +1 -3
  45. data/lib/rubocop/cop/internal_affairs/offense_location_keyword.rb +1 -2
  46. data/lib/rubocop/cop/internal_affairs/style_detected_api_use.rb +1 -2
  47. data/lib/rubocop/cop/internal_affairs/useless_message_assertion.rb +1 -3
  48. data/lib/rubocop/cop/layout/access_modifier_indentation.rb +12 -10
  49. data/lib/rubocop/cop/layout/argument_alignment.rb +34 -18
  50. data/lib/rubocop/cop/layout/array_alignment.rb +7 -6
  51. data/lib/rubocop/cop/layout/assignment_indentation.rb +8 -7
  52. data/lib/rubocop/cop/layout/begin_end_alignment.rb +1 -4
  53. data/lib/rubocop/cop/layout/block_alignment.rb +7 -19
  54. data/lib/rubocop/cop/layout/block_end_newline.rb +4 -8
  55. data/lib/rubocop/cop/layout/case_indentation.rb +1 -3
  56. data/lib/rubocop/cop/layout/class_structure.rb +4 -10
  57. data/lib/rubocop/cop/layout/closing_parenthesis_indentation.rb +18 -30
  58. data/lib/rubocop/cop/layout/comment_indentation.rb +17 -21
  59. data/lib/rubocop/cop/layout/def_end_alignment.rb +2 -6
  60. data/lib/rubocop/cop/layout/dot_position.rb +1 -3
  61. data/lib/rubocop/cop/layout/else_alignment.rb +10 -9
  62. data/lib/rubocop/cop/layout/empty_comment.rb +5 -12
  63. data/lib/rubocop/cop/layout/empty_line_after_guard_clause.rb +22 -8
  64. data/lib/rubocop/cop/layout/empty_line_between_defs.rb +2 -6
  65. data/lib/rubocop/cop/layout/empty_lines.rb +1 -3
  66. data/lib/rubocop/cop/layout/empty_lines_around_access_modifier.rb +8 -18
  67. data/lib/rubocop/cop/layout/empty_lines_around_exception_handling_keywords.rb +2 -8
  68. data/lib/rubocop/cop/layout/end_alignment.rb +1 -2
  69. data/lib/rubocop/cop/layout/end_of_line.rb +1 -1
  70. data/lib/rubocop/cop/layout/extra_spacing.rb +3 -7
  71. data/lib/rubocop/cop/layout/first_argument_indentation.rb +6 -5
  72. data/lib/rubocop/cop/layout/first_array_element_indentation.rb +10 -8
  73. data/lib/rubocop/cop/layout/first_array_element_line_break.rb +1 -2
  74. data/lib/rubocop/cop/layout/first_hash_element_indentation.rb +36 -20
  75. data/lib/rubocop/cop/layout/first_hash_element_line_break.rb +1 -2
  76. data/lib/rubocop/cop/layout/first_method_argument_line_break.rb +1 -2
  77. data/lib/rubocop/cop/layout/first_method_parameter_line_break.rb +1 -2
  78. data/lib/rubocop/cop/layout/first_parameter_indentation.rb +6 -5
  79. data/lib/rubocop/cop/layout/hash_alignment.rb +18 -13
  80. data/lib/rubocop/cop/layout/heredoc_argument_closing_parenthesis.rb +2 -9
  81. data/lib/rubocop/cop/layout/heredoc_indentation.rb +2 -6
  82. data/lib/rubocop/cop/layout/indentation_consistency.rb +9 -6
  83. data/lib/rubocop/cop/layout/indentation_style.rb +25 -30
  84. data/lib/rubocop/cop/layout/indentation_width.rb +24 -12
  85. data/lib/rubocop/cop/layout/initial_indentation.rb +1 -4
  86. data/lib/rubocop/cop/layout/line_length.rb +4 -15
  87. data/lib/rubocop/cop/layout/multiline_array_line_breaks.rb +1 -2
  88. data/lib/rubocop/cop/layout/multiline_block_layout.rb +7 -15
  89. data/lib/rubocop/cop/layout/multiline_hash_key_line_breaks.rb +1 -2
  90. data/lib/rubocop/cop/layout/multiline_method_argument_line_breaks.rb +1 -2
  91. data/lib/rubocop/cop/layout/multiline_method_call_indentation.rb +22 -15
  92. data/lib/rubocop/cop/layout/multiline_operation_indentation.rb +10 -5
  93. data/lib/rubocop/cop/layout/parameter_alignment.rb +6 -5
  94. data/lib/rubocop/cop/layout/redundant_line_break.rb +137 -0
  95. data/lib/rubocop/cop/layout/rescue_ensure_alignment.rb +3 -6
  96. data/lib/rubocop/cop/layout/single_line_block_chain.rb +53 -0
  97. data/lib/rubocop/cop/layout/space_after_colon.rb +1 -3
  98. data/lib/rubocop/cop/layout/space_after_method_name.rb +2 -4
  99. data/lib/rubocop/cop/layout/space_around_block_parameters.rb +6 -14
  100. data/lib/rubocop/cop/layout/space_around_equals_in_parameter_default.rb +1 -2
  101. data/lib/rubocop/cop/layout/space_around_keyword.rb +3 -6
  102. data/lib/rubocop/cop/layout/space_around_operators.rb +4 -9
  103. data/lib/rubocop/cop/layout/space_before_block_braces.rb +1 -2
  104. data/lib/rubocop/cop/layout/space_before_brackets.rb +1 -3
  105. data/lib/rubocop/cop/layout/space_before_comment.rb +1 -3
  106. data/lib/rubocop/cop/layout/space_before_first_arg.rb +5 -11
  107. data/lib/rubocop/cop/layout/space_in_lambda_literal.rb +2 -4
  108. data/lib/rubocop/cop/layout/space_inside_array_literal_brackets.rb +5 -10
  109. data/lib/rubocop/cop/layout/space_inside_array_percent_literal.rb +2 -7
  110. data/lib/rubocop/cop/layout/space_inside_block_braces.rb +5 -10
  111. data/lib/rubocop/cop/layout/space_inside_hash_literal_braces.rb +1 -2
  112. data/lib/rubocop/cop/layout/space_inside_reference_brackets.rb +1 -2
  113. data/lib/rubocop/cop/legacy/corrections_proxy.rb +2 -8
  114. data/lib/rubocop/cop/legacy/corrector.rb +1 -3
  115. data/lib/rubocop/cop/lint/ambiguous_assignment.rb +1 -6
  116. data/lib/rubocop/cop/lint/ambiguous_block_association.rb +14 -7
  117. data/lib/rubocop/cop/lint/boolean_symbol.rb +1 -2
  118. data/lib/rubocop/cop/lint/constant_resolution.rb +1 -2
  119. data/lib/rubocop/cop/lint/deprecated_class_methods.rb +83 -41
  120. data/lib/rubocop/cop/lint/deprecated_constants.rb +3 -3
  121. data/lib/rubocop/cop/lint/deprecated_open_ssl_constant.rb +2 -5
  122. data/lib/rubocop/cop/lint/duplicate_branch.rb +1 -2
  123. data/lib/rubocop/cop/lint/duplicate_hash_key.rb +1 -3
  124. data/lib/rubocop/cop/lint/duplicate_methods.rb +3 -7
  125. data/lib/rubocop/cop/lint/else_layout.rb +1 -3
  126. data/lib/rubocop/cop/lint/empty_block.rb +18 -2
  127. data/lib/rubocop/cop/lint/empty_ensure.rb +1 -3
  128. data/lib/rubocop/cop/lint/empty_file.rb +1 -3
  129. data/lib/rubocop/cop/lint/empty_interpolation.rb +1 -3
  130. data/lib/rubocop/cop/lint/ensure_return.rb +1 -3
  131. data/lib/rubocop/cop/lint/erb_new_arguments.rb +3 -7
  132. data/lib/rubocop/cop/lint/float_out_of_range.rb +1 -2
  133. data/lib/rubocop/cop/lint/format_parameter_mismatch.rb +3 -6
  134. data/lib/rubocop/cop/lint/heredoc_method_call_position.rb +1 -2
  135. data/lib/rubocop/cop/lint/implicit_string_concatenation.rb +1 -2
  136. data/lib/rubocop/cop/lint/ineffective_access_modifier.rb +3 -7
  137. data/lib/rubocop/cop/lint/inherit_exception.rb +1 -2
  138. data/lib/rubocop/cop/lint/interpolation_check.rb +3 -11
  139. data/lib/rubocop/cop/lint/literal_in_interpolation.rb +3 -6
  140. data/lib/rubocop/cop/lint/loop.rb +1 -2
  141. data/lib/rubocop/cop/lint/missing_cop_enable_directive.rb +3 -7
  142. data/lib/rubocop/cop/lint/missing_super.rb +1 -2
  143. data/lib/rubocop/cop/lint/mixed_regexp_capture_types.rb +1 -2
  144. data/lib/rubocop/cop/lint/nested_method_definition.rb +1 -2
  145. data/lib/rubocop/cop/lint/nested_percent_literal.rb +1 -3
  146. data/lib/rubocop/cop/lint/non_deterministic_require_order.rb +1 -3
  147. data/lib/rubocop/cop/lint/number_conversion.rb +11 -5
  148. data/lib/rubocop/cop/lint/ordered_magic_comments.rb +1 -2
  149. data/lib/rubocop/cop/lint/out_of_range_regexp_ref.rb +1 -3
  150. data/lib/rubocop/cop/lint/parentheses_as_grouped_expression.rb +1 -3
  151. data/lib/rubocop/cop/lint/percent_symbol_array.rb +1 -3
  152. data/lib/rubocop/cop/lint/raise_exception.rb +1 -2
  153. data/lib/rubocop/cop/lint/rand_one.rb +1 -2
  154. data/lib/rubocop/cop/lint/redundant_cop_disable_directive.rb +9 -22
  155. data/lib/rubocop/cop/lint/redundant_safe_navigation.rb +1 -3
  156. data/lib/rubocop/cop/lint/redundant_splat_expansion.rb +3 -7
  157. data/lib/rubocop/cop/lint/redundant_string_coercion.rb +1 -2
  158. data/lib/rubocop/cop/lint/redundant_with_index.rb +1 -4
  159. data/lib/rubocop/cop/lint/redundant_with_object.rb +1 -4
  160. data/lib/rubocop/cop/lint/regexp_as_condition.rb +1 -3
  161. data/lib/rubocop/cop/lint/require_parentheses.rb +2 -4
  162. data/lib/rubocop/cop/lint/rescue_exception.rb +1 -2
  163. data/lib/rubocop/cop/lint/rescue_type.rb +2 -7
  164. data/lib/rubocop/cop/lint/return_in_void_context.rb +1 -2
  165. data/lib/rubocop/cop/lint/safe_navigation_chain.rb +1 -2
  166. data/lib/rubocop/cop/lint/safe_navigation_consistency.rb +4 -10
  167. data/lib/rubocop/cop/lint/safe_navigation_with_empty.rb +1 -2
  168. data/lib/rubocop/cop/lint/send_with_mixin_argument.rb +2 -7
  169. data/lib/rubocop/cop/lint/shadowed_argument.rb +4 -11
  170. data/lib/rubocop/cop/lint/shadowed_exception.rb +7 -8
  171. data/lib/rubocop/cop/lint/struct_new_override.rb +1 -2
  172. data/lib/rubocop/cop/lint/suppressed_exception.rb +44 -1
  173. data/lib/rubocop/cop/lint/symbol_conversion.rb +91 -6
  174. data/lib/rubocop/cop/lint/syntax.rb +1 -3
  175. data/lib/rubocop/cop/lint/to_json.rb +1 -2
  176. data/lib/rubocop/cop/lint/trailing_comma_in_attribute_declaration.rb +1 -3
  177. data/lib/rubocop/cop/lint/underscore_prefixed_variable_name.rb +1 -3
  178. data/lib/rubocop/cop/lint/unreachable_code.rb +2 -5
  179. data/lib/rubocop/cop/lint/unreachable_loop.rb +14 -7
  180. data/lib/rubocop/cop/lint/unused_block_argument.rb +9 -7
  181. data/lib/rubocop/cop/lint/unused_method_argument.rb +1 -2
  182. data/lib/rubocop/cop/lint/useless_access_modifier.rb +2 -4
  183. data/lib/rubocop/cop/lint/useless_assignment.rb +4 -9
  184. data/lib/rubocop/cop/lint/useless_setter_call.rb +1 -3
  185. data/lib/rubocop/cop/lint/void.rb +5 -12
  186. data/lib/rubocop/cop/message_annotator.rb +1 -3
  187. data/lib/rubocop/cop/metrics/block_nesting.rb +2 -7
  188. data/lib/rubocop/cop/metrics/class_length.rb +1 -3
  189. data/lib/rubocop/cop/metrics/cyclomatic_complexity.rb +1 -2
  190. data/lib/rubocop/cop/metrics/module_length.rb +2 -6
  191. data/lib/rubocop/cop/metrics/parameter_lists.rb +2 -5
  192. data/lib/rubocop/cop/metrics/perceived_complexity.rb +1 -2
  193. data/lib/rubocop/cop/metrics/utils/abc_size_calculator.rb +4 -7
  194. data/lib/rubocop/cop/metrics/utils/repeated_attribute_discount.rb +2 -7
  195. data/lib/rubocop/cop/migration/department_name.rb +3 -7
  196. data/lib/rubocop/cop/mixin/alignment.rb +12 -7
  197. data/lib/rubocop/cop/mixin/check_line_breakable.rb +20 -4
  198. data/lib/rubocop/cop/mixin/code_length.rb +1 -3
  199. data/lib/rubocop/cop/mixin/comments_help.rb +5 -1
  200. data/lib/rubocop/cop/mixin/configurable_enforced_style.rb +2 -2
  201. data/lib/rubocop/cop/mixin/configurable_formatting.rb +3 -8
  202. data/lib/rubocop/cop/mixin/def_node.rb +2 -5
  203. data/lib/rubocop/cop/mixin/documentation_comment.rb +3 -6
  204. data/lib/rubocop/cop/mixin/empty_lines_around_body.rb +3 -7
  205. data/lib/rubocop/cop/mixin/empty_parameter.rb +1 -3
  206. data/lib/rubocop/cop/mixin/end_keyword_alignment.rb +1 -3
  207. data/lib/rubocop/cop/mixin/enforce_superclass.rb +2 -6
  208. data/lib/rubocop/cop/mixin/first_element_line_break.rb +1 -3
  209. data/lib/rubocop/cop/mixin/frozen_string_literal.rb +7 -7
  210. data/lib/rubocop/cop/mixin/gem_declaration.rb +13 -0
  211. data/lib/rubocop/cop/mixin/hash_alignment_styles.rb +3 -6
  212. data/lib/rubocop/cop/mixin/hash_transform_method.rb +7 -22
  213. data/lib/rubocop/cop/mixin/interpolation.rb +1 -3
  214. data/lib/rubocop/cop/mixin/line_length_help.rb +13 -10
  215. data/lib/rubocop/cop/mixin/match_range.rb +2 -5
  216. data/lib/rubocop/cop/mixin/method_complexity.rb +1 -3
  217. data/lib/rubocop/cop/mixin/method_preference.rb +1 -2
  218. data/lib/rubocop/cop/mixin/multiline_element_indentation.rb +4 -3
  219. data/lib/rubocop/cop/mixin/multiline_element_line_breaks.rb +1 -3
  220. data/lib/rubocop/cop/mixin/multiline_expression_indentation.rb +11 -40
  221. data/lib/rubocop/cop/mixin/multiline_literal_brace_layout.rb +1 -2
  222. data/lib/rubocop/cop/mixin/negative_conditional.rb +1 -2
  223. data/lib/rubocop/cop/mixin/ordered_gem_node.rb +1 -4
  224. data/lib/rubocop/cop/mixin/percent_array.rb +1 -3
  225. data/lib/rubocop/cop/mixin/percent_literal.rb +0 -6
  226. data/lib/rubocop/cop/mixin/preceding_following_alignment.rb +5 -11
  227. data/lib/rubocop/cop/mixin/preferred_delimiters.rb +4 -7
  228. data/lib/rubocop/cop/mixin/range_help.rb +10 -13
  229. data/lib/rubocop/cop/mixin/rescue_node.rb +2 -6
  230. data/lib/rubocop/cop/mixin/safe_assignment.rb +1 -2
  231. data/lib/rubocop/cop/mixin/space_after_punctuation.rb +2 -4
  232. data/lib/rubocop/cop/mixin/space_before_punctuation.rb +1 -2
  233. data/lib/rubocop/cop/mixin/statement_modifier.rb +1 -3
  234. data/lib/rubocop/cop/mixin/string_literals_help.rb +1 -1
  235. data/lib/rubocop/cop/mixin/trailing_body.rb +1 -2
  236. data/lib/rubocop/cop/mixin/trailing_comma.rb +1 -2
  237. data/lib/rubocop/cop/mixin/uncommunicative_name.rb +7 -13
  238. data/lib/rubocop/cop/mixin/unused_argument.rb +1 -3
  239. data/lib/rubocop/cop/naming/ascii_identifiers.rb +2 -4
  240. data/lib/rubocop/cop/naming/binary_operator_parameter_name.rb +1 -2
  241. data/lib/rubocop/cop/naming/file_name.rb +7 -16
  242. data/lib/rubocop/cop/naming/memoized_instance_variable_name.rb +6 -3
  243. data/lib/rubocop/cop/naming/method_name.rb +1 -2
  244. data/lib/rubocop/cop/naming/predicate_name.rb +1 -2
  245. data/lib/rubocop/cop/naming/rescued_exceptions_variable_name.rb +10 -0
  246. data/lib/rubocop/cop/offense.rb +3 -8
  247. data/lib/rubocop/cop/registry.rb +12 -11
  248. data/lib/rubocop/cop/style/access_modifier_declarations.rb +3 -5
  249. data/lib/rubocop/cop/style/accessor_grouping.rb +1 -3
  250. data/lib/rubocop/cop/style/alias.rb +5 -12
  251. data/lib/rubocop/cop/style/and_or.rb +3 -1
  252. data/lib/rubocop/cop/style/arguments_forwarding.rb +1 -3
  253. data/lib/rubocop/cop/style/ascii_comments.rb +1 -2
  254. data/lib/rubocop/cop/style/attr.rb +1 -3
  255. data/lib/rubocop/cop/style/auto_resource_cleanup.rb +2 -5
  256. data/lib/rubocop/cop/style/bisected_attr_accessor.rb +59 -71
  257. data/lib/rubocop/cop/style/bisected_attr_accessor/macro.rb +60 -0
  258. data/lib/rubocop/cop/style/case_like_if.rb +16 -6
  259. data/lib/rubocop/cop/style/character_literal.rb +2 -4
  260. data/lib/rubocop/cop/style/class_and_module_children.rb +19 -10
  261. data/lib/rubocop/cop/style/class_equality_comparison.rb +2 -0
  262. data/lib/rubocop/cop/style/class_methods.rb +1 -3
  263. data/lib/rubocop/cop/style/collection_compact.rb +1 -3
  264. data/lib/rubocop/cop/style/colon_method_call.rb +1 -3
  265. data/lib/rubocop/cop/style/combinable_loops.rb +3 -2
  266. data/lib/rubocop/cop/style/command_literal.rb +4 -9
  267. data/lib/rubocop/cop/style/comment_annotation.rb +3 -6
  268. data/lib/rubocop/cop/style/commented_keyword.rb +7 -13
  269. data/lib/rubocop/cop/style/conditional_assignment.rb +10 -24
  270. data/lib/rubocop/cop/style/copyright.rb +3 -6
  271. data/lib/rubocop/cop/style/date_time.rb +2 -5
  272. data/lib/rubocop/cop/style/def_with_parentheses.rb +1 -2
  273. data/lib/rubocop/cop/style/disable_cops_within_source_code_directive.rb +2 -2
  274. data/lib/rubocop/cop/style/documentation.rb +25 -3
  275. data/lib/rubocop/cop/style/each_for_simple_loop.rb +1 -2
  276. data/lib/rubocop/cop/style/empty_case_condition.rb +2 -7
  277. data/lib/rubocop/cop/style/empty_else.rb +3 -9
  278. data/lib/rubocop/cop/style/empty_literal.rb +12 -9
  279. data/lib/rubocop/cop/style/empty_method.rb +3 -7
  280. data/lib/rubocop/cop/style/end_block.rb +1 -2
  281. data/lib/rubocop/cop/style/endless_method.rb +1 -3
  282. data/lib/rubocop/cop/style/eval_with_location.rb +3 -5
  283. data/lib/rubocop/cop/style/expand_path_arguments.rb +1 -3
  284. data/lib/rubocop/cop/style/explicit_block_argument.rb +1 -4
  285. data/lib/rubocop/cop/style/format_string_token.rb +1 -4
  286. data/lib/rubocop/cop/style/frozen_string_literal_comment.rb +3 -11
  287. data/lib/rubocop/cop/style/guard_clause.rb +3 -7
  288. data/lib/rubocop/cop/style/hash_conversion.rb +31 -3
  289. data/lib/rubocop/cop/style/hash_each_methods.rb +1 -2
  290. data/lib/rubocop/cop/style/hash_like_case.rb +1 -2
  291. data/lib/rubocop/cop/style/hash_syntax.rb +20 -24
  292. data/lib/rubocop/cop/style/identical_conditional_branches.rb +1 -3
  293. data/lib/rubocop/cop/style/if_unless_modifier.rb +40 -13
  294. data/lib/rubocop/cop/style/infinite_loop.rb +2 -5
  295. data/lib/rubocop/cop/style/inverse_methods.rb +3 -7
  296. data/lib/rubocop/cop/style/ip_addresses.rb +1 -2
  297. data/lib/rubocop/cop/style/lambda.rb +2 -4
  298. data/lib/rubocop/cop/style/lambda_call.rb +1 -2
  299. data/lib/rubocop/cop/style/line_end_concatenation.rb +5 -12
  300. data/lib/rubocop/cop/style/method_call_with_args_parentheses.rb +47 -3
  301. data/lib/rubocop/cop/style/method_call_with_args_parentheses/omit_parentheses.rb +26 -16
  302. data/lib/rubocop/cop/style/method_call_without_args_parentheses.rb +1 -2
  303. data/lib/rubocop/cop/style/method_called_on_do_end_block.rb +2 -4
  304. data/lib/rubocop/cop/style/method_def_parentheses.rb +4 -8
  305. data/lib/rubocop/cop/style/min_max.rb +1 -2
  306. data/lib/rubocop/cop/style/missing_else.rb +2 -4
  307. data/lib/rubocop/cop/style/missing_respond_to_missing.rb +1 -2
  308. data/lib/rubocop/cop/style/mixin_grouping.rb +4 -10
  309. data/lib/rubocop/cop/style/mixin_usage.rb +1 -2
  310. data/lib/rubocop/cop/style/module_function.rb +3 -6
  311. data/lib/rubocop/cop/style/multiline_block_chain.rb +1 -2
  312. data/lib/rubocop/cop/style/multiline_method_signature.rb +11 -6
  313. data/lib/rubocop/cop/style/multiline_ternary_operator.rb +1 -2
  314. data/lib/rubocop/cop/style/multiple_comparison.rb +2 -4
  315. data/lib/rubocop/cop/style/mutable_constant.rb +4 -10
  316. data/lib/rubocop/cop/style/negated_if.rb +1 -2
  317. data/lib/rubocop/cop/style/negated_if_else_condition.rb +23 -2
  318. data/lib/rubocop/cop/style/negated_unless.rb +1 -2
  319. data/lib/rubocop/cop/style/nested_modifier.rb +3 -7
  320. data/lib/rubocop/cop/style/nested_ternary_operator.rb +2 -3
  321. data/lib/rubocop/cop/style/next.rb +4 -9
  322. data/lib/rubocop/cop/style/nil_lambda.rb +29 -12
  323. data/lib/rubocop/cop/style/non_nil_check.rb +2 -5
  324. data/lib/rubocop/cop/style/numeric_literals.rb +3 -11
  325. data/lib/rubocop/cop/style/numeric_predicate.rb +2 -7
  326. data/lib/rubocop/cop/style/one_line_conditional.rb +1 -2
  327. data/lib/rubocop/cop/style/option_hash.rb +1 -3
  328. data/lib/rubocop/cop/style/optional_arguments.rb +2 -5
  329. data/lib/rubocop/cop/style/or_assignment.rb +2 -6
  330. data/lib/rubocop/cop/style/parallel_assignment.rb +6 -9
  331. data/lib/rubocop/cop/style/percent_literal_delimiters.rb +1 -3
  332. data/lib/rubocop/cop/style/percent_q_literals.rb +1 -2
  333. data/lib/rubocop/cop/style/perl_backrefs.rb +2 -9
  334. data/lib/rubocop/cop/style/preferred_hash_methods.rb +1 -4
  335. data/lib/rubocop/cop/style/proc.rb +1 -2
  336. data/lib/rubocop/cop/style/raise_args.rb +4 -8
  337. data/lib/rubocop/cop/style/random_with_offset.rb +3 -8
  338. data/lib/rubocop/cop/style/redundant_argument.rb +2 -11
  339. data/lib/rubocop/cop/style/redundant_assignment.rb +1 -3
  340. data/lib/rubocop/cop/style/redundant_begin.rb +40 -6
  341. data/lib/rubocop/cop/style/redundant_capital_w.rb +1 -2
  342. data/lib/rubocop/cop/style/redundant_condition.rb +2 -5
  343. data/lib/rubocop/cop/style/redundant_conditional.rb +3 -6
  344. data/lib/rubocop/cop/style/redundant_exception.rb +3 -6
  345. data/lib/rubocop/cop/style/redundant_file_extension_in_require.rb +1 -1
  346. data/lib/rubocop/cop/style/redundant_freeze.rb +1 -2
  347. data/lib/rubocop/cop/style/redundant_interpolation.rb +1 -2
  348. data/lib/rubocop/cop/style/redundant_parentheses.rb +8 -20
  349. data/lib/rubocop/cop/style/redundant_percent_q.rb +1 -2
  350. data/lib/rubocop/cop/style/redundant_regexp_escape.rb +1 -4
  351. data/lib/rubocop/cop/style/redundant_return.rb +6 -4
  352. data/lib/rubocop/cop/style/redundant_self.rb +9 -9
  353. data/lib/rubocop/cop/style/redundant_self_assignment.rb +2 -2
  354. data/lib/rubocop/cop/style/redundant_sort.rb +2 -5
  355. data/lib/rubocop/cop/style/regexp_literal.rb +4 -8
  356. data/lib/rubocop/cop/style/rescue_modifier.rb +21 -14
  357. data/lib/rubocop/cop/style/rescue_standard_error.rb +3 -7
  358. data/lib/rubocop/cop/style/return_nil.rb +1 -2
  359. data/lib/rubocop/cop/style/safe_navigation.rb +10 -21
  360. data/lib/rubocop/cop/style/send.rb +1 -2
  361. data/lib/rubocop/cop/style/signal_exception.rb +3 -7
  362. data/lib/rubocop/cop/style/single_argument_dig.rb +1 -2
  363. data/lib/rubocop/cop/style/single_line_block_params.rb +2 -5
  364. data/lib/rubocop/cop/style/single_line_methods.rb +21 -4
  365. data/lib/rubocop/cop/style/sole_nested_conditional.rb +31 -7
  366. data/lib/rubocop/cop/style/special_global_vars.rb +6 -18
  367. data/lib/rubocop/cop/style/stabby_lambda_parentheses.rb +1 -2
  368. data/lib/rubocop/cop/style/stderr_puts.rb +2 -6
  369. data/lib/rubocop/cop/style/string_chars.rb +39 -0
  370. data/lib/rubocop/cop/style/string_concatenation.rb +8 -10
  371. data/lib/rubocop/cop/style/string_literals.rb +2 -5
  372. data/lib/rubocop/cop/style/struct_inheritance.rb +10 -0
  373. data/lib/rubocop/cop/style/symbol_literal.rb +1 -3
  374. data/lib/rubocop/cop/style/symbol_proc.rb +4 -9
  375. data/lib/rubocop/cop/style/ternary_parentheses.rb +3 -6
  376. data/lib/rubocop/cop/style/top_level_method_definition.rb +75 -0
  377. data/lib/rubocop/cop/style/trailing_body_on_method_definition.rb +6 -3
  378. data/lib/rubocop/cop/style/trailing_comma_in_block_args.rb +2 -6
  379. data/lib/rubocop/cop/style/trailing_method_end_statement.rb +2 -5
  380. data/lib/rubocop/cop/style/trailing_underscore_variable.rb +4 -10
  381. data/lib/rubocop/cop/style/trivial_accessors.rb +67 -4
  382. data/lib/rubocop/cop/style/unless_else.rb +1 -2
  383. data/lib/rubocop/cop/style/unless_logical_operators.rb +8 -2
  384. data/lib/rubocop/cop/style/variable_interpolation.rb +1 -1
  385. data/lib/rubocop/cop/style/when_then.rb +1 -3
  386. data/lib/rubocop/cop/style/while_until_modifier.rb +1 -2
  387. data/lib/rubocop/cop/style/word_array.rb +1 -2
  388. data/lib/rubocop/cop/style/yoda_condition.rb +3 -11
  389. data/lib/rubocop/cop/style/zero_length_predicate.rb +1 -2
  390. data/lib/rubocop/cop/team.rb +2 -5
  391. data/lib/rubocop/cop/util.rb +8 -11
  392. data/lib/rubocop/cop/utils/format_string.rb +1 -3
  393. data/lib/rubocop/cop/variable_force.rb +6 -15
  394. data/lib/rubocop/cop/variable_force/assignment.rb +1 -2
  395. data/lib/rubocop/cop/variable_force/branch.rb +16 -2
  396. data/lib/rubocop/cop/variable_force/reference.rb +1 -3
  397. data/lib/rubocop/cop/variable_force/scope.rb +4 -8
  398. data/lib/rubocop/cop/variable_force/variable.rb +2 -4
  399. data/lib/rubocop/cops_documentation_generator.rb +7 -21
  400. data/lib/rubocop/directive_comment.rb +69 -9
  401. data/lib/rubocop/ext/regexp_parser.rb +3 -6
  402. data/lib/rubocop/file_finder.rb +1 -3
  403. data/lib/rubocop/formatter/clang_style_formatter.rb +4 -2
  404. data/lib/rubocop/formatter/disabled_config_formatter.rb +3 -8
  405. data/lib/rubocop/formatter/git_hub_actions_formatter.rb +1 -5
  406. data/lib/rubocop/formatter/html_formatter.rb +4 -10
  407. data/lib/rubocop/formatter/json_formatter.rb +1 -5
  408. data/lib/rubocop/formatter/junit_formatter.rb +23 -14
  409. data/lib/rubocop/formatter/progress_formatter.rb +1 -3
  410. data/lib/rubocop/formatter/tap_formatter.rb +4 -2
  411. data/lib/rubocop/magic_comment.rb +1 -1
  412. data/lib/rubocop/options.rb +30 -50
  413. data/lib/rubocop/path_util.rb +1 -3
  414. data/lib/rubocop/rake_task.rb +3 -0
  415. data/lib/rubocop/remote_config.rb +4 -7
  416. data/lib/rubocop/result_cache.rb +5 -12
  417. data/lib/rubocop/rspec/cop_helper.rb +1 -1
  418. data/lib/rubocop/rspec/expect_offense.rb +4 -9
  419. data/lib/rubocop/rspec/shared_contexts.rb +8 -15
  420. data/lib/rubocop/runner.rb +7 -14
  421. data/lib/rubocop/target_finder.rb +19 -16
  422. data/lib/rubocop/target_ruby.rb +4 -8
  423. data/lib/rubocop/version.rb +1 -1
  424. metadata +13 -7
  425. data/lib/rubocop/core_ext/hash.rb +0 -20
@@ -28,8 +28,7 @@ module RuboCop
28
28
  expected_column = base_column(left_brace, left_parenthesis) +
29
29
  configured_indentation_width + offset
30
30
  @column_delta = expected_column - actual_column
31
- styles =
32
- detected_styles(actual_column, offset, left_parenthesis, left_brace)
31
+ styles = detected_styles(actual_column, offset, left_parenthesis, left_brace)
33
32
 
34
33
  if @column_delta.zero?
35
34
  check_expected_style(styles)
@@ -77,7 +76,9 @@ module RuboCop
77
76
  def incorrect_style_detected(styles, first, left_parenthesis)
78
77
  msg = message(base_description(left_parenthesis))
79
78
 
80
- add_offense(first, message: msg) do
79
+ add_offense(first, message: msg) do |corrector|
80
+ autocorrect(corrector, first)
81
+
81
82
  ambiguous_style_detected(*styles)
82
83
  end
83
84
  end
@@ -16,9 +16,7 @@ module RuboCop
16
16
  last_seen_line = -1
17
17
  children.each do |child|
18
18
  if last_seen_line >= child.first_line
19
- add_offense(child) do |corrector|
20
- EmptyLineCorrector.insert_before(corrector, child)
21
- end
19
+ add_offense(child) { |corrector| EmptyLineCorrector.insert_before(corrector, child) }
22
20
  else
23
21
  last_seen_line = child.last_line
24
22
  end
@@ -6,12 +6,10 @@ module RuboCop
6
6
  # operations.
7
7
  module MultilineExpressionIndentation # rubocop:disable Metrics/ModuleLength
8
8
  KEYWORD_ANCESTOR_TYPES = %i[for if while until return].freeze
9
- UNALIGNED_RHS_TYPES = %i[if while until for return
10
- array kwbegin].freeze
9
+ UNALIGNED_RHS_TYPES = %i[if while until for return array kwbegin].freeze
11
10
  DEFAULT_MESSAGE_TAIL = 'an expression'
12
11
  ASSIGNMENT_MESSAGE_TAIL = 'an expression in an assignment'
13
- KEYWORD_MESSAGE_TAIL = 'a %<kind>s in %<article>s `%<keyword>s` ' \
14
- 'statement'
12
+ KEYWORD_MESSAGE_TAIL = 'a %<kind>s in %<article>s `%<keyword>s` statement'
15
13
 
16
14
  def on_send(node)
17
15
  return if !node.receiver || node.method?(:[])
@@ -35,26 +33,6 @@ module RuboCop
35
33
  lhs
36
34
  end
37
35
 
38
- def right_hand_side(send_node)
39
- if send_node.operator_method? && send_node.arguments?
40
- send_node.first_argument.source_range # not used for method calls
41
- else
42
- regular_method_right_hand_side(send_node)
43
- end
44
- end
45
-
46
- def regular_method_right_hand_side(send_node)
47
- dot = send_node.loc.dot
48
- selector = send_node.loc.selector
49
- if send_node.dot? && selector && dot.line == selector.line
50
- dot.join(selector)
51
- elsif selector
52
- selector
53
- elsif send_node.implicit_call?
54
- dot.join(send_node.loc.begin)
55
- end
56
- end
57
-
58
36
  # The correct indentation of `node` is usually `IndentationWidth`, with
59
37
  # one exception: prefix keywords.
60
38
  #
@@ -75,8 +53,7 @@ module RuboCop
75
53
  kw_node = kw_node_with_special_indentation(node)
76
54
  if kw_node && !postfix_conditional?(kw_node)
77
55
  # This cop could have its own IndentationWidth configuration
78
- configured_indentation_width +
79
- @config.for_cop('Layout/IndentationWidth')['Width']
56
+ configured_indentation_width + @config.for_cop('Layout/IndentationWidth')['Width']
80
57
  else
81
58
  configured_indentation_width
82
59
  end
@@ -91,9 +68,10 @@ module RuboCop
91
68
  end
92
69
 
93
70
  def incorrect_style_detected(range, node, lhs, rhs)
94
- add_offense(range, location: range, message: message(node, lhs, rhs)) do
95
- if supported_styles.size > 2 ||
96
- offending_range(node, lhs, rhs, alternative_style)
71
+ add_offense(range, message: message(node, lhs, rhs)) do |corrector|
72
+ autocorrect(corrector, range)
73
+
74
+ if supported_styles.size > 2 || offending_range(node, lhs, rhs, alternative_style)
97
75
  unrecognized_style_detected
98
76
  else
99
77
  opposite_style_detected
@@ -110,9 +88,7 @@ module RuboCop
110
88
  return keyword_message_tail(ancestor)
111
89
  end
112
90
 
113
- part_of_assignment_rhs(node, rhs) do |_node|
114
- return ASSIGNMENT_MESSAGE_TAIL
115
- end
91
+ part_of_assignment_rhs(node, rhs) { |_node| return ASSIGNMENT_MESSAGE_TAIL }
116
92
 
117
93
  DEFAULT_MESSAGE_TAIL
118
94
  end
@@ -122,9 +98,7 @@ module RuboCop
122
98
  kind = keyword == 'for' ? 'collection' : 'condition'
123
99
  article = keyword.start_with?('i', 'u') ? 'an' : 'a'
124
100
 
125
- format(KEYWORD_MESSAGE_TAIL, kind: kind,
126
- article: article,
127
- keyword: keyword)
101
+ format(KEYWORD_MESSAGE_TAIL, kind: kind, article: article, keyword: keyword)
128
102
  end
129
103
 
130
104
  def kw_node_with_special_indentation(node)
@@ -162,9 +136,7 @@ module RuboCop
162
136
  next unless kind == :with_or_without_parentheses ||
163
137
  kind == :with_parentheses && parentheses?(a)
164
138
 
165
- a.arguments.any? do |arg|
166
- within_node?(node, arg)
167
- end
139
+ a.arguments.any? { |arg| within_node?(node, arg) }
168
140
  end
169
141
  end
170
142
 
@@ -199,8 +171,7 @@ module RuboCop
199
171
 
200
172
  # The []= operator and setters (a.b = c) are parsed as :send nodes.
201
173
  def valid_method_rhs_candidate?(candidate, node)
202
- node.setter_method? &&
203
- valid_rhs_candidate?(candidate, node.last_argument)
174
+ node.setter_method? && valid_rhs_candidate?(candidate, node.last_argument)
204
175
  end
205
176
 
206
177
  def valid_rhs_candidate?(candidate, node)
@@ -24,8 +24,7 @@ module RuboCop
24
24
  # b # comment
25
25
  # ].some_method
26
26
  def new_line_needed_before_closing_brace?(node)
27
- last_element_line =
28
- last_element_range_with_trailing_comma(node).last_line
27
+ last_element_line = last_element_range_with_trailing_comma(node).last_line
29
28
 
30
29
  last_element_commented = processed_source.comment_at_line(last_element_line)
31
30
 
@@ -7,8 +7,7 @@ module RuboCop
7
7
  module NegativeConditional
8
8
  extend NodePattern::Macros
9
9
 
10
- MSG = 'Favor `%<inverse>s` over `%<current>s` for ' \
11
- 'negative conditions.'
10
+ MSG = 'Favor `%<inverse>s` over `%<current>s` for negative conditions.'
12
11
 
13
12
  private
14
13
 
@@ -25,10 +25,7 @@ module RuboCop
25
25
  end
26
26
 
27
27
  def consecutive_lines(previous, current)
28
- first_line = get_source_range(
29
- current,
30
- treat_comments_as_separators
31
- ).first_line
28
+ first_line = get_source_range(current, treat_comments_as_separators).first_line
32
29
  previous.source_range.last_line == first_line - 1
33
30
  end
34
31
 
@@ -37,9 +37,7 @@ module RuboCop
37
37
 
38
38
  return unless style == :brackets
39
39
 
40
- add_offense(node) do |corrector|
41
- correct_bracketed(corrector, node)
42
- end
40
+ add_offense(node) { |corrector| correct_bracketed(corrector, node) }
43
41
  end
44
42
 
45
43
  def check_bracketed_array(node, literal_prefix)
@@ -27,12 +27,6 @@ module RuboCop
27
27
  def type(node)
28
28
  node.loc.begin.source[0..-2]
29
29
  end
30
-
31
- # A range containing only the contents of the percent literal (e.g. in
32
- # %i{1 2 3} this will be the range covering '1 2 3' only)
33
- def contents_range(node)
34
- range_between(node.loc.begin.end_pos, node.loc.end.begin_pos)
35
- end
36
30
  end
37
31
  end
38
32
  end
@@ -50,9 +50,7 @@ module RuboCop
50
50
  end
51
51
 
52
52
  def aligned_with_any_line?(line_ranges, range, indent = nil, &predicate)
53
- line_ranges.any? do |line_nos|
54
- aligned_with_line?(line_nos, range, indent, &predicate)
55
- end
53
+ line_ranges.any? { |line_nos| aligned_with_line?(line_nos, range, indent, &predicate) }
56
54
  end
57
55
 
58
56
  def aligned_with_line?(line_nos, range, indent = nil)
@@ -103,15 +101,13 @@ module RuboCop
103
101
  end
104
102
 
105
103
  def aligned_with_assignment(token, line_range)
106
- token_line_indent = processed_source
107
- .line_indentation(token.line)
104
+ token_line_indent = processed_source.line_indentation(token.line)
108
105
  assignment_lines = relevant_assignment_lines(line_range)
109
106
  relevant_line_number = assignment_lines[1]
110
107
 
111
108
  return :none unless relevant_line_number
112
109
 
113
- relevant_indent = processed_source
114
- .line_indentation(relevant_line_number)
110
+ relevant_indent = processed_source.line_indentation(relevant_line_number)
115
111
 
116
112
  return :none if relevant_indent < token_line_indent
117
113
 
@@ -144,8 +140,7 @@ module RuboCop
144
140
  # rubocop:disable Metrics/PerceivedComplexity, Metrics/MethodLength
145
141
  def relevant_assignment_lines(line_range)
146
142
  result = []
147
- original_line_indent = processed_source
148
- .line_indentation(line_range.first)
143
+ original_line_indent = processed_source.line_indentation(line_range.first)
149
144
  relevant_line_indent_at_level = true
150
145
 
151
146
  line_range.each do |line_number|
@@ -161,8 +156,7 @@ module RuboCop
161
156
  current_line_indent == original_line_indent
162
157
 
163
158
  unless blank_line
164
- relevant_line_indent_at_level = \
165
- current_line_indent == original_line_indent
159
+ relevant_line_indent_at_level = current_line_indent == original_line_indent
166
160
  end
167
161
  end
168
162
 
@@ -15,18 +15,16 @@ module RuboCop
15
15
  end
16
16
 
17
17
  def delimiters
18
- preferred_delimiters[type].split('')
18
+ preferred_delimiters[type].chars
19
19
  end
20
20
 
21
21
  private
22
22
 
23
23
  def ensure_valid_preferred_delimiters
24
- invalid = preferred_delimiters_config.keys -
25
- (PERCENT_LITERAL_TYPES + %w[default])
24
+ invalid = preferred_delimiters_config.keys - (PERCENT_LITERAL_TYPES + %w[default])
26
25
  return if invalid.empty?
27
26
 
28
- raise ArgumentError,
29
- "Invalid preferred delimiter config key: #{invalid.join(', ')}"
27
+ raise ArgumentError, "Invalid preferred delimiter config key: #{invalid.join(', ')}"
30
28
  end
31
29
 
32
30
  def preferred_delimiters
@@ -36,8 +34,7 @@ module RuboCop
36
34
 
37
35
  if preferred_delimiters_config.key?('default')
38
36
  PERCENT_LITERAL_TYPES.map do |type|
39
- [type, preferred_delimiters_config[type] ||
40
- preferred_delimiters_config['default']]
37
+ [type, preferred_delimiters_config[type] || preferred_delimiters_config['default']]
41
38
  end.to_h
42
39
  else
43
40
  preferred_delimiters_config
@@ -27,6 +27,12 @@ module RuboCop
27
27
  Parser::Source::Range.new(source_buffer, begin_pos, end_pos)
28
28
  end
29
29
 
30
+ # A range containing only the contents of a literal with delimiters (e.g. in
31
+ # `%i{1 2 3}` this will be the range covering `1 2 3` only).
32
+ def contents_range(node)
33
+ range_between(node.loc.begin.end_pos, node.loc.end.begin_pos)
34
+ end
35
+
30
36
  def range_between(start_pos, end_pos)
31
37
  Parser::Source::Range.new(processed_source.buffer, start_pos, end_pos)
32
38
  end
@@ -54,15 +60,9 @@ module RuboCop
54
60
  go_left, go_right = directions(side)
55
61
 
56
62
  begin_pos = range.begin_pos
57
- if go_left
58
- begin_pos =
59
- final_pos(src, begin_pos, -1, continuations, newlines, whitespace)
60
- end
63
+ begin_pos = final_pos(src, begin_pos, -1, continuations, newlines, whitespace) if go_left
61
64
  end_pos = range.end_pos
62
- if go_right
63
- end_pos =
64
- final_pos(src, end_pos, 1, continuations, newlines, whitespace)
65
- end
65
+ end_pos = final_pos(src, end_pos, 1, continuations, newlines, whitespace) if go_right
66
66
  Parser::Source::Range.new(buffer, begin_pos, end_pos)
67
67
  end
68
68
 
@@ -73,9 +73,7 @@ module RuboCop
73
73
  end_offset = last_line.length - range.last_column
74
74
  end_offset += 1 if include_final_newline
75
75
 
76
- range
77
- .adjust(begin_pos: -range.column, end_pos: end_offset)
78
- .intersect(buffer.source_range)
76
+ range.adjust(begin_pos: -range.column, end_pos: end_offset).intersect(buffer.source_range)
79
77
  end
80
78
 
81
79
  def column_offset_between(base_range, range)
@@ -89,8 +87,7 @@ module RuboCop
89
87
  # line, in which case 1 is subtracted from the column value. This gives
90
88
  # the column as it appears when viewing the file in an editor.
91
89
  def effective_column(range)
92
- if range.line == 1 &&
93
- @processed_source.raw_source.codepoints.first == BYTE_ORDER_MARK
90
+ if range.line == 1 && @processed_source.raw_source.codepoints.first == BYTE_ORDER_MARK
94
91
  range.column - 1
95
92
  else
96
93
  range.column
@@ -5,17 +5,13 @@ module RuboCop
5
5
  # Common functionality for checking `rescue` nodes.
6
6
  module RescueNode
7
7
  def on_new_investigation
8
- @modifier_locations = processed_source
9
- .tokens
10
- .select(&:rescue_modifier?)
11
- .map(&:pos)
8
+ @modifier_locations = processed_source.tokens.select(&:rescue_modifier?).map(&:pos)
12
9
  end
13
10
 
14
11
  private
15
12
 
16
13
  def rescue_modifier?(node)
17
- node&.resbody_type? &&
18
- @modifier_locations.include?(node.loc.keyword)
14
+ node&.resbody_type? && @modifier_locations.include?(node.loc.keyword)
19
15
  end
20
16
 
21
17
  # @deprecated Use ResbodyNode#exceptions instead
@@ -17,8 +17,7 @@ module RuboCop
17
17
  def_node_matcher :setter_method?, '[(send ...) setter_method?]'
18
18
 
19
19
  # @!method safe_assignment?(node)
20
- def_node_matcher :safe_assignment?,
21
- '(begin {equals_asgn? #setter_method?})'
20
+ def_node_matcher :safe_assignment?, '(begin {equals_asgn? #setter_method?})'
22
21
 
23
22
  def safe_assignment_allowed?
24
23
  cop_config['AllowSafeAssignment']
@@ -28,13 +28,11 @@ module RuboCop
28
28
  end
29
29
 
30
30
  def space_missing?(token1, token2)
31
- token1.line == token2.line &&
32
- token2.column == token1.column + offset
31
+ token1.line == token2.line && token2.column == token1.column + offset
33
32
  end
34
33
 
35
34
  def space_required_before?(token)
36
- !(allowed_type?(token) ||
37
- (token.right_curly_brace? && space_forbidden_before_rcurly?))
35
+ !(allowed_type?(token) || (token.right_curly_brace? && space_forbidden_before_rcurly?))
38
36
  end
39
37
 
40
38
  def allowed_type?(token)
@@ -25,8 +25,7 @@ module RuboCop
25
25
  next unless space_missing?(token1, token2)
26
26
  next if space_required_after?(token1)
27
27
 
28
- pos_before_punctuation = range_between(token1.end_pos,
29
- token2.begin_pos)
28
+ pos_before_punctuation = range_between(token1.end_pos, token2.begin_pos)
30
29
 
31
30
  yield token2, pos_before_punctuation
32
31
  end
@@ -48,9 +48,7 @@ module RuboCop
48
48
  end
49
49
 
50
50
  def to_modifier_form(node)
51
- expression = [node.body.source,
52
- node.keyword,
53
- node.condition.source].compact.join(' ')
51
+ expression = [node.body.source, node.keyword, node.condition.source].compact.join(' ')
54
52
  parenthesized = parenthesize?(node) ? "(#{expression})" : expression
55
53
  [parenthesized, first_line_comment(node)].compact.join(' ')
56
54
  end
@@ -15,7 +15,7 @@ module RuboCop
15
15
  if style == :single_quotes
16
16
  !double_quotes_required?(src)
17
17
  else
18
- !/" | \\[^'] | \#(@|\{)/x.match?(src)
18
+ !/" | \\[^'\\] | \#[@{$]/x.match?(src)
19
19
  end
20
20
  end
21
21
  end
@@ -6,8 +6,7 @@ module RuboCop
6
6
  module TrailingBody
7
7
  def trailing_body?(node)
8
8
  body = node.to_a.reverse[0]
9
- body && node.multiline? &&
10
- body_on_first_line?(node, body)
9
+ body && node.multiline? && body_on_first_line?(node, body)
11
10
  end
12
11
 
13
12
  def body_on_first_line?(node, body)
@@ -95,8 +95,7 @@ module RuboCop
95
95
 
96
96
  line = node.loc.selector.nil? ? node.loc.line : node.loc.selector.line
97
97
 
98
- line == node.last_argument.last_line &&
99
- node.last_line == node.last_argument.last_line
98
+ line == node.last_argument.last_line && node.last_line == node.last_argument.last_line
100
99
  end
101
100
 
102
101
  # A single argument with the closing bracket on the same line as the end
@@ -6,10 +6,8 @@ module RuboCop
6
6
  module UncommunicativeName
7
7
  CASE_MSG = 'Only use lowercase characters for %<name_type>s.'
8
8
  NUM_MSG = 'Do not end %<name_type>s with a number.'
9
- LENGTH_MSG = '%<name_type>s must be at least %<min>s ' \
10
- 'characters long.'
11
- FORBIDDEN_MSG = 'Do not use %<name>s as a name for a ' \
12
- '%<name_type>s.'
9
+ LENGTH_MSG = '%<name_type>s must be at least %<min>s characters long.'
10
+ FORBIDDEN_MSG = 'Do not use %<name>s as a name for a %<name_type>s.'
13
11
 
14
12
  def check(node, args)
15
13
  args.each do |arg|
@@ -53,12 +51,10 @@ module RuboCop
53
51
  end
54
52
 
55
53
  def name_type(node)
56
- @name_type ||= begin
57
- case node.type
58
- when :block then 'block parameter'
59
- when :def, :defs then 'method parameter'
60
- end
61
- end
54
+ @name_type ||= case node.type
55
+ when :block then 'block parameter'
56
+ when :def, :defs then 'method parameter'
57
+ end
62
58
  end
63
59
 
64
60
  def num_offense(node, range)
@@ -81,9 +77,7 @@ module RuboCop
81
77
 
82
78
  def arg_range(arg, length)
83
79
  begin_pos = arg.source_range.begin_pos
84
- Parser::Source::Range.new(processed_source.buffer,
85
- begin_pos,
86
- begin_pos + length)
80
+ Parser::Source::Range.new(processed_source.buffer, begin_pos, begin_pos + length)
87
81
  end
88
82
 
89
83
  def forbidden_offense(node, range, name)