rubocop 1.12.0 → 1.13.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (401) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +3 -2
  3. data/config/default.yml +10 -0
  4. data/exe/rubocop +1 -3
  5. data/lib/rubocop.rb +1 -1
  6. data/lib/rubocop/cached_data.rb +1 -3
  7. data/lib/rubocop/cli.rb +4 -6
  8. data/lib/rubocop/cli/command/auto_genenerate_config.rb +9 -19
  9. data/lib/rubocop/cli/command/init_dotfile.rb +1 -3
  10. data/lib/rubocop/cli/command/show_cops.rb +1 -4
  11. data/lib/rubocop/comment_config.rb +2 -7
  12. data/lib/rubocop/config.rb +11 -26
  13. data/lib/rubocop/config_loader.rb +5 -11
  14. data/lib/rubocop/config_loader_resolver.rb +22 -14
  15. data/lib/rubocop/config_obsoletion/cop_rule.rb +1 -2
  16. data/lib/rubocop/config_store.rb +1 -2
  17. data/lib/rubocop/config_validator.rb +5 -10
  18. data/lib/rubocop/cop/autocorrect_logic.rb +3 -8
  19. data/lib/rubocop/cop/badge.rb +1 -2
  20. data/lib/rubocop/cop/base.rb +8 -6
  21. data/lib/rubocop/cop/bundler/duplicated_gem.rb +1 -2
  22. data/lib/rubocop/cop/bundler/gem_comment.rb +42 -8
  23. data/lib/rubocop/cop/bundler/ordered_gems.rb +1 -4
  24. data/lib/rubocop/cop/commissioner.rb +2 -8
  25. data/lib/rubocop/cop/cop.rb +4 -18
  26. data/lib/rubocop/cop/corrector.rb +1 -4
  27. data/lib/rubocop/cop/correctors/alignment_corrector.rb +3 -6
  28. data/lib/rubocop/cop/correctors/each_to_for_corrector.rb +2 -4
  29. data/lib/rubocop/cop/correctors/for_to_each_corrector.rb +1 -2
  30. data/lib/rubocop/cop/correctors/line_break_corrector.rb +3 -6
  31. data/lib/rubocop/cop/correctors/multiline_literal_brace_corrector.rb +1 -3
  32. data/lib/rubocop/cop/correctors/ordered_gem_corrector.rb +1 -3
  33. data/lib/rubocop/cop/correctors/percent_literal_corrector.rb +2 -8
  34. data/lib/rubocop/cop/gemspec/duplicated_assignment.rb +1 -2
  35. data/lib/rubocop/cop/gemspec/ordered_dependencies.rb +1 -4
  36. data/lib/rubocop/cop/generator.rb +1 -4
  37. data/lib/rubocop/cop/generator/configuration_injector.rb +1 -2
  38. data/lib/rubocop/cop/generator/require_file_injector.rb +2 -5
  39. data/lib/rubocop/cop/internal_affairs/example_description.rb +6 -4
  40. data/lib/rubocop/cop/internal_affairs/method_name_equal.rb +2 -5
  41. data/lib/rubocop/cop/internal_affairs/node_destructuring.rb +1 -3
  42. data/lib/rubocop/cop/internal_affairs/node_type_predicate.rb +1 -3
  43. data/lib/rubocop/cop/internal_affairs/offense_location_keyword.rb +1 -2
  44. data/lib/rubocop/cop/internal_affairs/style_detected_api_use.rb +1 -2
  45. data/lib/rubocop/cop/internal_affairs/useless_message_assertion.rb +1 -3
  46. data/lib/rubocop/cop/layout/access_modifier_indentation.rb +1 -2
  47. data/lib/rubocop/cop/layout/argument_alignment.rb +2 -4
  48. data/lib/rubocop/cop/layout/assignment_indentation.rb +2 -4
  49. data/lib/rubocop/cop/layout/begin_end_alignment.rb +1 -4
  50. data/lib/rubocop/cop/layout/block_alignment.rb +7 -19
  51. data/lib/rubocop/cop/layout/case_indentation.rb +1 -3
  52. data/lib/rubocop/cop/layout/class_structure.rb +4 -10
  53. data/lib/rubocop/cop/layout/closing_parenthesis_indentation.rb +4 -15
  54. data/lib/rubocop/cop/layout/comment_indentation.rb +1 -5
  55. data/lib/rubocop/cop/layout/def_end_alignment.rb +2 -6
  56. data/lib/rubocop/cop/layout/dot_position.rb +1 -3
  57. data/lib/rubocop/cop/layout/else_alignment.rb +1 -3
  58. data/lib/rubocop/cop/layout/empty_comment.rb +5 -12
  59. data/lib/rubocop/cop/layout/empty_line_after_guard_clause.rb +22 -8
  60. data/lib/rubocop/cop/layout/empty_line_between_defs.rb +2 -6
  61. data/lib/rubocop/cop/layout/empty_lines.rb +1 -3
  62. data/lib/rubocop/cop/layout/empty_lines_around_access_modifier.rb +8 -18
  63. data/lib/rubocop/cop/layout/empty_lines_around_exception_handling_keywords.rb +2 -8
  64. data/lib/rubocop/cop/layout/end_alignment.rb +1 -2
  65. data/lib/rubocop/cop/layout/end_of_line.rb +1 -1
  66. data/lib/rubocop/cop/layout/extra_spacing.rb +3 -7
  67. data/lib/rubocop/cop/layout/first_array_element_indentation.rb +1 -2
  68. data/lib/rubocop/cop/layout/first_array_element_line_break.rb +1 -2
  69. data/lib/rubocop/cop/layout/first_hash_element_indentation.rb +2 -5
  70. data/lib/rubocop/cop/layout/first_hash_element_line_break.rb +1 -2
  71. data/lib/rubocop/cop/layout/first_method_argument_line_break.rb +1 -2
  72. data/lib/rubocop/cop/layout/first_method_parameter_line_break.rb +1 -2
  73. data/lib/rubocop/cop/layout/hash_alignment.rb +3 -6
  74. data/lib/rubocop/cop/layout/heredoc_argument_closing_parenthesis.rb +2 -9
  75. data/lib/rubocop/cop/layout/heredoc_indentation.rb +2 -6
  76. data/lib/rubocop/cop/layout/indentation_style.rb +1 -3
  77. data/lib/rubocop/cop/layout/indentation_width.rb +1 -2
  78. data/lib/rubocop/cop/layout/initial_indentation.rb +1 -4
  79. data/lib/rubocop/cop/layout/line_length.rb +4 -15
  80. data/lib/rubocop/cop/layout/multiline_array_line_breaks.rb +1 -2
  81. data/lib/rubocop/cop/layout/multiline_block_layout.rb +7 -15
  82. data/lib/rubocop/cop/layout/multiline_hash_key_line_breaks.rb +1 -2
  83. data/lib/rubocop/cop/layout/multiline_method_argument_line_breaks.rb +1 -2
  84. data/lib/rubocop/cop/layout/multiline_method_call_indentation.rb +16 -10
  85. data/lib/rubocop/cop/layout/multiline_operation_indentation.rb +4 -0
  86. data/lib/rubocop/cop/layout/redundant_line_break.rb +125 -0
  87. data/lib/rubocop/cop/layout/rescue_ensure_alignment.rb +3 -6
  88. data/lib/rubocop/cop/layout/space_after_colon.rb +1 -3
  89. data/lib/rubocop/cop/layout/space_after_method_name.rb +2 -4
  90. data/lib/rubocop/cop/layout/space_around_block_parameters.rb +6 -14
  91. data/lib/rubocop/cop/layout/space_around_equals_in_parameter_default.rb +1 -2
  92. data/lib/rubocop/cop/layout/space_around_keyword.rb +3 -6
  93. data/lib/rubocop/cop/layout/space_around_operators.rb +4 -9
  94. data/lib/rubocop/cop/layout/space_before_block_braces.rb +1 -2
  95. data/lib/rubocop/cop/layout/space_before_brackets.rb +1 -3
  96. data/lib/rubocop/cop/layout/space_before_comment.rb +1 -3
  97. data/lib/rubocop/cop/layout/space_before_first_arg.rb +5 -11
  98. data/lib/rubocop/cop/layout/space_in_lambda_literal.rb +2 -4
  99. data/lib/rubocop/cop/layout/space_inside_array_literal_brackets.rb +5 -10
  100. data/lib/rubocop/cop/layout/space_inside_array_percent_literal.rb +2 -7
  101. data/lib/rubocop/cop/layout/space_inside_block_braces.rb +5 -10
  102. data/lib/rubocop/cop/layout/space_inside_hash_literal_braces.rb +1 -2
  103. data/lib/rubocop/cop/layout/space_inside_reference_brackets.rb +1 -2
  104. data/lib/rubocop/cop/legacy/corrections_proxy.rb +2 -8
  105. data/lib/rubocop/cop/legacy/corrector.rb +1 -3
  106. data/lib/rubocop/cop/lint/ambiguous_assignment.rb +1 -6
  107. data/lib/rubocop/cop/lint/ambiguous_block_association.rb +14 -7
  108. data/lib/rubocop/cop/lint/boolean_symbol.rb +1 -2
  109. data/lib/rubocop/cop/lint/constant_resolution.rb +1 -2
  110. data/lib/rubocop/cop/lint/deprecated_class_methods.rb +2 -4
  111. data/lib/rubocop/cop/lint/deprecated_constants.rb +3 -3
  112. data/lib/rubocop/cop/lint/deprecated_open_ssl_constant.rb +2 -5
  113. data/lib/rubocop/cop/lint/duplicate_branch.rb +1 -2
  114. data/lib/rubocop/cop/lint/duplicate_hash_key.rb +1 -3
  115. data/lib/rubocop/cop/lint/duplicate_methods.rb +3 -7
  116. data/lib/rubocop/cop/lint/else_layout.rb +1 -3
  117. data/lib/rubocop/cop/lint/empty_ensure.rb +1 -3
  118. data/lib/rubocop/cop/lint/empty_file.rb +1 -3
  119. data/lib/rubocop/cop/lint/empty_interpolation.rb +1 -3
  120. data/lib/rubocop/cop/lint/ensure_return.rb +1 -3
  121. data/lib/rubocop/cop/lint/erb_new_arguments.rb +3 -7
  122. data/lib/rubocop/cop/lint/float_out_of_range.rb +1 -2
  123. data/lib/rubocop/cop/lint/format_parameter_mismatch.rb +3 -6
  124. data/lib/rubocop/cop/lint/heredoc_method_call_position.rb +1 -2
  125. data/lib/rubocop/cop/lint/implicit_string_concatenation.rb +1 -2
  126. data/lib/rubocop/cop/lint/ineffective_access_modifier.rb +3 -7
  127. data/lib/rubocop/cop/lint/inherit_exception.rb +1 -2
  128. data/lib/rubocop/cop/lint/interpolation_check.rb +3 -11
  129. data/lib/rubocop/cop/lint/literal_in_interpolation.rb +3 -6
  130. data/lib/rubocop/cop/lint/loop.rb +1 -2
  131. data/lib/rubocop/cop/lint/missing_cop_enable_directive.rb +3 -7
  132. data/lib/rubocop/cop/lint/missing_super.rb +1 -2
  133. data/lib/rubocop/cop/lint/mixed_regexp_capture_types.rb +1 -2
  134. data/lib/rubocop/cop/lint/nested_method_definition.rb +1 -2
  135. data/lib/rubocop/cop/lint/nested_percent_literal.rb +1 -3
  136. data/lib/rubocop/cop/lint/non_deterministic_require_order.rb +1 -3
  137. data/lib/rubocop/cop/lint/number_conversion.rb +3 -4
  138. data/lib/rubocop/cop/lint/ordered_magic_comments.rb +1 -2
  139. data/lib/rubocop/cop/lint/out_of_range_regexp_ref.rb +1 -3
  140. data/lib/rubocop/cop/lint/parentheses_as_grouped_expression.rb +1 -3
  141. data/lib/rubocop/cop/lint/percent_symbol_array.rb +1 -3
  142. data/lib/rubocop/cop/lint/raise_exception.rb +1 -2
  143. data/lib/rubocop/cop/lint/rand_one.rb +1 -2
  144. data/lib/rubocop/cop/lint/redundant_cop_disable_directive.rb +8 -20
  145. data/lib/rubocop/cop/lint/redundant_safe_navigation.rb +1 -3
  146. data/lib/rubocop/cop/lint/redundant_splat_expansion.rb +3 -7
  147. data/lib/rubocop/cop/lint/redundant_string_coercion.rb +1 -2
  148. data/lib/rubocop/cop/lint/redundant_with_index.rb +1 -4
  149. data/lib/rubocop/cop/lint/redundant_with_object.rb +1 -4
  150. data/lib/rubocop/cop/lint/regexp_as_condition.rb +1 -3
  151. data/lib/rubocop/cop/lint/require_parentheses.rb +2 -4
  152. data/lib/rubocop/cop/lint/rescue_exception.rb +1 -2
  153. data/lib/rubocop/cop/lint/rescue_type.rb +2 -7
  154. data/lib/rubocop/cop/lint/return_in_void_context.rb +1 -2
  155. data/lib/rubocop/cop/lint/safe_navigation_chain.rb +1 -2
  156. data/lib/rubocop/cop/lint/safe_navigation_consistency.rb +4 -10
  157. data/lib/rubocop/cop/lint/safe_navigation_with_empty.rb +1 -2
  158. data/lib/rubocop/cop/lint/send_with_mixin_argument.rb +2 -7
  159. data/lib/rubocop/cop/lint/shadowed_argument.rb +4 -11
  160. data/lib/rubocop/cop/lint/shadowed_exception.rb +7 -8
  161. data/lib/rubocop/cop/lint/struct_new_override.rb +1 -2
  162. data/lib/rubocop/cop/lint/symbol_conversion.rb +2 -4
  163. data/lib/rubocop/cop/lint/syntax.rb +1 -3
  164. data/lib/rubocop/cop/lint/to_json.rb +1 -2
  165. data/lib/rubocop/cop/lint/trailing_comma_in_attribute_declaration.rb +1 -3
  166. data/lib/rubocop/cop/lint/underscore_prefixed_variable_name.rb +1 -3
  167. data/lib/rubocop/cop/lint/unreachable_code.rb +2 -5
  168. data/lib/rubocop/cop/lint/unreachable_loop.rb +2 -5
  169. data/lib/rubocop/cop/lint/unused_block_argument.rb +4 -8
  170. data/lib/rubocop/cop/lint/unused_method_argument.rb +1 -2
  171. data/lib/rubocop/cop/lint/useless_access_modifier.rb +2 -4
  172. data/lib/rubocop/cop/lint/useless_assignment.rb +4 -9
  173. data/lib/rubocop/cop/lint/useless_setter_call.rb +1 -3
  174. data/lib/rubocop/cop/lint/void.rb +4 -11
  175. data/lib/rubocop/cop/message_annotator.rb +1 -3
  176. data/lib/rubocop/cop/metrics/block_nesting.rb +2 -7
  177. data/lib/rubocop/cop/metrics/class_length.rb +1 -3
  178. data/lib/rubocop/cop/metrics/cyclomatic_complexity.rb +1 -2
  179. data/lib/rubocop/cop/metrics/module_length.rb +2 -6
  180. data/lib/rubocop/cop/metrics/parameter_lists.rb +2 -5
  181. data/lib/rubocop/cop/metrics/perceived_complexity.rb +1 -2
  182. data/lib/rubocop/cop/metrics/utils/abc_size_calculator.rb +4 -7
  183. data/lib/rubocop/cop/metrics/utils/repeated_attribute_discount.rb +2 -7
  184. data/lib/rubocop/cop/migration/department_name.rb +3 -7
  185. data/lib/rubocop/cop/mixin/alignment.rb +2 -4
  186. data/lib/rubocop/cop/mixin/check_line_breakable.rb +1 -1
  187. data/lib/rubocop/cop/mixin/code_length.rb +1 -3
  188. data/lib/rubocop/cop/mixin/configurable_enforced_style.rb +2 -2
  189. data/lib/rubocop/cop/mixin/configurable_formatting.rb +3 -8
  190. data/lib/rubocop/cop/mixin/def_node.rb +2 -5
  191. data/lib/rubocop/cop/mixin/documentation_comment.rb +2 -5
  192. data/lib/rubocop/cop/mixin/empty_lines_around_body.rb +3 -7
  193. data/lib/rubocop/cop/mixin/empty_parameter.rb +1 -3
  194. data/lib/rubocop/cop/mixin/end_keyword_alignment.rb +1 -3
  195. data/lib/rubocop/cop/mixin/enforce_superclass.rb +2 -6
  196. data/lib/rubocop/cop/mixin/first_element_line_break.rb +1 -3
  197. data/lib/rubocop/cop/mixin/frozen_string_literal.rb +3 -9
  198. data/lib/rubocop/cop/mixin/hash_alignment_styles.rb +3 -6
  199. data/lib/rubocop/cop/mixin/hash_transform_method.rb +7 -22
  200. data/lib/rubocop/cop/mixin/interpolation.rb +1 -3
  201. data/lib/rubocop/cop/mixin/line_length_help.rb +2 -4
  202. data/lib/rubocop/cop/mixin/match_range.rb +2 -5
  203. data/lib/rubocop/cop/mixin/method_complexity.rb +1 -3
  204. data/lib/rubocop/cop/mixin/method_preference.rb +1 -2
  205. data/lib/rubocop/cop/mixin/multiline_element_indentation.rb +1 -2
  206. data/lib/rubocop/cop/mixin/multiline_element_line_breaks.rb +1 -3
  207. data/lib/rubocop/cop/mixin/multiline_expression_indentation.rb +7 -37
  208. data/lib/rubocop/cop/mixin/multiline_literal_brace_layout.rb +1 -2
  209. data/lib/rubocop/cop/mixin/negative_conditional.rb +1 -2
  210. data/lib/rubocop/cop/mixin/ordered_gem_node.rb +1 -4
  211. data/lib/rubocop/cop/mixin/percent_array.rb +1 -3
  212. data/lib/rubocop/cop/mixin/percent_literal.rb +0 -6
  213. data/lib/rubocop/cop/mixin/preceding_following_alignment.rb +5 -11
  214. data/lib/rubocop/cop/mixin/preferred_delimiters.rb +3 -6
  215. data/lib/rubocop/cop/mixin/range_help.rb +10 -13
  216. data/lib/rubocop/cop/mixin/rescue_node.rb +2 -6
  217. data/lib/rubocop/cop/mixin/safe_assignment.rb +1 -2
  218. data/lib/rubocop/cop/mixin/space_after_punctuation.rb +2 -4
  219. data/lib/rubocop/cop/mixin/space_before_punctuation.rb +1 -2
  220. data/lib/rubocop/cop/mixin/statement_modifier.rb +1 -3
  221. data/lib/rubocop/cop/mixin/trailing_body.rb +1 -2
  222. data/lib/rubocop/cop/mixin/trailing_comma.rb +1 -2
  223. data/lib/rubocop/cop/mixin/uncommunicative_name.rb +3 -7
  224. data/lib/rubocop/cop/mixin/unused_argument.rb +1 -3
  225. data/lib/rubocop/cop/naming/ascii_identifiers.rb +2 -4
  226. data/lib/rubocop/cop/naming/binary_operator_parameter_name.rb +1 -2
  227. data/lib/rubocop/cop/naming/file_name.rb +7 -16
  228. data/lib/rubocop/cop/naming/memoized_instance_variable_name.rb +2 -3
  229. data/lib/rubocop/cop/naming/method_name.rb +1 -2
  230. data/lib/rubocop/cop/naming/predicate_name.rb +1 -2
  231. data/lib/rubocop/cop/offense.rb +3 -8
  232. data/lib/rubocop/cop/registry.rb +3 -11
  233. data/lib/rubocop/cop/style/access_modifier_declarations.rb +2 -4
  234. data/lib/rubocop/cop/style/accessor_grouping.rb +1 -3
  235. data/lib/rubocop/cop/style/alias.rb +5 -12
  236. data/lib/rubocop/cop/style/and_or.rb +3 -1
  237. data/lib/rubocop/cop/style/arguments_forwarding.rb +1 -3
  238. data/lib/rubocop/cop/style/ascii_comments.rb +1 -2
  239. data/lib/rubocop/cop/style/attr.rb +1 -3
  240. data/lib/rubocop/cop/style/auto_resource_cleanup.rb +2 -5
  241. data/lib/rubocop/cop/style/bisected_attr_accessor/macro.rb +1 -3
  242. data/lib/rubocop/cop/style/case_like_if.rb +1 -2
  243. data/lib/rubocop/cop/style/character_literal.rb +2 -4
  244. data/lib/rubocop/cop/style/class_and_module_children.rb +3 -6
  245. data/lib/rubocop/cop/style/class_methods.rb +1 -3
  246. data/lib/rubocop/cop/style/collection_compact.rb +1 -3
  247. data/lib/rubocop/cop/style/colon_method_call.rb +1 -3
  248. data/lib/rubocop/cop/style/combinable_loops.rb +3 -2
  249. data/lib/rubocop/cop/style/command_literal.rb +3 -8
  250. data/lib/rubocop/cop/style/comment_annotation.rb +3 -6
  251. data/lib/rubocop/cop/style/commented_keyword.rb +7 -13
  252. data/lib/rubocop/cop/style/conditional_assignment.rb +10 -24
  253. data/lib/rubocop/cop/style/copyright.rb +3 -6
  254. data/lib/rubocop/cop/style/date_time.rb +2 -5
  255. data/lib/rubocop/cop/style/def_with_parentheses.rb +1 -2
  256. data/lib/rubocop/cop/style/each_for_simple_loop.rb +1 -2
  257. data/lib/rubocop/cop/style/empty_case_condition.rb +2 -7
  258. data/lib/rubocop/cop/style/empty_else.rb +3 -9
  259. data/lib/rubocop/cop/style/empty_literal.rb +4 -8
  260. data/lib/rubocop/cop/style/empty_method.rb +3 -7
  261. data/lib/rubocop/cop/style/end_block.rb +1 -2
  262. data/lib/rubocop/cop/style/endless_method.rb +1 -3
  263. data/lib/rubocop/cop/style/eval_with_location.rb +2 -4
  264. data/lib/rubocop/cop/style/expand_path_arguments.rb +1 -3
  265. data/lib/rubocop/cop/style/explicit_block_argument.rb +1 -4
  266. data/lib/rubocop/cop/style/format_string_token.rb +1 -4
  267. data/lib/rubocop/cop/style/frozen_string_literal_comment.rb +3 -11
  268. data/lib/rubocop/cop/style/guard_clause.rb +3 -7
  269. data/lib/rubocop/cop/style/hash_conversion.rb +31 -3
  270. data/lib/rubocop/cop/style/hash_each_methods.rb +1 -2
  271. data/lib/rubocop/cop/style/hash_like_case.rb +1 -2
  272. data/lib/rubocop/cop/style/hash_syntax.rb +4 -9
  273. data/lib/rubocop/cop/style/identical_conditional_branches.rb +1 -3
  274. data/lib/rubocop/cop/style/if_unless_modifier.rb +41 -13
  275. data/lib/rubocop/cop/style/infinite_loop.rb +2 -5
  276. data/lib/rubocop/cop/style/inverse_methods.rb +3 -7
  277. data/lib/rubocop/cop/style/ip_addresses.rb +1 -2
  278. data/lib/rubocop/cop/style/lambda.rb +2 -4
  279. data/lib/rubocop/cop/style/lambda_call.rb +1 -2
  280. data/lib/rubocop/cop/style/line_end_concatenation.rb +5 -12
  281. data/lib/rubocop/cop/style/method_call_with_args_parentheses.rb +7 -3
  282. data/lib/rubocop/cop/style/method_call_with_args_parentheses/omit_parentheses.rb +10 -18
  283. data/lib/rubocop/cop/style/method_call_without_args_parentheses.rb +1 -2
  284. data/lib/rubocop/cop/style/method_called_on_do_end_block.rb +2 -4
  285. data/lib/rubocop/cop/style/method_def_parentheses.rb +4 -8
  286. data/lib/rubocop/cop/style/min_max.rb +1 -2
  287. data/lib/rubocop/cop/style/missing_else.rb +2 -4
  288. data/lib/rubocop/cop/style/missing_respond_to_missing.rb +1 -2
  289. data/lib/rubocop/cop/style/mixin_grouping.rb +4 -10
  290. data/lib/rubocop/cop/style/mixin_usage.rb +1 -2
  291. data/lib/rubocop/cop/style/module_function.rb +3 -6
  292. data/lib/rubocop/cop/style/multiline_block_chain.rb +1 -2
  293. data/lib/rubocop/cop/style/multiline_method_signature.rb +11 -6
  294. data/lib/rubocop/cop/style/multiline_ternary_operator.rb +1 -2
  295. data/lib/rubocop/cop/style/multiple_comparison.rb +2 -4
  296. data/lib/rubocop/cop/style/mutable_constant.rb +4 -10
  297. data/lib/rubocop/cop/style/negated_if.rb +1 -2
  298. data/lib/rubocop/cop/style/negated_unless.rb +1 -2
  299. data/lib/rubocop/cop/style/nested_modifier.rb +3 -7
  300. data/lib/rubocop/cop/style/nested_ternary_operator.rb +2 -3
  301. data/lib/rubocop/cop/style/next.rb +4 -9
  302. data/lib/rubocop/cop/style/non_nil_check.rb +2 -5
  303. data/lib/rubocop/cop/style/numeric_literals.rb +3 -11
  304. data/lib/rubocop/cop/style/numeric_predicate.rb +2 -7
  305. data/lib/rubocop/cop/style/one_line_conditional.rb +1 -2
  306. data/lib/rubocop/cop/style/option_hash.rb +1 -3
  307. data/lib/rubocop/cop/style/optional_arguments.rb +2 -5
  308. data/lib/rubocop/cop/style/or_assignment.rb +2 -6
  309. data/lib/rubocop/cop/style/parallel_assignment.rb +6 -9
  310. data/lib/rubocop/cop/style/percent_literal_delimiters.rb +1 -3
  311. data/lib/rubocop/cop/style/percent_q_literals.rb +1 -2
  312. data/lib/rubocop/cop/style/perl_backrefs.rb +2 -9
  313. data/lib/rubocop/cop/style/preferred_hash_methods.rb +1 -4
  314. data/lib/rubocop/cop/style/proc.rb +1 -2
  315. data/lib/rubocop/cop/style/raise_args.rb +4 -8
  316. data/lib/rubocop/cop/style/random_with_offset.rb +3 -8
  317. data/lib/rubocop/cop/style/redundant_argument.rb +2 -11
  318. data/lib/rubocop/cop/style/redundant_assignment.rb +1 -3
  319. data/lib/rubocop/cop/style/redundant_begin.rb +15 -4
  320. data/lib/rubocop/cop/style/redundant_capital_w.rb +1 -2
  321. data/lib/rubocop/cop/style/redundant_condition.rb +2 -5
  322. data/lib/rubocop/cop/style/redundant_conditional.rb +3 -6
  323. data/lib/rubocop/cop/style/redundant_exception.rb +3 -6
  324. data/lib/rubocop/cop/style/redundant_file_extension_in_require.rb +1 -1
  325. data/lib/rubocop/cop/style/redundant_freeze.rb +1 -2
  326. data/lib/rubocop/cop/style/redundant_interpolation.rb +1 -2
  327. data/lib/rubocop/cop/style/redundant_parentheses.rb +8 -20
  328. data/lib/rubocop/cop/style/redundant_percent_q.rb +1 -2
  329. data/lib/rubocop/cop/style/redundant_regexp_escape.rb +1 -4
  330. data/lib/rubocop/cop/style/redundant_return.rb +3 -5
  331. data/lib/rubocop/cop/style/redundant_self.rb +2 -6
  332. data/lib/rubocop/cop/style/redundant_self_assignment.rb +2 -2
  333. data/lib/rubocop/cop/style/redundant_sort.rb +2 -5
  334. data/lib/rubocop/cop/style/regexp_literal.rb +4 -8
  335. data/lib/rubocop/cop/style/rescue_modifier.rb +4 -0
  336. data/lib/rubocop/cop/style/rescue_standard_error.rb +3 -7
  337. data/lib/rubocop/cop/style/return_nil.rb +1 -2
  338. data/lib/rubocop/cop/style/safe_navigation.rb +10 -21
  339. data/lib/rubocop/cop/style/send.rb +1 -2
  340. data/lib/rubocop/cop/style/signal_exception.rb +3 -7
  341. data/lib/rubocop/cop/style/single_argument_dig.rb +1 -2
  342. data/lib/rubocop/cop/style/single_line_block_params.rb +2 -5
  343. data/lib/rubocop/cop/style/single_line_methods.rb +16 -4
  344. data/lib/rubocop/cop/style/sole_nested_conditional.rb +1 -2
  345. data/lib/rubocop/cop/style/special_global_vars.rb +6 -18
  346. data/lib/rubocop/cop/style/stabby_lambda_parentheses.rb +1 -2
  347. data/lib/rubocop/cop/style/stderr_puts.rb +2 -6
  348. data/lib/rubocop/cop/style/string_chars.rb +2 -1
  349. data/lib/rubocop/cop/style/string_concatenation.rb +8 -10
  350. data/lib/rubocop/cop/style/string_literals.rb +2 -5
  351. data/lib/rubocop/cop/style/struct_inheritance.rb +9 -1
  352. data/lib/rubocop/cop/style/symbol_literal.rb +1 -3
  353. data/lib/rubocop/cop/style/symbol_proc.rb +4 -9
  354. data/lib/rubocop/cop/style/ternary_parentheses.rb +3 -6
  355. data/lib/rubocop/cop/style/trailing_body_on_method_definition.rb +1 -2
  356. data/lib/rubocop/cop/style/trailing_comma_in_block_args.rb +2 -6
  357. data/lib/rubocop/cop/style/trailing_method_end_statement.rb +2 -5
  358. data/lib/rubocop/cop/style/trailing_underscore_variable.rb +4 -10
  359. data/lib/rubocop/cop/style/trivial_accessors.rb +2 -4
  360. data/lib/rubocop/cop/style/unless_else.rb +1 -2
  361. data/lib/rubocop/cop/style/unless_logical_operators.rb +2 -2
  362. data/lib/rubocop/cop/style/variable_interpolation.rb +1 -1
  363. data/lib/rubocop/cop/style/when_then.rb +1 -3
  364. data/lib/rubocop/cop/style/while_until_modifier.rb +1 -2
  365. data/lib/rubocop/cop/style/word_array.rb +1 -2
  366. data/lib/rubocop/cop/style/yoda_condition.rb +3 -11
  367. data/lib/rubocop/cop/style/zero_length_predicate.rb +1 -2
  368. data/lib/rubocop/cop/team.rb +2 -5
  369. data/lib/rubocop/cop/util.rb +8 -11
  370. data/lib/rubocop/cop/utils/format_string.rb +1 -3
  371. data/lib/rubocop/cop/variable_force.rb +6 -15
  372. data/lib/rubocop/cop/variable_force/assignment.rb +1 -2
  373. data/lib/rubocop/cop/variable_force/branch.rb +1 -2
  374. data/lib/rubocop/cop/variable_force/reference.rb +1 -3
  375. data/lib/rubocop/cop/variable_force/scope.rb +4 -8
  376. data/lib/rubocop/cop/variable_force/variable.rb +2 -4
  377. data/lib/rubocop/cops_documentation_generator.rb +7 -21
  378. data/lib/rubocop/directive_comment.rb +5 -0
  379. data/lib/rubocop/file_finder.rb +1 -3
  380. data/lib/rubocop/formatter/clang_style_formatter.rb +4 -2
  381. data/lib/rubocop/formatter/disabled_config_formatter.rb +3 -8
  382. data/lib/rubocop/formatter/git_hub_actions_formatter.rb +1 -5
  383. data/lib/rubocop/formatter/html_formatter.rb +4 -10
  384. data/lib/rubocop/formatter/json_formatter.rb +1 -5
  385. data/lib/rubocop/formatter/junit_formatter.rb +3 -9
  386. data/lib/rubocop/formatter/progress_formatter.rb +1 -3
  387. data/lib/rubocop/formatter/tap_formatter.rb +4 -2
  388. data/lib/rubocop/options.rb +27 -41
  389. data/lib/rubocop/path_util.rb +1 -3
  390. data/lib/rubocop/rake_task.rb +3 -0
  391. data/lib/rubocop/remote_config.rb +4 -7
  392. data/lib/rubocop/result_cache.rb +5 -12
  393. data/lib/rubocop/rspec/cop_helper.rb +1 -1
  394. data/lib/rubocop/rspec/expect_offense.rb +4 -9
  395. data/lib/rubocop/rspec/shared_contexts.rb +4 -15
  396. data/lib/rubocop/runner.rb +7 -14
  397. data/lib/rubocop/target_finder.rb +11 -16
  398. data/lib/rubocop/target_ruby.rb +4 -8
  399. data/lib/rubocop/version.rb +1 -1
  400. metadata +5 -5
  401. data/lib/rubocop/core_ext/hash.rb +0 -20
