rubocop 1.26.1 → 1.32.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 (559) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +6 -4
  3. data/config/default.yml +170 -31
  4. data/config/obsoletion.yml +12 -1
  5. data/exe/rubocop +15 -7
  6. data/lib/rubocop/cli/command/auto_genenerate_config.rb +19 -4
  7. data/lib/rubocop/cli/command/execute_runner.rb +1 -1
  8. data/lib/rubocop/cli/command/show_cops.rb +1 -1
  9. data/lib/rubocop/cli/command/suggest_extensions.rb +4 -4
  10. data/lib/rubocop/cli.rb +2 -0
  11. data/lib/rubocop/config.rb +5 -1
  12. data/lib/rubocop/config_loader.rb +3 -1
  13. data/lib/rubocop/config_loader_resolver.rb +1 -1
  14. data/lib/rubocop/config_obsoletion/extracted_cop.rb +3 -1
  15. data/lib/rubocop/config_validator.rb +21 -4
  16. data/lib/rubocop/cop/autocorrect_logic.rb +8 -2
  17. data/lib/rubocop/cop/badge.rb +1 -1
  18. data/lib/rubocop/cop/base.rb +6 -2
  19. data/lib/rubocop/cop/bundler/duplicated_gem.rb +3 -7
  20. data/lib/rubocop/cop/bundler/gem_comment.rb +1 -1
  21. data/lib/rubocop/cop/bundler/gem_filename.rb +5 -5
  22. data/lib/rubocop/cop/bundler/ordered_gems.rb +2 -2
  23. data/lib/rubocop/cop/corrector.rb +2 -2
  24. data/lib/rubocop/cop/correctors/alignment_corrector.rb +1 -1
  25. data/lib/rubocop/cop/correctors/condition_corrector.rb +1 -1
  26. data/lib/rubocop/cop/correctors/each_to_for_corrector.rb +1 -1
  27. data/lib/rubocop/cop/correctors/empty_line_corrector.rb +1 -1
  28. data/lib/rubocop/cop/correctors/for_to_each_corrector.rb +4 -2
  29. data/lib/rubocop/cop/correctors/if_then_corrector.rb +1 -1
  30. data/lib/rubocop/cop/correctors/lambda_literal_to_method_corrector.rb +1 -1
  31. data/lib/rubocop/cop/correctors/line_break_corrector.rb +7 -1
  32. data/lib/rubocop/cop/correctors/multiline_literal_brace_corrector.rb +3 -3
  33. data/lib/rubocop/cop/correctors/ordered_gem_corrector.rb +1 -1
  34. data/lib/rubocop/cop/correctors/parentheses_corrector.rb +1 -1
  35. data/lib/rubocop/cop/correctors/percent_literal_corrector.rb +1 -1
  36. data/lib/rubocop/cop/correctors/punctuation_corrector.rb +1 -1
  37. data/lib/rubocop/cop/correctors/space_corrector.rb +1 -1
  38. data/lib/rubocop/cop/correctors/string_literal_corrector.rb +1 -1
  39. data/lib/rubocop/cop/correctors/unused_arg_corrector.rb +2 -2
  40. data/lib/rubocop/cop/gemspec/dependency_version.rb +156 -0
  41. data/lib/rubocop/cop/gemspec/deprecated_attribute_assignment.rb +92 -0
  42. data/lib/rubocop/cop/gemspec/duplicated_assignment.rb +5 -12
  43. data/lib/rubocop/cop/gemspec/ordered_dependencies.rb +1 -1
  44. data/lib/rubocop/cop/gemspec/require_mfa.rb +20 -20
  45. data/lib/rubocop/cop/gemspec/ruby_version_globals_usage.rb +1 -1
  46. data/lib/rubocop/cop/generator.rb +5 -1
  47. data/lib/rubocop/cop/internal_affairs/cop_description.rb +96 -0
  48. data/lib/rubocop/cop/internal_affairs/empty_line_between_expect_offense_and_correction.rb +1 -1
  49. data/lib/rubocop/cop/internal_affairs/location_line_equality_comparison.rb +1 -1
  50. data/lib/rubocop/cop/internal_affairs/method_name_end_with.rb +80 -0
  51. data/lib/rubocop/cop/internal_affairs/node_matcher_directive.rb +1 -5
  52. data/lib/rubocop/cop/internal_affairs/redundant_described_class_as_subject.rb +1 -1
  53. data/lib/rubocop/cop/internal_affairs/redundant_let_rubocop_config_new.rb +1 -1
  54. data/lib/rubocop/cop/internal_affairs/redundant_location_argument.rb +1 -1
  55. data/lib/rubocop/cop/internal_affairs/redundant_message_argument.rb +1 -1
  56. data/lib/rubocop/cop/internal_affairs/useless_restrict_on_send.rb +60 -0
  57. data/lib/rubocop/cop/internal_affairs.rb +3 -0
  58. data/lib/rubocop/cop/layout/argument_alignment.rb +22 -1
  59. data/lib/rubocop/cop/layout/assignment_indentation.rb +1 -1
  60. data/lib/rubocop/cop/layout/begin_end_alignment.rb +1 -1
  61. data/lib/rubocop/cop/layout/block_alignment.rb +1 -1
  62. data/lib/rubocop/cop/layout/block_end_newline.rb +1 -1
  63. data/lib/rubocop/cop/layout/case_indentation.rb +17 -1
  64. data/lib/rubocop/cop/layout/closing_parenthesis_indentation.rb +1 -1
  65. data/lib/rubocop/cop/layout/comment_indentation.rb +2 -2
  66. data/lib/rubocop/cop/layout/condition_position.rb +1 -1
  67. data/lib/rubocop/cop/layout/def_end_alignment.rb +1 -1
  68. data/lib/rubocop/cop/layout/dot_position.rb +1 -1
  69. data/lib/rubocop/cop/layout/else_alignment.rb +1 -1
  70. data/lib/rubocop/cop/layout/empty_comment.rb +2 -2
  71. data/lib/rubocop/cop/layout/empty_line_after_guard_clause.rb +1 -1
  72. data/lib/rubocop/cop/layout/empty_line_after_multiline_condition.rb +1 -1
  73. data/lib/rubocop/cop/layout/empty_line_between_defs.rb +1 -1
  74. data/lib/rubocop/cop/layout/empty_lines.rb +1 -1
  75. data/lib/rubocop/cop/layout/empty_lines_around_arguments.rb +1 -1
  76. data/lib/rubocop/cop/layout/empty_lines_around_attribute_accessor.rb +25 -4
  77. data/lib/rubocop/cop/layout/empty_lines_around_begin_body.rb +1 -1
  78. data/lib/rubocop/cop/layout/empty_lines_around_block_body.rb +5 -5
  79. data/lib/rubocop/cop/layout/empty_lines_around_class_body.rb +10 -10
  80. data/lib/rubocop/cop/layout/empty_lines_around_exception_handling_keywords.rb +1 -1
  81. data/lib/rubocop/cop/layout/empty_lines_around_method_body.rb +1 -1
  82. data/lib/rubocop/cop/layout/empty_lines_around_module_body.rb +10 -10
  83. data/lib/rubocop/cop/layout/end_alignment.rb +1 -1
  84. data/lib/rubocop/cop/layout/end_of_line.rb +1 -1
  85. data/lib/rubocop/cop/layout/extra_spacing.rb +1 -1
  86. data/lib/rubocop/cop/layout/first_argument_indentation.rb +28 -28
  87. data/lib/rubocop/cop/layout/first_array_element_indentation.rb +21 -14
  88. data/lib/rubocop/cop/layout/first_array_element_line_break.rb +1 -1
  89. data/lib/rubocop/cop/layout/first_hash_element_indentation.rb +52 -13
  90. data/lib/rubocop/cop/layout/first_hash_element_line_break.rb +1 -1
  91. data/lib/rubocop/cop/layout/first_method_argument_line_break.rb +1 -1
  92. data/lib/rubocop/cop/layout/first_method_parameter_line_break.rb +1 -1
  93. data/lib/rubocop/cop/layout/first_parameter_indentation.rb +1 -1
  94. data/lib/rubocop/cop/layout/hash_alignment.rb +2 -0
  95. data/lib/rubocop/cop/layout/heredoc_argument_closing_parenthesis.rb +1 -1
  96. data/lib/rubocop/cop/layout/heredoc_indentation.rb +1 -1
  97. data/lib/rubocop/cop/layout/indentation_consistency.rb +1 -1
  98. data/lib/rubocop/cop/layout/indentation_style.rb +1 -1
  99. data/lib/rubocop/cop/layout/indentation_width.rb +11 -9
  100. data/lib/rubocop/cop/layout/initial_indentation.rb +2 -2
  101. data/lib/rubocop/cop/layout/leading_comment_space.rb +1 -1
  102. data/lib/rubocop/cop/layout/leading_empty_lines.rb +1 -1
  103. data/lib/rubocop/cop/layout/line_continuation_leading_space.rb +112 -0
  104. data/lib/rubocop/cop/layout/line_continuation_spacing.rb +130 -0
  105. data/lib/rubocop/cop/layout/line_end_string_concatenation_indentation.rb +2 -2
  106. data/lib/rubocop/cop/layout/line_length.rb +7 -5
  107. data/lib/rubocop/cop/layout/multiline_array_brace_layout.rb +1 -1
  108. data/lib/rubocop/cop/layout/multiline_array_line_breaks.rb +1 -1
  109. data/lib/rubocop/cop/layout/multiline_assignment_layout.rb +1 -1
  110. data/lib/rubocop/cop/layout/multiline_block_layout.rb +2 -2
  111. data/lib/rubocop/cop/layout/multiline_hash_brace_layout.rb +1 -1
  112. data/lib/rubocop/cop/layout/multiline_hash_key_line_breaks.rb +1 -1
  113. data/lib/rubocop/cop/layout/multiline_method_argument_line_breaks.rb +5 -2
  114. data/lib/rubocop/cop/layout/multiline_method_call_brace_layout.rb +1 -1
  115. data/lib/rubocop/cop/layout/multiline_method_call_indentation.rb +22 -5
  116. data/lib/rubocop/cop/layout/multiline_method_definition_brace_layout.rb +1 -1
  117. data/lib/rubocop/cop/layout/multiline_method_parameter_line_breaks.rb +45 -0
  118. data/lib/rubocop/cop/layout/multiline_operation_indentation.rb +3 -3
  119. data/lib/rubocop/cop/layout/redundant_line_break.rb +4 -5
  120. data/lib/rubocop/cop/layout/rescue_ensure_alignment.rb +1 -1
  121. data/lib/rubocop/cop/layout/single_line_block_chain.rb +1 -1
  122. data/lib/rubocop/cop/layout/space_after_not.rb +1 -1
  123. data/lib/rubocop/cop/layout/space_around_block_parameters.rb +2 -2
  124. data/lib/rubocop/cop/layout/space_around_operators.rb +1 -1
  125. data/lib/rubocop/cop/layout/space_before_block_braces.rb +3 -3
  126. data/lib/rubocop/cop/layout/space_before_brackets.rb +7 -0
  127. data/lib/rubocop/cop/layout/space_before_comment.rb +1 -1
  128. data/lib/rubocop/cop/layout/space_before_first_arg.rb +1 -1
  129. data/lib/rubocop/cop/layout/space_in_lambda_literal.rb +1 -1
  130. data/lib/rubocop/cop/layout/space_inside_array_literal_brackets.rb +10 -10
  131. data/lib/rubocop/cop/layout/space_inside_block_braces.rb +8 -6
  132. data/lib/rubocop/cop/layout/space_inside_reference_brackets.rb +1 -1
  133. data/lib/rubocop/cop/layout/space_inside_string_interpolation.rb +1 -1
  134. data/lib/rubocop/cop/layout/trailing_empty_lines.rb +9 -9
  135. data/lib/rubocop/cop/layout/trailing_whitespace.rb +3 -3
  136. data/lib/rubocop/cop/lint/ambiguous_assignment.rb +1 -1
  137. data/lib/rubocop/cop/lint/ambiguous_block_association.rb +10 -2
  138. data/lib/rubocop/cop/lint/ambiguous_operator.rb +7 -7
  139. data/lib/rubocop/cop/lint/ambiguous_operator_precedence.rb +1 -1
  140. data/lib/rubocop/cop/lint/ambiguous_range.rb +5 -5
  141. data/lib/rubocop/cop/lint/ambiguous_regexp_literal.rb +1 -1
  142. data/lib/rubocop/cop/lint/assignment_in_condition.rb +1 -1
  143. data/lib/rubocop/cop/lint/binary_operator_with_identical_operands.rb +1 -1
  144. data/lib/rubocop/cop/lint/boolean_symbol.rb +1 -1
  145. data/lib/rubocop/cop/lint/circular_argument_reference.rb +1 -1
  146. data/lib/rubocop/cop/lint/constant_overwritten_in_rescue.rb +51 -0
  147. data/lib/rubocop/cop/lint/debugger.rb +1 -1
  148. data/lib/rubocop/cop/lint/deprecated_class_methods.rb +11 -5
  149. data/lib/rubocop/cop/lint/deprecated_constants.rb +1 -1
  150. data/lib/rubocop/cop/lint/disjunctive_assignment_in_constructor.rb +1 -1
  151. data/lib/rubocop/cop/lint/duplicate_branch.rb +1 -1
  152. data/lib/rubocop/cop/lint/duplicate_case_condition.rb +1 -1
  153. data/lib/rubocop/cop/lint/duplicate_elsif_condition.rb +1 -1
  154. data/lib/rubocop/cop/lint/duplicate_hash_key.rb +1 -1
  155. data/lib/rubocop/cop/lint/duplicate_methods.rb +1 -1
  156. data/lib/rubocop/cop/lint/duplicate_regexp_character_class_element.rb +1 -1
  157. data/lib/rubocop/cop/lint/duplicate_require.rb +11 -2
  158. data/lib/rubocop/cop/lint/duplicate_rescue_exception.rb +1 -1
  159. data/lib/rubocop/cop/lint/each_with_object_argument.rb +1 -1
  160. data/lib/rubocop/cop/lint/else_layout.rb +3 -3
  161. data/lib/rubocop/cop/lint/empty_block.rb +1 -1
  162. data/lib/rubocop/cop/lint/empty_class.rb +1 -1
  163. data/lib/rubocop/cop/lint/empty_conditional_body.rb +4 -2
  164. data/lib/rubocop/cop/lint/empty_ensure.rb +1 -1
  165. data/lib/rubocop/cop/lint/empty_expression.rb +1 -1
  166. data/lib/rubocop/cop/lint/empty_file.rb +1 -1
  167. data/lib/rubocop/cop/lint/empty_in_pattern.rb +4 -2
  168. data/lib/rubocop/cop/lint/empty_interpolation.rb +1 -1
  169. data/lib/rubocop/cop/lint/empty_when.rb +4 -2
  170. data/lib/rubocop/cop/lint/ensure_return.rb +1 -1
  171. data/lib/rubocop/cop/lint/erb_new_arguments.rb +1 -1
  172. data/lib/rubocop/cop/lint/flip_flop.rb +1 -1
  173. data/lib/rubocop/cop/lint/float_comparison.rb +1 -1
  174. data/lib/rubocop/cop/lint/float_out_of_range.rb +1 -1
  175. data/lib/rubocop/cop/lint/heredoc_method_call_position.rb +1 -1
  176. data/lib/rubocop/cop/lint/implicit_string_concatenation.rb +1 -1
  177. data/lib/rubocop/cop/lint/incompatible_io_select_with_fiber_scheduler.rb +11 -4
  178. data/lib/rubocop/cop/lint/ineffective_access_modifier.rb +1 -1
  179. data/lib/rubocop/cop/lint/inherit_exception.rb +1 -1
  180. data/lib/rubocop/cop/lint/interpolation_check.rb +2 -2
  181. data/lib/rubocop/cop/lint/lambda_without_literal_block.rb +10 -3
  182. data/lib/rubocop/cop/lint/literal_as_condition.rb +6 -1
  183. data/lib/rubocop/cop/lint/literal_in_interpolation.rb +1 -1
  184. data/lib/rubocop/cop/lint/loop.rb +2 -2
  185. data/lib/rubocop/cop/lint/missing_cop_enable_directive.rb +1 -1
  186. data/lib/rubocop/cop/lint/missing_super.rb +1 -1
  187. data/lib/rubocop/cop/lint/nested_method_definition.rb +1 -1
  188. data/lib/rubocop/cop/lint/nested_percent_literal.rb +1 -1
  189. data/lib/rubocop/cop/lint/non_atomic_file_operation.rb +157 -0
  190. data/lib/rubocop/cop/lint/non_deterministic_require_order.rb +5 -5
  191. data/lib/rubocop/cop/lint/non_local_exit_from_iterator.rb +1 -1
  192. data/lib/rubocop/cop/lint/number_conversion.rb +11 -5
  193. data/lib/rubocop/cop/lint/numbered_parameter_assignment.rb +1 -1
  194. data/lib/rubocop/cop/lint/or_assignment_to_constant.rb +2 -3
  195. data/lib/rubocop/cop/lint/parentheses_as_grouped_expression.rb +2 -2
  196. data/lib/rubocop/cop/lint/percent_string_array.rb +1 -1
  197. data/lib/rubocop/cop/lint/percent_symbol_array.rb +1 -1
  198. data/lib/rubocop/cop/lint/raise_exception.rb +2 -2
  199. data/lib/rubocop/cop/lint/rand_one.rb +1 -1
  200. data/lib/rubocop/cop/lint/redundant_cop_disable_directive.rb +6 -6
  201. data/lib/rubocop/cop/lint/redundant_cop_enable_directive.rb +2 -2
  202. data/lib/rubocop/cop/lint/redundant_require_statement.rb +4 -1
  203. data/lib/rubocop/cop/lint/redundant_safe_navigation.rb +10 -3
  204. data/lib/rubocop/cop/lint/redundant_splat_expansion.rb +1 -1
  205. data/lib/rubocop/cop/lint/redundant_string_coercion.rb +1 -1
  206. data/lib/rubocop/cop/lint/redundant_with_index.rb +1 -1
  207. data/lib/rubocop/cop/lint/redundant_with_object.rb +1 -1
  208. data/lib/rubocop/cop/lint/refinement_import_methods.rb +51 -0
  209. data/lib/rubocop/cop/lint/regexp_as_condition.rb +3 -3
  210. data/lib/rubocop/cop/lint/require_parentheses.rb +1 -1
  211. data/lib/rubocop/cop/lint/require_range_parentheses.rb +57 -0
  212. data/lib/rubocop/cop/lint/rescue_exception.rb +1 -1
  213. data/lib/rubocop/cop/lint/return_in_void_context.rb +6 -18
  214. data/lib/rubocop/cop/lint/safe_navigation_chain.rb +38 -1
  215. data/lib/rubocop/cop/lint/safe_navigation_consistency.rb +1 -1
  216. data/lib/rubocop/cop/lint/safe_navigation_with_empty.rb +1 -1
  217. data/lib/rubocop/cop/lint/script_permission.rb +1 -1
  218. data/lib/rubocop/cop/lint/self_assignment.rb +1 -1
  219. data/lib/rubocop/cop/lint/shadowed_argument.rb +1 -1
  220. data/lib/rubocop/cop/lint/shadowed_exception.rb +1 -1
  221. data/lib/rubocop/cop/lint/shadowing_outer_local_variable.rb +11 -1
  222. data/lib/rubocop/cop/lint/struct_new_override.rb +3 -3
  223. data/lib/rubocop/cop/lint/suppressed_exception.rb +1 -1
  224. data/lib/rubocop/cop/lint/symbol_conversion.rb +1 -1
  225. data/lib/rubocop/cop/lint/syntax.rb +2 -3
  226. data/lib/rubocop/cop/lint/to_enum_arguments.rb +1 -1
  227. data/lib/rubocop/cop/lint/to_json.rb +1 -1
  228. data/lib/rubocop/cop/lint/top_level_return_with_argument.rb +1 -1
  229. data/lib/rubocop/cop/lint/trailing_comma_in_attribute_declaration.rb +2 -2
  230. data/lib/rubocop/cop/lint/triple_quotes.rb +1 -1
  231. data/lib/rubocop/cop/lint/underscore_prefixed_variable_name.rb +1 -1
  232. data/lib/rubocop/cop/lint/unexpected_block_arity.rb +1 -1
  233. data/lib/rubocop/cop/lint/unified_integer.rb +3 -1
  234. data/lib/rubocop/cop/lint/unreachable_code.rb +1 -1
  235. data/lib/rubocop/cop/lint/unreachable_loop.rb +5 -5
  236. data/lib/rubocop/cop/lint/unused_block_argument.rb +1 -1
  237. data/lib/rubocop/cop/lint/unused_method_argument.rb +2 -2
  238. data/lib/rubocop/cop/lint/uri_escape_unescape.rb +1 -1
  239. data/lib/rubocop/cop/lint/uri_regexp.rb +1 -1
  240. data/lib/rubocop/cop/lint/useless_access_modifier.rb +1 -1
  241. data/lib/rubocop/cop/lint/useless_assignment.rb +1 -1
  242. data/lib/rubocop/cop/lint/useless_else_without_rescue.rb +2 -3
  243. data/lib/rubocop/cop/lint/useless_method_definition.rb +1 -1
  244. data/lib/rubocop/cop/lint/useless_ruby2_keywords.rb +1 -1
  245. data/lib/rubocop/cop/lint/useless_setter_call.rb +2 -2
  246. data/lib/rubocop/cop/lint/useless_times.rb +2 -2
  247. data/lib/rubocop/cop/lint/void.rb +1 -1
  248. data/lib/rubocop/cop/metrics/abc_size.rb +1 -1
  249. data/lib/rubocop/cop/metrics/block_length.rb +2 -1
  250. data/lib/rubocop/cop/metrics/block_nesting.rb +1 -1
  251. data/lib/rubocop/cop/metrics/class_length.rb +1 -1
  252. data/lib/rubocop/cop/metrics/cyclomatic_complexity.rb +1 -1
  253. data/lib/rubocop/cop/metrics/method_length.rb +2 -1
  254. data/lib/rubocop/cop/metrics/module_length.rb +1 -1
  255. data/lib/rubocop/cop/metrics/parameter_lists.rb +1 -1
  256. data/lib/rubocop/cop/metrics/perceived_complexity.rb +1 -1
  257. data/lib/rubocop/cop/metrics/utils/abc_size_calculator.rb +2 -3
  258. data/lib/rubocop/cop/metrics/utils/code_length_calculator.rb +22 -3
  259. data/lib/rubocop/cop/mixin/allowed_pattern.rb +40 -0
  260. data/lib/rubocop/cop/mixin/check_line_breakable.rb +4 -0
  261. data/lib/rubocop/cop/mixin/comments_help.rb +24 -2
  262. data/lib/rubocop/cop/mixin/def_node.rb +2 -7
  263. data/lib/rubocop/cop/mixin/duplication.rb +1 -1
  264. data/lib/rubocop/cop/mixin/hash_shorthand_syntax.rb +8 -4
  265. data/lib/rubocop/cop/mixin/multiline_element_indentation.rb +34 -12
  266. data/lib/rubocop/cop/mixin/multiline_expression_indentation.rb +1 -2
  267. data/lib/rubocop/cop/mixin/percent_array.rb +60 -1
  268. data/lib/rubocop/cop/mixin/preferred_delimiters.rb +2 -2
  269. data/lib/rubocop/cop/mixin/range_help.rb +7 -3
  270. data/lib/rubocop/cop/mixin/statement_modifier.rb +1 -1
  271. data/lib/rubocop/cop/mixin/string_help.rb +1 -1
  272. data/lib/rubocop/cop/mixin/surrounding_space.rb +4 -2
  273. data/lib/rubocop/cop/mixin/trailing_comma.rb +1 -1
  274. data/lib/rubocop/cop/naming/accessor_method_name.rb +4 -2
  275. data/lib/rubocop/cop/naming/ascii_identifiers.rb +1 -1
  276. data/lib/rubocop/cop/naming/binary_operator_parameter_name.rb +1 -1
  277. data/lib/rubocop/cop/naming/block_forwarding.rb +4 -4
  278. data/lib/rubocop/cop/naming/block_parameter_name.rb +1 -1
  279. data/lib/rubocop/cop/naming/class_and_module_camel_case.rb +1 -1
  280. data/lib/rubocop/cop/naming/constant_name.rb +1 -1
  281. data/lib/rubocop/cop/naming/file_name.rb +2 -2
  282. data/lib/rubocop/cop/naming/heredoc_delimiter_case.rb +1 -1
  283. data/lib/rubocop/cop/naming/heredoc_delimiter_naming.rb +1 -1
  284. data/lib/rubocop/cop/naming/inclusive_language.rb +3 -2
  285. data/lib/rubocop/cop/naming/memoized_instance_variable_name.rb +1 -1
  286. data/lib/rubocop/cop/naming/method_name.rb +6 -6
  287. data/lib/rubocop/cop/naming/method_parameter_name.rb +1 -1
  288. data/lib/rubocop/cop/naming/predicate_name.rb +11 -3
  289. data/lib/rubocop/cop/naming/rescued_exceptions_variable_name.rb +1 -1
  290. data/lib/rubocop/cop/naming/variable_name.rb +10 -1
  291. data/lib/rubocop/cop/naming/variable_number.rb +28 -18
  292. data/lib/rubocop/cop/offense.rb +1 -1
  293. data/lib/rubocop/cop/security/compound_hash.rb +105 -0
  294. data/lib/rubocop/cop/security/eval.rb +1 -1
  295. data/lib/rubocop/cop/security/json_load.rb +1 -1
  296. data/lib/rubocop/cop/security/marshal_load.rb +1 -1
  297. data/lib/rubocop/cop/security/open.rb +1 -1
  298. data/lib/rubocop/cop/security/yaml_load.rb +2 -2
  299. data/lib/rubocop/cop/style/accessor_grouping.rb +4 -4
  300. data/lib/rubocop/cop/style/alias.rb +4 -4
  301. data/lib/rubocop/cop/style/and_or.rb +12 -12
  302. data/lib/rubocop/cop/style/arguments_forwarding.rb +1 -1
  303. data/lib/rubocop/cop/style/array_coercion.rb +1 -1
  304. data/lib/rubocop/cop/style/array_join.rb +1 -1
  305. data/lib/rubocop/cop/style/ascii_comments.rb +1 -1
  306. data/lib/rubocop/cop/style/attr.rb +1 -1
  307. data/lib/rubocop/cop/style/auto_resource_cleanup.rb +1 -1
  308. data/lib/rubocop/cop/style/bare_percent_literals.rb +1 -1
  309. data/lib/rubocop/cop/style/bisected_attr_accessor/macro.rb +1 -1
  310. data/lib/rubocop/cop/style/bisected_attr_accessor.rb +1 -1
  311. data/lib/rubocop/cop/style/block_comments.rb +1 -1
  312. data/lib/rubocop/cop/style/block_delimiters.rb +9 -2
  313. data/lib/rubocop/cop/style/case_equality.rb +1 -1
  314. data/lib/rubocop/cop/style/case_like_if.rb +2 -2
  315. data/lib/rubocop/cop/style/character_literal.rb +1 -1
  316. data/lib/rubocop/cop/style/class_and_module_children.rb +1 -1
  317. data/lib/rubocop/cop/style/class_check.rb +1 -1
  318. data/lib/rubocop/cop/style/class_equality_comparison.rb +23 -1
  319. data/lib/rubocop/cop/style/class_methods.rb +1 -1
  320. data/lib/rubocop/cop/style/class_methods_definitions.rb +1 -1
  321. data/lib/rubocop/cop/style/class_vars.rb +1 -1
  322. data/lib/rubocop/cop/style/collection_compact.rb +4 -4
  323. data/lib/rubocop/cop/style/collection_methods.rb +1 -1
  324. data/lib/rubocop/cop/style/colon_method_call.rb +1 -1
  325. data/lib/rubocop/cop/style/colon_method_definition.rb +1 -1
  326. data/lib/rubocop/cop/style/combinable_loops.rb +1 -1
  327. data/lib/rubocop/cop/style/command_literal.rb +1 -1
  328. data/lib/rubocop/cop/style/comment_annotation.rb +1 -1
  329. data/lib/rubocop/cop/style/commented_keyword.rb +4 -4
  330. data/lib/rubocop/cop/style/conditional_assignment.rb +2 -1
  331. data/lib/rubocop/cop/style/constant_visibility.rb +1 -1
  332. data/lib/rubocop/cop/style/date_time.rb +2 -2
  333. data/lib/rubocop/cop/style/def_with_parentheses.rb +1 -1
  334. data/lib/rubocop/cop/style/dir.rb +4 -1
  335. data/lib/rubocop/cop/style/documentation.rb +1 -1
  336. data/lib/rubocop/cop/style/documentation_method.rb +1 -1
  337. data/lib/rubocop/cop/style/double_negation.rb +60 -3
  338. data/lib/rubocop/cop/style/each_for_simple_loop.rb +1 -1
  339. data/lib/rubocop/cop/style/each_with_object.rb +1 -1
  340. data/lib/rubocop/cop/style/empty_block_parameter.rb +1 -1
  341. data/lib/rubocop/cop/style/empty_case_condition.rb +3 -4
  342. data/lib/rubocop/cop/style/empty_else.rb +40 -3
  343. data/lib/rubocop/cop/style/empty_heredoc.rb +59 -0
  344. data/lib/rubocop/cop/style/empty_lambda_parameter.rb +1 -1
  345. data/lib/rubocop/cop/style/empty_literal.rb +2 -2
  346. data/lib/rubocop/cop/style/empty_method.rb +17 -2
  347. data/lib/rubocop/cop/style/encoding.rb +2 -2
  348. data/lib/rubocop/cop/style/end_block.rb +1 -1
  349. data/lib/rubocop/cop/style/endless_method.rb +1 -1
  350. data/lib/rubocop/cop/style/env_home.rb +56 -0
  351. data/lib/rubocop/cop/style/eval_with_location.rb +1 -1
  352. data/lib/rubocop/cop/style/even_odd.rb +1 -1
  353. data/lib/rubocop/cop/style/expand_path_arguments.rb +1 -1
  354. data/lib/rubocop/cop/style/explicit_block_argument.rb +2 -2
  355. data/lib/rubocop/cop/style/exponential_notation.rb +1 -1
  356. data/lib/rubocop/cop/style/fetch_env_var.rb +132 -0
  357. data/lib/rubocop/cop/style/file_write.rb +12 -0
  358. data/lib/rubocop/cop/style/float_division.rb +1 -1
  359. data/lib/rubocop/cop/style/for.rb +1 -1
  360. data/lib/rubocop/cop/style/format_string.rb +1 -1
  361. data/lib/rubocop/cop/style/format_string_token.rb +54 -17
  362. data/lib/rubocop/cop/style/frozen_string_literal_comment.rb +6 -3
  363. data/lib/rubocop/cop/style/global_std_stream.rb +1 -1
  364. data/lib/rubocop/cop/style/global_vars.rb +1 -1
  365. data/lib/rubocop/cop/style/guard_clause.rb +51 -4
  366. data/lib/rubocop/cop/style/hash_as_last_array_item.rb +1 -1
  367. data/lib/rubocop/cop/style/hash_conversion.rb +1 -1
  368. data/lib/rubocop/cop/style/hash_each_methods.rb +1 -1
  369. data/lib/rubocop/cop/style/hash_except.rb +89 -9
  370. data/lib/rubocop/cop/style/hash_like_case.rb +1 -1
  371. data/lib/rubocop/cop/style/hash_syntax.rb +3 -3
  372. data/lib/rubocop/cop/style/hash_transform_keys.rb +6 -1
  373. data/lib/rubocop/cop/style/hash_transform_values.rb +4 -1
  374. data/lib/rubocop/cop/style/identical_conditional_branches.rb +4 -4
  375. data/lib/rubocop/cop/style/if_unless_modifier.rb +5 -4
  376. data/lib/rubocop/cop/style/if_with_boolean_literal_branches.rb +4 -2
  377. data/lib/rubocop/cop/style/implicit_runtime_error.rb +3 -3
  378. data/lib/rubocop/cop/style/in_pattern_then.rb +1 -1
  379. data/lib/rubocop/cop/style/inline_comment.rb +1 -1
  380. data/lib/rubocop/cop/style/inverse_methods.rb +2 -2
  381. data/lib/rubocop/cop/style/ip_addresses.rb +1 -1
  382. data/lib/rubocop/cop/style/keyword_parameters_order.rb +2 -2
  383. data/lib/rubocop/cop/style/lambda.rb +1 -1
  384. data/lib/rubocop/cop/style/lambda_call.rb +1 -1
  385. data/lib/rubocop/cop/style/line_end_concatenation.rb +2 -2
  386. data/lib/rubocop/cop/style/map_compact_with_conditional_block.rb +136 -0
  387. data/lib/rubocop/cop/style/map_to_hash.rb +3 -3
  388. data/lib/rubocop/cop/style/method_call_with_args_parentheses/omit_parentheses.rb +2 -2
  389. data/lib/rubocop/cop/style/method_call_with_args_parentheses/require_parentheses.rb +1 -1
  390. data/lib/rubocop/cop/style/method_call_with_args_parentheses.rb +5 -5
  391. data/lib/rubocop/cop/style/method_call_without_args_parentheses.rb +13 -1
  392. data/lib/rubocop/cop/style/method_called_on_do_end_block.rb +1 -1
  393. data/lib/rubocop/cop/style/method_def_parentheses.rb +1 -1
  394. data/lib/rubocop/cop/style/min_max.rb +1 -1
  395. data/lib/rubocop/cop/style/missing_else.rb +24 -24
  396. data/lib/rubocop/cop/style/missing_respond_to_missing.rb +1 -1
  397. data/lib/rubocop/cop/style/mixin_grouping.rb +2 -2
  398. data/lib/rubocop/cop/style/mixin_usage.rb +1 -1
  399. data/lib/rubocop/cop/style/module_function.rb +3 -3
  400. data/lib/rubocop/cop/style/multiline_block_chain.rb +1 -1
  401. data/lib/rubocop/cop/style/multiline_if_modifier.rb +2 -2
  402. data/lib/rubocop/cop/style/multiline_if_then.rb +1 -1
  403. data/lib/rubocop/cop/style/multiline_in_pattern_then.rb +2 -4
  404. data/lib/rubocop/cop/style/multiline_memoization.rb +1 -1
  405. data/lib/rubocop/cop/style/multiline_method_signature.rb +2 -2
  406. data/lib/rubocop/cop/style/multiline_ternary_operator.rb +37 -11
  407. data/lib/rubocop/cop/style/multiline_when_then.rb +2 -4
  408. data/lib/rubocop/cop/style/multiple_comparison.rb +1 -1
  409. data/lib/rubocop/cop/style/mutable_constant.rb +1 -1
  410. data/lib/rubocop/cop/style/negated_if_else_condition.rb +1 -1
  411. data/lib/rubocop/cop/style/nested_file_dirname.rb +1 -1
  412. data/lib/rubocop/cop/style/nested_modifier.rb +1 -1
  413. data/lib/rubocop/cop/style/nested_parenthesized_calls.rb +11 -2
  414. data/lib/rubocop/cop/style/nested_ternary_operator.rb +20 -8
  415. data/lib/rubocop/cop/style/next.rb +1 -1
  416. data/lib/rubocop/cop/style/nil_comparison.rb +1 -1
  417. data/lib/rubocop/cop/style/nil_lambda.rb +2 -2
  418. data/lib/rubocop/cop/style/non_nil_check.rb +1 -1
  419. data/lib/rubocop/cop/style/not.rb +2 -2
  420. data/lib/rubocop/cop/style/numbered_parameters.rb +1 -1
  421. data/lib/rubocop/cop/style/numbered_parameters_limit.rb +1 -1
  422. data/lib/rubocop/cop/style/numeric_literal_prefix.rb +1 -1
  423. data/lib/rubocop/cop/style/numeric_literals.rb +1 -1
  424. data/lib/rubocop/cop/style/numeric_predicate.rb +30 -8
  425. data/lib/rubocop/cop/style/object_then.rb +69 -0
  426. data/lib/rubocop/cop/style/one_line_conditional.rb +1 -1
  427. data/lib/rubocop/cop/style/open_struct_use.rb +1 -1
  428. data/lib/rubocop/cop/style/option_hash.rb +1 -1
  429. data/lib/rubocop/cop/style/optional_arguments.rb +2 -2
  430. data/lib/rubocop/cop/style/optional_boolean_parameter.rb +2 -2
  431. data/lib/rubocop/cop/style/or_assignment.rb +1 -1
  432. data/lib/rubocop/cop/style/parentheses_around_condition.rb +1 -1
  433. data/lib/rubocop/cop/style/percent_literal_delimiters.rb +1 -1
  434. data/lib/rubocop/cop/style/percent_q_literals.rb +1 -1
  435. data/lib/rubocop/cop/style/perl_backrefs.rb +1 -1
  436. data/lib/rubocop/cop/style/preferred_hash_methods.rb +1 -1
  437. data/lib/rubocop/cop/style/proc.rb +1 -1
  438. data/lib/rubocop/cop/style/quoted_symbols.rb +1 -1
  439. data/lib/rubocop/cop/style/raise_args.rb +10 -4
  440. data/lib/rubocop/cop/style/random_with_offset.rb +1 -1
  441. data/lib/rubocop/cop/style/redundant_argument.rb +2 -2
  442. data/lib/rubocop/cop/style/redundant_assignment.rb +1 -1
  443. data/lib/rubocop/cop/style/redundant_begin.rb +17 -6
  444. data/lib/rubocop/cop/style/redundant_capital_w.rb +2 -3
  445. data/lib/rubocop/cop/style/redundant_condition.rb +113 -12
  446. data/lib/rubocop/cop/style/redundant_conditional.rb +1 -1
  447. data/lib/rubocop/cop/style/redundant_exception.rb +1 -1
  448. data/lib/rubocop/cop/style/redundant_fetch_block.rb +1 -1
  449. data/lib/rubocop/cop/style/redundant_file_extension_in_require.rb +1 -1
  450. data/lib/rubocop/cop/style/redundant_freeze.rb +1 -1
  451. data/lib/rubocop/cop/style/redundant_initialize.rb +154 -0
  452. data/lib/rubocop/cop/style/redundant_interpolation.rb +22 -1
  453. data/lib/rubocop/cop/style/redundant_parentheses.rb +3 -2
  454. data/lib/rubocop/cop/style/redundant_percent_q.rb +1 -1
  455. data/lib/rubocop/cop/style/redundant_regexp_character_class.rb +8 -3
  456. data/lib/rubocop/cop/style/redundant_regexp_escape.rb +2 -2
  457. data/lib/rubocop/cop/style/redundant_return.rb +2 -2
  458. data/lib/rubocop/cop/style/redundant_self.rb +1 -1
  459. data/lib/rubocop/cop/style/redundant_self_assignment.rb +3 -4
  460. data/lib/rubocop/cop/style/redundant_self_assignment_branch.rb +1 -1
  461. data/lib/rubocop/cop/style/redundant_sort.rb +1 -1
  462. data/lib/rubocop/cop/style/redundant_sort_by.rb +1 -1
  463. data/lib/rubocop/cop/style/regexp_literal.rb +1 -1
  464. data/lib/rubocop/cop/style/rescue_modifier.rb +1 -1
  465. data/lib/rubocop/cop/style/rescue_standard_error.rb +13 -13
  466. data/lib/rubocop/cop/style/return_nil.rb +1 -1
  467. data/lib/rubocop/cop/style/safe_navigation.rb +17 -9
  468. data/lib/rubocop/cop/style/sample.rb +1 -1
  469. data/lib/rubocop/cop/style/select_by_regexp.rb +1 -1
  470. data/lib/rubocop/cop/style/self_assignment.rb +1 -1
  471. data/lib/rubocop/cop/style/semicolon.rb +28 -4
  472. data/lib/rubocop/cop/style/send.rb +1 -1
  473. data/lib/rubocop/cop/style/signal_exception.rb +1 -1
  474. data/lib/rubocop/cop/style/single_argument_dig.rb +5 -0
  475. data/lib/rubocop/cop/style/single_line_block_params.rb +1 -1
  476. data/lib/rubocop/cop/style/single_line_methods.rb +2 -2
  477. data/lib/rubocop/cop/style/slicing_with_range.rb +1 -1
  478. data/lib/rubocop/cop/style/sole_nested_conditional.rb +35 -16
  479. data/lib/rubocop/cop/style/special_global_vars.rb +66 -8
  480. data/lib/rubocop/cop/style/static_class.rb +1 -1
  481. data/lib/rubocop/cop/style/stderr_puts.rb +1 -1
  482. data/lib/rubocop/cop/style/string_chars.rb +1 -1
  483. data/lib/rubocop/cop/style/string_concatenation.rb +6 -7
  484. data/lib/rubocop/cop/style/string_hash_keys.rb +1 -1
  485. data/lib/rubocop/cop/style/string_literals_in_interpolation.rb +1 -1
  486. data/lib/rubocop/cop/style/string_methods.rb +1 -1
  487. data/lib/rubocop/cop/style/strip.rb +1 -1
  488. data/lib/rubocop/cop/style/struct_inheritance.rb +4 -4
  489. data/lib/rubocop/cop/style/swap_values.rb +2 -2
  490. data/lib/rubocop/cop/style/symbol_array.rb +8 -5
  491. data/lib/rubocop/cop/style/symbol_literal.rb +1 -1
  492. data/lib/rubocop/cop/style/symbol_proc.rb +37 -5
  493. data/lib/rubocop/cop/style/ternary_parentheses.rb +2 -3
  494. data/lib/rubocop/cop/style/trailing_body_on_class.rb +1 -1
  495. data/lib/rubocop/cop/style/trailing_body_on_method_definition.rb +1 -1
  496. data/lib/rubocop/cop/style/trailing_body_on_module.rb +1 -1
  497. data/lib/rubocop/cop/style/trailing_comma_in_arguments.rb +1 -1
  498. data/lib/rubocop/cop/style/trailing_comma_in_array_literal.rb +1 -1
  499. data/lib/rubocop/cop/style/trailing_comma_in_block_args.rb +1 -1
  500. data/lib/rubocop/cop/style/trailing_comma_in_hash_literal.rb +1 -1
  501. data/lib/rubocop/cop/style/trailing_method_end_statement.rb +2 -5
  502. data/lib/rubocop/cop/style/trailing_underscore_variable.rb +1 -1
  503. data/lib/rubocop/cop/style/trivial_accessors.rb +11 -9
  504. data/lib/rubocop/cop/style/unless_else.rb +1 -1
  505. data/lib/rubocop/cop/style/unless_logical_operators.rb +1 -1
  506. data/lib/rubocop/cop/style/unpack_first.rb +5 -2
  507. data/lib/rubocop/cop/style/variable_interpolation.rb +1 -1
  508. data/lib/rubocop/cop/style/when_then.rb +1 -1
  509. data/lib/rubocop/cop/style/word_array.rb +3 -4
  510. data/lib/rubocop/cop/style/yoda_condition.rb +1 -1
  511. data/lib/rubocop/cop/style/zero_length_predicate.rb +1 -1
  512. data/lib/rubocop/cop/team.rb +2 -2
  513. data/lib/rubocop/cop/util.rb +2 -2
  514. data/lib/rubocop/cop/variable_force/branch.rb +1 -1
  515. data/lib/rubocop/cops_documentation_generator.rb +19 -2
  516. data/lib/rubocop/formatter/disabled_config_formatter.rb +10 -7
  517. data/lib/rubocop/formatter/formatter_set.rb +20 -18
  518. data/lib/rubocop/formatter/git_hub_actions_formatter.rb +15 -2
  519. data/lib/rubocop/formatter/html_formatter.rb +2 -10
  520. data/lib/rubocop/formatter/markdown_formatter.rb +78 -0
  521. data/lib/rubocop/formatter/offense_count_formatter.rb +8 -2
  522. data/lib/rubocop/formatter/simple_text_formatter.rb +9 -8
  523. data/lib/rubocop/formatter/worst_offenders_formatter.rb +1 -2
  524. data/lib/rubocop/formatter.rb +31 -0
  525. data/lib/rubocop/magic_comment.rb +31 -5
  526. data/lib/rubocop/options.rb +103 -34
  527. data/lib/rubocop/rake_task.rb +34 -9
  528. data/lib/rubocop/result_cache.rb +13 -4
  529. data/lib/rubocop/rspec/cop_helper.rb +2 -2
  530. data/lib/rubocop/rspec/expect_offense.rb +3 -3
  531. data/lib/rubocop/rspec/parallel_formatter.rb +1 -1
  532. data/lib/rubocop/rspec/shared_contexts.rb +31 -11
  533. data/lib/rubocop/rspec/support.rb +14 -0
  534. data/lib/rubocop/runner.rb +37 -7
  535. data/lib/rubocop/server/cache.rb +109 -0
  536. data/lib/rubocop/server/cli.rb +104 -0
  537. data/lib/rubocop/server/client_command/base.rb +44 -0
  538. data/lib/rubocop/server/client_command/exec.rb +59 -0
  539. data/lib/rubocop/server/client_command/restart.rb +25 -0
  540. data/lib/rubocop/server/client_command/start.rb +43 -0
  541. data/lib/rubocop/server/client_command/status.rb +28 -0
  542. data/lib/rubocop/server/client_command/stop.rb +31 -0
  543. data/lib/rubocop/server/client_command.rb +26 -0
  544. data/lib/rubocop/server/core.rb +79 -0
  545. data/lib/rubocop/server/errors.rb +23 -0
  546. data/lib/rubocop/server/helper.rb +34 -0
  547. data/lib/rubocop/server/server_command/base.rb +50 -0
  548. data/lib/rubocop/server/server_command/exec.rb +34 -0
  549. data/lib/rubocop/server/server_command/stop.rb +24 -0
  550. data/lib/rubocop/server/server_command.rb +21 -0
  551. data/lib/rubocop/server/socket_reader.rb +65 -0
  552. data/lib/rubocop/server.rb +53 -0
  553. data/lib/rubocop/string_interpreter.rb +4 -4
  554. data/lib/rubocop/target_ruby.rb +14 -6
  555. data/lib/rubocop/version.rb +15 -8
  556. data/lib/rubocop.rb +20 -27
  557. metadata +68 -10
  558. data/lib/rubocop/cop/gemspec/date_assignment.rb +0 -49
  559. data/lib/rubocop/cop/mixin/ignored_pattern.rb +0 -29
