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
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 10e6b8905d81b2204fd3d0bf60d3278cd902d0cefc2ed387bf2c317062b46034
4
- data.tar.gz: f27011464d465728f1fa470c85c4779c2b148b3cdc872247c5a25d421f269076
3
+ metadata.gz: 270faf06487f8a915ef6293944db136da6fb51ec09b5613be4b848a471c858bb
4
+ data.tar.gz: 1c61746959019453862c2e90b8d3250ce3f9815b1eae286f1fd5b73fb267a1cb
5
5
  SHA512:
6
- metadata.gz: 215ee2bb6f0699fdedcd82c7795c40e2350c33fdfbd48117dbb2fdcaa957bcbff9a65ad9c95b9666d4b9c70d6a2e2d8b6ec6904c3c3f01cbbfa8fee2319c9518
7
- data.tar.gz: 0b33b7c3aecf2b7482e19cdbf1a94a56f21d3cb14035c68c62ce0572385edb34a59faa1ea5fb21d9504b04e18f797b0419c6ade76ff70604311b9f899e28b39d
6
+ metadata.gz: 86966e7ff42d0f514a447c8313cc9bdc13020ec1d375e584dba8ebae5bb535a1238380a57d55dfd697c735b3f9259f59939563f4b504f08570304e4ec1c2c7af
7
+ data.tar.gz: ce35c98b8b51b8b59c6c2aeac880a0618067a68f7080a2e44408a7e283471b2b57f84e57c127144632b61eaa8edf6e4369d4702c2baa222cb3b37fad38606bd5
data/README.md CHANGED
@@ -53,7 +53,7 @@ To prevent an unwanted RuboCop update you might want to use a conservative versi
53
53
  in your `Gemfile`:
54
54
 
55
55
  ```rb
56
- gem 'rubocop', '~> 1.26', require: false
56
+ gem 'rubocop', '~> 1.32', require: false
57
57
  ```
58
58
 