@@ -56,8 +56,7 @@ module RuboCop
56
56
  def complex_content?(strings)
57
57
  strings.any? do |s|
58
58
  string = s.str_content.dup.force_encoding(::Encoding::UTF_8)
59
- !string.valid_encoding? ||
60
- !word_regex.match?(string) || / /.match?(string)
59
+ !string.valid_encoding? || !word_regex.match?(string) || / /.match?(string)
61
60
  end
62
61
  end
63
62
 
@@ -59,12 +59,7 @@ module RuboCop
59
59
 
60
60
  MSG = 'Reverse the order of the operands `%<source>s`.'
61
61
 
62
- REVERSE_COMPARISON = {
63
- '<' => '>',
64
- '<=' => '>=',
65
- '>' => '<',
66
- '>=' => '<='
67
- }.freeze
62
+ REVERSE_COMPARISON = { '<' => '>', '<=' => '>=', '>' => '<', '>=' => '<=' }.freeze
68
63
 
69
64
  EQUALITY_OPERATORS = %i[== !=].freeze
70
65
 
@@ -100,8 +95,7 @@ module RuboCop
100
95
  end
101
96
 
102
97
  def yoda_compatible_condition?(node)
103
- node.comparison_method? &&
104
- !noncommutative_operator?(node)
98
+ node.comparison_method? && !noncommutative_operator?(node)
105
99
  end
