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
@@ -0,0 +1,60 @@
1
+ # frozen_string_literal: true
2
+
3
+ module RuboCop
4
+ module Cop
5
+ module Style
6
+ class BisectedAttrAccessor
7
+ # Representation of an `attr_reader`, `attr_writer` or `attr` macro
8
+ # for use by `Style/BisectedAttrAccessor`.
9
+ # @api private
10
+ class Macro
11
+ include VisibilityHelp
12
+
13
+ attr_reader :node, :attrs, :bisection
14
+
15
+ def self.macro?(node)
16
+ node.method?(:attr_reader) || node.method?(:attr_writer) || node.method?(:attr)
17
+ end
18
+
19
+ def initialize(node)
20
+ @node = node
21
+ @attrs = node.arguments.map { |attr| [attr.source, attr] }.to_h
22
+ @bisection = []
23
+ end
24
+
25
+ def bisect(*names)
26
+ @bisection = attrs.slice(*names).values
27
+ end
28
+
29
+ def attr_names
30
+ @attr_names ||= attrs.keys
31
+ end
32
+
33
+ def bisected_names
34
+ bisection.map(&:source)
35
+ end
36
+
37
+ def visibility
38
+ @visibility ||= node_visibility(node)
39
+ end
40
+
41
+ def reader?
42
+ node.method?(:attr_reader) || node.method?(:attr)
43
+ end
44
+
45
+ def writer?
46
+ node.method?(:attr_writer)
47
+ end
48
+
49
+ def all_bisected?
50
+ rest.none?
51
+ end
52
+
53
+ def rest
54
+ @rest ||= attr_names - bisected_names
55
+ end
56
+ end
57
+ end
58
+ end
59
+ end
60
+ end
@@ -105,8 +105,7 @@ module RuboCop
105
105
  when :===
106
106
  node.arguments.first
107
107
  when :include?, :cover?
108
- receiver = deparenthesize(node.receiver)
109
- node.arguments.first if receiver.range_type?
108
+ find_target_in_include_or_cover_node(node)
110
109
  when :match, :match?, :=~
111
110
  find_target_in_match_node(node)
112
111
  end
@@ -124,6 +123,12 @@ module RuboCop
124
123
  end
125
124
  end
126
125
 
126
+ def find_target_in_include_or_cover_node(node)
127
+ return unless (receiver = node.receiver)
128
+
129
+ node.first_argument if deparenthesize(receiver).range_type?
130
+ end
131
+
127
132
  def find_target_in_match_node(node)
128
133
  argument = node.arguments.first
129
134
  receiver = node.receiver
@@ -167,8 +172,7 @@ module RuboCop
167
172
  lhs, _method, rhs = *node
168
173
  lhs if rhs == target
169
174
  when :include?, :cover?
170
- receiver = deparenthesize(node.receiver)
171
- receiver if receiver.range_type? && node.arguments.first == target
175
+ condition_from_include_or_cover_node(node, target)
172
176
  end
173
177
  end
174
178
  # rubocop:enable Metrics/CyclomaticComplexity
@@ -184,6 +188,13 @@ module RuboCop
184
188
  condition_from_binary_op(lhs, rhs, target)
185
189
  end
186
190
 
191
+ def condition_from_include_or_cover_node(node, target)
192
+ return unless (receiver = node.receiver)
193
+
194
+ receiver = deparenthesize(receiver)
195
+ receiver if receiver.range_type? && node.first_argument == target
196
+ end
197
+
187
198
  def condition_from_binary_op(lhs, rhs, target)
188
199
  lhs = deparenthesize(lhs)
189
200
  rhs = deparenthesize(rhs)
@@ -210,8 +221,7 @@ module RuboCop
210
221
  name = node.children[1].to_s
211
222
 
212
223
  # We can no be sure if, e.g. `C`, represents a constant or a class reference
213
- name.length > 1 &&
214
- name == name.upcase
224
+ name.length > 1 && name == name.upcase
215
225
  end
216
226
 
217
227
  def class_reference?(node)
@@ -18,13 +18,11 @@ module RuboCop
18
18
  include StringHelp
19
19
  extend AutoCorrector
20
20
 
21
- MSG = 'Do not use the character literal - ' \
22
- 'use string literal instead.'
21
+ MSG = 'Do not use the character literal - use string literal instead.'
23
22
 
24
23
  def offense?(node)
25
24
  # we don't register an offense for things like ?\C-\M-d
26
- node.loc.begin.is?('?') &&
27
- node.source.size.between?(2, 3)
25
+ node.loc.begin.is?('?') && node.source.size.between?(2, 3)
28
26
  end
29
27
 
30
28
  def autocorrect(corrector, node)
@@ -26,10 +26,8 @@ module RuboCop
26
26
  include RangeHelp
27
27
  extend AutoCorrector
28
28
 