59
59
  See [our versioning policy](https://docs.rubocop.org/rubocop/versioning.html) for further details.
@@ -73,10 +73,12 @@ You can read a lot more about RuboCop in its [official docs](https://docs.ruboco
73
73
 
74
74
  ## Compatibility
75
75
 
76
- RuboCop officially supports the following Ruby implementations:
76
+ RuboCop officially supports the following runtime Ruby implementations:
77
77
 
78
- * MRI 2.5+
79
- * JRuby 9.2+
78
+ * MRI 2.6+
79
+ * JRuby 9.3+
80
+
81
+ Targets Ruby 2.0+ code analysis.
80
82
 
81
83
  See the [compatibility documentation](https://docs.rubocop.org/rubocop/compatibility.html) for further details.
82
84
 
data/config/default.yml CHANGED
@@ -140,7 +140,7 @@ AllCops:
140
140
  # or gems.locked file. (Although the Ruby version is specified in the Gemfile
141
141
  # or gems.rb file, RuboCop reads the final value from the lock file.) If the
142
142
  # Ruby version is still unresolved, RuboCop will use the oldest officially
143
- # supported Ruby version (currently Ruby 2.5).
143
+ # supported Ruby version (currently Ruby 2.6).
144
144
  TargetRubyVersion: ~
145
145
  # Determines if a notification for extension libraries should be shown when
146
146
  # rubocop is run. Keys are the name of the extension, and values are an array
@@ -153,6 +153,8 @@ AllCops:
153
153
  rubocop-sequel: [sequel]
154
154
  rubocop-rake: [rake]
155
155
  rubocop-graphql: [graphql]
156
+ # Enable/Disable checking the methods extended by Active Support.
157
+ ActiveSupportExtensionsEnabled: false
156
158
 
157
159
  #################### Bundler ###############################
158
160
 
@@ -235,10 +237,22 @@ Bundler/OrderedGems:
235
237
 
236
238
  #################### Gemspec ###############################
237
239
 
238
- Gemspec/DateAssignment:
239
- Description: 'Checks that `date =` is not used in gemspec file, it is set automatically when the gem is packaged.'
240
+ Gemspec/DependencyVersion:
241
+ Description: 'Requires or forbids specifying gem dependency versions.'
242
+ Enabled: false
243
+ VersionAdded: '1.29'
244
+ EnforcedStyle: 'required'
245
+ SupportedStyles:
246
+ - 'required'
247
+ - 'forbidden'
248
+ Include:
249
+ - '**/*.gemspec'
250
+ AllowedGems: []
251
+
252
+ Gemspec/DeprecatedAttributeAssignment:
253
+ Description: Checks that deprecated attribute assignments are not set in a gemspec file.
240
254
  Enabled: pending
241
- VersionAdded: '1.10'
255
+ VersionAdded: '1.30'
242
256
  Include:
243
257
  - '**/*.gemspec'
244
258
 
@@ -883,7 +897,7 @@ Layout/HeredocArgumentClosingParenthesis:
883
897
  VersionAdded: '0.68'
884
898
 
885
899
  Layout/HeredocIndentation:
886
- Description: 'This cop checks the indentation of the here document bodies.'
900
+ Description: 'Checks the indentation of the here document bodies.'
887
901
  StyleGuide: '#squiggly-heredocs'
888
902
  Enabled: true
889
903
  VersionAdded: '0.49'
@@ -916,7 +930,7 @@ Layout/IndentationStyle:
916
930
  VersionChanged: '0.82'
917
931
  # By default the indentation width from `Layout/IndentationWidth` is used,
918
932
  # but it can be overridden by setting this parameter.
919
- # It is used during auto-correction to determine how many spaces should
933
+ # It is used during autocorrection to determine how many spaces should
920
934
  # replace each tab.
921
935
  IndentationWidth: ~
922
936
  EnforcedStyle: spaces
@@ -931,7 +945,8 @@ Layout/IndentationWidth:
931
945
  VersionAdded: '0.49'
932
946
  # Number of spaces for each indentation level.
933
947
  Width: 2
934
- IgnoredPatterns: []
948
+ AllowedPatterns: []
949
+ IgnoredPatterns: [] # deprecated
935
950
 
936
951
  Layout/InitialIndentation:
937
952
  Description: >-
@@ -954,6 +969,31 @@ Layout/LeadingEmptyLines:
954
969
  VersionAdded: '0.57'
955
970
  VersionChanged: '0.77'
956
971
 
972
+ Layout/LineContinuationLeadingSpace:
973
+ Description: >-
974
+ Use trailing spaces instead of leading spaces in strings
975
+ broken over multiple lines (by a backslash).
976
+ Enabled: pending
977
+ AutoCorrect: false
978
+ SafeAutoCorrect: false
979
+ VersionAdded: '1.31'
980
+ VersionChanged: '1.32'
981
+ EnforcedStyle: trailing
982
+ SupportedStyles:
983
+ - leading
984
+ - trailing
985
+
986
+ Layout/LineContinuationSpacing:
987
+ Description: 'Checks the spacing in front of backslash in line continuations.'
988
+ Enabled: pending
989
+ AutoCorrect: true
990
+ SafeAutoCorrect: true
991
+ VersionAdded: '1.31'
992
+ EnforcedStyle: space
993
+ SupportedStyles:
994
+ - space
995
+ - no_space
996
+
957
997
  Layout/LineEndStringConcatenationIndentation:
958
998
  Description: >-
959
999
  Checks the indentation of the next line after a line that
@@ -985,10 +1025,11 @@ Layout/LineLength:
985
1025
  # The IgnoreCopDirectives option causes the LineLength rule to ignore cop
986
1026
  # directives like '# rubocop: enable ...' when calculating a line's length.
987
1027
  IgnoreCopDirectives: true
988
- # The IgnoredPatterns option is a list of !ruby/regexp and/or string
1028
+ # The AllowedPatterns option is a list of !ruby/regexp and/or string
989
1029
  # elements. Strings will be converted to Regexp objects. A line that matches
990
1030
  # any regular expression listed in this option will be ignored by LineLength.
991
- IgnoredPatterns: []
1031
+ AllowedPatterns: []
1032
+ IgnoredPatterns: [] # deprecated
992
1033
 
993
1034
  Layout/MultilineArrayBraceLayout:
994
1035
  Description: >-
@@ -1117,6 +1158,13 @@ Layout/MultilineMethodDefinitionBraceLayout:
1117
1158
  - new_line
1118
1159
  - same_line
1119
1160
 
1161
+ Layout/MultilineMethodParameterLineBreaks:
1162
+ Description: >-
1163
+ Checks that each parameter in a multi-line method definition
1164
+ starts on a separate line.
1165
+ Enabled: false
1166
+ VersionAdded: '1.32'
1167
+
1120
1168
  Layout/MultilineOperationIndentation:
1121
1169
  Description: >-
1122
1170
  Checks indentation of binary operations that span more than
@@ -1500,7 +1548,7 @@ Lint/BigDecimalNew:
1500
1548
  VersionAdded: '0.53'
1501
1549
 
1502
1550
  Lint/BinaryOperatorWithIdenticalOperands:
1503
- Description: 'This cop checks for places where binary operator has identical operands.'
1551
+ Description: 'Checks for places where binary operator has identical operands.'
1504
1552
  Enabled: true
1505
1553
  Safe: false
1506
1554
  VersionAdded: '0.89'
@@ -1529,6 +1577,11 @@ Lint/ConstantDefinitionInBlock:
1529
1577
  AllowedMethods:
1530
1578
  - enums
1531
1579
 
1580
+ Lint/ConstantOverwrittenInRescue:
1581
+ Description: 'Checks for overwriting an exception with an exception result by use `rescue =>`.'
1582
+ Enabled: pending
1583
+ VersionAdded: '1.31'
1584
+
1532
1585
  Lint/ConstantResolution:
1533
1586
  Description: 'Check that constants are fully qualified with `::`.'
1534
1587
  Enabled: false
@@ -1661,7 +1714,9 @@ Lint/DuplicateRegexpCharacterClassElement:
1661
1714
  Lint/DuplicateRequire:
1662
1715
  Description: 'Check for duplicate `require`s and `require_relative`s.'
1663
1716
  Enabled: true
1717
+ SafeAutoCorrect: false
1664
1718
  VersionAdded: '0.90'
1719
+ VersionChanged: '1.28'
1665
1720
 
1666
1721
  Lint/DuplicateRescueException:
1667
1722
  Description: 'Checks that there are no repeated exceptions used in `rescue` expressions.'
@@ -1680,7 +1735,7 @@ Lint/ElseLayout:
1680
1735
  VersionChanged: '1.2'
1681
1736
 
1682
1737
  Lint/EmptyBlock:
1683
- Description: 'This cop checks for blocks without a body.'
1738
+ Description: 'Checks for blocks without a body.'
1684
1739
  Enabled: pending
1685
1740
  VersionAdded: '1.1'
1686
1741
  VersionChanged: '1.15'
@@ -1694,7 +1749,7 @@ Lint/EmptyClass:
1694
1749
  AllowComments: false
1695
1750
 
1696
1751
  Lint/EmptyConditionalBody:
1697
- Description: 'This cop checks for the presence of `if`, `elsif` and `unless` branches without a body.'
1752
+ Description: 'Checks for the presence of `if`, `elsif` and `unless` branches without a body.'
1698
1753
  Enabled: true
1699
1754
  AllowComments: true
1700
1755
  VersionAdded: '0.89'
@@ -1873,7 +1928,7 @@ Lint/MissingCopEnableDirective:
1873
1928
 
1874
1929
  Lint/MissingSuper:
1875
1930
  Description: >-
1876
- This cop checks for the presence of constructors and lifecycle callbacks
1931
+ Checks for the presence of constructors and lifecycle callbacks
1877
1932
  without calls to `super`.
1878
1933
  Enabled: true
1879
1934
  VersionAdded: '0.89'
@@ -1913,6 +1968,12 @@ Lint/NoReturnInBeginEndBlocks:
1913
1968
  Enabled: pending
1914
1969
  VersionAdded: '1.2'
1915
1970
 
1971
+ Lint/NonAtomicFileOperation:
1972
+ Description: Checks for non-atomic file operations.
1973
+ Enabled: pending
1974
+ VersionAdded: '1.31'
1975
+ SafeAutoCorrect: false
1976
+
1916
1977
  Lint/NonDeterministicRequireOrder:
1917
1978
  Description: 'Always sort arrays returned by Dir.glob when requiring files.'
1918
1979
  Enabled: true
@@ -2058,6 +2119,12 @@ Lint/RedundantWithObject:
2058
2119
  Enabled: true
2059
2120
  VersionAdded: '0.51'
2060
2121
 
2122
+ Lint/RefinementImportMethods:
2123
+ Description: 'Use `Refinement#import_methods` when using `include` or `prepend` in `refine` block.'
2124
+ Enabled: pending
2125
+ SafeAutoCorrect: false
2126
+ VersionAdded: '1.27'
2127
+
2061
2128
  Lint/RegexpAsCondition:
2062
2129
  Description: >-
2063
2130
  Do not use regexp literal as a condition.
@@ -2073,6 +2140,11 @@ Lint/RequireParentheses:
2073
2140
  Enabled: true
2074
2141
  VersionAdded: '0.18'
2075
2142
 
2143
+ Lint/RequireRangeParentheses:
2144
+ Description: 'Checks that a range literal is enclosed in parentheses when the end of the range is at a line break.'
2145
+ Enabled: pending
2146
+ VersionAdded: '1.32'
2147
+
2076
2148
  Lint/RequireRelativeSelfPath:
2077
2149
  Description: 'Checks for uses a file requiring itself with `require_relative`.'
2078
2150
  Enabled: pending
@@ -2196,7 +2268,7 @@ Lint/Syntax:
2196
2268
  VersionAdded: '0.9'
2197
2269
 
2198
2270
  Lint/ToEnumArguments:
2199
- Description: 'This cop ensures that `to_enum`/`enum_for`, called for the current method, has correct arguments.'
2271
+ Description: 'Ensures that `to_enum`/`enum_for`, called for the current method, has correct arguments.'
2200
2272
  Enabled: pending
2201
2273
  VersionAdded: '1.1'
2202
2274
 
@@ -2206,12 +2278,12 @@ Lint/ToJSON:
2206
2278
  VersionAdded: '0.66'
2207
2279
 
2208
2280
  Lint/TopLevelReturnWithArgument:
2209
- Description: 'This cop detects top level return statements with argument.'
2281
+ Description: 'Detects top level return statements with argument.'
2210
2282
  Enabled: true
2211
2283
  VersionAdded: '0.89'
2212
2284
 
2213
2285
  Lint/TrailingCommaInAttributeDeclaration:
2214
- Description: 'This cop checks for trailing commas in attribute declarations.'
2286
+ Description: 'Checks for trailing commas in attribute declarations.'
2215
2287
  Enabled: true
2216
2288
  VersionAdded: '0.90'
2217
2289
 
@@ -2260,14 +2332,15 @@ Lint/UnreachableCode:
2260
2332
  VersionAdded: '0.9'
2261
2333
 
2262
2334
  Lint/UnreachableLoop:
2263
- Description: 'This cop checks for loops that will have at most one iteration.'
2335
+ Description: 'Checks for loops that will have at most one iteration.'
2264
2336
  Enabled: true
2265
2337
  VersionAdded: '0.89'
2266
2338
  VersionChanged: '1.7'
2267
- IgnoredPatterns:
2339
+ AllowedPatterns:
2268
2340
  # RSpec uses `times` in its message expectations
2269
2341
  # eg. `exactly(2).times`
2270
2342
  - !ruby/regexp /(exactly|at_least|at_most)\(\d+\)\.times/
2343
+ IgnoredPatterns: [] # deprecated
2271
2344
 
2272
2345
  Lint/UnusedBlockArgument:
2273
2346
  Description: 'Checks for unused block arguments.'
@@ -2322,13 +2395,14 @@ Lint/UselessElseWithoutRescue:
2322
2395
  Description: 'Checks for useless `else` in `begin..end` without `rescue`.'
2323
2396
  Enabled: true
2324
2397
  VersionAdded: '0.17'
2398
+ VersionChanged: '1.31'
2325
2399
 
2326
2400
  Lint/UselessMethodDefinition:
2327
2401
  Description: 'Checks for useless method definitions.'
2328
2402
  Enabled: true
2329
2403
  VersionAdded: '0.90'
2404
+ VersionChanged: '0.91'
2330
2405
  Safe: false
2331
- AllowComments: true
2332
2406
 
2333
2407
  Lint/UselessRuby2Keywords:
2334
2408
  Description: 'Finds unnecessary uses of `ruby2_keywords`.'
@@ -2680,11 +2754,12 @@ Naming/MethodName:
2680
2754
  - camelCase
2681
2755
  # Method names matching patterns are always allowed.
2682
2756
  #
2683
- # IgnoredPatterns:
2757
+ # AllowedPatterns:
2684
2758
  # - '\A\s*onSelectionBulkChange\s*'
2685
2759
  # - '\A\s*onSelectionCleared\s*'
2686
2760
  #
2687
- IgnoredPatterns: []
2761
+ AllowedPatterns: []
2762
+ IgnoredPatterns: [] # deprecated
2688
2763
 
2689
2764
  Naming/MethodParameterName:
2690
2765
  Description: >-
@@ -2760,6 +2835,7 @@ Naming/VariableName:
2760
2835
  - snake_case
2761
2836
  - camelCase
2762
2837
  AllowedIdentifiers: []
2838
+ AllowedPatterns: []
2763
2839
 
2764
2840
  Naming/VariableNumber:
2765
2841
  Description: 'Use the configured style when numbering symbols, methods and variables.'
@@ -2781,9 +2857,15 @@ Naming/VariableNumber:
2781
2857
  - rfc822 # Time#rfc822
2782
2858
  - rfc2822 # Time#rfc2822
2783
2859
  - rfc3339 # DateTime.rfc3339
2860
+ AllowedPatterns: []
2784
2861
 
2785
2862
  #################### Security ##############################
2786
2863
 
2864
+ Security/CompoundHash:
2865
+ Description: 'When overwriting Object#hash to combine values, prefer delegating to Array#hash over writing a custom implementation.'
2866
+ Enabled: pending
2867
+ VersionAdded: '1.28'
2868
+
2787
2869
  Security/Eval:
2788
2870
  Description: 'The use of eval represents a serious security risk.'
2789
2871
  Enabled: true
@@ -3083,7 +3165,7 @@ Style/CaseEquality:
3083
3165
  AllowOnConstant: false
3084
3166
 
3085
3167
  Style/CaseLikeIf:
3086
- Description: 'This cop identifies places where `if-elsif` constructions can be replaced with `case-when`.'
3168
+ Description: 'Identifies places where `if-elsif` constructions can be replaced with `case-when`.'
3087
3169
  StyleGuide: '#case-vs-if-else'
3088
3170
  Enabled: true
3089
3171
  Safe: false
@@ -3430,6 +3512,12 @@ Style/EmptyElse:
3430
3512
  - empty
3431
3513
  - nil
3432
3514
  - both
3515
+ AllowComments: false
3516
+
3517
+ Style/EmptyHeredoc:
3518
+ Description: 'Checks for using empty heredoc to reduce redundancy.'
3519
+ Enabled: pending
3520
+ VersionAdded: '1.32'
3433
3521
 
3434
3522
  Style/EmptyLambdaParameter:
3435
3523
  Description: 'Omit parens for empty lambda parameters.'
@@ -3478,6 +3566,12 @@ Style/EndlessMethod:
3478
3566
  - allow_always
3479
3567
  - disallow
3480
3568
 
3569
+ Style/EnvHome:
3570
+ Description: "Checks for consistent usage of `ENV['HOME']`."
3571
+ Enabled: pending
3572
+ Safe: false
3573
+ VersionAdded: '1.29'
3574
+
3481
3575
  Style/EvalWithLocation:
3482
3576
  Description: 'Pass `__FILE__` and `__LINE__` to `eval` method, as they are used by backtraces.'
3483
3577
  Enabled: true
@@ -3515,6 +3609,16 @@ Style/ExponentialNotation:
3515
3609
  - engineering
3516
3610
  - integral
3517
3611
 
3612
+ Style/FetchEnvVar:
3613
+ Description: >-
3614
+ Suggests `ENV.fetch` for the replacement of `ENV[]`.
3615
+ Reference:
3616
+ - https://rubystyle.guide/#hash-fetch-defaults
3617
+ Enabled: pending
3618
+ VersionAdded: '1.28'
3619
+ # Environment variables to be excluded from the inspection.
3620
+ AllowedVars: []
3621
+
3518
3622
  Style/FileRead:
3519
3623
  Description: 'Favor `File.(bin)read` convenience methods.'
3520
3624
  StyleGuide: '#file-read'
@@ -3628,10 +3732,11 @@ Style/GuardClause:
3628
3732
  StyleGuide: '#no-nested-conditionals'
3629
3733
  Enabled: true
3630
3734
  VersionAdded: '0.20'
3631
- VersionChanged: '0.22'
3735
+ VersionChanged: '1.31'
3632
3736
  # `MinBodyLength` defines the number of lines of the a body of an `if` or `unless`
3633
3737
  # needs to have to trigger this cop
3634
3738
  MinBodyLength: 1
3739
+ AllowConsecutiveConditionals: false
3635
3740
 
3636
3741
  Style/HashAsLastArrayItem:
3637
3742
  Description: >-
@@ -3668,6 +3773,7 @@ Style/HashExcept:
3668
3773
  that can be replaced with `Hash#except` method.
3669
3774
  Enabled: pending
3670
3775
  VersionAdded: '1.7'
3776
+ VersionChanged: '1.31'
3671
3777
 
3672
3778
  Style/HashLikeCase:
3673
3779
  Description: >-
@@ -3882,6 +3988,11 @@ Style/LineEndConcatenation:
3882
3988
  VersionAdded: '0.18'
3883
3989
  VersionChanged: '0.64'
3884
3990
 
3991
+ Style/MapCompactWithConditionalBlock:
3992
+ Description: 'Prefer `select` or `reject` over `map { ... }.compact`.'
3993
+ Enabled: pending
3994
+ VersionAdded: '1.30'
3995
+
3885
3996
  Style/MapToHash:
3886
3997
  Description: 'Prefer `to_h` with a block over `map.to_h`.'
3887
3998
  Enabled: pending
@@ -3896,7 +4007,8 @@ Style/MethodCallWithArgsParentheses:
3896
4007
  VersionChanged: '1.7'
3897
4008
  IgnoreMacros: true
3898
4009
  IgnoredMethods: []
3899
- IgnoredPatterns: []
4010
+ AllowedPatterns: []
4011
+ IgnoredPatterns: [] # deprecated
3900
4012
  IncludedMacros: []
3901
4013
  AllowParenthesesInMultilineCall: false
3902
4014
  AllowParenthesesInChaining: false
@@ -4102,7 +4214,7 @@ Style/NegatedIf:
4102
4214
 
4103
4215
  Style/NegatedIfElseCondition:
4104
4216
  Description: >-
4105
- This cop checks for uses of `if-else` and ternary operators with a negated condition
4217
+ Checks for uses of `if-else` and ternary operators with a negated condition
4106
4218
  which can be simplified by inverting condition and swapping branches.
4107
4219
  Enabled: pending
4108
4220
  VersionAdded: '1.2'
@@ -4287,6 +4399,19 @@ Style/NumericPredicate:
4287
4399
  Exclude:
4288
4400
  - 'spec/**/*'
4289
4401
 
4402
+ Style/ObjectThen:
4403
+ Description: 'Enforces the use of consistent method names `Object#yield_self` or `Object#then`.'
4404
+ StyleGuide: '#object-yield-self-vs-object-then'
4405
+ Enabled: pending
4406
+ VersionAdded: '1.28'
4407
+ # Use `Object#yield_self` or `Object#then`?
4408
+ # Prefer `Object#yield_self` to `Object#then` (yield_self)
4409
+ # Prefer `Object#then` to `Object#yield_self` (then)
4410
+ EnforcedStyle: 'then'
4411
+ SupportedStyles:
4412
+ - then
4413
+ - yield_self
4414
+
4290
4415
  Style/OneLineConditional:
4291
4416
  Description: >-
4292
4417
  Favor the ternary operator (?:) or multi-line constructs over
@@ -4524,10 +4649,20 @@ Style/RedundantFreeze:
4524
4649
  VersionAdded: '0.34'
4525
4650
  VersionChanged: '0.66'
4526
4651
 
4652
+ Style/RedundantInitialize:
4653
+ Description: 'Checks for redundant `initialize` methods.'
4654
+ Enabled: pending
4655
+ Safe: false
4656
+ AllowComments: true
4657
+ VersionAdded: '1.27'
4658
+ VersionChanged: '1.28'
4659
+
4527
4660
  Style/RedundantInterpolation:
4528
4661
  Description: 'Checks for strings that are just an interpolated expression.'
4529
4662
  Enabled: true
4663
+ SafeAutoCorrect: false
4530
4664
  VersionAdded: '0.76'
4665
+ VersionChanged: '1.30'
4531
4666
 
4532
4667
  Style/RedundantParentheses:
4533
4668
  Description: "Checks for parentheses that seem not to serve any purpose."
@@ -4638,14 +4773,14 @@ Style/ReturnNil:
4638
4773
 
4639
4774
  Style/SafeNavigation:
4640
4775
  Description: >-
4641
- This cop transforms usages of a method call safeguarded by
4776
+ Transforms usages of a method call safeguarded by
4642
4777
  a check for the existence of the object to
4643
4778
  safe navigation (`&.`).
4644
- Auto-correction is unsafe as it assumes the object will
4779
+ Autocorrection is unsafe as it assumes the object will
4645
4780
  be `nil` or truthy, but never `false`.
4646
4781
  Enabled: true
4647
4782
  VersionAdded: '0.43'
4648
- VersionChanged: '0.77'
4783
+ VersionChanged: '1.27'
4649
4784
  # Safe navigation may cause a statement to start returning `nil` in addition
4650
4785
  # to whatever it used to return.
4651
4786
  ConvertCodeThatCanStartToReturnNil: false
@@ -4656,6 +4791,8 @@ Style/SafeNavigation:
4656
4791
  - try
4657
4792
  - try!
4658
4793
  SafeAutoCorrect: false
4794
+ # Maximum length of method chains for register an offense.
4795
+ MaxChainLength: 2
4659
4796
 
4660
4797
  Style/Sample:
4661
4798
  Description: >-
@@ -4761,6 +4898,7 @@ Style/SpecialGlobalVars:
4761
4898
  SupportedStyles:
4762
4899
  - use_perl_names
4763
4900
  - use_english_names
4901
+ - use_builtin_english_names
4764
4902
 
4765
4903
  Style/StabbyLambdaParentheses:
4766
4904
  Description: 'Check for the usage of parentheses around stabby lambda arguments.'
@@ -4862,7 +5000,7 @@ Style/StructInheritance:
4862
5000
  VersionChanged: '1.20'
4863
5001
 
4864
5002
  Style/SwapValues:
4865
- Description: 'This cop enforces the use of shorthand-style swapping of 2 variables.'
5003
+ Description: 'Enforces the use of shorthand-style swapping of 2 variables.'
4866
5004
  StyleGuide: '#values-swapping'
4867
5005
  Enabled: pending
4868
5006
  VersionAdded: '1.1'
@@ -4890,13 +5028,14 @@ Style/SymbolProc:
4890
5028
  Enabled: true
4891
5029
  Safe: false
4892
5030
  VersionAdded: '0.26'
4893
- VersionChanged: '1.5'
5031
+ VersionChanged: '1.28'
4894
5032
  AllowMethodsWithArguments: false
4895
5033
  # A list of method names to be ignored by the check.
4896
5034
  # The names should be fairly unique, otherwise you'll end up ignoring lots of code.
4897
5035
  IgnoredMethods:
4898
5036
  - respond_to
4899
5037
  - define_method
5038
+ AllowComments: false
4900
5039
 
4901
5040
  Style/TernaryParentheses:
4902
5041
  Description: 'Checks for use of parentheses around ternary conditions.'
@@ -4911,7 +5050,7 @@ Style/TernaryParentheses:
4911
5050
  AllowSafeAssignment: true
4912
5051
 
4913
5052
  Style/TopLevelMethodDefinition:
4914
- Description: 'This cop looks for top-level method definitions.'
5053
+ Description: 'Looks for top-level method definitions.'
4915
5054
  StyleGuide: '#top-level-methods'
4916
5055
  Enabled: false
4917
5056
  VersionAdded: '1.15'
@@ -55,6 +55,8 @@ renamed:
55
55
 
56
56
  # Cops that were removed
57
57
  removed:
58
+ Gemspec/DateAssignment:
59
+ alternatives: Gemspec/DeprecatedAttributeAssignment
58
60
  Layout/SpaceAfterControlKeyword:
59
61
  alternatives: Layout/SpaceAroundKeyword
60
62
  Layout/SpaceBeforeModifierKeyword:
@@ -152,7 +154,7 @@ changed_parameters:
152
154
  alternative: EnforcedStyle
153
155
  - cops: Style/MethodCallWithArgsParentheses
154
156
  parameters: IgnoredMethodPatterns
155
- alternative: IgnoredPatterns
157
+ alternative: AllowedPatterns
156
158
  - cops:
157
159
  - Performance/Count
158
160
  - Performance/Detect
@@ -191,6 +193,15 @@ changed_parameters:
191
193
  parameters: DebuggerReceivers
192
194
  reason: "`DebuggerReceivers` is no longer necessary, method receivers should be specified in `DebuggerMethods` instead."
193
195
  severity: warning
196
+ - cops:
197
+ - Layout/IndentationWidth
198
+ - Layout/LineLength
199
+ - Lint/UnreachableLoop
200
+ - Naming/MethodName
201
+ - Style/MethodCallWithArgsParentheses
202
+ parameters: IgnoredPatterns
203
+ alternative: AllowedPatterns
204
+ severity: warning
194
205
 
195
206
  # Enforced styles that have been removed or replaced
196
207
  changed_enforced_styles:
data/exe/rubocop CHANGED
@@ -3,13 +3,21 @@
3
3
 
4
4
  $LOAD_PATH.unshift("#{__dir__}/../lib")
5
5
 
6
- require 'rubocop'
7
- require 'benchmark'
6
+ require 'rubocop/server'
7
+ server_cli = RuboCop::Server::CLI.new
8
+ exit_status = server_cli.run
9
+ exit exit_status if server_cli.exit?
8
10
 
9
- cli = RuboCop::CLI.new
10
- result = 0
11
+ if RuboCop::Server.running?
12
+ exit_status = RuboCop::Server::ClientCommand::Exec.new.run
13
+ else
14
+ require 'rubocop'
15
+ require 'benchmark'
11
16
 
12
- time = Benchmark.realtime { result = cli.run }
17
+ cli = RuboCop::CLI.new
13
18
 
14
- puts "Finished in #{time} seconds" if cli.options[:debug] || cli.options[:display_time]
15
- exit result
19
+ time = Benchmark.realtime { exit_status = cli.run }
20
+
21
+ puts "Finished in #{time} seconds" if cli.options[:debug] || cli.options[:display_time]
22
+ end
23
+ exit exit_status
@@ -66,6 +66,7 @@ module RuboCop
66
66
  execute_runner
67
67
  @options.delete(:only)
68
68
  @config_store = ConfigStore.new
69
+ @config_store.options_config = @options[:config] if @options[:config]
69
70
  # Save the todo configuration of the LineLength cop.
70
71
  File.read(AUTO_GENERATED_FILE).lines.drop_while { |line| line.start_with?('#') }.join
71
72
  end
@@ -95,23 +96,24 @@ module RuboCop
95
96
  end
96
97
 
97
98
  def add_inheritance_from_auto_generated_file(config_file)
98
- file_string = " #{AUTO_GENERATED_FILE}"
99
+ file_string = " #{relative_path_to_todo_from_options_config}"
99
100
 
100
101
  config_file ||= ConfigLoader::DOTFILE
101
102
 
102
103
  if File.exist?(config_file)
103
104
  files = Array(ConfigLoader.load_yaml_configuration(config_file)['inherit_from'])
104
105
 
105
- return if files.include?(AUTO_GENERATED_FILE)
106
+ return if files.include?(relative_path_to_todo_from_options_config)
106
107
 
107
- files.unshift(AUTO_GENERATED_FILE)
108
+ files.unshift(relative_path_to_todo_from_options_config)
108
109
  file_string = "\n - #{files.join("\n - ")}" if files.size > 1
109
110
  rubocop_yml_contents = existing_configuration(config_file)
110
111
  end
111
112
 
112
113
  write_config_file(config_file, file_string, rubocop_yml_contents)
113
114
 
114
- puts "Added inheritance from `#{AUTO_GENERATED_FILE}` in `#{ConfigLoader::DOTFILE}`."
115
+ puts "Added inheritance from `#{relative_path_to_todo_from_options_config}` " \
116
+ "in `#{ConfigLoader::DOTFILE}`."
115
117
  end
116
118
 
117
119
  def existing_configuration(config_file)
@@ -126,6 +128,19 @@ module RuboCop
126
128
  lines.insert(doc_start_index + 1, "inherit_from:#{file_string}\n")
127
129
  File.write(file_name, lines.join("\n"))
128
130
  end
131
+
132
+ def relative_path_to_todo_from_options_config
133
+ return AUTO_GENERATED_FILE if !@options[:config] || options_config_in_root?
134
+
135
+ base = Pathname.new('.')
136
+ config_dir = Pathname.new(File.dirname(@options[:config]))
137
+
138
+ "#{base.relative_path_from(config_dir)}/#{AUTO_GENERATED_FILE}"
139
+ end
140
+
141
+ def options_config_in_root?
142
+ File.dirname(@options[:config]) == '.'
143
+ end
129
144
  end
130
145
  end
131
146
  end