@@ -1,5 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ require 'ruby-progressbar'
4
+
3
5
  module RuboCop
4
6
  module Formatter
5
7
  # This formatter displays the list of offended cops with a count of how
@@ -17,6 +19,7 @@ module RuboCop
17
19
  def started(target_files)
18
20
  super
19
21
  @offense_counts = Hash.new(0)
22
+ @style_guide_links = {}
20
23
 
21
24
  return unless output.tty?
22
25
 
@@ -37,6 +40,9 @@ module RuboCop
37
40
 
38
41
  def file_finished(_file, offenses)
39
42
  offenses.each { |o| @offense_counts[o.cop_name] += 1 }
43
+ if options[:display_style_guide]
44
+ offenses.each { |o| @style_guide_links[o.cop_name] ||= o.message[/ \(http\S+\)\Z/] }
45
+ end
40
46
  @progressbar.increment if instance_variable_defined?(:@progressbar)
41
47
  end
42
48
 
@@ -52,8 +58,8 @@ module RuboCop
52
58
  output.puts
53
59
 
54
60
  per_cop_counts.each do |cop_name, count|
55
- output.puts "#{count.to_s.ljust(total_count.to_s.length + 2)}" \
56
- "#{cop_name}\n"
61
+ output.puts "#{count.to_s.ljust(total_count.to_s.length + 2)}#{cop_name}" \
62
+ "#{@style_guide_links[cop_name]}\n"
57
63
  end
