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
@@ -0,0 +1,79 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'socket'
4
+ require 'securerandom'
5
+
6
+ #
7
+ # This code is based on https://github.com/fohte/rubocop-daemon.
8
+ #
9
+ # Copyright (c) 2018 Hayato Kawai
10
+ #
11
+ # The MIT License (MIT)
12
+ #
13
+ # https://github.com/fohte/rubocop-daemon/blob/master/LICENSE.txt
14
+ #
15
+ module RuboCop
16
+ module Server
17
+ # The core of server process. It starts TCP server and perform socket communication.
18
+ # @api private
19
+ class Core
20
+ def self.token
21
+ @token ||= SecureRandom.hex(4)
22
+ end
23
+
24
+ def token
25
+ self.class.token
26
+ end
27
+
28
+ def start(host, port)
29
+ $PROGRAM_NAME = "rubocop --server #{Cache.project_dir}"
30
+
31
+ require 'rubocop'
32
+ start_server(host, port)
33
+
34
+ demonize if server_mode?
35
+ end
36
+
37
+ private
38
+
39
+ def demonize
40
+ Cache.write_port_and_token_files(port: @server.addr[1], token: token)
41
+
42
+ pid = fork do
43
+ Process.daemon(true)
44
+ Cache.write_pid_file do
45
+ read_socket(@server.accept) until @server.closed?
46
+ end
47
+ end
48
+
49
+ Process.waitpid(pid)
50
+ end
51
+
52
+ def server_mode?
53
+ true
54
+ end
55
+
56
+ def start_server(host, port)
57
+ @server = TCPServer.open(host, port)
58
+
59
+ puts "RuboCop server starting on #{@server.addr[3]}:#{@server.addr[1]}."
60
+ end
61
+
62
+ def read_socket(socket)
63
+ SocketReader.new(socket).read!
64
+ rescue InvalidTokenError
65
+ socket.puts 'token is not valid.'
66
+ rescue ServerStopRequest
67
+ @server.close
68
+ rescue UnknownServerCommandError => e
69
+ socket.puts e.message
70
+ rescue Errno::EPIPE => e
71
+ warn e.inspect
72
+ rescue StandardError => e
73
+ socket.puts e.full_message
74
+ ensure
75
+ socket.close
76
+ end
77
+ end
78
+ end
79
+ end
@@ -0,0 +1,23 @@
1
+ # frozen_string_literal: true
2
+
3
+ #
4
+ # This code is based on https://github.com/fohte/rubocop-daemon.
5
+ #
6
+ # Copyright (c) 2018 Hayato Kawai
7
+ #
8
+ # The MIT License (MIT)
9
+ #
10
+ # https://github.com/fohte/rubocop-daemon/blob/master/LICENSE.txt
11
+ #
12
+ module RuboCop
13
+ module Server
14
+ # @api private
15
+ class InvalidTokenError < StandardError; end
16
+
17
+ # @api private
18
+ class ServerStopRequest < StandardError; end
19
+
20
+ # @api private
21
+ class UnknownServerCommandError < StandardError; end
22
+ end
23
+ end
@@ -0,0 +1,34 @@
1
+ # frozen_string_literal: true
2
+
3
+ #
4
+ # This code is based on https://github.com/fohte/rubocop-daemon.
5
+ #
6
+ # Copyright (c) 2018 Hayato Kawai
7
+ #
8
+ # The MIT License (MIT)
9
+ #
10
+ # https://github.com/fohte/rubocop-daemon/blob/master/LICENSE.txt
11
+ #
12
+ module RuboCop
13
+ module Server
14
+ # This module has a helper memthod for `RuboCop::Server::SocketReader`.
15
+ # @api private
16
+ module Helper
17
+ def self.redirect(stdin: $stdin, stdout: $stdout, stderr: $stderr, &_block)
18
+ old_stdin = $stdin.dup
19
+ old_stdout = $stdout.dup
20
+ old_stderr = $stderr.dup
21
+
22
+ $stdin = stdin
23
+ $stdout = stdout
24
+ $stderr = stderr
25
+
26
+ yield
27
+ ensure
28
+ $stdin = old_stdin
29
+ $stdout = old_stdout
30
+ $stderr = old_stderr
31
+ end
32
+ end
33
+ end
34
+ end
@@ -0,0 +1,50 @@
1
+ # frozen_string_literal: true
2
+
3
+ #
4
+ # This code is based on https://github.com/fohte/rubocop-daemon.
5
+ #
6
+ # Copyright (c) 2018 Hayato Kawai
7
+ #
8
+ # The MIT License (MIT)
9
+ #
10
+ # https://github.com/fohte/rubocop-daemon/blob/master/LICENSE.txt
11
+ #
12
+ module RuboCop
13
+ module Server
14
+ module ServerCommand
15
+ # Abstract base class for server command.
16
+ # @api private
17
+ class Base
18
+ # Common functionality for working with subclasses of this class.
19
+ # @api private
20
+ module Runner
21
+ def run
22
+ validate_token!
23
+ Dir.chdir(@cwd) do
24
+ super
25
+ end
26
+ end
27
+ end
28
+
29
+ def self.inherited(child)
30
+ super
31
+ child.prepend Runner
32
+ end
33
+
34
+ def initialize(args, token: '', cwd: Dir.pwd)
35
+ @args = args
36
+ @token = token
37
+ @cwd = cwd
38
+ end
39
+
40
+ def run; end
41
+
42
+ private
43
+
44
+ def validate_token!
45
+ raise InvalidTokenError unless Cache.token_path.read == @token
46
+ end
47
+ end
48
+ end
49
+ end
50
+ end
@@ -0,0 +1,34 @@
1
+ # frozen_string_literal: true
2
+
3
+ #
4
+ # This code is based on https://github.com/fohte/rubocop-daemon.
5
+ #
6
+ # Copyright (c) 2018 Hayato Kawai
7
+ #
8
+ # The MIT License (MIT)
9
+ #
10
+ # https://github.com/fohte/rubocop-daemon/blob/master/LICENSE.txt
11
+ #
12
+ module RuboCop
13
+ module Server
14
+ module ServerCommand
15
+ # This class is a server command to execute `rubocop` command using `RuboCop::CLI.new#run`.
16
+ # @api private
17
+ class Exec < Base
18
+ def run
19
+ Cache.status_path.delete if Cache.status_path.file?
20
+ # RuboCop output is colorized by default where there is a TTY.
21
+ # We must pass the --color option to preserve this behavior.
22
+ @args.unshift('--color') unless %w[--color --no-color].any? { |f| @args.include?(f) }
23
+ status = RuboCop::CLI.new.run(@args)
24
+ # This status file is read by `rubocop --server` (`RuboCop::Server::Clientcommand::Exec`).
25
+ # so that they use the correct exit code.
26
+ # Status is 1 when there are any issues, and 0 otherwise.
27
+ Cache.write_status_file(status)
28
+ rescue SystemExit
29
+ Cache.write_status_file(1)
30
+ end
31
+ end
32
+ end
33
+ end
34
+ end
@@ -0,0 +1,24 @@
1
+ # frozen_string_literal: true
2
+
3
+ #
4
+ # This code is based on https://github.com/fohte/rubocop-daemon.
5
+ #
6
+ # Copyright (c) 2018 Hayato Kawai
7
+ #
8
+ # The MIT License (MIT)
9
+ #
10
+ # https://github.com/fohte/rubocop-daemon/blob/master/LICENSE.txt
11
+ #
12
+ module RuboCop
13
+ module Server
14
+ module ServerCommand
15
+ # This class is a server command to stop server process.
16
+ # @api private
17
+ class Stop < Base
18
+ def run
19
+ raise ServerStopRequest
20
+ end
21
+ end
22
+ end
23
+ end
24
+ end
@@ -0,0 +1,21 @@
1
+ # frozen_string_literal: true
2
+
3
+ #
4
+ # This code is based on https://github.com/fohte/rubocop-daemon.
5
+ #
6
+ # Copyright (c) 2018 Hayato Kawai
7
+ #
8
+ # The MIT License (MIT)
9
+ #
10
+ # https://github.com/fohte/rubocop-daemon/blob/master/LICENSE.txt
11
+ #
12
+ module RuboCop
13
+ module Server
14
+ # @api private
15
+ module ServerCommand
16
+ autoload :Base, 'rubocop/server/server_command/base'
17
+ autoload :Exec, 'rubocop/server/server_command/exec'
18
+ autoload :Stop, 'rubocop/server/server_command/stop'
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,65 @@
1
+ # frozen_string_literal: true
2
+
3
+ #
4
+ # This code is based on https://github.com/fohte/rubocop-daemon.
5
+ #
6
+ # Copyright (c) 2018 Hayato Kawai
7
+ #
8
+ # The MIT License (MIT)
9
+ #
10
+ # https://github.com/fohte/rubocop-daemon/blob/master/LICENSE.txt
11
+ #
12
+ module RuboCop
13
+ module Server
14
+ # This class sends the request read from the socket to server.
15
+ # @api private
16
+ class SocketReader
17
+ Request = Struct.new(:header, :body)
18
+ Header = Struct.new(:token, :cwd, :command, :args)
19
+
20
+ def initialize(socket)
21
+ @socket = socket
22
+ end
23
+
24
+ def read!
25
+ request = parse_request(@socket.read)
26
+
27
+ Helper.redirect(
28
+ stdin: StringIO.new(request.body),
29
+ stdout: @socket,
30
+ stderr: @socket
31
+ ) do
32
+ create_command_instance(request).run
33
+ end
34
+ end
35
+
36
+ private
37
+
38
+ def parse_request(content)
39
+ raw_header, *body = content.lines
40
+
41
+ Request.new(parse_header(raw_header), body.join)
42
+ end
43
+
44
+ def parse_header(header)
45
+ token, cwd, command, *args = header.shellsplit
46
+ Header.new(token, cwd, command, args)
47
+ end
48
+
49
+ def create_command_instance(request)
50
+ klass = find_command_class(request.header.command)
51
+
52
+ klass.new(request.header.args, token: request.header.token, cwd: request.header.cwd)
53
+ end
54
+
55
+ def find_command_class(command)
56
+ case command
57
+ when 'stop' then ServerCommand::Stop
58
+ when 'exec' then ServerCommand::Exec
59
+ else
60
+ raise UnknownServerCommandError, "#{command.inspect} is not a valid command"
61
+ end
62
+ end
63
+ end
64
+ end
65
+ end
@@ -0,0 +1,53 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative 'platform'
4
+
5
+ #
6
+ # This code is based on https://github.com/fohte/rubocop-daemon.
7
+ #
8
+ # Copyright (c) 2018 Hayato Kawai
9
+ #
10
+ # The MIT License (MIT)
11
+ #
12
+ # https://github.com/fohte/rubocop-daemon/blob/master/LICENSE.txt
13
+ #
14
+ module RuboCop
15
+ # The bootstrap module for server.
16
+ # @api private
17
+ module Server
18
+ TIMEOUT = 20
19
+
20
+ autoload :CLI, 'rubocop/server/cli'
21
+ autoload :Cache, 'rubocop/server/cache'
22
+ autoload :ClientCommand, 'rubocop/server/client_command'
23
+ autoload :Helper, 'rubocop/server/helper'
24
+ autoload :Core, 'rubocop/server/core'
25
+ autoload :ServerCommand, 'rubocop/server/server_command'
26
+ autoload :SocketReader, 'rubocop/server/socket_reader'
27
+
28
+ class << self
29
+ def support_server?
30
+ RUBY_ENGINE == 'ruby' && !RuboCop::Platform.windows?
31
+ end
32
+
33
+ def running?
34
+ return false unless support_server? # Never running.
35
+
36
+ Cache.dir.exist? && Cache.pid_path.file? && Cache.pid_running?
37
+ end
38
+
39
+ def wait_for_running_status!(expected)
40
+ start_time = Time.now
41
+ while Server.running? != expected
42
+ sleep 0.1
43
+ next unless Time.now - start_time > TIMEOUT
44
+
45
+ warn "running? was not #{expected} after #{TIMEOUT} seconds!"
46
+ exit 1
47
+ end
48
+ end
49
+ end
50
+ end
51
+ end
52
+
53
+ require_relative 'server/errors'
@@ -42,18 +42,18 @@ module RuboCop
42
42
 