106
100
 
107
101
  def valid_yoda?(node)
@@ -127,9 +121,7 @@ module RuboCop
127
121
  end
128
122
 
129
123
  def actual_code_range(node)
130
- range_between(
131
- node.loc.expression.begin_pos, node.loc.expression.end_pos
132
- )
124
+ range_between(node.loc.expression.begin_pos, node.loc.expression.end_pos)
133
125
  end
134
126
 
135
127
  def reverse_comparison(operator)
@@ -29,8 +29,7 @@ module RuboCop
29
29
  extend AutoCorrector
30
30
 
31
31
  ZERO_MSG = 'Use `empty?` instead of `%<lhs>s %<opr>s %<rhs>s`.'
32
- NONZERO_MSG = 'Use `!empty?` instead of ' \
33
- '`%<lhs>s %<opr>s %<rhs>s`.'
32
+ NONZERO_MSG = 'Use `!empty?` instead of `%<lhs>s %<opr>s %<rhs>s`.'
34
33
 
35
34
  RESTRICT_ON_SEND = %i[size length].freeze
36
35
 
@@ -107,9 +107,7 @@ module RuboCop
107
107
  end
108
108
  end
109
109
 
110
- needed.map do |force_class, joining_cops|
111
- force_class.new(joining_cops)
112
- end
110
+ needed.map { |force_class, joining_cops| force_class.new(joining_cops) }
113
111
  end