58
64
  output.puts '--'
59
65
  output.puts "#{total_count} Total"
@@ -1,7 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require_relative 'colorizable'
4
- require_relative 'text_util'
5
4
 
6
5
  module RuboCop
7
6
  module Formatter
@@ -61,7 +60,9 @@ module RuboCop
61
60
  correction_count,
62
61
  correctable_count,
63
62
  rainbow,
64
- safe_auto_correct: @options[:safe_auto_correct])
63
+ # :safe_autocorrect is a derived option based on several command-line
64
+ # arguments - see Rubocop::Options#add_autocorrection_options
65
+ safe_autocorrect: @options[:safe_autocorrect])
65
66
 
66
67
  output.puts
67
68
  output.puts report.summary
@@ -108,22 +109,22 @@ module RuboCop
108
109
  # rubocop:disable Metrics/ParameterLists
109
110
  def initialize(
110
111
  file_count, offense_count, correction_count, correctable_count, rainbow,
111
- safe_auto_correct: false
112
+ safe_autocorrect: false
112
113
  )
113
114
  @file_count = file_count
114
115
  @offense_count = offense_count
115
116
  @correction_count = correction_count
116
117
  @correctable_count = correctable_count
117
118
  @rainbow = rainbow
118
- @safe_auto_correct = safe_auto_correct
119
+ @safe_autocorrect = safe_autocorrect
119
120
  end