43
43
  def interpret_unicode(escape)
44
44
  if escape[2] == '{'
45
- escape[3..-1].split(/\s+/).map(&:hex).pack('U*')
45
+ escape[3..].split(/\s+/).map(&:hex).pack('U*')
46
46
  else
47
- [escape[2..-1].hex].pack('U')
47
+ [escape[2..].hex].pack('U')
48
48
  end
49
49
  end
50
50
 
51
51
  def interpret_hex(escape)
52
- [escape[2..-1].hex].pack('C')
52
+ [escape[2..].hex].pack('C')
53
53
  end
54
54
 
55
55
  def interpret_octal(escape)
56
- [escape[1..-1].to_i(8)].pack('C')
56
+ [escape[1..].to_i(8)].pack('C')
57
57
  end
58
58
  end
59
59
  end
@@ -4,11 +4,17 @@ module RuboCop
4
4
  # The kind of Ruby that code inspected by RuboCop is written in.
5
5
  # @api private
6
6
  class TargetRuby
7
- KNOWN_RUBIES = [2.5, 2.6, 2.7, 3.0, 3.1, 3.2].freeze
8
- DEFAULT_VERSION = KNOWN_RUBIES.first
7
+ KNOWN_RUBIES = [2.0, 2.1, 2.2, 2.3, 2.4, 2.5, 2.6, 2.7, 3.0, 3.1, 3.2].freeze
8
+ DEFAULT_VERSION = 2.6
9
9
 