29
- NESTED_MSG = 'Use nested module/class definitions instead of ' \
30
- 'compact style.'
31
- COMPACT_MSG = 'Use compact module/class definition instead of ' \
32
- 'nested style.'
29
+ NESTED_MSG = 'Use nested module/class definitions instead of compact style.'
30
+ COMPACT_MSG = 'Use compact module/class definition instead of nested style.'
33
31
 
34
32
  def on_class(node)
35
33
  return if node.parent_class && style != :nested
@@ -89,10 +87,18 @@ module RuboCop
89
87
  end
90
88
 
91
89
  def compact_node(corrector, node)
90
+ range = range_between(node.loc.keyword.begin_pos, node.body.loc.name.end_pos)
91
+ corrector.replace(range, compact_replacement(node))
92
+ end
93
+
94
+ def compact_replacement(node)
92
95
  replacement = "#{node.body.type} #{compact_identifier_name(node)}"
93
- range = range_between(node.loc.keyword.begin_pos,
94
- node.body.loc.name.end_pos)
95
- corrector.replace(range, replacement)
96
+
97
+ body_comments = processed_source.ast_with_comments[node.body]
98
+ unless body_comments.empty?
99
+ replacement = body_comments.map(&:text).push(replacement).join("\n")
100
+ end
101
+ replacement
96
102
  end
97
103
 
98
104
  def compact_identifier_name(node)
@@ -135,7 +141,10 @@ module RuboCop
135
141
  end
136
142
 
137
143
  def check_compact_style(node, body)
138
- return unless one_child?(body) && !compact_node_name?(node)
144
+ parent = node.parent
145
+ return if parent&.class_type? || parent&.module_type?
146
+
147
+ return unless needs_compacting?(body)
139
148
 
140
149
  add_offense(node.loc.name, message: COMPACT_MSG) do |corrector|
141
150
  autocorrect(corrector, node)
@@ -148,12 +157,12 @@ module RuboCop
148
157
  nest_or_compact(corrector, node)
149
158
  end
150
159
 
151
- def one_child?(body)
160
+ def needs_compacting?(body)
152
161
  body && %i[module class].include?(body.type)
153
162
  end
154
163
 
155
164
  def compact_node_name?(node)
156
- /::/.match?(node.loc.name.source)
165
+ /::/.match?(node.identifier.source)
157
166
  end
158
167
  end
159
168
  end
@@ -50,6 +50,8 @@ module RuboCop
50
50
 
51
51
  def class_name(class_node, node)
52
52
  if node.children.first.method?(:name)
53
+ return class_node.receiver.source if class_node.receiver
54
+
53
55
  class_node.source.delete('"').delete("'")
54
56
  else
55
57
  class_node.source
@@ -31,9 +31,7 @@ module RuboCop
31
31
  if node.body.defs_type?
32
32
  check_defs(node.identifier, node.body)
33
33
  elsif node.body.begin_type?
34
- node.body.each_child_node(:defs) do |def_node|
35
- check_defs(node.identifier, def_node)
36
- end
34
+ node.body.each_child_node(:defs) { |def_node| check_defs(node.identifier, def_node) }
37
35
  end
38
36
  end
39
37
  alias on_module on_class
@@ -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)
@@ -165,7 +161,7 @@ module RuboCop
165
161
  end
166
162
 
167
163
  def preferred_delimiter
168
- (command_delimiter || default_delimiter).split('')
164
+ (command_delimiter || default_delimiter).chars
169
165
  end
170
166
 
171
167
  def command_delimiter
@@ -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,8 +40,13 @@ 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.'
44
+
45
+ KEYWORDS = %w[begin class def end module].freeze
46
+ KEYWORD_REGEXES = KEYWORDS.map { |w| /^\s*#{w}\s/ }.freeze
47
+
48
+ ALLOWED_COMMENTS = %w[:nodoc: :yields: rubocop:disable rubocop:todo].freeze
49
+ ALLOWED_COMMENT_REGEXES = ALLOWED_COMMENTS.map { |c| /#\s*#{c}/ }.freeze
45
50
 
46
51
  def on_new_investigation
47
52
  processed_source.comments.each do |comment|
@@ -53,17 +58,6 @@ module RuboCop
53
58
 
54
59
  private
55
60
 
56
- KEYWORDS = %w[begin class def end module].freeze
57
- KEYWORD_REGEXES = KEYWORDS.map { |w| /^\s*#{w}\s/ }.freeze
58
-
59
- ALLOWED_COMMENTS = %w[
60
- :nodoc:
61
- :yields:
62
- rubocop:disable
63
- rubocop:todo
64
- ].freeze
65
- ALLOWED_COMMENT_REGEXES = ALLOWED_COMMENTS.map { |c| /#\s*#{c}/ }.freeze
66
-
67
61
  def register_offense(comment, matched_keyword)
68
62
  add_offense(comment, message: format(MSG, keyword: matched_keyword)) do |corrector|
69
63
  range = range_with_surrounding_space(range: comment.loc.expression, newlines: false)
@@ -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)