120
121
  # rubocop:enable Metrics/ParameterLists
121
122
 
122
123
  def summary
123
124
  if @correction_count.positive?
124
125
  if @correctable_count.positive?
125
- "#{files} inspected, #{offenses} detected, #{corrections} corrected,"\
126
- " #{correctable}"
126
+ "#{files} inspected, #{offenses} detected, #{corrections} corrected, " \
127
+ "#{correctable}"
127
128
  else
128
129
  "#{files} inspected, #{offenses} detected, #{corrections} corrected"
129
130
  end
@@ -157,12 +158,12 @@ module RuboCop
157
158
  end
158
159
 
159
160
  def correctable
160
- if @safe_auto_correct
161
+ if @safe_autocorrect
161
162
  text = pluralize(@correctable_count, 'more offense')
162
163
  "#{colorize(text, :yellow)} can be corrected with `rubocop -A`"
163
164
  else
164
165
  text = pluralize(@correctable_count, 'offense')
165
- "#{colorize(text, :yellow)} auto-correctable"
166
+ "#{colorize(text, :yellow)} autocorrectable"
166
167
  end
167
168
  end
168
169
  end
@@ -40,8 +40,7 @@ module RuboCop
40
40
  output.puts
41
41
 
42
42
  per_file_counts.each do |file_name, count|