10
10
  OBSOLETE_RUBIES = {
11
- 1.9 => '0.41', 2.0 => '0.50', 2.1 => '0.57', 2.2 => '0.68', 2.3 => '0.81', 2.4 => '1.12'
11
+ 1.9 => '0.41',
12
+ 2.0 => '0.50',
13
+ 2.1 => '0.57',
14
+ 2.2 => '0.68',
15
+ 2.3 => '0.81',
16
+ 2.4 => '1.12',
17
+ 2.5 => '1.28'
12
18
  }.freeze
13
19
  private_constant :KNOWN_RUBIES, :OBSOLETE_RUBIES
14
20
 
@@ -166,7 +172,7 @@ module RuboCop
166
172
  right_hand_side = version_from_gemspec_file(file)
167
173
  return if right_hand_side.nil?
168
174
 
169
- find_minimal_known_ruby(right_hand_side)
175
+ find_default_minimal_known_ruby(right_hand_side)
170
176
  end
171
177
 
172
178
  def gemspec_filename
@@ -200,11 +206,13 @@ module RuboCop
200
206
  array.children.map(&:value)
201
207
  end
202
208
 
203
- def find_minimal_known_ruby(right_hand_side)
209
+ def find_default_minimal_known_ruby(right_hand_side)
204
210
  version = version_from_right_hand_side(right_hand_side)
