rubocop 1.10.0 → 1.14.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 (487) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +15 -14
  3. data/assets/output.html.erb +1 -1
  4. data/config/default.yml +60 -3
  5. data/exe/rubocop +1 -3
  6. data/lib/rubocop.rb +6 -1
  7. data/lib/rubocop/cached_data.rb +1 -3
  8. data/lib/rubocop/cli.rb +4 -6
  9. data/lib/rubocop/cli/command/auto_genenerate_config.rb +9 -19
  10. data/lib/rubocop/cli/command/execute_runner.rb +1 -1
  11. data/lib/rubocop/cli/command/init_dotfile.rb +1 -3
  12. data/lib/rubocop/cli/command/show_cops.rb +1 -4
  13. data/lib/rubocop/cli/command/suggest_extensions.rb +3 -2
  14. data/lib/rubocop/comment_config.rb +45 -101
  15. data/lib/rubocop/config.rb +11 -26
  16. data/lib/rubocop/config_loader.rb +5 -11
  17. data/lib/rubocop/config_loader_resolver.rb +22 -14
  18. data/lib/rubocop/config_obsoletion/cop_rule.rb +1 -2
  19. data/lib/rubocop/config_store.rb +1 -2
  20. data/lib/rubocop/config_validator.rb +5 -10
  21. data/lib/rubocop/cop/autocorrect_logic.rb +3 -8
  22. data/lib/rubocop/cop/badge.rb +1 -2
  23. data/lib/rubocop/cop/base.rb +8 -6
  24. data/lib/rubocop/cop/bundler/duplicated_gem.rb +3 -3
  25. data/lib/rubocop/cop/bundler/gem_comment.rb +43 -10
  26. data/lib/rubocop/cop/bundler/gem_version.rb +99 -0
  27. data/lib/rubocop/cop/bundler/insecure_protocol_source.rb +1 -0
  28. data/lib/rubocop/cop/bundler/ordered_gems.rb +2 -4
  29. data/lib/rubocop/cop/commissioner.rb +2 -8
  30. data/lib/rubocop/cop/cop.rb +4 -18
  31. data/lib/rubocop/cop/corrector.rb +1 -4
  32. data/lib/rubocop/cop/correctors/alignment_corrector.rb +6 -12
  33. data/lib/rubocop/cop/correctors/each_to_for_corrector.rb +2 -4
  34. data/lib/rubocop/cop/correctors/for_to_each_corrector.rb +1 -2
  35. data/lib/rubocop/cop/correctors/line_break_corrector.rb +3 -6
  36. data/lib/rubocop/cop/correctors/multiline_literal_brace_corrector.rb +1 -3
  37. data/lib/rubocop/cop/correctors/ordered_gem_corrector.rb +1 -3
  38. data/lib/rubocop/cop/correctors/percent_literal_corrector.rb +2 -8
  39. data/lib/rubocop/cop/gemspec/date_assignment.rb +1 -0
  40. data/lib/rubocop/cop/gemspec/duplicated_assignment.rb +3 -2
  41. data/lib/rubocop/cop/gemspec/ordered_dependencies.rb +2 -4
  42. data/lib/rubocop/cop/gemspec/required_ruby_version.rb +2 -0
  43. data/lib/rubocop/cop/gemspec/ruby_version_globals_usage.rb +2 -0
  44. data/lib/rubocop/cop/generator.rb +3 -6
  45. data/lib/rubocop/cop/generator/configuration_injector.rb +1 -2
  46. data/lib/rubocop/cop/generator/require_file_injector.rb +2 -5
  47. data/lib/rubocop/cop/internal_affairs.rb +1 -0
  48. data/lib/rubocop/cop/internal_affairs/example_description.rb +7 -4
  49. data/lib/rubocop/cop/internal_affairs/method_name_equal.rb +3 -5
  50. data/lib/rubocop/cop/internal_affairs/node_destructuring.rb +3 -3
  51. data/lib/rubocop/cop/internal_affairs/node_matcher_directive.rb +151 -0
  52. data/lib/rubocop/cop/internal_affairs/node_type_predicate.rb +2 -3
  53. data/lib/rubocop/cop/internal_affairs/offense_location_keyword.rb +3 -2
  54. data/lib/rubocop/cop/internal_affairs/redundant_described_class_as_subject.rb +1 -0
  55. data/lib/rubocop/cop/internal_affairs/redundant_let_rubocop_config_new.rb +1 -0
  56. data/lib/rubocop/cop/internal_affairs/redundant_location_argument.rb +1 -0
  57. data/lib/rubocop/cop/internal_affairs/redundant_message_argument.rb +3 -0
  58. data/lib/rubocop/cop/internal_affairs/style_detected_api_use.rb +5 -2
  59. data/lib/rubocop/cop/internal_affairs/useless_message_assertion.rb +3 -3
  60. data/lib/rubocop/cop/layout/access_modifier_indentation.rb +12 -10
  61. data/lib/rubocop/cop/layout/argument_alignment.rb +8 -9
  62. data/lib/rubocop/cop/layout/array_alignment.rb +7 -6
  63. data/lib/rubocop/cop/layout/assignment_indentation.rb +8 -7
  64. data/lib/rubocop/cop/layout/begin_end_alignment.rb +1 -4
  65. data/lib/rubocop/cop/layout/block_alignment.rb +8 -19
  66. data/lib/rubocop/cop/layout/block_end_newline.rb +4 -8
  67. data/lib/rubocop/cop/layout/case_indentation.rb +1 -3
  68. data/lib/rubocop/cop/layout/class_structure.rb +5 -10
  69. data/lib/rubocop/cop/layout/closing_parenthesis_indentation.rb +18 -30
  70. data/lib/rubocop/cop/layout/comment_indentation.rb +17 -21
  71. data/lib/rubocop/cop/layout/def_end_alignment.rb +2 -6
  72. data/lib/rubocop/cop/layout/dot_position.rb +1 -3
  73. data/lib/rubocop/cop/layout/else_alignment.rb +10 -9
  74. data/lib/rubocop/cop/layout/empty_comment.rb +5 -12
  75. data/lib/rubocop/cop/layout/empty_line_after_guard_clause.rb +22 -8
  76. data/lib/rubocop/cop/layout/empty_line_between_defs.rb +2 -6
  77. data/lib/rubocop/cop/layout/empty_lines.rb +1 -3
  78. data/lib/rubocop/cop/layout/empty_lines_around_access_modifier.rb +8 -18
  79. data/lib/rubocop/cop/layout/empty_lines_around_exception_handling_keywords.rb +2 -8
  80. data/lib/rubocop/cop/layout/end_alignment.rb +1 -2
  81. data/lib/rubocop/cop/layout/end_of_line.rb +1 -1
  82. data/lib/rubocop/cop/layout/extra_spacing.rb +5 -9
  83. data/lib/rubocop/cop/layout/first_argument_indentation.rb +11 -5
  84. data/lib/rubocop/cop/layout/first_array_element_indentation.rb +10 -8
  85. data/lib/rubocop/cop/layout/first_array_element_line_break.rb +1 -2
  86. data/lib/rubocop/cop/layout/first_hash_element_indentation.rb +24 -20
  87. data/lib/rubocop/cop/layout/first_hash_element_line_break.rb +1 -2
  88. data/lib/rubocop/cop/layout/first_method_argument_line_break.rb +1 -2
  89. data/lib/rubocop/cop/layout/first_method_parameter_line_break.rb +1 -2
  90. data/lib/rubocop/cop/layout/first_parameter_indentation.rb +6 -5
  91. data/lib/rubocop/cop/layout/hash_alignment.rb +3 -6
  92. data/lib/rubocop/cop/layout/heredoc_argument_closing_parenthesis.rb +2 -9
  93. data/lib/rubocop/cop/layout/heredoc_indentation.rb +2 -6
  94. data/lib/rubocop/cop/layout/indentation_consistency.rb +9 -6
  95. data/lib/rubocop/cop/layout/indentation_style.rb +25 -30
  96. data/lib/rubocop/cop/layout/indentation_width.rb +21 -11
  97. data/lib/rubocop/cop/layout/initial_indentation.rb +1 -4
  98. data/lib/rubocop/cop/layout/line_length.rb +4 -15
  99. data/lib/rubocop/cop/layout/multiline_array_line_breaks.rb +1 -2
  100. data/lib/rubocop/cop/layout/multiline_block_layout.rb +7 -15
  101. data/lib/rubocop/cop/layout/multiline_hash_key_line_breaks.rb +1 -2
  102. data/lib/rubocop/cop/layout/multiline_method_argument_line_breaks.rb +1 -2
  103. data/lib/rubocop/cop/layout/multiline_method_call_indentation.rb +22 -15
  104. data/lib/rubocop/cop/layout/multiline_operation_indentation.rb +10 -5
  105. data/lib/rubocop/cop/layout/parameter_alignment.rb +6 -5
  106. data/lib/rubocop/cop/layout/redundant_line_break.rb +137 -0
  107. data/lib/rubocop/cop/layout/rescue_ensure_alignment.rb +3 -6
  108. data/lib/rubocop/cop/layout/single_line_block_chain.rb +53 -0
  109. data/lib/rubocop/cop/layout/space_after_colon.rb +1 -3
  110. data/lib/rubocop/cop/layout/space_after_method_name.rb +2 -4
  111. data/lib/rubocop/cop/layout/space_around_block_parameters.rb +6 -14
  112. data/lib/rubocop/cop/layout/space_around_equals_in_parameter_default.rb +1 -2
  113. data/lib/rubocop/cop/layout/space_around_keyword.rb +3 -6
  114. data/lib/rubocop/cop/layout/space_around_operators.rb +4 -9
  115. data/lib/rubocop/cop/layout/space_before_block_braces.rb +2 -3
  116. data/lib/rubocop/cop/layout/space_before_brackets.rb +1 -3
  117. data/lib/rubocop/cop/layout/space_before_comment.rb +1 -3
  118. data/lib/rubocop/cop/layout/space_before_first_arg.rb +5 -11
  119. data/lib/rubocop/cop/layout/space_in_lambda_literal.rb +2 -4
  120. data/lib/rubocop/cop/layout/space_inside_array_literal_brackets.rb +5 -10
  121. data/lib/rubocop/cop/layout/space_inside_array_percent_literal.rb +2 -7
  122. data/lib/rubocop/cop/layout/space_inside_block_braces.rb +6 -11
  123. data/lib/rubocop/cop/layout/space_inside_hash_literal_braces.rb +1 -2
  124. data/lib/rubocop/cop/layout/space_inside_reference_brackets.rb +1 -2
  125. data/lib/rubocop/cop/legacy/corrections_proxy.rb +2 -8
  126. data/lib/rubocop/cop/legacy/corrector.rb +1 -3
  127. data/lib/rubocop/cop/lint/ambiguous_assignment.rb +1 -6
  128. data/lib/rubocop/cop/lint/ambiguous_block_association.rb +14 -7
  129. data/lib/rubocop/cop/lint/big_decimal_new.rb +1 -0
  130. data/lib/rubocop/cop/lint/boolean_symbol.rb +2 -2
  131. data/lib/rubocop/cop/lint/constant_definition_in_block.rb +2 -0
  132. data/lib/rubocop/cop/lint/constant_resolution.rb +2 -2
  133. data/lib/rubocop/cop/lint/debugger.rb +3 -1
  134. data/lib/rubocop/cop/lint/deprecated_class_methods.rb +79 -41
  135. data/lib/rubocop/cop/lint/deprecated_constants.rb +3 -3
  136. data/lib/rubocop/cop/lint/deprecated_open_ssl_constant.rb +3 -5
  137. data/lib/rubocop/cop/lint/duplicate_branch.rb +2 -3
  138. data/lib/rubocop/cop/lint/duplicate_hash_key.rb +1 -3
  139. data/lib/rubocop/cop/lint/duplicate_methods.rb +6 -7
  140. data/lib/rubocop/cop/lint/duplicate_require.rb +1 -0
  141. data/lib/rubocop/cop/lint/each_with_object_argument.rb +1 -0
  142. data/lib/rubocop/cop/lint/else_layout.rb +1 -3
  143. data/lib/rubocop/cop/lint/empty_ensure.rb +1 -3
  144. data/lib/rubocop/cop/lint/empty_file.rb +1 -3
  145. data/lib/rubocop/cop/lint/empty_interpolation.rb +1 -3
  146. data/lib/rubocop/cop/lint/ensure_return.rb +1 -3
  147. data/lib/rubocop/cop/lint/erb_new_arguments.rb +4 -7
  148. data/lib/rubocop/cop/lint/float_out_of_range.rb +1 -2
  149. data/lib/rubocop/cop/lint/format_parameter_mismatch.rb +4 -6
  150. data/lib/rubocop/cop/lint/hash_compare_by_identity.rb +1 -0
  151. data/lib/rubocop/cop/lint/heredoc_method_call_position.rb +1 -2
  152. data/lib/rubocop/cop/lint/implicit_string_concatenation.rb +1 -2
  153. data/lib/rubocop/cop/lint/ineffective_access_modifier.rb +4 -7
  154. data/lib/rubocop/cop/lint/inherit_exception.rb +2 -2
  155. data/lib/rubocop/cop/lint/interpolation_check.rb +3 -11
  156. data/lib/rubocop/cop/lint/literal_in_interpolation.rb +3 -6
  157. data/lib/rubocop/cop/lint/loop.rb +1 -2
  158. data/lib/rubocop/cop/lint/missing_cop_enable_directive.rb +3 -7
  159. data/lib/rubocop/cop/lint/missing_super.rb +1 -2
  160. data/lib/rubocop/cop/lint/mixed_regexp_capture_types.rb +1 -2
  161. data/lib/rubocop/cop/lint/multiple_comparison.rb +1 -0
  162. data/lib/rubocop/cop/lint/nested_method_definition.rb +4 -2
  163. data/lib/rubocop/cop/lint/nested_percent_literal.rb +1 -3
  164. data/lib/rubocop/cop/lint/next_without_accumulator.rb +1 -0
  165. data/lib/rubocop/cop/lint/non_deterministic_require_order.rb +8 -3
  166. data/lib/rubocop/cop/lint/non_local_exit_from_iterator.rb +3 -0
  167. data/lib/rubocop/cop/lint/number_conversion.rb +13 -5
  168. data/lib/rubocop/cop/lint/ordered_magic_comments.rb +1 -2
  169. data/lib/rubocop/cop/lint/out_of_range_regexp_ref.rb +1 -3
  170. data/lib/rubocop/cop/lint/parentheses_as_grouped_expression.rb +1 -3
  171. data/lib/rubocop/cop/lint/percent_symbol_array.rb +1 -3
  172. data/lib/rubocop/cop/lint/raise_exception.rb +3 -2
  173. data/lib/rubocop/cop/lint/rand_one.rb +2 -2
  174. data/lib/rubocop/cop/lint/redundant_cop_disable_directive.rb +9 -22
  175. data/lib/rubocop/cop/lint/redundant_require_statement.rb +1 -0
  176. data/lib/rubocop/cop/lint/redundant_safe_navigation.rb +2 -3
  177. data/lib/rubocop/cop/lint/redundant_splat_expansion.rb +5 -7
  178. data/lib/rubocop/cop/lint/redundant_string_coercion.rb +2 -2
  179. data/lib/rubocop/cop/lint/redundant_with_index.rb +2 -4
  180. data/lib/rubocop/cop/lint/redundant_with_object.rb +2 -4
  181. data/lib/rubocop/cop/lint/regexp_as_condition.rb +1 -3
  182. data/lib/rubocop/cop/lint/require_parentheses.rb +2 -4
  183. data/lib/rubocop/cop/lint/rescue_exception.rb +1 -2
  184. data/lib/rubocop/cop/lint/rescue_type.rb +2 -7
  185. data/lib/rubocop/cop/lint/return_in_void_context.rb +1 -2
  186. data/lib/rubocop/cop/lint/safe_navigation_chain.rb +2 -2
  187. data/lib/rubocop/cop/lint/safe_navigation_consistency.rb +4 -10
  188. data/lib/rubocop/cop/lint/safe_navigation_with_empty.rb +2 -2
  189. data/lib/rubocop/cop/lint/send_with_mixin_argument.rb +3 -7
  190. data/lib/rubocop/cop/lint/shadowed_argument.rb +5 -11
  191. data/lib/rubocop/cop/lint/shadowed_exception.rb +7 -8
  192. data/lib/rubocop/cop/lint/shadowing_outer_local_variable.rb +1 -0
  193. data/lib/rubocop/cop/lint/struct_new_override.rb +2 -2
  194. data/lib/rubocop/cop/lint/suppressed_exception.rb +44 -1
  195. data/lib/rubocop/cop/lint/symbol_conversion.rb +91 -6
  196. data/lib/rubocop/cop/lint/syntax.rb +1 -3
  197. data/lib/rubocop/cop/lint/to_enum_arguments.rb +3 -0
  198. data/lib/rubocop/cop/lint/to_json.rb +1 -2
  199. data/lib/rubocop/cop/lint/trailing_comma_in_attribute_declaration.rb +1 -3
  200. data/lib/rubocop/cop/lint/underscore_prefixed_variable_name.rb +1 -3
  201. data/lib/rubocop/cop/lint/unified_integer.rb +1 -0
  202. data/lib/rubocop/cop/lint/unmodified_reduce_accumulator.rb +5 -0
  203. data/lib/rubocop/cop/lint/unreachable_code.rb +3 -5
  204. data/lib/rubocop/cop/lint/unreachable_loop.rb +15 -7
  205. data/lib/rubocop/cop/lint/unused_block_argument.rb +9 -7
  206. data/lib/rubocop/cop/lint/unused_method_argument.rb +2 -2
  207. data/lib/rubocop/cop/lint/uri_escape_unescape.rb +1 -0
  208. data/lib/rubocop/cop/lint/useless_access_modifier.rb +6 -4
  209. data/lib/rubocop/cop/lint/useless_assignment.rb +4 -9
  210. data/lib/rubocop/cop/lint/useless_setter_call.rb +2 -3
  211. data/lib/rubocop/cop/lint/useless_times.rb +3 -0
  212. data/lib/rubocop/cop/lint/void.rb +4 -11
  213. data/lib/rubocop/cop/message_annotator.rb +1 -3
  214. data/lib/rubocop/cop/metrics/block_nesting.rb +2 -7
  215. data/lib/rubocop/cop/metrics/class_length.rb +1 -3
  216. data/lib/rubocop/cop/metrics/cyclomatic_complexity.rb +1 -2
  217. data/lib/rubocop/cop/metrics/module_length.rb +3 -6
  218. data/lib/rubocop/cop/metrics/parameter_lists.rb +3 -5
  219. data/lib/rubocop/cop/metrics/perceived_complexity.rb +1 -2
  220. data/lib/rubocop/cop/metrics/utils/abc_size_calculator.rb +4 -7
  221. data/lib/rubocop/cop/metrics/utils/code_length_calculator.rb +6 -4
  222. data/lib/rubocop/cop/metrics/utils/repeated_attribute_discount.rb +4 -7
  223. data/lib/rubocop/cop/migration/department_name.rb +3 -7
  224. data/lib/rubocop/cop/mixin/alignment.rb +12 -7
  225. data/lib/rubocop/cop/mixin/check_line_breakable.rb +1 -1
  226. data/lib/rubocop/cop/mixin/code_length.rb +1 -3
  227. data/lib/rubocop/cop/mixin/comments_help.rb +5 -1
  228. data/lib/rubocop/cop/mixin/configurable_enforced_style.rb +2 -2
  229. data/lib/rubocop/cop/mixin/configurable_formatting.rb +3 -8
  230. data/lib/rubocop/cop/mixin/def_node.rb +3 -5
  231. data/lib/rubocop/cop/mixin/documentation_comment.rb +3 -6
  232. data/lib/rubocop/cop/mixin/empty_lines_around_body.rb +6 -7
  233. data/lib/rubocop/cop/mixin/empty_parameter.rb +2 -3
  234. data/lib/rubocop/cop/mixin/end_keyword_alignment.rb +1 -3
  235. data/lib/rubocop/cop/mixin/enforce_superclass.rb +4 -6
  236. data/lib/rubocop/cop/mixin/first_element_line_break.rb +1 -3
  237. data/lib/rubocop/cop/mixin/frozen_string_literal.rb +3 -9
  238. data/lib/rubocop/cop/mixin/gem_declaration.rb +13 -0
  239. data/lib/rubocop/cop/mixin/hash_alignment_styles.rb +3 -6
  240. data/lib/rubocop/cop/mixin/hash_transform_method.rb +8 -22
  241. data/lib/rubocop/cop/mixin/interpolation.rb +1 -3
  242. data/lib/rubocop/cop/mixin/line_length_help.rb +13 -10
  243. data/lib/rubocop/cop/mixin/match_range.rb +2 -5
  244. data/lib/rubocop/cop/mixin/method_complexity.rb +2 -3
  245. data/lib/rubocop/cop/mixin/method_preference.rb +1 -2
  246. data/lib/rubocop/cop/mixin/multiline_element_indentation.rb +4 -3
  247. data/lib/rubocop/cop/mixin/multiline_element_line_breaks.rb +1 -3
  248. data/lib/rubocop/cop/mixin/multiline_expression_indentation.rb +11 -40
  249. data/lib/rubocop/cop/mixin/multiline_literal_brace_layout.rb +1 -2
  250. data/lib/rubocop/cop/mixin/negative_conditional.rb +4 -2
  251. data/lib/rubocop/cop/mixin/ordered_gem_node.rb +1 -4
  252. data/lib/rubocop/cop/mixin/percent_array.rb +1 -3
  253. data/lib/rubocop/cop/mixin/percent_literal.rb +0 -6
  254. data/lib/rubocop/cop/mixin/preceding_following_alignment.rb +5 -11
  255. data/lib/rubocop/cop/mixin/preferred_delimiters.rb +4 -7
  256. data/lib/rubocop/cop/mixin/range_help.rb +10 -13
  257. data/lib/rubocop/cop/mixin/rational_literal.rb +1 -0
  258. data/lib/rubocop/cop/mixin/rescue_node.rb +2 -6
  259. data/lib/rubocop/cop/mixin/safe_assignment.rb +6 -2
  260. data/lib/rubocop/cop/mixin/space_after_punctuation.rb +2 -4
  261. data/lib/rubocop/cop/mixin/space_before_punctuation.rb +1 -2
  262. data/lib/rubocop/cop/mixin/statement_modifier.rb +1 -3
  263. data/lib/rubocop/cop/mixin/string_literals_help.rb +1 -1
  264. data/lib/rubocop/cop/mixin/trailing_body.rb +1 -2
  265. data/lib/rubocop/cop/mixin/trailing_comma.rb +1 -2
  266. data/lib/rubocop/cop/mixin/uncommunicative_name.rb +7 -13
  267. data/lib/rubocop/cop/mixin/unused_argument.rb +1 -3
  268. data/lib/rubocop/cop/mixin/visibility_help.rb +1 -0
  269. data/lib/rubocop/cop/naming/ascii_identifiers.rb +2 -4
  270. data/lib/rubocop/cop/naming/binary_operator_parameter_name.rb +2 -2
  271. data/lib/rubocop/cop/naming/constant_name.rb +2 -0
  272. data/lib/rubocop/cop/naming/file_name.rb +7 -16
  273. data/lib/rubocop/cop/naming/memoized_instance_variable_name.rb +8 -3
  274. data/lib/rubocop/cop/naming/method_name.rb +4 -2
  275. data/lib/rubocop/cop/naming/predicate_name.rb +2 -2
  276. data/lib/rubocop/cop/naming/rescued_exceptions_variable_name.rb +10 -0
  277. data/lib/rubocop/cop/offense.rb +3 -8
  278. data/lib/rubocop/cop/registry.rb +12 -11
  279. data/lib/rubocop/cop/security/eval.rb +1 -0
  280. data/lib/rubocop/cop/security/json_load.rb +1 -0
  281. data/lib/rubocop/cop/security/marshal_load.rb +1 -0
  282. data/lib/rubocop/cop/security/open.rb +1 -0
  283. data/lib/rubocop/cop/security/yaml_load.rb +1 -0
  284. data/lib/rubocop/cop/style/access_modifier_declarations.rb +4 -5
  285. data/lib/rubocop/cop/style/accessor_grouping.rb +1 -3
  286. data/lib/rubocop/cop/style/alias.rb +6 -12
  287. data/lib/rubocop/cop/style/and_or.rb +3 -1
  288. data/lib/rubocop/cop/style/arguments_forwarding.rb +4 -3
  289. data/lib/rubocop/cop/style/array_coercion.rb +2 -0
  290. data/lib/rubocop/cop/style/array_join.rb +1 -0
  291. data/lib/rubocop/cop/style/ascii_comments.rb +1 -2
  292. data/lib/rubocop/cop/style/attr.rb +2 -3
  293. data/lib/rubocop/cop/style/auto_resource_cleanup.rb +2 -5
  294. data/lib/rubocop/cop/style/bisected_attr_accessor.rb +59 -71
  295. data/lib/rubocop/cop/style/bisected_attr_accessor/macro.rb +60 -0
  296. data/lib/rubocop/cop/style/case_equality.rb +2 -1
  297. data/lib/rubocop/cop/style/case_like_if.rb +16 -6
  298. data/lib/rubocop/cop/style/character_literal.rb +2 -4
  299. data/lib/rubocop/cop/style/class_and_module_children.rb +6 -9
  300. data/lib/rubocop/cop/style/class_equality_comparison.rb +3 -0
  301. data/lib/rubocop/cop/style/class_methods.rb +1 -3
  302. data/lib/rubocop/cop/style/collection_compact.rb +3 -3
  303. data/lib/rubocop/cop/style/colon_method_call.rb +2 -3
  304. data/lib/rubocop/cop/style/combinable_loops.rb +3 -2
  305. data/lib/rubocop/cop/style/command_literal.rb +4 -9
  306. data/lib/rubocop/cop/style/comment_annotation.rb +3 -6
  307. data/lib/rubocop/cop/style/commented_keyword.rb +7 -13
  308. data/lib/rubocop/cop/style/conditional_assignment.rb +12 -24
  309. data/lib/rubocop/cop/style/constant_visibility.rb +1 -0
  310. data/lib/rubocop/cop/style/copyright.rb +3 -6
  311. data/lib/rubocop/cop/style/date_time.rb +5 -5
  312. data/lib/rubocop/cop/style/def_with_parentheses.rb +1 -2
  313. data/lib/rubocop/cop/style/dir.rb +1 -0
  314. data/lib/rubocop/cop/style/disable_cops_within_source_code_directive.rb +2 -2
  315. data/lib/rubocop/cop/style/documentation.rb +30 -3
  316. data/lib/rubocop/cop/style/documentation_method.rb +1 -0
  317. data/lib/rubocop/cop/style/double_negation.rb +1 -0
  318. data/lib/rubocop/cop/style/each_for_simple_loop.rb +2 -2
  319. data/lib/rubocop/cop/style/each_with_object.rb +1 -0
  320. data/lib/rubocop/cop/style/empty_case_condition.rb +2 -7
  321. data/lib/rubocop/cop/style/empty_else.rb +3 -9
  322. data/lib/rubocop/cop/style/empty_literal.rb +13 -8
  323. data/lib/rubocop/cop/style/empty_method.rb +3 -7
  324. data/lib/rubocop/cop/style/end_block.rb +1 -2
  325. data/lib/rubocop/cop/style/endless_method.rb +2 -3
  326. data/lib/rubocop/cop/style/eval_with_location.rb +5 -5
  327. data/lib/rubocop/cop/style/even_odd.rb +1 -0
  328. data/lib/rubocop/cop/style/expand_path_arguments.rb +4 -3
  329. data/lib/rubocop/cop/style/explicit_block_argument.rb +2 -4
  330. data/lib/rubocop/cop/style/float_division.rb +4 -0
  331. data/lib/rubocop/cop/style/format_string.rb +2 -0
  332. data/lib/rubocop/cop/style/format_string_token.rb +2 -4
  333. data/lib/rubocop/cop/style/frozen_string_literal_comment.rb +3 -11
  334. data/lib/rubocop/cop/style/global_std_stream.rb +1 -0
  335. data/lib/rubocop/cop/style/guard_clause.rb +3 -7
  336. data/lib/rubocop/cop/style/hash_conversion.rb +57 -5
  337. data/lib/rubocop/cop/style/hash_each_methods.rb +2 -2
  338. data/lib/rubocop/cop/style/hash_except.rb +1 -0
  339. data/lib/rubocop/cop/style/hash_like_case.rb +2 -2
  340. data/lib/rubocop/cop/style/hash_syntax.rb +20 -24
  341. data/lib/rubocop/cop/style/hash_transform_keys.rb +4 -0
  342. data/lib/rubocop/cop/style/hash_transform_values.rb +4 -0
  343. data/lib/rubocop/cop/style/identical_conditional_branches.rb +1 -3
  344. data/lib/rubocop/cop/style/if_unless_modifier.rb +40 -13
  345. data/lib/rubocop/cop/style/if_with_boolean_literal_branches.rb +2 -0
  346. data/lib/rubocop/cop/style/implicit_runtime_error.rb +1 -0
  347. data/lib/rubocop/cop/style/infinite_loop.rb +2 -5
  348. data/lib/rubocop/cop/style/inverse_methods.rb +5 -7
  349. data/lib/rubocop/cop/style/ip_addresses.rb +1 -2
  350. data/lib/rubocop/cop/style/lambda.rb +2 -4
  351. data/lib/rubocop/cop/style/lambda_call.rb +1 -2
  352. data/lib/rubocop/cop/style/line_end_concatenation.rb +5 -12
  353. data/lib/rubocop/cop/style/method_call_with_args_parentheses.rb +47 -3
  354. data/lib/rubocop/cop/style/method_call_with_args_parentheses/omit_parentheses.rb +26 -16
  355. data/lib/rubocop/cop/style/method_call_without_args_parentheses.rb +1 -2
  356. data/lib/rubocop/cop/style/method_called_on_do_end_block.rb +2 -4
  357. data/lib/rubocop/cop/style/method_def_parentheses.rb +4 -8
  358. data/lib/rubocop/cop/style/min_max.rb +2 -2
  359. data/lib/rubocop/cop/style/missing_else.rb +2 -4
  360. data/lib/rubocop/cop/style/missing_respond_to_missing.rb +1 -2
  361. data/lib/rubocop/cop/style/mixin_grouping.rb +4 -10
  362. data/lib/rubocop/cop/style/mixin_usage.rb +3 -2
  363. data/lib/rubocop/cop/style/module_function.rb +8 -6
  364. data/lib/rubocop/cop/style/multiline_block_chain.rb +1 -2
  365. data/lib/rubocop/cop/style/multiline_method_signature.rb +11 -6
  366. data/lib/rubocop/cop/style/multiline_ternary_operator.rb +1 -2
  367. data/lib/rubocop/cop/style/multiple_comparison.rb +22 -5
  368. data/lib/rubocop/cop/style/mutable_constant.rb +7 -10
  369. data/lib/rubocop/cop/style/negated_if.rb +1 -2
  370. data/lib/rubocop/cop/style/negated_if_else_condition.rb +24 -2
  371. data/lib/rubocop/cop/style/negated_unless.rb +1 -2
  372. data/lib/rubocop/cop/style/nested_modifier.rb +3 -7
  373. data/lib/rubocop/cop/style/nested_ternary_operator.rb +2 -3
  374. data/lib/rubocop/cop/style/next.rb +4 -9
  375. data/lib/rubocop/cop/style/nil_comparison.rb +3 -0
  376. data/lib/rubocop/cop/style/nil_lambda.rb +1 -0
  377. data/lib/rubocop/cop/style/non_nil_check.rb +9 -5
  378. data/lib/rubocop/cop/style/numeric_literals.rb +3 -11
  379. data/lib/rubocop/cop/style/numeric_predicate.rb +5 -7
  380. data/lib/rubocop/cop/style/one_line_conditional.rb +1 -2
  381. data/lib/rubocop/cop/style/option_hash.rb +2 -3
  382. data/lib/rubocop/cop/style/optional_arguments.rb +2 -5
  383. data/lib/rubocop/cop/style/or_assignment.rb +4 -6
  384. data/lib/rubocop/cop/style/parallel_assignment.rb +12 -9
  385. data/lib/rubocop/cop/style/parentheses_around_condition.rb +1 -0
  386. data/lib/rubocop/cop/style/percent_literal_delimiters.rb +1 -3
  387. data/lib/rubocop/cop/style/percent_q_literals.rb +1 -2
  388. data/lib/rubocop/cop/style/perl_backrefs.rb +2 -9
  389. data/lib/rubocop/cop/style/preferred_hash_methods.rb +1 -4
  390. data/lib/rubocop/cop/style/proc.rb +2 -2
  391. data/lib/rubocop/cop/style/raise_args.rb +4 -8
  392. data/lib/rubocop/cop/style/random_with_offset.rb +8 -8
  393. data/lib/rubocop/cop/style/redundant_argument.rb +2 -11
  394. data/lib/rubocop/cop/style/redundant_assignment.rb +2 -3
  395. data/lib/rubocop/cop/style/redundant_begin.rb +47 -7
  396. data/lib/rubocop/cop/style/redundant_capital_w.rb +1 -2
  397. data/lib/rubocop/cop/style/redundant_condition.rb +2 -5
  398. data/lib/rubocop/cop/style/redundant_conditional.rb +5 -6
  399. data/lib/rubocop/cop/style/redundant_exception.rb +5 -6
  400. data/lib/rubocop/cop/style/redundant_fetch_block.rb +2 -0
  401. data/lib/rubocop/cop/style/redundant_file_extension_in_require.rb +2 -1
  402. data/lib/rubocop/cop/style/redundant_freeze.rb +2 -2
  403. data/lib/rubocop/cop/style/redundant_interpolation.rb +1 -2
  404. data/lib/rubocop/cop/style/redundant_parentheses.rb +21 -20
  405. data/lib/rubocop/cop/style/redundant_percent_q.rb +1 -2
  406. data/lib/rubocop/cop/style/redundant_regexp_escape.rb +1 -4
  407. data/lib/rubocop/cop/style/redundant_return.rb +6 -4
  408. data/lib/rubocop/cop/style/redundant_self.rb +9 -9
  409. data/lib/rubocop/cop/style/redundant_self_assignment.rb +4 -2
  410. data/lib/rubocop/cop/style/redundant_sort.rb +3 -5
  411. data/lib/rubocop/cop/style/redundant_sort_by.rb +1 -0
  412. data/lib/rubocop/cop/style/regexp_literal.rb +4 -8
  413. data/lib/rubocop/cop/style/rescue_modifier.rb +21 -14
  414. data/lib/rubocop/cop/style/rescue_standard_error.rb +5 -7
  415. data/lib/rubocop/cop/style/return_nil.rb +7 -2
  416. data/lib/rubocop/cop/style/safe_navigation.rb +12 -21
  417. data/lib/rubocop/cop/style/sample.rb +1 -0
  418. data/lib/rubocop/cop/style/send.rb +1 -2
  419. data/lib/rubocop/cop/style/signal_exception.rb +6 -7
  420. data/lib/rubocop/cop/style/single_argument_dig.rb +2 -2
  421. data/lib/rubocop/cop/style/single_line_block_params.rb +2 -5
  422. data/lib/rubocop/cop/style/single_line_methods.rb +21 -4
  423. data/lib/rubocop/cop/style/slicing_with_range.rb +1 -0
  424. data/lib/rubocop/cop/style/sole_nested_conditional.rb +31 -7
  425. data/lib/rubocop/cop/style/special_global_vars.rb +6 -18
  426. data/lib/rubocop/cop/style/stabby_lambda_parentheses.rb +1 -2
  427. data/lib/rubocop/cop/style/stderr_puts.rb +3 -6
  428. data/lib/rubocop/cop/style/string_chars.rb +39 -0
  429. data/lib/rubocop/cop/style/string_concatenation.rb +9 -10
  430. data/lib/rubocop/cop/style/string_hash_keys.rb +2 -0
  431. data/lib/rubocop/cop/style/string_literals.rb +2 -5
  432. data/lib/rubocop/cop/style/strip.rb +1 -0
  433. data/lib/rubocop/cop/style/struct_inheritance.rb +11 -0
  434. data/lib/rubocop/cop/style/symbol_literal.rb +1 -3
  435. data/lib/rubocop/cop/style/symbol_proc.rb +29 -10
  436. data/lib/rubocop/cop/style/ternary_parentheses.rb +4 -6
  437. data/lib/rubocop/cop/style/trailing_body_on_method_definition.rb +6 -2
  438. data/lib/rubocop/cop/style/trailing_comma_in_block_args.rb +2 -6
  439. data/lib/rubocop/cop/style/trailing_method_end_statement.rb +3 -6
  440. data/lib/rubocop/cop/style/trailing_underscore_variable.rb +4 -10
  441. data/lib/rubocop/cop/style/trivial_accessors.rb +3 -4
  442. data/lib/rubocop/cop/style/unless_else.rb +1 -2
  443. data/lib/rubocop/cop/style/unless_logical_operators.rb +105 -0
  444. data/lib/rubocop/cop/style/unpack_first.rb +1 -0
  445. data/lib/rubocop/cop/style/variable_interpolation.rb +1 -1
  446. data/lib/rubocop/cop/style/when_then.rb +1 -3
  447. data/lib/rubocop/cop/style/while_until_modifier.rb +1 -2
  448. data/lib/rubocop/cop/style/word_array.rb +1 -2
  449. data/lib/rubocop/cop/style/yoda_condition.rb +4 -11
  450. data/lib/rubocop/cop/style/zero_length_predicate.rb +6 -2
  451. data/lib/rubocop/cop/team.rb +2 -5
  452. data/lib/rubocop/cop/util.rb +8 -11
  453. data/lib/rubocop/cop/utils/format_string.rb +1 -3
  454. data/lib/rubocop/cop/variable_force.rb +6 -15
  455. data/lib/rubocop/cop/variable_force/assignment.rb +1 -2
  456. data/lib/rubocop/cop/variable_force/branch.rb +16 -2
  457. data/lib/rubocop/cop/variable_force/reference.rb +1 -3
  458. data/lib/rubocop/cop/variable_force/scope.rb +4 -8
  459. data/lib/rubocop/cop/variable_force/variable.rb +2 -4
  460. data/lib/rubocop/cops_documentation_generator.rb +7 -21
  461. data/lib/rubocop/directive_comment.rb +69 -9
  462. data/lib/rubocop/ext/regexp_parser.rb +3 -6
  463. data/lib/rubocop/file_finder.rb +1 -3
  464. data/lib/rubocop/formatter/clang_style_formatter.rb +4 -2
  465. data/lib/rubocop/formatter/disabled_config_formatter.rb +3 -8
  466. data/lib/rubocop/formatter/git_hub_actions_formatter.rb +1 -5
  467. data/lib/rubocop/formatter/html_formatter.rb +4 -10
  468. data/lib/rubocop/formatter/json_formatter.rb +1 -5
  469. data/lib/rubocop/formatter/junit_formatter.rb +3 -9
  470. data/lib/rubocop/formatter/progress_formatter.rb +1 -3
  471. data/lib/rubocop/formatter/tap_formatter.rb +4 -2
  472. data/lib/rubocop/magic_comment.rb +1 -1
  473. data/lib/rubocop/name_similarity.rb +1 -1
  474. data/lib/rubocop/options.rb +27 -41
  475. data/lib/rubocop/path_util.rb +1 -3
  476. data/lib/rubocop/rake_task.rb +3 -0
  477. data/lib/rubocop/remote_config.rb +4 -7
  478. data/lib/rubocop/result_cache.rb +5 -12
  479. data/lib/rubocop/rspec/cop_helper.rb +1 -1
  480. data/lib/rubocop/rspec/expect_offense.rb +4 -9
  481. data/lib/rubocop/rspec/shared_contexts.rb +8 -15
  482. data/lib/rubocop/runner.rb +7 -14
  483. data/lib/rubocop/target_finder.rb +19 -16
  484. data/lib/rubocop/target_ruby.rb +25 -21
  485. data/lib/rubocop/version.rb +1 -1
  486. metadata +18 -11
  487. data/lib/rubocop/core_ext/hash.rb +0 -20