43
- output.puts "#{count.to_s.ljust(total_count.to_s.length + 2)}" \
44
- "#{file_name}\n"
43
+ output.puts "#{count.to_s.ljust(total_count.to_s.length + 2)}#{file_name}\n"
45
44
  end
46
45
  output.puts '--'
47
46
  output.puts "#{total_count} Total"
@@ -0,0 +1,31 @@
1
+ # frozen_string_literal: true
2
+
3
+ module RuboCop
4
+ module Formatter
5
+ require_relative 'formatter/text_util'
6
+
7
+ require_relative 'formatter/base_formatter'
8
+ require_relative 'formatter/simple_text_formatter'
9
+ # relies on simple text
10
+ require_relative 'formatter/clang_style_formatter'
11
+ require_relative 'formatter/disabled_config_formatter'
12
+ require_relative 'formatter/emacs_style_formatter'
13
+ require_relative 'formatter/file_list_formatter'
14
+ require_relative 'formatter/fuubar_style_formatter'
15
+ require_relative 'formatter/git_hub_actions_formatter'
16
+ require_relative 'formatter/html_formatter'
17
+ require_relative 'formatter/json_formatter'
18
+ require_relative 'formatter/junit_formatter'
19
+ require_relative 'formatter/markdown_formatter'
20
+ require_relative 'formatter/offense_count_formatter'
21
+ require_relative 'formatter/progress_formatter'
22
+ require_relative 'formatter/quiet_formatter'
23
+ require_relative 'formatter/tap_formatter'
24
+ require_relative 'formatter/worst_offenders_formatter'
25
+ require_relative 'formatter/pacman_formatter'
26
+ # relies on progress formatter
27
+ require_relative 'formatter/auto_gen_config_formatter'
28
+
29
+ require_relative 'formatter/formatter_set'
30
+ end
31
+ end
@@ -5,12 +5,14 @@ module RuboCop
5
5
  #