205
211
  requirement = Gem::Requirement.new(version)
206
212
 
207
- KNOWN_RUBIES.detect { |v| requirement.satisfied_by?(Gem::Version.new("#{v}.99")) }
213
+ KNOWN_RUBIES.detect do |v|
214
+ v >= DEFAULT_VERSION && requirement.satisfied_by?(Gem::Version.new("#{v}.99"))
215
+ end
208
216
  end
209
217
  end
210
218
 
@@ -3,13 +3,15 @@
3
3
  module RuboCop
4
4
  # This module holds the RuboCop version information.
5
5
  module Version
6
- STRING = '1.26.1'
6
+ STRING = '1.32.0'
7
7
 
8
- MSG = '%<version>s (using Parser %<parser_version>s, '\
8
+ MSG = '%<version>s (using Parser %<parser_version>s, ' \
9
9
  'rubocop-ast %<rubocop_ast_version>s, ' \
10
10
  'running on %<ruby_engine>s %<ruby_version>s %<ruby_platform>s)'
11
11
 
12
- CANONICAL_FEATURE_NAMES = { 'Rspec' => 'RSpec' }.freeze
12
+ CANONICAL_FEATURE_NAMES = { 'Rspec' => 'RSpec', 'Graphql' => 'GraphQL', 'Md' => 'Markdown',
13
+ 'Thread_safety' => 'ThreadSafety' }.freeze
14
+ EXTENSION_PATH_NAMES = { 'rubocop-md' => 'markdown' }.freeze
13
15
 
14
16
  # @api private
15
17
  def self.version(debug: false, env: nil)
@@ -43,16 +45,21 @@ module RuboCop
43
45
  features.map do |loaded_feature|
44
46
  next unless (match = loaded_feature.match(/rubocop-(?<feature>.*)/))
45
47
 
46
- feature = match[:feature]
48
+ # Get the expected name of the folder containing the extension code.
49
+ # Usually it would be the same as the extension name. but sometimes authors
50
+ # can choose slightly different name for their gems, e.g. rubocop-md instead of
51
+ # rubocop-markdown.
52
+ feature = EXTENSION_PATH_NAMES.fetch(loaded_feature, match[:feature])
53
+
47
54
  begin