114
112
 
115
113
  def external_dependency_checksum
@@ -247,8 +245,7 @@ module RuboCop
247
245
  end
248
246
 
249
247
  def handle_error(error, location, cop)
250
- message = Rainbow("An error occurred while #{cop.name}" \
251
- " cop was inspecting #{location}.").red
248
+ message = Rainbow("An error occurred while #{cop.name} cop was inspecting #{location}.").red
252
249
  @errors << message
253
250
  warn message
254
251
  if debug?
@@ -8,8 +8,7 @@ module RuboCop
8
8
 
9
9
  # Match literal regex characters, not including anchors, character
10
10
  # classes, alternatives, groups, repetitions, references, etc
11
- LITERAL_REGEX =
12
- %r{[\w\s\-,"'!#%&<>=;:`~/]|\\[^AbBdDgGhHkpPRwWXsSzZ0-9]}.freeze
11
+ LITERAL_REGEX = %r{[\w\s\-,"'!#%&<>=;:`~/]|\\[^AbBdDgGhHkpPRwWXsSzZ0-9]}.freeze
13
12
 
14
13
  module_function
15
14
 
@@ -28,8 +27,7 @@ module RuboCop
28
27
  end
29
28
 
30
29
  def parentheses?(node)
31
- node.loc.respond_to?(:end) && node.loc.end &&
32
- node.loc.end.is?(')')
30
+ node.loc.respond_to?(:end) && node.loc.end && node.loc.end.is?(')')
33
31
  end
34
32
 
35
33
  def add_parentheses(node, corrector)
@@ -38,7 +36,10 @@ module RuboCop
38
36
  elsif node.arguments.empty?
39
37
  corrector.insert_after(node, '()')
40
38
  else
41
- corrector.replace(args_begin(node), '(')
39
+ args_begin = args_begin(node)
40
+
41
+ corrector.remove(args_begin)
42
+ corrector.insert_before(args_begin, '(')
42
43
  corrector.insert_after(args_end(node), ')')
43
44
  end
44
45
  end
@@ -120,9 +121,7 @@ module RuboCop
120
121
  end
121
122
 
122
123
  def same_line?(node1, node2)
123
- node1.respond_to?(:loc) &&
124
- node2.respond_to?(:loc) &&
125
- node1.loc.line == node2.loc.line
124
+ node1.respond_to?(:loc) && node2.respond_to?(:loc) && node1.loc.line == node2.loc.line
126
125
  end
127
126
 
128
127
  def indent(node)
@@ -130,9 +129,7 @@ module RuboCop
130
129
  end
131
130
 
132
131
  def to_supported_styles(enforced_style)
133
- enforced_style
134
- .sub(/^Enforced/, 'Supported')
135
- .sub('Style', 'Styles')
132
+ enforced_style.sub(/^Enforced/, 'Supported').sub('Style', 'Styles')
136
133
  end
137
134
 
138
135
  private
@@ -72,9 +72,7 @@ module RuboCop
72
72
  end
73
73
 
74
74
  def max_digit_dollar_num
75
- @source.scan(DIGIT_DOLLAR).map do |(digit_dollar_num)|
76
- digit_dollar_num.to_i
77
- end.max
75
+ @source.scan(DIGIT_DOLLAR).map { |(digit_dollar_num)| digit_dollar_num.to_i }.max
78
76
  end
79
77
 
80
78
  def style
@@ -27,8 +27,7 @@ module RuboCop
27
27
  class VariableForce < Force # rubocop:disable Metrics/ClassLength
28
28
  VARIABLE_ASSIGNMENT_TYPE = :lvasgn
29
29
  REGEXP_NAMED_CAPTURE_TYPE = :match_with_lvasgn
30
- VARIABLE_ASSIGNMENT_TYPES =
31
- [VARIABLE_ASSIGNMENT_TYPE, REGEXP_NAMED_CAPTURE_TYPE].freeze
30
+ VARIABLE_ASSIGNMENT_TYPES = [VARIABLE_ASSIGNMENT_TYPE, REGEXP_NAMED_CAPTURE_TYPE].freeze
32
31
 
33
32
  ARGUMENT_DECLARATION_TYPES = [
34
33
  :arg, :optarg, :restarg,
@@ -38,8 +37,7 @@ module RuboCop
38
37
  ].freeze
39
38
 
40
39
  LOGICAL_OPERATOR_ASSIGNMENT_TYPES = %i[or_asgn and_asgn].freeze
41
- OPERATOR_ASSIGNMENT_TYPES =
42
- (LOGICAL_OPERATOR_ASSIGNMENT_TYPES + [:op_asgn]).freeze
40
+ OPERATOR_ASSIGNMENT_TYPES = (LOGICAL_OPERATOR_ASSIGNMENT_TYPES + [:op_asgn]).freeze
43
41
 
44
42
  MULTIPLE_ASSIGNMENT_TYPE = :masgn
45
43
 
@@ -182,9 +180,7 @@ module RuboCop
182
180
  process_node(rhs_node)
183
181
  process_node(regexp_node)
184
182
 
185
- variable_names.each do |name|
186
- variable_table.assign_to_variable(name, node)
187
- end
183
+ variable_names.each { |name| variable_table.assign_to_variable(name, node) }
188
184
 
189
185
  skip_children!
190
186
  end
@@ -304,17 +300,14 @@ module RuboCop
304
300
  return unless method_name == :binding
305
301
  return if args && !args.children.empty?
306
302
 
307
- variable_table.accessible_variables.each do |variable|
308
- variable.reference!(node)
309
- end
303
+ variable_table.accessible_variables.each { |variable| variable.reference!(node) }
310
304
  end
311
305
 
312
306
  # Mark all assignments which are referenced in the same loop
313
307
  # as referenced by ignoring AST order since they would be referenced
314
308
  # in next iteration.
315
309
  def mark_assignments_as_referenced_in_loop(node)
316
- referenced_variable_names_in_loop, assignment_nodes_in_loop =
317
- find_variables_in_loop(node)
310
+ referenced_variable_names_in_loop, assignment_nodes_in_loop = find_variables_in_loop(node)
318
311
 
319
312
  referenced_variable_names_in_loop.each do |name|
320
313
  variable = variable_table.find_variable(name)
@@ -371,9 +364,7 @@ module RuboCop
371
364
 
372
365
  # Use Node#equal? for accurate check.
373
366
  def scanned_node?(node)
374
- scanned_nodes.any? do |scanned_node|
375
- scanned_node.equal?(node)
376
- end
367
+ scanned_nodes.any? { |scanned_node| scanned_node.equal?(node) }
377
368
  end
378
369
 
379
370
  def scanned_nodes
@@ -66,8 +66,7 @@ module RuboCop
66
66
 
67
67
  def meta_assignment_node
68
68
  unless instance_variable_defined?(:@meta_assignment_node)
69
- @meta_assignment_node =
70
- operator_assignment_node || multiple_assignment_node
69
+ @meta_assignment_node = operator_assignment_node || multiple_assignment_node
71
70
  end
72
71
 
73
72
  @meta_assignment_node
@@ -121,8 +121,7 @@ module RuboCop
121
121
  def ==(other)
122
122
  return false unless other
123
123
 
124
- control_node.equal?(other.control_node) &&
125
- child_node.equal?(other.child_node)
124
+ control_node.equal?(other.control_node) && child_node.equal?(other.child_node)
126
125
  end
127
126
 
128
127
  alias_method :eql?, :==
@@ -8,9 +8,7 @@ module RuboCop
8
8
  include Branchable
9
9
 
10
10
  VARIABLE_REFERENCE_TYPES = (
11
- [VARIABLE_REFERENCE_TYPE] +
12
- OPERATOR_ASSIGNMENT_TYPES +
13
- [ZERO_ARITY_SUPER_TYPE, SEND_TYPE]
11
+ [VARIABLE_REFERENCE_TYPE] + OPERATOR_ASSIGNMENT_TYPES + [ZERO_ARITY_SUPER_TYPE, SEND_TYPE]
14
12
  ).freeze
15
13
 
16
14
  attr_reader :node, :scope
@@ -23,10 +23,9 @@ module RuboCop
23
23
  unless SCOPE_TYPES.include?(node.type)
24
24
  # Accept any node type for top level scope
25
25
  if node.parent
26
- raise ArgumentError,
27
- "Node type must be any of #{SCOPE_TYPES}, " \
28
- "passed #{node.type}"
26
+ raise ArgumentError, "Node type must be any of #{SCOPE_TYPES}, passed #{node.type}"
29
27
  end
28
+
30
29
  @naked_top_level = true
31
30
  end
32
31
  @node = node
@@ -56,8 +55,7 @@ module RuboCop
56
55
  end
57
56
 
58
57
  def include?(target_node)
59
- !belong_to_outer_scope?(target_node) &&
60
- !belong_to_inner_scope?(target_node)
58
+ !belong_to_outer_scope?(target_node) && !belong_to_inner_scope?(target_node)
61
59
  end
62
60
 
63
61
  def each_node(&block)
@@ -100,9 +98,7 @@ module RuboCop
100
98
  end
101
99
 
102
100
  def ancestor_node?(target_node)
103
- node.each_ancestor.any? do |ancestor_node|
104
- ancestor_node.equal?(target_node)
105
- end
101
+ node.each_ancestor.any? { |ancestor_node| ancestor_node.equal?(target_node) }
106
102
  end
107
103
  end
108
104
  end
@@ -6,11 +6,9 @@ module RuboCop
6
6
  # A Variable represents existence of a local variable.
7
7
  # This holds a variable declaration node and some states of the variable.
8
8
  class Variable
9
- VARIABLE_DECLARATION_TYPES =
10
- (VARIABLE_ASSIGNMENT_TYPES + ARGUMENT_DECLARATION_TYPES).freeze
9
+ VARIABLE_DECLARATION_TYPES = (VARIABLE_ASSIGNMENT_TYPES + ARGUMENT_DECLARATION_TYPES).freeze
11
10
 
12
- attr_reader :name, :declaration_node, :scope,
13
- :assignments, :references, :captured_by_block
11
+ attr_reader :name, :declaration_node, :scope, :assignments, :references, :captured_by_block
14
12
 
15
13
  alias captured_by_block? captured_by_block
16
14
 
@@ -18,9 +18,7 @@ class CopsDocumentationGenerator # rubocop:disable Metrics/ClassLength
18
18
 
19
19
  def call
20
20
  YARD::Registry.load!
21
- departments.each do |department|
22
- print_cops_of_department(department)
23
- end
21
+ departments.each { |department| print_cops_of_department(department) }
24
22
 
25
23
  print_table_of_contents
26
24
  ensure
@@ -105,8 +103,7 @@ class CopsDocumentationGenerator # rubocop:disable Metrics/ClassLength
105
103
 
106
104
  def code_example(ruby_code)
107
105
  content = +"[source,ruby]\n----\n"
108
- content << ruby_code.text.gsub('@good', '# good')
109
- .gsub('@bad', '# bad').strip
106
+ content << ruby_code.text.gsub('@good', '# good').gsub('@bad', '# bad').strip
110
107
  content << "\n----\n"
111
108
  content
112
109
  end
@@ -158,10 +155,7 @@ class CopsDocumentationGenerator # rubocop:disable Metrics/ClassLength
158
155
  # rubocop:enable Metrics/CyclomaticComplexity,Metrics/MethodLength
159
156
 
160
157
  def to_table(header, content)
161
- table = [
162
- '|===',
163
- "| #{header.join(' | ')}\n\n"
164
- ].join("\n")
158
+ table = ['|===', "| #{header.join(' | ')}\n\n"].join("\n")
165
159
  marked_contents = content.map do |plain_content|
166
160
  plain_content.map { |c| "| #{c}" }.join("\n")
167
161
  end
@@ -195,9 +189,7 @@ class CopsDocumentationGenerator # rubocop:disable Metrics/ClassLength
195
189
 
196
190
  def references(cop)
197
191
  cop_config = config.for_cop(cop)
198
- urls = RuboCop::Cop::MessageAnnotator.new(
199
- config, cop.name, cop_config, {}
200
- ).urls
192
+ urls = RuboCop::Cop::MessageAnnotator.new(config, cop.name, cop_config, {}).urls
201
193
  return '' if urls.empty?
202
194
 
203
195
  content = h3('References')
@@ -209,9 +201,7 @@ class CopsDocumentationGenerator # rubocop:disable Metrics/ClassLength
209
201
  def print_cops_of_department(department)
210
202
  selected_cops = cops_of_department(department)
211
203
  content = +"= #{department}\n"
212
- selected_cops.each do |cop|
213
- content << print_cop_with_doc(cop)
214
- end
204
+ selected_cops.each { |cop| content << print_cop_with_doc(cop) }
215
205
  file_name = "#{Dir.pwd}/docs/modules/ROOT/pages/#{department_to_basename(department)}.adoc"
216
206
  File.open(file_name, 'w') do |file|
217
207
  puts "* generated #{file_name}"
@@ -264,16 +254,12 @@ class CopsDocumentationGenerator # rubocop:disable Metrics/ClassLength
264
254
 
265
255
  content << "\n// END_COP_LIST"
266
256
 
267
- content = original.sub(
268
- %r{// START_COP_LIST.+// END_COP_LIST}m, content
269
- )
257
+ content = original.sub(%r{// START_COP_LIST.+// END_COP_LIST}m, content)
270
258
  File.write(path, content)
271
259
  end
272
260
 
273
261
  def table_contents
274
- departments
275
- .map { |department| table_of_content_for_department(department) }
276
- .join("\n")
262
+ departments.map { |department| table_of_content_for_department(department) }.join("\n")
277
263
  end
278
264
 
279
265
  def cop_status(status)
@@ -54,6 +54,11 @@ module RuboCop
54
54
  %w[disable todo].include?(mode)
55
55
  end
56
56
 
57
+ # Checks if this directive enables cops
58
+ def enabled?
59
+ mode == 'enable'
60
+ end
61
+
57
62
  # Checks if this directive enables all cops
58
63
  def enabled_all?
59
64
  !disabled? && all_cops?
@@ -23,9 +23,7 @@ module RuboCop
23
23
 
24
24
  def find_last_file_upwards(filename, start_dir, stop_dir = nil)
25
25
  last_file = nil
26
- traverse_files_upwards(filename, start_dir, stop_dir) do |file|
27
- last_file = file
28
- end
26
+ traverse_files_upwards(filename, start_dir, stop_dir) { |file| last_file = file }
29
27
  last_file
30
28
  end
31
29
 
@@ -49,8 +49,10 @@ module RuboCop
49
49
  end
50
50
 
51
51
  def report_highlighted_area(highlighted_area)
52
- output.puts("#{' ' * highlighted_area.begin_pos}" \
53
- "#{'^' * highlighted_area.size}")
52
+ space_area = highlighted_area.source_buffer.slice(0...highlighted_area.begin_pos)
53
+ source_area = highlighted_area.source
54
+ output.puts("#{' ' * Unicode::DisplayWidth.of(space_area)}" \
55
+ "#{'^' * Unicode::DisplayWidth.of(source_area)}")
54
56
  end
55
57
  end
56
58
  end
@@ -71,9 +71,7 @@ module RuboCop
71
71
  command += ' --auto-gen-only-exclude' if @options[:auto_gen_only_exclude]
72
72
 
73
73
  if @exclude_limit_option
74
- command +=
75
- format(' --exclude-limit %<limit>d',
76
- limit: Integer(@exclude_limit_option))
74
+ command += format(' --exclude-limit %<limit>d', limit: Integer(@exclude_limit_option))
77
75
  end
78
76
  command += ' --no-offense-counts' unless show_offense_counts?
79
77
 
@@ -111,8 +109,7 @@ module RuboCop
111
109
 
112
110
  # In case auto_gen_only_exclude is set, only modify the maximum if the
113
111
  # files are not excluded one by one.
114
- if !@options[:auto_gen_only_exclude] ||
115
- @files_with_offenses[cop_name].size > @exclude_limit
112
+ if !@options[:auto_gen_only_exclude] || @files_with_offenses[cop_name].size > @exclude_limit
116
113
  cfg.merge!(cfg[:exclude_limit])
117
114
  end
118
115
 
@@ -144,9 +141,7 @@ module RuboCop
144
141
 
145
142
  def output_cop_param_comments(output_buffer, params, default_cfg)
146
143
  config_params = params.reject { |p| p.start_with?('Supported') }
147
- output_buffer.puts(
148
- "# Configuration parameters: #{config_params.join(', ')}."
149
- )
144
+ output_buffer.puts("# Configuration parameters: #{config_params.join(', ')}.")
150
145
 
151
146
  params.each do |param|
152
147
  value = default_cfg[param]
@@ -5,11 +5,7 @@ module RuboCop
5
5
  # This formatter formats report data as GitHub Workflow commands resulting
6
6
  # in GitHub check annotations when run within GitHub Actions.
7
7
  class GitHubActionsFormatter < BaseFormatter
8
- ESCAPE_MAP = {
9
- '%' => '%25',
10
- "\n" => '%0A',
11
- "\r" => '%0D'
12
- }.freeze
8
+ ESCAPE_MAP = { '%' => '%25', "\n" => '%0A', "\r" => '%0D' }.freeze
13
9
 
14
10
  def file_finished(file, offenses)
15
11
  offenses.each { |offense| report_offense(file, offense) }
@@ -11,8 +11,7 @@ module RuboCop
11
11
  # This formatter saves the output as an html file.
12
12
  class HTMLFormatter < BaseFormatter
13
13
  ELLIPSES = '<span class="extra-code">...</span>'
14
- TEMPLATE_PATH =
15
- File.expand_path('../../../assets/output.html.erb', __dir__)
14
+ TEMPLATE_PATH = File.expand_path('../../../assets/output.html.erb', __dir__)
16
15
 
17
16
  Color = Struct.new(:red, :green, :blue, :alpha) do
18
17
  def to_s
@@ -20,9 +19,7 @@ module RuboCop
20
19
  end
21
20
 
22
21
  def fade_out(amount)
23
- dup.tap do |color|
24
- color.alpha -= amount
25
- end
22
+ dup.tap { |color| color.alpha -= amount }
26
23
  end
27
24
  end
28
25
 
@@ -79,8 +76,7 @@ module RuboCop
79
76
  fatal: Color.new(0xD2, 0x32, 0x2D, 1.0)
80
77
  }.freeze
81
78
 
82
- LOGO_IMAGE_PATH =
83
- File.expand_path('../../../assets/logo.png', __dir__)
79
+ LOGO_IMAGE_PATH = File.expand_path('../../../assets/logo.png', __dir__)
84
80
 
85
81
  attr_reader :files, :summary
86
82
 
@@ -97,9 +93,7 @@ module RuboCop
97
93
  # rubocop:enable Lint/UselessMethodDefinition
98
94
 
99
95
  def decorated_message(offense)
100
- offense.message.gsub(/`(.+?)`/) do
101
- "<code>#{Regexp.last_match(1)}</code>"
102
- end
96
+ offense.message.gsub(/`(.+?)`/) { "<code>#{Regexp.last_match(1)}</code>" }
103
97
  end
104
98
 
105
99
  def highlighted_source_line(offense)