6
6
  # @abstract parent of three different magic comment handlers
7
7
  class MagicComment
8
- # @see https://git.io/vMC1C IRB's pattern for matching magic comment tokens
8
+ # IRB's pattern for matching magic comment tokens.
9
+ # @see https://github.com/ruby/ruby/blob/b4a55c1/lib/irb/magic-file.rb#L5
9
10
  TOKEN = /[[:alnum:]\-_]+/.freeze
10
11
  KEYWORDS = {
11
12
  encoding: '(?:en)?coding',
12
13
  frozen_string_literal: 'frozen[_-]string[_-]literal',
13
- shareable_constant_value: 'shareable[_-]constant[_-]value'
14
+ shareable_constant_value: 'shareable[_-]constant[_-]value',
15
+ typed: 'typed'
14
16
  }.freeze
15
17
 
16
18
  # Detect magic comment format and pass it to the appropriate wrapper.
@@ -32,7 +34,10 @@ module RuboCop
32
34
  end
33
35
 
34
36
  def any?
35
- frozen_string_literal_specified? || encoding_specified? || shareable_constant_value_specified?
37
+ frozen_string_literal_specified? ||
38
+ encoding_specified? ||
39
+ shareable_constant_value_specified? ||
40
+ typed_specified?
36
41
  end
37
42
 
38
43
  def valid?
@@ -100,6 +105,17 @@ module RuboCop
100
105
  specified?(encoding)
101
106
  end
102
107
 
108
+ # Was the Sorbet `typed` sigil specified?
109
+ #
110
+ # @return [Boolean]
111
+ def typed_specified?
112
+ specified?(extract_typed)
113
+ end
114
+
115
+ def typed
116
+ extract_typed
117
+ end
118
+
103
119
  private
104
120
 
105
121
  def specified?(value)
@@ -170,7 +186,7 @@ module RuboCop
170
186
  # comment.encoding # => 'ascii-8bit'
171
187
  #
172
188
  # @see https://www.gnu.org/software/emacs/manual/html_node/emacs/Specify-Coding.html
173
- # @see https://git.io/vMCXh Emacs handling in Ruby's parse.y
189
+ # @see https://github.com/ruby/ruby/blob/3f306dc/parse.y#L6873-L6892 Emacs handling in parse.y
174
190
  class EmacsComment < EditorComment
175
191
  REGEXP = /-\*-(.+)-\*-/.freeze
176
192
  FORMAT = '# -*- %s -*-'
@@ -186,6 +202,9 @@ module RuboCop
186
202
  def extract_shareable_constant_value
187
203
  match(KEYWORDS[:shareable_constant_value])
188
204
  end
205
+
206
+ # Emacs comments cannot specify Sorbet typechecking behavior.
207
+ def extract_typed; end
189
208
  end
190
209
 
191
210
  # Wrapper for Vim style magic comments.
@@ -221,6 +240,9 @@ module RuboCop
221
240
 
222
241
  # Vim comments cannot specify shareable constant values behavior.
223
242
  def shareable_constant_value; end
243
+
244
+ # Vim comments cannot specify Sorbet typechecking behavior.
245
+ def extract_typed; end
224
246
  end
225
247
 
226
248
  # Wrapper for regular magic comments not bound to an editor.
@@ -259,7 +281,7 @@ module RuboCop
259
281
  # is the only text in the comment.
260
282
  #
261
283
  # Case-insensitive and dashes/underscores are acceptable.
262
- # @see https://git.io/vM7Mg
284
+ # @see https://github.com/ruby/ruby/blob/78b95b4/parse.y#L7134-L7138
263
285
  def extract_frozen_string_literal