48
55
  require "rubocop/#{feature}/version"
49
56
  rescue LoadError
50
57
  # Not worth mentioning libs that are not installed
51
- else
52
- next unless (feature_version = feature_version(feature))
53
-
54
- " - #{loaded_feature} #{feature_version}"
55
58
  end
59
+
60
+ next unless (feature_version = feature_version(feature))
61
+
62
+ " - #{loaded_feature} #{feature_version}"
56
63
  end.compact
57
64
  end
58
65
 
data/lib/rubocop.rb CHANGED
@@ -62,7 +62,8 @@ require_relative 'rubocop/cop/mixin/array_syntax'
62
62
  require_relative 'rubocop/cop/mixin/alignment'
63
63
  require_relative 'rubocop/cop/mixin/allowed_identifiers'
64
64
  require_relative 'rubocop/cop/mixin/allowed_methods'
65
- require_relative 'rubocop/cop/mixin/auto_corrector'
65
+ require_relative 'rubocop/cop/mixin/allowed_pattern'
66
+ require_relative 'rubocop/cop/mixin/auto_corrector' # rubocop:todo Naming/InclusiveLanguage
66
67
  require_relative 'rubocop/cop/mixin/check_assignment'
67
68
  require_relative 'rubocop/cop/mixin/check_line_breakable'
68
69
  require_relative 'rubocop/cop/mixin/configurable_max'
@@ -71,7 +72,6 @@ require_relative 'rubocop/cop/mixin/configurable_enforced_style'
71
72
  require_relative 'rubocop/cop/mixin/configurable_formatting'
72
73
  require_relative 'rubocop/cop/mixin/configurable_naming'
73
74
  require_relative 'rubocop/cop/mixin/configurable_numbering'
74
- require_relative 'rubocop/cop/mixin/def_node'
75
75
  require_relative 'rubocop/cop/mixin/documentation_comment'
76
76
  require_relative 'rubocop/cop/mixin/duplication'
77
77
  require_relative 'rubocop/cop/mixin/range_help'
@@ -86,7 +86,6 @@ require_relative 'rubocop/cop/mixin/gem_declaration'
86
86
  require_relative 'rubocop/cop/mixin/gemspec_help'
87
87
  require_relative 'rubocop/cop/mixin/hash_alignment_styles'
88
88
  require_relative 'rubocop/cop/mixin/hash_transform_method'
89
- require_relative 'rubocop/cop/mixin/ignored_pattern'
90
89
  require_relative 'rubocop/cop/mixin/ignored_methods'
91
90
  require_relative 'rubocop/cop/mixin/integer_node'
92
91
  require_relative 'rubocop/cop/mixin/interpolation'
@@ -130,6 +129,7 @@ require_relative 'rubocop/cop/mixin/uncommunicative_name'
130
129
  require_relative 'rubocop/cop/mixin/unused_argument'
131
130
  require_relative 'rubocop/cop/mixin/visibility_help'
132
131
  require_relative 'rubocop/cop/mixin/comments_help' # relies on visibility_help
132
+ require_relative 'rubocop/cop/mixin/def_node' # relies on visibility_help
133
133
 
134
134
  require_relative 'rubocop/cop/utils/format_string'
135
135
 
@@ -160,7 +160,8 @@ require_relative 'rubocop/cop/bundler/gem_version'
160
160
  require_relative 'rubocop/cop/bundler/insecure_protocol_source'
161
161
  require_relative 'rubocop/cop/bundler/ordered_gems'
162
162
 
163
- require_relative 'rubocop/cop/gemspec/date_assignment'
163
+ require_relative 'rubocop/cop/gemspec/dependency_version'
164
+ require_relative 'rubocop/cop/gemspec/deprecated_attribute_assignment'
164
165
  require_relative 'rubocop/cop/gemspec/duplicated_assignment'
165
166
  require_relative 'rubocop/cop/gemspec/ordered_dependencies'
166
167
  require_relative 'rubocop/cop/gemspec/require_mfa'
@@ -218,6 +219,8 @@ require_relative 'rubocop/cop/layout/indentation_width'
218
219
  require_relative 'rubocop/cop/layout/initial_indentation'
219
220
  require_relative 'rubocop/cop/layout/leading_comment_space'
220
221
  require_relative 'rubocop/cop/layout/leading_empty_lines'