@@ -0,0 +1,137 @@
1
+ # frozen_string_literal: true
2
+
3
+ module RuboCop
4
+ module Cop
5
+ module Layout
6
+ # This cop checks whether certain expressions, e.g. method calls, that could fit
7
+ # completely on a single line, are broken up into multiple lines unnecessarily.
8
+ #
9
+ # @example any configuration
10
+ # # bad
11
+ # foo(
12
+ # a,
13
+ # b
14
+ # )
15
+ #
16
+ # puts 'string that fits on ' \
17
+ # 'a single line'
18
+ #
19
+ # things
20
+ # .select { |thing| thing.cond? }
21
+ # .join('-')
22
+ #
23
+ # # good
24
+ # foo(a, b)
25
+ #
26
+ # puts 'string that fits on a single line'
27
+ #
28
+ # things.select { |thing| thing.cond? }.join('-')
29
+ #
30
+ # @example InspectBlocks: false (default)
31
+ # # good
32
+ # foo(a) do |x|
33
+ # puts x
34
+ # end
35
+ #
36
+ # @example InspectBlocks: true
37
+ # # bad
38
+ # foo(a) do |x|
39
+ # puts x
40
+ # end
41
+ #
42
+ # # good
43
+ # foo(a) { |x| puts x }
44
+ #
45
+ class RedundantLineBreak < Cop
46
+ include CheckAssignment
47
+
48
+ MSG = 'Redundant line break detected.'
49
+
50
+ def on_send(node)
51
+ # Include "the whole expression".
52
+ node = node.parent while convertible_block?(node) ||
53
+ node.parent.is_a?(RuboCop::AST::BinaryOperatorNode) ||
54
+ node.parent&.send_type?
55
+
56
+ return unless offense?(node) && !part_of_ignored_node?(node)
57
+
58
+ add_offense(node)
59
+ ignore_node(node)
60
+ end
61
+
62
+ def check_assignment(node, _rhs)
63
+ return unless offense?(node)
64
+
65
+ add_offense(node)
66
+ ignore_node(node)
67
+ end
68
+
69
+ def autocorrect(node)
70
+ ->(corrector) { corrector.replace(node.source_range, to_single_line(node.source).strip) }
71
+ end
72
+
73
+ private
74
+
75
+ def offense?(node)
76
+ return false if configured_to_not_be_inspected?(node)
77
+
78
+ node.multiline? && !too_long?(node) && suitable_as_single_line?(node)
79
+ end
80
+
81
+ def configured_to_not_be_inspected?(node)
82
+ return true if other_cop_takes_precedence?(node)
83
+
84
+ !cop_config['InspectBlocks'] && (node.block_type? ||
85
+ node.each_descendant(:block).any?(&:multiline?))
86
+ end
87
+
88
+ def other_cop_takes_precedence?(node)
89
+ single_line_block_chain_enabled? && node.each_descendant(:block).any? do |block_node|
90
+ block_node.parent.send_type? && block_node.parent.loc.dot && !block_node.multiline?
91
+ end
92
+ end
93
+
94
+ def single_line_block_chain_enabled?
95
+ @config.for_cop('Layout/SingleLineBlockChain')['Enabled']
96
+ end
97
+
98
+ def suitable_as_single_line?(node)
99
+ !comment_within?(node) &&
100
+ node.each_descendant(:if, :case, :kwbegin, :def).none? &&
101
+ node.each_descendant(:dstr, :str).none?(&:heredoc?) &&
102
+ node.each_descendant(:begin).none? { |b| b.first_line != b.last_line }
103
+ end
104
+
105
+ def convertible_block?(node)
106
+ return false unless node.parent&.block_type?
107
+
108
+ send_node = node.parent&.send_node
109
+ send_node.parenthesized? || !send_node.arguments?
110
+ end
111
+
112
+ def comment_within?(node)
113
+ processed_source.comments.map(&:loc).map(&:line).any? do |comment_line_number|
114
+ comment_line_number >= node.first_line && comment_line_number <= node.last_line
115
+ end
116
+ end
117
+
118
+ def too_long?(node)
119
+ lines = processed_source.lines[(node.first_line - 1)...node.last_line]
120
+ to_single_line(lines.join("\n")).length > max_line_length
121
+ end
122
+
123
+ def to_single_line(source)
124
+ source
125
+ .gsub(/" *\\\n\s*'/, %q(" + ')) # Double quote, backslash, and then single quote
126
+ .gsub(/' *\\\n\s*"/, %q(' + ")) # Single quote, backslash, and then double quote
127
+ .gsub(/(["']) *\\\n\s*\1/, '') # Double or single quote, backslash, then same quote
128
+ .gsub(/\s*\\?\n\s*/, ' ') # Any other line break, with or without backslash
129
+ end
130
+
131
+ def max_line_length
132
+ config.for_cop('Layout/LineLength')['Max']
133
+ end
134
+ end
135
+ end
136
+ end
137
+ end
@@ -32,8 +32,7 @@ module RuboCop
32
32
  ANCESTOR_TYPES = %i[kwbegin def defs class module].freeze
33
33
  RUBY_2_5_ANCESTOR_TYPES = (ANCESTOR_TYPES + %i[block]).freeze
34
34
  ANCESTOR_TYPES_WITH_ACCESS_MODIFIERS = %i[def defs].freeze
35
- ALTERNATIVE_ACCESS_MODIFIERS = %i[public_class_method
36
- private_class_method].freeze
35
+ ALTERNATIVE_ACCESS_MODIFIERS = %i[public_class_method private_class_method].freeze
37
36
 
38
37
  def on_resbody(node)
39
38
  check(node) unless modifier?(node)
@@ -118,8 +117,7 @@ module RuboCop
118
117
  def alignment_node(node)
119
118
  ancestor_node = ancestor_node(node)
120
119
 
121
- return ancestor_node if ancestor_node.nil? ||
122
- ancestor_node.kwbegin_type?
120
+ return ancestor_node if ancestor_node.nil? || ancestor_node.kwbegin_type?
123
121
 
124
122
  assignment_node = assignment_node(ancestor_node)
125
123
  return assignment_node if same_line?(ancestor_node, assignment_node)
@@ -173,8 +171,7 @@ module RuboCop
173
171
  end
174
172
 
175
173
  def access_modifier?(node)
176
- return true if node.respond_to?(:access_modifier?) &&
177
- node.access_modifier?
174
+ return true if node.respond_to?(:access_modifier?) && node.access_modifier?
178
175
 
179
176
  return true if node.respond_to?(:method_name) &&
180
177
  ALTERNATIVE_ACCESS_MODIFIERS.include?(node.method_name)
@@ -0,0 +1,53 @@
1
+ # frozen_string_literal: true
2
+
3
+ module RuboCop
4
+ module Cop
5
+ module Layout
6
+ # This cop checks if method calls are chained onto single line blocks. It considers that a
7
+ # line break before the dot improves the readability of the code.
8
+ #
9
+ # @example
10
+ # # bad
11
+ # example.select { |item| item.cond? }.join('-')
12
+ #
13
+ # # good
14
+ # example.select { |item| item.cond? }
15
+ # .join('-')
16
+ #
17
+ # # good (not a concern for this cop)
18
+ # example.select do |item|
19
+ # item.cond?
20
+ # end.join('-')
21
+ #
22
+ class SingleLineBlockChain < Base
23
+ include RangeHelp
24
+ extend AutoCorrector
25
+
26
+ MSG = 'Put method call on a separate line if chained to a single line block.'
27
+
28
+ def on_send(node)
29
+ range = offending_range(node)
30
+ add_offense(range) { |corrector| corrector.insert_before(range, "\n") } if range
31
+ end
32
+
33
+ private
34
+
35
+ def offending_range(node)
36
+ receiver = node.receiver
37
+ return unless receiver&.block_type?
38
+
39
+ receiver_location = receiver.loc
40
+ closing_block_delimiter_line_number = receiver_location.end.line
41
+ return if receiver_location.begin.line < closing_block_delimiter_line_number
42
+
43
+ node_location = node.loc
44
+ dot_range = node_location.dot
45
+ return unless dot_range
46
+ return if dot_range.line > closing_block_delimiter_line_number
47
+
48
+ range_between(dot_range.begin_pos, node_location.selector.end_pos)
49
+ end
50
+ end
51
+ end
52
+ end
53
+ end
@@ -37,9 +37,7 @@ module RuboCop
37
37
  private
38
38
 
39
39
  def register_offense(colon)
40
- add_offense(colon) do |corrector|
41
- corrector.insert_after(colon, ' ')
42
- end
40
+ add_offense(colon) { |corrector| corrector.insert_after(colon, ' ') }
43
41
  end
44
42
 
45
43
  def followed_by_space?(colon)
@@ -18,16 +18,14 @@ module RuboCop
18
18
  include RangeHelp
19
19
  extend AutoCorrector
20
20
 
21
- MSG = 'Do not put a space between a method name and the opening ' \
22
- 'parenthesis.'
21
+ MSG = 'Do not put a space between a method name and the opening parenthesis.'
23
22
 
24
23
  def on_def(node)
25
24
  args = node.arguments
26
25
  return unless args.loc.begin&.is?('(')
27
26
 
28
27
  expr = args.source_range
29
- pos_before_left_paren = range_between(expr.begin_pos - 1,
30
- expr.begin_pos)
28
+ pos_before_left_paren = range_between(expr.begin_pos - 1, expr.begin_pos)
31
29
  return unless pos_before_left_paren.source.start_with?(' ')
32
30
 
33
31
  add_offense(pos_before_left_paren) do |corrector|
@@ -77,8 +77,7 @@ module RuboCop
77
77
  first = args.first.source_range
78
78
  last = args.last.source_range
79
79
 
80
- check_no_space(opening_pipe.end_pos, first.begin_pos,
81
- 'Space before first')
80
+ check_no_space(opening_pipe.end_pos, first.begin_pos, 'Space before first')
82
81
  check_no_space(last_end_pos_inside_pipes(arguments, last),
83
82
  closing_pipe.begin_pos, 'Space after last')
84
83
  end
@@ -98,8 +97,7 @@ module RuboCop
98
97
 
99
98
  check_space(opening_pipe.end_pos, range.begin_pos, range,
100
99
  'before first block parameter', first_arg)
101
- check_no_space(opening_pipe.end_pos, range.begin_pos - 1,
102
- 'Extra space before first')
100
+ check_no_space(opening_pipe.end_pos, range.begin_pos - 1, 'Extra space before first')
103
101
  end
104
102
 
105
103
  def check_closing_pipe_space(arguments, closing_pipe)
@@ -108,10 +106,8 @@ module RuboCop
108
106
  last = args.last.source_range
109
107
  last_end_pos = last_end_pos_inside_pipes(arguments, last)
110
108
 
111
- check_space(last_end_pos, closing_pipe.begin_pos, last,
112
- 'after last block parameter')
113
- check_no_space(last_end_pos + 1, closing_pipe.begin_pos,
114
- 'Extra space after last')
109
+ check_space(last_end_pos, closing_pipe.begin_pos, last, 'after last block parameter')
110
+ check_no_space(last_end_pos + 1, closing_pipe.begin_pos, 'Extra space after last')
115
111
  end
116
112
 
117
113
  def last_end_pos_inside_pipes(arguments, range)
@@ -123,9 +119,7 @@ module RuboCop
123
119
  end
124
120
 
125
121
  def check_each_arg(args)
126
- args.children.each do |arg|
127
- check_arg(arg)
128
- end
122
+ args.children.each { |arg| check_arg(arg) }
129
123
  end
130
124
 
131
125
  def check_arg(arg)
@@ -160,9 +154,7 @@ module RuboCop
160
154
  return if range.source.include?("\n")
161
155
 
162
156
  message = "#{msg} block parameter detected."
163
- add_offense(range, message: message) do |corrector|
164
- corrector.remove(range)
165
- end
157
+ add_offense(range, message: message) { |corrector| corrector.remove(range) }
166
158
  end
167
159
  end
168
160
  end
@@ -47,8 +47,7 @@ module RuboCop
47
47
  space_on_both_sides = space_on_both_sides?(arg, equals)
48
48
  no_surrounding_space = no_surrounding_space?(arg, equals)
49
49
 
50
- if style == :space && space_on_both_sides ||
51
- style == :no_space && no_surrounding_space
50
+ if style == :space && space_on_both_sides || style == :no_space && no_surrounding_space
52
51
  correct_style_detected
53
52
  else
54
53
  incorrect_style_detected(arg, value)
@@ -33,10 +33,8 @@ module RuboCop
33
33
  DO = 'do'
34
34
  SAFE_NAVIGATION = '&.'
35
35
  NAMESPACE_OPERATOR = '::'
36
- ACCEPT_LEFT_PAREN =
37
- %w[break defined? next not rescue return super yield].freeze
38
- ACCEPT_LEFT_SQUARE_BRACKET =
39
- %w[super yield].freeze
36
+ ACCEPT_LEFT_PAREN = %w[break defined? next not rescue return super yield].freeze
37
+ ACCEPT_LEFT_SQUARE_BRACKET = %w[super yield].freeze
40
38
  ACCEPT_NAMESPACE_OPERATOR = 'super'
41
39
 
42
40
  def on_and(node)
@@ -194,8 +192,7 @@ module RuboCop
194
192
 
195
193
  return false if accepted_opening_delimiter?(range, char)
196
194
  return false if safe_navigation_call?(range, pos)
197
- return false if accept_namespace_operator?(range) &&
198
- namespace_operator?(range, pos)
195
+ return false if accept_namespace_operator?(range) && namespace_operator?(range, pos)
199
196
 
200
197
  !/[\s;,#\\)}\].]/.match?(char)
201
198
  end
@@ -92,9 +92,7 @@ module RuboCop
92
92
  if node.setter_method?
93
93
  on_special_asgn(node)
94
94
  elsif regular_operator?(node)
95
- check_operator(:send,
96
- node.loc.selector,
97
- node.first_argument.source_range)
95
+ check_operator(:send, node.loc.selector, node.first_argument.source_range)
98
96
  end
99
97
  end
100
98
 
@@ -138,13 +136,11 @@ module RuboCop
138
136
  private
139
137
 
140
138
  def regular_operator?(send_node)
141
- !send_node.unary_operation? && !send_node.dot? &&
142
- operator_with_regular_syntax?(send_node)
139
+ !send_node.unary_operation? && !send_node.dot? && operator_with_regular_syntax?(send_node)
143
140
  end
144
141
 
145
142
  def operator_with_regular_syntax?(send_node)
146
- send_node.operator_method? &&
147
- !IRREGULAR_METHODS.include?(send_node.method_name)
143
+ send_node.operator_method? && !IRREGULAR_METHODS.include?(send_node.method_name)
148
144
  end
149
145
 
150
146
  def check_operator(type, operator, right_operand)
@@ -225,8 +221,7 @@ module RuboCop
225
221
  end
226
222
 
227
223
  def hash_table_style?
228
- align_hash_cop_config &&
229
- align_hash_cop_config['EnforcedHashRocketStyle'] == 'table'
224
+ align_hash_cop_config && align_hash_cop_config['EnforcedHashRocketStyle'] == 'table'
230
225
  end
231
226
 
232
227
  def space_around_exponent_operator?
@@ -61,7 +61,7 @@ module RuboCop
61
61
  # by `EnforcedStyle: line_count_based` of `Style/BlockDelimiters` cop.
62
62
  # That means preventing auto-correction to incorrect auto-corrected
63
63
  # code.
64
- # See: https://github.com/rubocop-hq/rubocop/issues/7534
64
+ # See: https://github.com/rubocop/rubocop/issues/7534
65
65
  return if conflict_with_block_delimiters?(node)
66
66
 
67
67
  left_brace = node.loc.begin
@@ -136,8 +136,7 @@ module RuboCop
136
136
  end
137
137
 
138
138
  def conflict_with_block_delimiters?(node)
139
- block_delimiters_style == 'line_count_based' &&
140
- style == :no_space && node.multiline?
139
+ block_delimiters_style == 'line_count_based' && style == :no_space && node.multiline?
141
140
  end
142
141
 
143
142
  def block_delimiters_style
@@ -53,9 +53,7 @@ module RuboCop
53
53
  end
54
54
 
55
55
  def register_offense(range)
56
- add_offense(range) do |corrector|
57
- corrector.remove(range)
58
- end
56
+ add_offense(range) { |corrector| corrector.remove(range) }
59
57
  end
60
58
 
61
59
  def reference_variable_with_brackets?(node)
@@ -25,9 +25,7 @@ module RuboCop
25
25
 
26
26
  range = token2.pos
27
27
 
28
- add_offense(range) do |corrector|
29
- corrector.insert_before(range, ' ')
30
- end
28
+ add_offense(range) { |corrector| corrector.insert_before(range, ' ') }
31
29
  end
32
30
  end
33
31
  end
@@ -26,23 +26,18 @@ module RuboCop
26
26
  include RangeHelp
27
27
  extend AutoCorrector
28
28
 
29
- MSG = 'Put one space between the method name and ' \
30
- 'the first argument.'
29
+ MSG = 'Put one space between the method name and the first argument.'
31
30
 
32
31
  def on_send(node)
33
32
  return unless regular_method_call_with_arguments?(node)
34
33
 
35
34
  first_arg = node.first_argument.source_range
36
- first_arg_with_space = range_with_surrounding_space(range: first_arg,
37
- side: :left)
38
- space = range_between(first_arg_with_space.begin_pos,
39
- first_arg.begin_pos)
35
+ first_arg_with_space = range_with_surrounding_space(range: first_arg, side: :left)
36
+ space = range_between(first_arg_with_space.begin_pos, first_arg.begin_pos)
40
37
  return if space.length == 1
41
38
  return unless expect_params_after_method_name?(node)
42
39
 
43
- add_offense(space) do |corrector|
44
- corrector.replace(space, ' ')
45
- end
40
+ add_offense(space) { |corrector| corrector.replace(space, ' ') }
46
41
  end
47
42
  alias on_csend on_send
48
43
 
@@ -59,8 +54,7 @@ module RuboCop
59
54
  first_arg = node.first_argument
60
55
 
61
56
  same_line?(first_arg, node) &&
62
- !(allow_for_alignment? &&
63
- aligned_with_something?(first_arg.source_range))
57
+ !(allow_for_alignment? && aligned_with_something?(first_arg.source_range))
64
58
  end
65
59
 
66
60
  def no_space_between_method_name_and_first_argument?(node)