264
286
  extract(/\A\s*#\s*#{KEYWORDS[:frozen_string_literal]}:\s*(#{TOKEN})\s*\z/io)
265
287
  end
@@ -267,6 +289,10 @@ module RuboCop
267
289
  def extract_shareable_constant_value
268
290
  extract(/\A\s*#\s*#{KEYWORDS[:shareable_constant_value]}:\s*(#{TOKEN})\s*\z/io)
269
291
  end
292
+
293
+ def extract_typed
294
+ extract(/\A\s*#\s*#{KEYWORDS[:typed]}:\s*(#{TOKEN})\s*\z/io)
295
+ end
270
296
  end
271
297
  end
272
298
  end
@@ -63,6 +63,7 @@ module RuboCop
63
63
 
64
64
  add_check_options(opts)
65
65
  add_cache_options(opts)
66
+ add_server_options(opts)
66
67
  add_output_options(opts)
67
68
  add_autocorrection_options(opts)
68
69
  add_config_generation_options(opts)
@@ -80,7 +81,7 @@ module RuboCop
80
81
  option(opts, '-x', '--fix-layout') do
81
82
  @options[:only] ||= []
82
83
  @options[:only] << 'Layout'
83
- @options[:auto_correct] = true
84
+ @options[:autocorrect] = true
84
85
  end
85
86
  option(opts, '--safe')
86
87
  add_cop_selection_csv_option('except', opts)
@@ -93,6 +94,7 @@ module RuboCop
93
94
  option(opts, '--force-exclusion')
94
95
  option(opts, '--only-recognized-file-types')
95
96
  option(opts, '--ignore-parent-exclusion')
97
+ option(opts, '--ignore-unrecognized-cops')
96
98
  option(opts, '--force-default-config')
97
99
  option(opts, '-s', '--stdin FILE')
98
100
  option(opts, '-P', '--[no-]parallel')
@@ -123,20 +125,40 @@ module RuboCop
123
125
  option(opts, '--display-time')
124
126
  option(opts, '--display-only-failed')
125
127
  option(opts, '--display-only-fail-level-offenses')
128
+ option(opts, '--display-only-correctable')
129
+ option(opts, '--display-only-safe-correctable')
126
130
  end
127
131
  end
128
132
 
129
- def add_autocorrection_options(opts)
130
- section(opts, 'Auto-correction') do
131
- option(opts, '-a', '--auto-correct') { @options[:safe_auto_correct] = true }
133
+ # rubocop:todo Naming/InclusiveLanguage
134
+ # the autocorrect command-line arguments map to the autocorrect @options values like so:
135
+ # :fix_layout :autocorrect :safe_autocorrect :autocorrect_all
136
+ # -x, --fix-layout true true - -
137
+ # -a, --auto-correct - true true -
138
+ # --safe-auto-correct - true true -
139
+ # -A, --auto-correct-all - true - true
140
+ def add_autocorrection_options(opts) # rubocop:disable Metrics/MethodLength
141
+ section(opts, 'Autocorrection') do
142
+ option(opts, '-a', '--autocorrect') { @options[:safe_autocorrect] = true }
143
+ option(opts, '--auto-correct') do
144
+ handle_deprecated_option('--auto-correct', '--autocorrect')
145
+ @options[:safe_autocorrect] = true
146
+ end
132
147
  option(opts, '--safe-auto-correct') do
133
- warn '--safe-auto-correct is deprecated; use --auto-correct'
134
- @options[:safe_auto_correct] = @options[:auto_correct] = true
148
+ handle_deprecated_option('--safe-auto-correct', '--autocorrect')
149
+ @options[:safe_autocorrect] = true
150
+ end
151
+
152
+ option(opts, '-A', '--autocorrect-all') { @options[:autocorrect] = true }
153
+ option(opts, '--auto-correct-all') do
154
+ handle_deprecated_option('--auto-correct-all', '--autocorrect-all')
155
+ @options[:autocorrect] = true
135
156
  end
136
- option(opts, '-A', '--auto-correct-all') { @options[:auto_correct] = true }
157
+
137
158
  option(opts, '--disable-uncorrectable')
138
159
  end
139
160
  end
161
+ # rubocop:enable Naming/InclusiveLanguage
140
162
 
141
163
  def add_config_generation_options(opts)
142
164
  section(opts, 'Config Generation') do
@@ -182,6 +204,16 @@ module RuboCop
182
204
  end
183
205
  end
184
206
 
207
+ def add_server_options(opts)
208
+ section(opts, 'Server Options') do
209
+ option(opts, '--[no-]server')
210
+ option(opts, '--restart-server')
211
+ option(opts, '--start-server')
212
+ option(opts, '--stop-server')
213
+ option(opts, '--server-status')
214
+ end
215
+ end
216
+
185
217
  def add_additional_modes(opts)
186
218
  section(opts, 'Additional Modes') do
187
219
  option(opts, '-L', '--list-target-files')
@@ -206,6 +238,11 @@ module RuboCop
206
238
  end
207
239
  end
208
240
 
241
+ def handle_deprecated_option(old_option, new_option)
242
+ warn rainbow.wrap("#{old_option} is deprecated; use #{new_option} instead.").yellow
243
+ @options[long_opt_symbol([new_option])] = @options.delete(long_opt_symbol([old_option]))
244
+ end
245
+
209
246
  def rainbow
210
247
  @rainbow ||= begin
211
248
  rainbow = Rainbow.new
@@ -234,10 +271,10 @@ module RuboCop
234
271
  end
235
272
 
236
273
  # Finds the option in `args` starting with -- and converts it to a symbol,
237
- # e.g. [..., '--auto-correct', ...] to :auto_correct.
274
+ # e.g. [..., '--autocorrect', ...] to :autocorrect.
238
275
  def long_opt_symbol(args)
239
276
  long_opt = args.find { |arg| arg.start_with?('--') }
240
- long_opt[2..-1].sub('[no-]', '').sub(/ .*/, '').tr('-', '_').gsub(/[\[\]]/, '').to_sym
277
+ long_opt[2..].sub('[no-]', '').sub(/ .*/, '').tr('-', '_').gsub(/[\[\]]/, '').to_sym
241
278
  end
242
279
 
243
280
  def require_feature(file)
@@ -308,11 +345,13 @@ module RuboCop
308
345
 
309
346
  if display_only_fail_level_offenses_with_autocorrect?
310
347
  raise OptionArgumentError, '--autocorrect cannot be used with ' \
311
- '--display-only-fail-level-offenses'
348
+ '--display-only-fail-level-offenses.'
312
349
  end
313
350
  validate_auto_gen_config
314
- validate_auto_correct
351
+ validate_autocorrect
315
352
  validate_display_only_failed
353
+ validate_display_only_failed_and_display_only_correctable
354
+ validate_display_only_correctable_and_autocorrect
316
355
  disable_parallel_when_invalid_option_combo
317
356
 
318
357
  return if incompatible_options.size <= 1
@@ -342,35 +381,49 @@ module RuboCop
342
381
  format('--display-only-failed can only be used together with --format junit.')
343
382
  end
344
383
 
345
- def validate_auto_correct
346
- return if @options.key?(:auto_correct)
384
+ def validate_display_only_correctable_and_autocorrect
385
+ return unless @options.key?(:autocorrect)
386
+ return if !@options.key?(:display_only_correctable) &&
387
+ !@options.key?(:display_only_safe_correctable)
388
+
389
+ raise OptionArgumentError,
390
+ '--autocorrect cannot be used with --display-only-[safe-]correctable.'
391
+ end
392
+
393
+ def validate_display_only_failed_and_display_only_correctable
394
+ return unless @options.key?(:display_only_failed)
395
+ return if !@options.key?(:display_only_correctable) &&
396
+ !@options.key?(:display_only_safe_correctable)
397
+
398
+ raise OptionArgumentError,
399
+ format('--display-only-failed cannot be used together with other display options.')
400
+ end
401
+
402
+ def validate_autocorrect
403
+ return if @options.key?(:autocorrect)
347
404
  return unless @options.key?(:disable_uncorrectable)
348
405
 
349
406
  raise OptionArgumentError,
350
- format('--disable-uncorrectable can only be used together with --auto-correct.')
407
+ format('--disable-uncorrectable can only be used together with --autocorrect.')
351
408
  end
352
409
 
353
410
  def disable_parallel_when_invalid_option_combo
354
411
  return unless @options.key?(:parallel)
355
412
 
356
- invalid_options = [
357
- { name: :auto_gen_config, value: true, flag: '--auto-gen-config' },
358
- { name: :fail_fast, value: true, flag: '-F/--fail-fast.' },
359
- { name: :auto_correct, value: true, flag: '--auto-correct.' },
360
- { name: :cache, value: 'false', flag: '--cache false' }
361
- ]
362
-
363
- invalid_flags = invalid_options.each_with_object([]) do |option, flags|
364
- # `>` rather than `>=` because `@options` will also contain `parallel: true`
365
- flags << option[:flag] if @options > { option[:name] => option[:value] }
366
- end
413
+ invalid_flags = invalid_arguments_for_parallel
367
414
 
368
415
  return if invalid_flags.empty?
369
416
 
370
417
  @options.delete(:parallel)
371
418
 
372
419
  puts '-P/--parallel is being ignored because ' \
373
- "it is not compatible with #{invalid_flags.join(', ')}"
420
+ "it is not compatible with #{invalid_flags.join(', ')}."
421
+ end
422
+
423
+ def invalid_arguments_for_parallel
424
+ [('--auto-gen-config' if @options.key?(:auto_gen_config)),
425
+ ('-F/--fail-fast' if @options.key?(:fail_fast)),
426
+ ('--cache false' if @options > { cache: 'false' })].compact
374
427
  end
375
428
 
376
429
  def only_includes_redundant_disable?
@@ -379,7 +432,7 @@ module RuboCop
379
432
  end
380
433
 
381
434
  def display_only_fail_level_offenses_with_autocorrect?
382
- @options[:display_only_fail_level_offenses] && @options[:autocorrect]
435
+ @options.key?(:display_only_fail_level_offenses) && @options.key?(:autocorrect)
383
436
  end
384
437
 
385
438
  def except_syntax?
@@ -405,7 +458,7 @@ module RuboCop
405
458
  def validate_cache_enabled_for_cache_root
406
459
  return unless @options[:cache] == 'false'
407
460
 
408
- raise OptionArgumentError, '--cache-root can not be used with --cache false'
461
+ raise OptionArgumentError, '--cache-root cannot be used with --cache false'
409
462
  end
410
463
  end
411
464
 
@@ -441,7 +494,7 @@ module RuboCop
441
494
  exclude_limit: ['Set the limit for how many files to explicitly exclude.',
442
495
  'If there are more files than the limit, the cop will',
443
496
  "be disabled instead. Default is #{MAX_EXCL}."],
444
- disable_uncorrectable: ['Used with --auto-correct to annotate any',
497
+ disable_uncorrectable: ['Used with --autocorrect to annotate any',
445
498
  'offenses that do not support autocorrect',
446
499
  'with `rubocop:todo` comments.'],
447
500
  force_exclusion: ['Any files excluded by `Exclude` in configuration',
@@ -454,6 +507,7 @@ module RuboCop
454
507
  'by a `rubocop:disable` directive.'],
455
508
  ignore_parent_exclusion: ['Prevent from inheriting `AllCops/Exclude` from',
456
509
  'parent folders.'],
510
+ ignore_unrecognized_cops: ['Ignore unrecognized cops or departments in the config.'],
457
511
  force_default_config: ['Use default configuration even if configuration',
458
512
  'files are present in the directory tree.'],
459
513
  format: ['Choose an output formatter. This option',
@@ -481,6 +535,9 @@ module RuboCop
481
535
  display_only_fail_level_offenses:
482
536
  ['Only output offense messages at',
483
537
  'the specified --fail-level or above'],
538
+ display_only_correctable: ['Only output correctable offense messages.'],
539
+ display_only_safe_correctable: ['Only output safe-correctable offense messages',
540
+ 'when combined with --display-only-correctable.'],
484
541
  show_cops: ['Shows the given cops, or all cops by',
485
542
  'default, and their configurations for the',
486
543
  'current directory.'],
@@ -507,12 +564,14 @@ module RuboCop
507
564
  safe: 'Run only safe cops.',
508
565
  stderr: ['Write all output to stderr except for the',
509
566
  'autocorrected source. This is especially useful',
510
- 'when combined with --auto-correct and --stdin.'],
567
+ 'when combined with --autocorrect and --stdin.'],
511
568
  list_target_files: 'List all files RuboCop will inspect.',
512
- auto_correct: 'Auto-correct offenses (only when it\'s safe).',
569
+ autocorrect: 'Autocorrect offenses (only when it\'s safe).',
570
+ auto_correct: '(same, deprecated)',
513
571
  safe_auto_correct: '(same, deprecated)',
514
- auto_correct_all: 'Auto-correct offenses (safe and unsafe)',
515
- fix_layout: 'Run only layout cops, with auto-correct on.',
572
+ autocorrect_all: 'Autocorrect offenses (safe and unsafe).',
573
+ auto_correct_all: '(same, deprecated)',
574
+ fix_layout: 'Run only layout cops, with autocorrect on.',
516
575
  color: 'Force color output on or off.',
517
576
  version: 'Display version.',
518
577
  verbose_version: 'Display verbose version.',
@@ -520,7 +579,17 @@ module RuboCop
520
579
  'parallel. Default is true.'],
521
580
  stdin: ['Pipe source from STDIN, using FILE in offense',
522
581
  'reports. This is useful for editor integration.'],
523
- init: 'Generate a .rubocop.yml file in the current directory.'
582
+ init: 'Generate a .rubocop.yml file in the current directory.',
583
+ server: ['If a server process has not been started yet, start',
584
+ 'the server process and execute inspection with server.',
585
+ 'Default is false.',
586
+ 'You can specify the server host and port with the',
587
+ '$RUBOCOP_SERVER_HOST and the $RUBOCOP_SERVER_PORT',
588
+ 'environment variables.'],
589
+ restart_server: 'Restart server process.',
590
+ start_server: 'Start server process.',
591
+ stop_server: 'Stop server process.',
592
+ server_status: 'Show server status.'
524
593
  }.freeze
525
594
  end
526
595
  end
@@ -32,6 +32,15 @@ module RuboCop
32
32
 
33
33
  private
34
34
 
35
+ def perform(option)
36
+ options = full_options.unshift(option)
37
+ # `parallel` will automatically be removed from the options internally.
38
+ # This is a nice to have to suppress the warning message
39
+ # about --parallel and --autocorrect not being compatible.
40
+ options.delete('--parallel')
41
+ run_cli(verbose, options)
42
+ end
43
+
35
44
  def run_cli(verbose, options)
36
45
  # We lazy-load RuboCop so that the task doesn't dramatically impact the
37
46
  # load time of your Rakefile.
@@ -60,19 +69,35 @@ module RuboCop
60
69
  @formatters = []
61
70
  end
62
71
 
63
- def setup_subtasks(name, *args, &task_block)
72
+ def setup_subtasks(name, *args, &task_block) # rubocop:disable Metrics/AbcSize, Metrics/MethodLength
64
73
  namespace(name) do
65
- desc 'Auto-correct RuboCop offenses'
74
+ # rubocop:todo Naming/InclusiveLanguage
75
+ task(:auto_correct, *args) do
76
+ require 'rainbow'
77
+ warn Rainbow(
78
+ 'rubocop:auto_correct task is deprecated; ' \
79
+ 'use rubocop:autocorrect task or rubocop:autocorrect_all task instead.'
80
+ ).yellow
81
+ RakeFileUtils.verbose(verbose) do
82
+ yield(*[self, task_args].slice(0, task_block.arity)) if task_block
83
+ perform('--autocorrect')
84
+ end
85
+ end
86
+ # rubocop:enable Naming/InclusiveLanguage
87
+
88
+ desc "Autocorrect RuboCop offenses (only when it's safe)."
89
+ task(:autocorrect, *args) do |_, task_args|
90
+ RakeFileUtils.verbose(verbose) do
91
+ yield(*[self, task_args].slice(0, task_block.arity)) if task_block
92
+ perform('--autocorrect')
93
+ end
94
+ end
66
95
 
67
- task(:auto_correct, *args) do |_, task_args|
96
+ desc 'Autocorrect RuboCop offenses (safe and unsafe).'
97
+ task(:autocorrect_all, *args) do |_, task_args|
68
98
  RakeFileUtils.verbose(verbose) do
69
99
  yield(*[self, task_args].slice(0, task_block.arity)) if task_block
70
- options = full_options.unshift('--auto-correct-all')
71
- # `parallel` will automatically be removed from the options internally.
72
- # This is a nice to have to suppress the warning message
73
- # about parallel and auto-correct not being compatible.
74
- options.delete('--parallel')
75
- run_cli(verbose, options)
100
+ perform('--autocorrect-all')
76
101
  end
77
102
  end
78
103
  end
@@ -9,7 +9,8 @@ module RuboCop
9
9
  # Provides functionality for caching RuboCop runs.
10
10
  # @api private
11
11
  class ResultCache
12
- NON_CHANGING = %i[color format formatters out debug fail_level auto_correct
12
+ NON_CHANGING = %i[color format formatters out debug fail_level
13
+ fix_layout autocorrect safe_autocorrect autocorrect_all
13
14
  cache fail_fast stdin parallel].freeze
14
15
 
15
16
  # Remove old files so that the cache doesn't grow too big. When the
@@ -66,14 +67,22 @@ module RuboCop
66
67
  end
67
68
 
68
69
  def self.cache_root(config_store)
69
- root = ENV['RUBOCOP_CACHE_ROOT']
70
+ root = ENV.fetch('RUBOCOP_CACHE_ROOT', nil)
70
71
  root ||= config_store.for_pwd.for_all_cops['CacheRootDirectory']
71
72
  root ||= if ENV.key?('XDG_CACHE_HOME')
72
73
  # Include user ID in the path to make sure the user has write
73
74
  # access.
74
- File.join(ENV['XDG_CACHE_HOME'], Process.uid.to_s)
75
+ File.join(ENV.fetch('XDG_CACHE_HOME'), Process.uid.to_s)
75
76
  else
76
- File.join(ENV['HOME'], '.cache')
77
+ # On FreeBSD, the /home path is a symbolic link to /usr/home
78
+ # and the $HOME environment variable returns the /home path.
79
+ #
80
+ # As $HOME is a built-in environment variable, FreeBSD users
81
+ # always get a warning message.
82
+ #
83
+ # To avoid raising warn log messages on FreeBSD, we retrieve
84
+ # the real path of the home folder.
85
+ File.join(File.realpath(Dir.home), '.cache')
77
86
  end
78
87
  File.join(root, 'rubocop_cache')
79
88
  end
@@ -6,7 +6,7 @@ require 'tempfile'
6
6
  module CopHelper
7
7
  extend RSpec::SharedContext
8
8
 
9
- let(:ruby_version) { 2.5 }
9
+ let(:ruby_version) { 2.6 }
10
10
  let(:rails_version) { false }
11
11
 
12
12
  def inspect_source(source, file = nil)
@@ -38,7 +38,7 @@ module CopHelper
38
38
  def autocorrect_source(source, file = nil)
39
39
  RuboCop::Formatter::DisabledConfigFormatter.config_to_allow_offenses = {}
40
40
  RuboCop::Formatter::DisabledConfigFormatter.detected_styles = {}
41
- cop.instance_variable_get(:@options)[:auto_correct] = true
41
+ cop.instance_variable_get(:@options)[:autocorrect] = true
42
42
  processed_source = parse_source(source, file)
43
43
  _investigate(cop, processed_source)
44
44
 
@@ -38,7 +38,7 @@ module RuboCop
38
38
  # 'Avoid chaining a method call on a do...end block.'
39
39
  # )
40
40
  #
41
- # Auto-correction can be tested using `expect_correction` after
41
+ # Autocorrection can be tested using `expect_correction` after
42
42
  # `expect_offense`.
43
43
  #
44
44
  # @example `expect_offense` and `expect_correction`
@@ -58,7 +58,7 @@ module RuboCop
58
58
  # that there were no offenses. The `expect_offense` method has
59
59
  # to do more work by parsing out lines that contain carets.
60
60
  #
61
- # If the code produces an offense that could not be auto-corrected, you can
61
+ # If the code produces an offense that could not be autocorrected, you can
62
62
  # use `expect_no_corrections` after `expect_offense`.
63
63
  #
64
64
  # @example `expect_offense` and `expect_no_corrections`
@@ -205,7 +205,7 @@ module RuboCop
205
205
  def set_formatter_options
206
206
  RuboCop::Formatter::DisabledConfigFormatter.config_to_allow_offenses = {}
207
207
  RuboCop::Formatter::DisabledConfigFormatter.detected_styles = {}
208
- cop.instance_variable_get(:@options)[:auto_correct] = true
208
+ cop.instance_variable_get(:@options)[:autocorrect] = true
209
209
  end
210
210
 
211
211
  # Parsed representation of code annotated with the `^^^ Message` style
@@ -65,7 +65,7 @@ module RuboCop
65
65
  # removed!
66
66
  def output_rerun_commands(summary)
67
67
  output.puts '# RERUN BEGIN'
68
- output.puts summary.colorized_rerun_commands.lines[3..-1].join
68
+ output.puts summary.colorized_rerun_commands.lines[3..].join
69
69
  output.puts '# RERUN END'
70
70
  end
71
71