222
+ require_relative 'rubocop/cop/layout/line_continuation_leading_space'
223
+ require_relative 'rubocop/cop/layout/line_continuation_spacing'
221
224
  require_relative 'rubocop/cop/layout/line_end_string_concatenation_indentation'
222
225
  require_relative 'rubocop/cop/layout/line_length'
223
226
  require_relative 'rubocop/cop/layout/multiline_array_brace_layout'
@@ -230,6 +233,7 @@ require_relative 'rubocop/cop/layout/multiline_method_argument_line_breaks'
230
233
  require_relative 'rubocop/cop/layout/multiline_method_call_brace_layout'
231
234
  require_relative 'rubocop/cop/layout/multiline_method_call_indentation'
232
235
  require_relative 'rubocop/cop/layout/multiline_method_definition_brace_layout'
236
+ require_relative 'rubocop/cop/layout/multiline_method_parameter_line_breaks'
233
237
  require_relative 'rubocop/cop/layout/multiline_operation_indentation'
234
238
  require_relative 'rubocop/cop/layout/parameter_alignment'
235
239
  require_relative 'rubocop/cop/layout/redundant_line_break'
@@ -276,6 +280,7 @@ require_relative 'rubocop/cop/lint/binary_operator_with_identical_operands'
276
280
  require_relative 'rubocop/cop/lint/boolean_symbol'
277
281
  require_relative 'rubocop/cop/lint/circular_argument_reference'
278
282
  require_relative 'rubocop/cop/lint/constant_definition_in_block'
283
+ require_relative 'rubocop/cop/lint/constant_overwritten_in_rescue'
279
284
  require_relative 'rubocop/cop/lint/constant_resolution'
280
285
  require_relative 'rubocop/cop/lint/debugger'
281
286
  require_relative 'rubocop/cop/lint/deprecated_class_methods'
@@ -327,6 +332,7 @@ require_relative 'rubocop/cop/lint/nested_method_definition'
327
332
  require_relative 'rubocop/cop/lint/nested_percent_literal'
328
333
  require_relative 'rubocop/cop/lint/next_without_accumulator'
329
334
  require_relative 'rubocop/cop/lint/no_return_in_begin_end_blocks'
335
+ require_relative 'rubocop/cop/lint/non_atomic_file_operation'
330
336
  require_relative 'rubocop/cop/lint/non_deterministic_require_order'
331
337
  require_relative 'rubocop/cop/lint/non_local_exit_from_iterator'
332
338
  require_relative 'rubocop/cop/lint/number_conversion'
@@ -348,8 +354,10 @@ require_relative 'rubocop/cop/lint/redundant_splat_expansion'
348
354
  require_relative 'rubocop/cop/lint/redundant_string_coercion'
349
355
  require_relative 'rubocop/cop/lint/redundant_with_index'
350
356
  require_relative 'rubocop/cop/lint/redundant_with_object'
357
+ require_relative 'rubocop/cop/lint/refinement_import_methods'
351
358
  require_relative 'rubocop/cop/lint/regexp_as_condition'
352
359
  require_relative 'rubocop/cop/lint/require_parentheses'
360
+ require_relative 'rubocop/cop/lint/require_range_parentheses'
353
361
  require_relative 'rubocop/cop/lint/require_relative_self_path'
354
362
  require_relative 'rubocop/cop/lint/rescue_exception'
355
363
  require_relative 'rubocop/cop/lint/rescue_type'
@@ -473,17 +481,20 @@ require_relative 'rubocop/cop/style/each_with_object'
473
481
  require_relative 'rubocop/cop/style/empty_block_parameter'
474
482
  require_relative 'rubocop/cop/style/empty_case_condition'
475
483
  require_relative 'rubocop/cop/style/empty_else'
484
+ require_relative 'rubocop/cop/style/empty_heredoc'
476
485
  require_relative 'rubocop/cop/style/empty_lambda_parameter'
477
486
  require_relative 'rubocop/cop/style/empty_literal'
478
487
  require_relative 'rubocop/cop/style/empty_method'
479
488
  require_relative 'rubocop/cop/style/endless_method'
480
489
  require_relative 'rubocop/cop/style/encoding'
481
490
  require_relative 'rubocop/cop/style/end_block'
491
+ require_relative 'rubocop/cop/style/env_home'
482
492
  require_relative 'rubocop/cop/style/eval_with_location'
483
493
  require_relative 'rubocop/cop/style/even_odd'
484
494
  require_relative 'rubocop/cop/style/expand_path_arguments'
485
495
  require_relative 'rubocop/cop/style/explicit_block_argument'
486
496
  require_relative 'rubocop/cop/style/exponential_notation'
497
+ require_relative 'rubocop/cop/style/fetch_env_var'
487
498
  require_relative 'rubocop/cop/style/file_read'
488
499
  require_relative 'rubocop/cop/style/file_write'
489
500
  require_relative 'rubocop/cop/style/float_division'
@@ -527,10 +538,12 @@ require_relative 'rubocop/cop/style/open_struct_use'
527
538
  require_relative 'rubocop/cop/style/redundant_assignment'
528
539
  require_relative 'rubocop/cop/style/redundant_fetch_block'
529
540
  require_relative 'rubocop/cop/style/redundant_file_extension_in_require'
541
+ require_relative 'rubocop/cop/style/redundant_initialize'
530
542
  require_relative 'rubocop/cop/style/redundant_self_assignment'
531
543
  require_relative 'rubocop/cop/style/redundant_self_assignment_branch'
532
544
  require_relative 'rubocop/cop/style/sole_nested_conditional'
533
545
  require_relative 'rubocop/cop/style/static_class'
546
+ require_relative 'rubocop/cop/style/map_compact_with_conditional_block'
534
547
  require_relative 'rubocop/cop/style/method_called_on_do_end_block'
535
548
  require_relative 'rubocop/cop/style/method_def_parentheses'
536
549
  require_relative 'rubocop/cop/style/min_max'
@@ -565,6 +578,7 @@ require_relative 'rubocop/cop/style/numbered_parameters_limit'
565
578
  require_relative 'rubocop/cop/style/numeric_literals'
566
579
  require_relative 'rubocop/cop/style/numeric_literal_prefix'
567
580
  require_relative 'rubocop/cop/style/numeric_predicate'
581
+ require_relative 'rubocop/cop/style/object_then'
568
582
  require_relative 'rubocop/cop/style/one_line_conditional'
569
583
  require_relative 'rubocop/cop/style/or_assignment'
570
584
  require_relative 'rubocop/cop/style/option_hash'
@@ -649,6 +663,7 @@ require_relative 'rubocop/cop/style/word_array'
649
663
  require_relative 'rubocop/cop/style/yoda_condition'
650
664
  require_relative 'rubocop/cop/style/zero_length_predicate'
651
665
 
666
+ require_relative 'rubocop/cop/security/compound_hash'
652
667
  require_relative 'rubocop/cop/security/eval'
653
668
  require_relative 'rubocop/cop/security/io_methods'
654
669
  require_relative 'rubocop/cop/security/json_load'
@@ -657,29 +672,7 @@ require_relative 'rubocop/cop/security/open'
657
672
  require_relative 'rubocop/cop/security/yaml_load'
658
673
 
659
674
  require_relative 'rubocop/cop/team'
660
-
661
- require_relative 'rubocop/formatter/base_formatter'
662
- require_relative 'rubocop/formatter/simple_text_formatter'
663
- # relies on simple text
664
- require_relative 'rubocop/formatter/clang_style_formatter'
665
- require_relative 'rubocop/formatter/disabled_config_formatter'
666
- require_relative 'rubocop/formatter/emacs_style_formatter'
667
- require_relative 'rubocop/formatter/file_list_formatter'
668
- require_relative 'rubocop/formatter/fuubar_style_formatter'
669
- require_relative 'rubocop/formatter/git_hub_actions_formatter'
670
- require_relative 'rubocop/formatter/html_formatter'
671
- require_relative 'rubocop/formatter/json_formatter'
672
- require_relative 'rubocop/formatter/junit_formatter'
673
- require_relative 'rubocop/formatter/offense_count_formatter'
674
- require_relative 'rubocop/formatter/progress_formatter'
675
- require_relative 'rubocop/formatter/quiet_formatter'
676
- require_relative 'rubocop/formatter/tap_formatter'
677
- require_relative 'rubocop/formatter/worst_offenders_formatter'
678
- require_relative 'rubocop/formatter/pacman_formatter'
679
- # relies on progress formatter
680
- require_relative 'rubocop/formatter/auto_gen_config_formatter'
681
-
682
- require_relative 'rubocop/formatter/formatter_set'
675
+ require_relative 'rubocop/formatter'
683
676
 
684
677
  require_relative 'rubocop/cached_data'
685
678
  require_relative 'rubocop/config'