rubocop 0.72.0 → 0.76.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 (249) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +2 -1
  3. data/bin/console +1 -0
  4. data/config/default.yml +93 -56
  5. data/lib/rubocop.rb +21 -10
  6. data/lib/rubocop/ast/builder.rb +1 -0
  7. data/lib/rubocop/ast/node.rb +12 -14
  8. data/lib/rubocop/ast/node/mixin/method_dispatch_node.rb +4 -4
  9. data/lib/rubocop/ast/node/return_node.rb +24 -0
  10. data/lib/rubocop/ast/traversal.rb +3 -3
  11. data/lib/rubocop/cli.rb +7 -4
  12. data/lib/rubocop/comment_config.rb +5 -4
  13. data/lib/rubocop/config.rb +28 -537
  14. data/lib/rubocop/config_loader.rb +21 -3
  15. data/lib/rubocop/config_loader_resolver.rb +4 -3
  16. data/lib/rubocop/config_obsoletion.rb +222 -0
  17. data/lib/rubocop/config_validator.rb +248 -0
  18. data/lib/rubocop/cop/autocorrect_logic.rb +71 -1
  19. data/lib/rubocop/cop/bundler/insecure_protocol_source.rb +1 -1
  20. data/lib/rubocop/cop/bundler/ordered_gems.rb +1 -1
  21. data/lib/rubocop/cop/commissioner.rb +18 -16
  22. data/lib/rubocop/cop/cop.rb +49 -14
  23. data/lib/rubocop/cop/corrector.rb +10 -10
  24. data/lib/rubocop/cop/correctors/alignment_corrector.rb +43 -17
  25. data/lib/rubocop/cop/correctors/empty_line_corrector.rb +2 -2
  26. data/lib/rubocop/cop/correctors/multiline_literal_brace_corrector.rb +2 -2
  27. data/lib/rubocop/cop/correctors/percent_literal_corrector.rb +1 -1
  28. data/lib/rubocop/cop/gemspec/duplicated_assignment.rb +2 -2
  29. data/lib/rubocop/cop/gemspec/ordered_dependencies.rb +1 -1
  30. data/lib/rubocop/cop/gemspec/required_ruby_version.rb +1 -1
  31. data/lib/rubocop/cop/gemspec/ruby_version_globals_usage.rb +1 -1
  32. data/lib/rubocop/cop/generator.rb +4 -4
  33. data/lib/rubocop/cop/generator/configuration_injector.rb +9 -4
  34. data/lib/rubocop/cop/generator/require_file_injector.rb +1 -1
  35. data/lib/rubocop/cop/internal_affairs/node_destructuring.rb +2 -2
  36. data/lib/rubocop/cop/internal_affairs/node_type_predicate.rb +1 -1
  37. data/lib/rubocop/cop/internal_affairs/offense_location_keyword.rb +2 -2
  38. data/lib/rubocop/cop/internal_affairs/redundant_location_argument.rb +1 -1
  39. data/lib/rubocop/cop/internal_affairs/redundant_message_argument.rb +2 -2
  40. data/lib/rubocop/cop/internal_affairs/useless_message_assertion.rb +2 -2
  41. data/lib/rubocop/cop/layout/align_hash.rb +6 -2
  42. data/lib/rubocop/cop/layout/block_alignment.rb +3 -3
  43. data/lib/rubocop/cop/layout/class_structure.rb +1 -1
  44. data/lib/rubocop/cop/layout/closing_parenthesis_indentation.rb +1 -1
  45. data/lib/rubocop/cop/layout/comment_indentation.rb +10 -13
  46. data/lib/rubocop/cop/layout/empty_comment.rb +7 -16
  47. data/lib/rubocop/cop/layout/empty_line_after_guard_clause.rb +22 -7
  48. data/lib/rubocop/cop/layout/empty_line_after_magic_comment.rb +2 -2
  49. data/lib/rubocop/cop/layout/empty_lines_around_class_body.rb +2 -2
  50. data/lib/rubocop/cop/layout/end_of_line.rb +8 -3
  51. data/lib/rubocop/cop/layout/extra_spacing.rb +14 -59
  52. data/lib/rubocop/cop/layout/indent_assignment.rb +10 -1
  53. data/lib/rubocop/cop/layout/indent_first_argument.rb +10 -8
  54. data/lib/rubocop/cop/layout/indent_first_hash_element.rb +1 -1
  55. data/lib/rubocop/cop/layout/indent_heredoc.rb +4 -3
  56. data/lib/rubocop/cop/layout/indentation_width.rb +20 -6
  57. data/lib/rubocop/cop/layout/leading_comment_space.rb +28 -0
  58. data/lib/rubocop/cop/layout/multiline_assignment_layout.rb +1 -1
  59. data/lib/rubocop/cop/layout/multiline_block_layout.rb +24 -2
  60. data/lib/rubocop/cop/layout/rescue_ensure_alignment.rb +20 -4
  61. data/lib/rubocop/cop/layout/space_around_block_parameters.rb +5 -1
  62. data/lib/rubocop/cop/layout/space_around_operators.rb +42 -23
  63. data/lib/rubocop/cop/layout/space_in_lambda_literal.rb +9 -7
  64. data/lib/rubocop/cop/layout/space_inside_array_literal_brackets.rb +8 -5
  65. data/lib/rubocop/cop/layout/space_inside_block_braces.rb +21 -2
  66. data/lib/rubocop/cop/layout/space_inside_parens.rb +6 -6
  67. data/lib/rubocop/cop/layout/space_inside_string_interpolation.rb +24 -40
  68. data/lib/rubocop/cop/layout/tab.rb +10 -22
  69. data/lib/rubocop/cop/layout/trailing_whitespace.rb +18 -2
  70. data/lib/rubocop/cop/lint/assignment_in_condition.rb +17 -4
  71. data/lib/rubocop/cop/lint/big_decimal_new.rb +1 -1
  72. data/lib/rubocop/cop/lint/debugger.rb +4 -6
  73. data/lib/rubocop/cop/lint/duplicate_methods.rb +3 -3
  74. data/lib/rubocop/cop/lint/each_with_object_argument.rb +1 -1
  75. data/lib/rubocop/cop/lint/empty_interpolation.rb +4 -4
  76. data/lib/rubocop/cop/lint/erb_new_arguments.rb +62 -5
  77. data/lib/rubocop/cop/lint/format_parameter_mismatch.rb +11 -37
  78. data/lib/rubocop/cop/lint/ineffective_access_modifier.rb +1 -1
  79. data/lib/rubocop/cop/lint/inherit_exception.rb +1 -1
  80. data/lib/rubocop/cop/lint/literal_in_interpolation.rb +7 -8
  81. data/lib/rubocop/cop/lint/missing_cop_enable_directive.rb +2 -2
  82. data/lib/rubocop/cop/lint/multiple_compare.rb +1 -1
  83. data/lib/rubocop/cop/lint/nested_method_definition.rb +3 -3
  84. data/lib/rubocop/cop/lint/next_without_accumulator.rb +1 -1
  85. data/lib/rubocop/cop/lint/non_local_exit_from_iterator.rb +1 -1
  86. data/lib/rubocop/cop/lint/number_conversion.rb +3 -3
  87. data/lib/rubocop/cop/lint/rand_one.rb +1 -1
  88. data/lib/rubocop/cop/lint/{unneeded_cop_disable_directive.rb → redundant_cop_disable_directive.rb} +24 -24
  89. data/lib/rubocop/cop/lint/{unneeded_cop_enable_directive.rb → redundant_cop_enable_directive.rb} +6 -8
  90. data/lib/rubocop/cop/lint/{unneeded_require_statement.rb → redundant_require_statement.rb} +2 -2
  91. data/lib/rubocop/cop/lint/{unneeded_splat_expansion.rb → redundant_splat_expansion.rb} +12 -7
  92. data/lib/rubocop/cop/lint/redundant_with_index.rb +1 -1
  93. data/lib/rubocop/cop/lint/redundant_with_object.rb +1 -1
  94. data/lib/rubocop/cop/lint/safe_navigation_chain.rb +10 -11
  95. data/lib/rubocop/cop/lint/safe_navigation_with_empty.rb +1 -1
  96. data/lib/rubocop/cop/lint/send_with_mixin_argument.rb +91 -0
  97. data/lib/rubocop/cop/lint/string_conversion_in_interpolation.rb +6 -6
  98. data/lib/rubocop/cop/lint/unified_integer.rb +1 -1
  99. data/lib/rubocop/cop/lint/unreachable_code.rb +1 -1
  100. data/lib/rubocop/cop/lint/unused_block_argument.rb +22 -6
  101. data/lib/rubocop/cop/lint/unused_method_argument.rb +23 -5
  102. data/lib/rubocop/cop/lint/uri_escape_unescape.rb +1 -1
  103. data/lib/rubocop/cop/lint/uri_regexp.rb +2 -2
  104. data/lib/rubocop/cop/lint/useless_access_modifier.rb +6 -6
  105. data/lib/rubocop/cop/lint/useless_setter_call.rb +1 -1
  106. data/lib/rubocop/cop/lint/void.rb +7 -26
  107. data/lib/rubocop/cop/message_annotator.rb +16 -7
  108. data/lib/rubocop/cop/metrics/abc_size.rb +1 -1
  109. data/lib/rubocop/cop/metrics/class_length.rb +1 -1
  110. data/lib/rubocop/cop/metrics/line_length.rb +7 -4
  111. data/lib/rubocop/cop/metrics/module_length.rb +1 -1
  112. data/lib/rubocop/cop/metrics/parameter_lists.rb +1 -1
  113. data/lib/rubocop/cop/metrics/utils/abc_size_calculator.rb +23 -6
  114. data/lib/rubocop/cop/migration/department_name.rb +44 -0
  115. data/lib/rubocop/cop/mixin/alignment.rb +1 -1
  116. data/lib/rubocop/cop/mixin/def_node.rb +1 -1
  117. data/lib/rubocop/cop/mixin/documentation_comment.rb +0 -2
  118. data/lib/rubocop/cop/mixin/empty_parameter.rb +1 -1
  119. data/lib/rubocop/cop/mixin/enforce_superclass.rb +4 -4
  120. data/lib/rubocop/cop/mixin/frozen_string_literal.rb +1 -1
  121. data/lib/rubocop/cop/mixin/interpolation.rb +27 -0
  122. data/lib/rubocop/cop/mixin/method_complexity.rb +3 -2
  123. data/lib/rubocop/cop/mixin/multiline_expression_indentation.rb +3 -3
  124. data/lib/rubocop/cop/mixin/preceding_following_alignment.rb +87 -0
  125. data/lib/rubocop/cop/mixin/safe_mode.rb +2 -0
  126. data/lib/rubocop/cop/mixin/statement_modifier.rb +5 -2
  127. data/lib/rubocop/cop/mixin/surrounding_space.rb +7 -5
  128. data/lib/rubocop/cop/mixin/trailing_comma.rb +8 -6
  129. data/lib/rubocop/cop/naming/binary_operator_parameter_name.rb +1 -1
  130. data/lib/rubocop/cop/naming/constant_name.rb +2 -2
  131. data/lib/rubocop/cop/naming/file_name.rb +12 -5
  132. data/lib/rubocop/cop/naming/method_name.rb +12 -1
  133. data/lib/rubocop/cop/naming/predicate_name.rb +1 -1
  134. data/lib/rubocop/cop/naming/variable_name.rb +1 -0
  135. data/lib/rubocop/cop/offense.rb +18 -7
  136. data/lib/rubocop/cop/registry.rb +22 -1
  137. data/lib/rubocop/cop/security/eval.rb +1 -1
  138. data/lib/rubocop/cop/security/json_load.rb +1 -1
  139. data/lib/rubocop/cop/security/marshal_load.rb +1 -1
  140. data/lib/rubocop/cop/security/open.rb +1 -1
  141. data/lib/rubocop/cop/security/yaml_load.rb +1 -1
  142. data/lib/rubocop/cop/style/access_modifier_declarations.rb +1 -0
  143. data/lib/rubocop/cop/style/alias.rb +1 -1
  144. data/lib/rubocop/cop/style/attr.rb +2 -2
  145. data/lib/rubocop/cop/style/block_delimiters.rb +2 -1
  146. data/lib/rubocop/cop/style/braces_around_hash_parameters.rb +35 -16
  147. data/lib/rubocop/cop/style/class_and_module_children.rb +1 -1
  148. data/lib/rubocop/cop/style/colon_method_call.rb +1 -1
  149. data/lib/rubocop/cop/style/comment_annotation.rb +5 -5
  150. data/lib/rubocop/cop/style/commented_keyword.rb +16 -30
  151. data/lib/rubocop/cop/style/conditional_assignment.rb +6 -8
  152. data/lib/rubocop/cop/style/constant_visibility.rb +14 -3
  153. data/lib/rubocop/cop/style/copyright.rb +11 -7
  154. data/lib/rubocop/cop/style/date_time.rb +3 -3
  155. data/lib/rubocop/cop/style/dir.rb +1 -1
  156. data/lib/rubocop/cop/style/documentation_method.rb +45 -1
  157. data/lib/rubocop/cop/style/double_cop_disable_directive.rb +55 -0
  158. data/lib/rubocop/cop/style/each_for_simple_loop.rb +1 -1
  159. data/lib/rubocop/cop/style/each_with_object.rb +1 -1
  160. data/lib/rubocop/cop/style/empty_case_condition.rb +2 -2
  161. data/lib/rubocop/cop/style/empty_literal.rb +2 -2
  162. data/lib/rubocop/cop/style/empty_method.rb +5 -5
  163. data/lib/rubocop/cop/style/eval_with_location.rb +2 -2
  164. data/lib/rubocop/cop/style/even_odd.rb +1 -1
  165. data/lib/rubocop/cop/style/expand_path_arguments.rb +4 -4
  166. data/lib/rubocop/cop/style/float_division.rb +4 -4
  167. data/lib/rubocop/cop/style/format_string.rb +17 -14
  168. data/lib/rubocop/cop/style/format_string_token.rb +19 -68
  169. data/lib/rubocop/cop/style/frozen_string_literal_comment.rb +28 -33
  170. data/lib/rubocop/cop/style/guard_clause.rb +39 -10
  171. data/lib/rubocop/cop/style/hash_syntax.rb +4 -4
  172. data/lib/rubocop/cop/style/if_unless_modifier.rb +58 -15
  173. data/lib/rubocop/cop/style/infinite_loop.rb +5 -4
  174. data/lib/rubocop/cop/style/inverse_methods.rb +21 -15
  175. data/lib/rubocop/cop/style/lambda.rb +0 -2
  176. data/lib/rubocop/cop/style/line_end_concatenation.rb +14 -10
  177. data/lib/rubocop/cop/style/method_call_with_args_parentheses.rb +25 -25
  178. data/lib/rubocop/cop/style/method_def_parentheses.rb +17 -9
  179. data/lib/rubocop/cop/style/min_max.rb +1 -1
  180. data/lib/rubocop/cop/style/mixin_usage.rb +12 -2
  181. data/lib/rubocop/cop/style/multiline_memoization.rb +1 -1
  182. data/lib/rubocop/cop/style/multiline_when_then.rb +55 -0
  183. data/lib/rubocop/cop/style/multiple_comparison.rb +1 -1
  184. data/lib/rubocop/cop/style/mutable_constant.rb +3 -3
  185. data/lib/rubocop/cop/style/nested_modifier.rb +22 -4
  186. data/lib/rubocop/cop/style/non_nil_check.rb +21 -9
  187. data/lib/rubocop/cop/style/numeric_predicate.rb +3 -3
  188. data/lib/rubocop/cop/style/option_hash.rb +1 -1
  189. data/lib/rubocop/cop/style/or_assignment.rb +8 -3
  190. data/lib/rubocop/cop/style/parentheses_around_condition.rb +15 -1
  191. data/lib/rubocop/cop/style/random_with_offset.rb +6 -6
  192. data/lib/rubocop/cop/style/{unneeded_capital_w.rb → redundant_capital_w.rb} +1 -1
  193. data/lib/rubocop/cop/style/{unneeded_condition.rb → redundant_condition.rb} +3 -3
  194. data/lib/rubocop/cop/style/redundant_conditional.rb +2 -2
  195. data/lib/rubocop/cop/style/redundant_exception.rb +2 -2
  196. data/lib/rubocop/cop/style/redundant_freeze.rb +1 -1
  197. data/lib/rubocop/cop/style/{unneeded_interpolation.rb → redundant_interpolation.rb} +1 -1
  198. data/lib/rubocop/cop/style/redundant_parentheses.rb +15 -6
  199. data/lib/rubocop/cop/style/{unneeded_percent_q.rb → redundant_percent_q.rb} +1 -1
  200. data/lib/rubocop/cop/style/redundant_return.rb +37 -21
  201. data/lib/rubocop/cop/style/redundant_self.rb +18 -1
  202. data/lib/rubocop/cop/style/{unneeded_sort.rb → redundant_sort.rb} +4 -4
  203. data/lib/rubocop/cop/style/redundant_sort_by.rb +1 -1
  204. data/lib/rubocop/cop/style/rescue_modifier.rb +24 -0
  205. data/lib/rubocop/cop/style/rescue_standard_error.rb +2 -2
  206. data/lib/rubocop/cop/style/return_nil.rb +1 -1
  207. data/lib/rubocop/cop/style/safe_navigation.rb +24 -4
  208. data/lib/rubocop/cop/style/sample.rb +1 -1
  209. data/lib/rubocop/cop/style/semicolon.rb +13 -2
  210. data/lib/rubocop/cop/style/single_line_methods.rb +8 -1
  211. data/lib/rubocop/cop/style/special_global_vars.rb +5 -7
  212. data/lib/rubocop/cop/style/stderr_puts.rb +1 -1
  213. data/lib/rubocop/cop/style/string_hash_keys.rb +2 -2
  214. data/lib/rubocop/cop/style/strip.rb +1 -1
  215. data/lib/rubocop/cop/style/struct_inheritance.rb +3 -3
  216. data/lib/rubocop/cop/style/symbol_proc.rb +1 -1
  217. data/lib/rubocop/cop/style/ternary_parentheses.rb +20 -1
  218. data/lib/rubocop/cop/style/trailing_method_end_statement.rb +4 -6
  219. data/lib/rubocop/cop/style/trivial_accessors.rb +1 -1
  220. data/lib/rubocop/cop/style/unpack_first.rb +1 -1
  221. data/lib/rubocop/cop/style/variable_interpolation.rb +6 -16
  222. data/lib/rubocop/cop/style/zero_length_predicate.rb +5 -5
  223. data/lib/rubocop/cop/team.rb +15 -14
  224. data/lib/rubocop/cop/util.rb +1 -1
  225. data/lib/rubocop/cop/utils/format_string.rb +120 -0
  226. data/lib/rubocop/cop/variable_force.rb +7 -5
  227. data/lib/rubocop/cop/variable_force/variable.rb +15 -2
  228. data/lib/rubocop/core_ext/string.rb +0 -24
  229. data/lib/rubocop/error.rb +23 -0
  230. data/lib/rubocop/formatter/clang_style_formatter.rb +8 -3
  231. data/lib/rubocop/formatter/emacs_style_formatter.rb +22 -9
  232. data/lib/rubocop/formatter/file_list_formatter.rb +1 -1
  233. data/lib/rubocop/formatter/formatter_set.rb +16 -15
  234. data/lib/rubocop/formatter/pacman_formatter.rb +80 -0
  235. data/lib/rubocop/formatter/simple_text_formatter.rb +16 -4
  236. data/lib/rubocop/formatter/tap_formatter.rb +17 -4
  237. data/lib/rubocop/magic_comment.rb +4 -0
  238. data/lib/rubocop/node_pattern.rb +5 -3
  239. data/lib/rubocop/options.rb +33 -21
  240. data/lib/rubocop/path_util.rb +1 -1
  241. data/lib/rubocop/processed_source.rb +4 -0
  242. data/lib/rubocop/result_cache.rb +1 -1
  243. data/lib/rubocop/rspec/expect_offense.rb +4 -1
  244. data/lib/rubocop/rspec/shared_contexts.rb +12 -0
  245. data/lib/rubocop/runner.rb +42 -31
  246. data/lib/rubocop/target_finder.rb +12 -4
  247. data/lib/rubocop/version.rb +1 -1
  248. metadata +21 -12
  249. data/lib/rubocop/cop/mixin/ignored_method_patterns.rb +0 -19
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: eba7ed97b0ff87530eaaac338ed31f332f89dd4c86ca8afc3046d8141d3f1c03
4
- data.tar.gz: 23a2c2e2c59efb26294495c94b33e1849feef60b8afe26e98064ff01e98cbccf
3
+ metadata.gz: bd5622915d19930481b80ac553a18b3500306bca922491f83290451a3cd267c9
4
+ data.tar.gz: 73002e0e186887f12add4e88154bf2510280d531ecd66f73b9eb57fb842d7f2a
5
5
  SHA512:
6
- metadata.gz: 72a13a6ca2580bc1613ee8cb5a2432f564fb6f53f68558bd716046d4f5c28b73a57535d9eb4c96542f9cbaa5f29ee1226ec71e1b66a342ac4810106b69f3ef5d
7
- data.tar.gz: aa480f20807bf7d31c878eeade72cf09a4963174b7490738f77cc8a8cf5a59b2a40b2f20dbc969719863aed1c672136ef32b7173f5d231c3f387dc25a62f77ac
6
+ metadata.gz: 7a866f9130e0388351acd83aee37bf7a15f1e64c94c51a3d58f3c439b90cbffb5a173837b48aae3ba86ab8005bbe73e6b088c905000910c4cf523395c8887b39
7
+ data.tar.gz: e8c2655aa3c419850da067790d456ed96c67bb43eee41d4cd9389185dbb9965329f405a2146949062daf57cd15a8e0d375b00df4df09fbc03fd06d9369f213ce
data/README.md CHANGED
@@ -9,6 +9,7 @@
9
9
  [![Patreon](https://img.shields.io/badge/patreon-donate-orange.svg)](https://www.patreon.com/bbatsov)
10
10
  [![OpenCollective](https://opencollective.com/rubocop/backers/badge.svg)](#open-collective-backers)
11
11
  [![OpenCollective](https://opencollective.com/rubocop/sponsors/badge.svg)](#open-collective-sponsors)
12
+ [![Tidelift](https://tidelift.com/badges/package/rubygems/rubocop)](https://tidelift.com/subscription/pkg/rubygems-rubocop?utm_source=rubygems-rubocop&utm_medium=referral&utm_campaign=readme)
12
13
 
13
14
  <p align="center">
14
15
  <img src="https://raw.githubusercontent.com/rubocop-hq/rubocop/master/logo/rubo-logo-horizontal.png" alt="RuboCop Logo"/>
@@ -52,7 +53,7 @@ haven't reached version 1.0 yet). To prevent an unwanted RuboCop update you
52
53
  might want to use a conservative version lock in your `Gemfile`:
53
54
 
54
55
  ```rb
55
- gem 'rubocop', '~> 0.72.0', require: false
56
+ gem 'rubocop', '~> 0.76.0', require: false
56
57
  ```
57
58
 
58
59
  ## Quickstart
@@ -1,6 +1,7 @@
1
1
  #!/usr/bin/env ruby
2
2
  # frozen_string_literal: true
3
3
 
4
+ require 'bundler/setup'
4
5
  require 'pry'
5
6
  require 'rubocop'
6
7
 
@@ -816,6 +816,8 @@ Layout/LeadingCommentSpace:
816
816
  StyleGuide: '#hash-space'
817
817
  Enabled: true
818
818
  VersionAdded: '0.49'
819
+ VersionChanged: '0.73'
820
+ AllowDoxygenCommentStyle: false
819
821
 
820
822
  Layout/MultilineArrayBraceLayout:
821
823
  Description: >-
@@ -1510,6 +1512,29 @@ Lint/RandOne:
1510
1512
  Enabled: true
1511
1513
  VersionAdded: '0.36'
1512
1514
 
1515
+ Lint/RedundantCopDisableDirective:
1516
+ Description: >-
1517
+ Checks for rubocop:disable comments that can be removed.
1518
+ Note: this cop is not disabled when disabling all cops.
1519
+ It must be explicitly disabled.
1520
+ Enabled: true
1521
+ VersionAdded: '0.76'
1522
+
1523
+ Lint/RedundantCopEnableDirective:
1524
+ Description: Checks for rubocop:enable comments that can be removed.
1525
+ Enabled: true
1526
+ VersionAdded: '0.76'
1527
+
1528
+ Lint/RedundantRequireStatement:
1529
+ Description: 'Checks for unnecessary `require` statement.'
1530
+ Enabled: true
1531
+ VersionAdded: '0.76'
1532
+
1533
+ Lint/RedundantSplatExpansion:
1534
+ Description: 'Checks for splat unnecessarily being called on literals.'
1535
+ Enabled: true
1536
+ VersionChanged: '0.76'
1537
+
1513
1538
  Lint/RedundantWithIndex:
1514
1539
  Description: 'Checks for redundant `with_index`.'
1515
1540
  Enabled: true
@@ -1589,6 +1614,11 @@ Lint/ScriptPermission:
1589
1614
  VersionAdded: '0.49'
1590
1615
  VersionChanged: '0.50'
1591
1616
 
1617
+ Lint/SendWithMixinArgument:
1618
+ Description: 'Checks for `send` method when using mixin.'
1619
+ Enabled: true
1620
+ VersionAdded: '0.75'
1621
+
1592
1622
  Lint/ShadowedArgument:
1593
1623
  Description: 'Avoid reassigning arguments before they were used.'
1594
1624
  Enabled: true
@@ -1638,29 +1668,6 @@ Lint/UnifiedInteger:
1638
1668
  Enabled: true
1639
1669
  VersionAdded: '0.43'
1640
1670
 
1641
- Lint/UnneededCopDisableDirective:
1642
- Description: >-
1643
- Checks for rubocop:disable comments that can be removed.
1644
- Note: this cop is not disabled when disabling all cops.
1645
- It must be explicitly disabled.
1646
- Enabled: true
1647
- VersionAdded: '0.53'
1648
-
1649
- Lint/UnneededCopEnableDirective:
1650
- Description: Checks for rubocop:enable comments that can be removed.
1651
- Enabled: true
1652
- VersionAdded: '0.53'
1653
-
1654
- Lint/UnneededRequireStatement:
1655
- Description: 'Checks for unnecessary `require` statement.'
1656
- Enabled: true
1657
- VersionAdded: '0.51'
1658
-
1659
- Lint/UnneededSplatExpansion:
1660
- Description: 'Checks for splat unnecessarily being called on literals.'
1661
- Enabled: true
1662
- VersionAdded: '0.43'
1663
-
1664
1671
  Lint/UnreachableCode:
1665
1672
  Description: 'Unreachable code.'
1666
1673
  Enabled: true
@@ -1743,7 +1750,7 @@ Metrics/AbcSize:
1743
1750
  branches, and conditions.
1744
1751
  Reference:
1745
1752
  - http://c2.com/cgi/wiki?AbcMetric
1746
- - https://en.wikipedia.org/wiki/ABC_Software_Metric'
1753
+ - https://en.wikipedia.org/wiki/ABC_Software_Metric
1747
1754
  Enabled: true
1748
1755
  VersionAdded: '0.27'
1749
1756
  VersionChanged: '0.66'
@@ -1807,7 +1814,7 @@ Metrics/LineLength:
1807
1814
  - https
1808
1815
  # The IgnoreCopDirectives option causes the LineLength rule to ignore cop
1809
1816
  # directives like '# rubocop: enable ...' when calculating a line's length.
1810
- IgnoreCopDirectives: false
1817
+ IgnoreCopDirectives: true
1811
1818
  # The IgnoredPatterns option is a list of !ruby/regexp and/or string
1812
1819
  # elements. Strings will be converted to Regexp objects. A line that matches
1813
1820
  # any regular expression listed in this option will be ignored by LineLength.
@@ -1846,6 +1853,14 @@ Metrics/PerceivedComplexity:
1846
1853
  VersionAdded: '0.25'
1847
1854
  Max: 7
1848
1855
 
1856
+ ################## Migration #############################
1857
+
1858
+ Migration/DepartmentName:
1859
+ Description: >-
1860
+ Check that cop names in rubocop:disable (etc) comments are
1861
+ given with department name.
1862
+ Enabled: false
1863
+
1849
1864
  #################### Naming ##############################
1850
1865
 
1851
1866
  Naming/AccessorMethodName:
@@ -1981,6 +1996,13 @@ Naming/MethodName:
1981
1996
  SupportedStyles:
1982
1997
  - snake_case
1983
1998
  - camelCase
1999
+ # Method names matching patterns are always allowed.
2000
+ #
2001
+ # IgnoredPatterns:
2002
+ # - '\A\s*onSelectionBulkChange\s*'
2003
+ # - '\A\s*onSelectionCleared\s*'
2004
+ #
2005
+ IgnoredPatterns: []
1984
2006
 
1985
2007
  Naming/PredicateName:
1986
2008
  Description: 'Check the names of predicate methods.'
@@ -2053,6 +2075,7 @@ Naming/UncommunicativeMethodParamName:
2053
2075
  - at
2054
2076
  - ip
2055
2077
  - db
2078
+ - os
2056
2079
  # Blacklisted names that will register an offense
2057
2080
  ForbiddenNames: []
2058
2081
 
@@ -2555,6 +2578,11 @@ Style/DocumentationMethod:
2555
2578
  - 'test/**/*'
2556
2579
  RequireForNonPublicMethods: false
2557
2580
 
2581
+ Style/DoubleCopDisableDirective:
2582
+ Description: 'Checks for double rubocop:disable comments on a single line.'
2583
+ Enabled: true
2584
+ VersionAdded: '0.73'
2585
+
2558
2586
  Style/DoubleNegation:
2559
2587
  Description: 'Checks for uses of double negation (!!).'
2560
2588
  StyleGuide: '#no-bang-bang'
@@ -2698,7 +2726,7 @@ Style/FormatStringToken:
2698
2726
  - template
2699
2727
  - unannotated
2700
2728
  VersionAdded: '0.49'
2701
- VersionChanged: '0.52'
2729
+ VersionChanged: '0.75'
2702
2730
 
2703
2731
  Style/FrozenStringLiteralComment:
2704
2732
  Description: >-
@@ -2891,6 +2919,7 @@ Style/MethodCallWithArgsParentheses:
2891
2919
  VersionChanged: '0.61'
2892
2920
  IgnoreMacros: true
2893
2921
  IgnoredMethods: []
2922
+ IgnoredPatterns: []
2894
2923
  IncludedMacros: []
2895
2924
  AllowParenthesesInMultilineCall: false
2896
2925
  AllowParenthesesInChaining: false
@@ -3041,6 +3070,12 @@ Style/MultilineTernaryOperator:
3041
3070
  Enabled: true
3042
3071
  VersionAdded: '0.9'
3043
3072
 
3073
+ Style/MultilineWhenThen:
3074
+ Description: 'Do not use then for multi-line when statement.'
3075
+ StyleGuide: '#no-then'
3076
+ Enabled: true
3077
+ VersionAdded: '0.73'
3078
+
3044
3079
  Style/MultipleComparison:
3045
3080
  Description: >-
3046
3081
  Avoid comparing a variable with multiple items in a conditional,
@@ -3367,6 +3402,16 @@ Style/RedundantBegin:
3367
3402
  VersionAdded: '0.10'
3368
3403
  VersionChanged: '0.21'
3369
3404
 
3405
+ Style/RedundantCapitalW:
3406
+ Description: 'Checks for %W when interpolation is not needed.'
3407
+ Enabled: true
3408
+ VersionAdded: '0.76'
3409
+
3410
+ Style/RedundantCondition:
3411
+ Description: 'Checks for unnecessary conditional expressions.'
3412
+ Enabled: true
3413
+ VersionAdded: '0.76'
3414
+
3370
3415
  Style/RedundantConditional:
3371
3416
  Description: "Don't return true/false from a conditional."
3372
3417
  Enabled: true
@@ -3385,11 +3430,22 @@ Style/RedundantFreeze:
3385
3430
  VersionAdded: '0.34'
3386
3431
  VersionChanged: '0.66'
3387
3432
 
3433
+ Style/RedundantInterpolation:
3434
+ Description: 'Checks for strings that are just an interpolated expression.'
3435
+ Enabled: true
3436
+ VersionAdded: '0.76'
3437
+
3388
3438
  Style/RedundantParentheses:
3389
3439
  Description: "Checks for parentheses that seem not to serve any purpose."
3390
3440
  Enabled: true
3391
3441
  VersionAdded: '0.36'
3392
3442
 
3443
+ Style/RedundantPercentQ:
3444
+ Description: 'Checks for %q/%Q when single quotes or double quotes would do.'
3445
+ StyleGuide: '#percent-q'
3446
+ Enabled: true
3447
+ VersionAdded: '0.76'
3448
+
3393
3449
  Style/RedundantReturn:
3394
3450
  Description: "Don't use return where it's not required."
3395
3451
  StyleGuide: '#no-explicit-return'
@@ -3406,6 +3462,13 @@ Style/RedundantSelf:
3406
3462
  VersionAdded: '0.10'
3407
3463
  VersionChanged: '0.13'
3408
3464
 
3465
+ Style/RedundantSort:
3466
+ Description: >-
3467
+ Use `min` instead of `sort.first`,
3468
+ `max_by` instead of `sort_by...last`, etc.
3469
+ Enabled: true
3470
+ VersionAdded: '0.76'
3471
+
3409
3472
  Style/RedundantSortBy:
3410
3473
  Description: 'Use `sort` instead of `sort_by { |x| x }`.'
3411
3474
  Enabled: true
@@ -3572,6 +3635,8 @@ Style/StringHashKeys:
3572
3635
  StyleGuide: '#symbols-as-keys'
3573
3636
  Enabled: false
3574
3637
  VersionAdded: '0.52'
3638
+ VersionChanged: '0.75'
3639
+ Safe: false
3575
3640
 
3576
3641
  Style/StringLiterals:
3577
3642
  Description: 'Checks if uses of quotes match the configured preference.'
@@ -3791,35 +3856,6 @@ Style/UnlessElse:
3791
3856
  Enabled: true
3792
3857
  VersionAdded: '0.9'
3793
3858
 
3794
- Style/UnneededCapitalW:
3795
- Description: 'Checks for %W when interpolation is not needed.'
3796
- Enabled: true
3797
- VersionAdded: '0.21'
3798
- VersionChanged: '0.24'
3799
-
3800
- Style/UnneededCondition:
3801
- Description: 'Checks for unnecessary conditional expressions.'
3802
- Enabled: true
3803
- VersionAdded: '0.57'
3804
-
3805
- Style/UnneededInterpolation:
3806
- Description: 'Checks for strings that are just an interpolated expression.'
3807
- Enabled: true
3808
- VersionAdded: '0.36'
3809
-
3810
- Style/UnneededPercentQ:
3811
- Description: 'Checks for %q/%Q when single quotes or double quotes would do.'
3812
- StyleGuide: '#percent-q'
3813
- Enabled: true
3814
- VersionAdded: '0.24'
3815
-
3816
- Style/UnneededSort:
3817
- Description: >-
3818
- Use `min` instead of `sort.first`,
3819
- `max_by` instead of `sort_by...last`, etc.
3820
- Enabled: true
3821
- VersionAdded: '0.55'
3822
-
3823
3859
  Style/UnpackFirst:
3824
3860
  Description: >-
3825
3861
  Checks for accessing the first element of `String#unpack`
@@ -3890,8 +3926,9 @@ Style/YodaCondition:
3890
3926
  - require_for_all_comparison_operators
3891
3927
  # enforce yoda only for equality operators: `!=` and `==`
3892
3928
  - require_for_equality_operators_only
3929
+ Safe: false
3893
3930
  VersionAdded: '0.49'
3894
- VersionChanged: '0.63'
3931
+ VersionChanged: '0.75'
3895
3932
 
3896
3933
  Style/ZeroLengthPredicate:
3897
3934
  Description: 'Use #empty? when testing for objects of length 0.'
@@ -55,6 +55,7 @@ require_relative 'rubocop/ast/node/range_node'
55
55
  require_relative 'rubocop/ast/node/regexp_node'
56
56
  require_relative 'rubocop/ast/node/resbody_node'
57
57
  require_relative 'rubocop/ast/node/retry_node'
58
+ require_relative 'rubocop/ast/node/return_node'
58
59
  require_relative 'rubocop/ast/node/self_class_node'
59
60
  require_relative 'rubocop/ast/node/send_node'
60
61
  require_relative 'rubocop/ast/node/str_node'
@@ -120,8 +121,8 @@ require_relative 'rubocop/cop/mixin/frozen_string_literal'
120
121
  require_relative 'rubocop/cop/mixin/hash_alignment'
121
122
  require_relative 'rubocop/cop/mixin/ignored_pattern'
122
123
  require_relative 'rubocop/cop/mixin/ignored_methods'
123
- require_relative 'rubocop/cop/mixin/ignored_method_patterns'
124
124
  require_relative 'rubocop/cop/mixin/integer_node'
125
+ require_relative 'rubocop/cop/mixin/interpolation'
125
126
  require_relative 'rubocop/cop/mixin/match_range'
126
127
  require_relative 'rubocop/cop/mixin/method_complexity'
127
128
  require_relative 'rubocop/cop/mixin/method_preference'
@@ -157,6 +158,10 @@ require_relative 'rubocop/cop/mixin/trailing_comma'
157
158
  require_relative 'rubocop/cop/mixin/uncommunicative_name'
158
159
  require_relative 'rubocop/cop/mixin/unused_argument'
159
160
 
161
+ require_relative 'rubocop/cop/utils/format_string'
162
+
163
+ require_relative 'rubocop/cop/migration/department_name'
164
+
160
165
  require_relative 'rubocop/cop/correctors/alignment_corrector'
161
166
  require_relative 'rubocop/cop/correctors/condition_corrector'
162
167
  require_relative 'rubocop/cop/correctors/each_to_for_corrector'
@@ -317,6 +322,10 @@ require_relative 'rubocop/cop/lint/parentheses_as_grouped_expression'
317
322
  require_relative 'rubocop/cop/lint/percent_string_array'
318
323
  require_relative 'rubocop/cop/lint/percent_symbol_array'
319
324
  require_relative 'rubocop/cop/lint/rand_one'
325
+ require_relative 'rubocop/cop/lint/redundant_cop_disable_directive'
326
+ require_relative 'rubocop/cop/lint/redundant_cop_enable_directive'
327
+ require_relative 'rubocop/cop/lint/redundant_require_statement'
328
+ require_relative 'rubocop/cop/lint/redundant_splat_expansion'
320
329
  require_relative 'rubocop/cop/lint/redundant_with_index'
321
330
  require_relative 'rubocop/cop/lint/redundant_with_object'
322
331
  require_relative 'rubocop/cop/lint/regexp_as_condition'
@@ -328,6 +337,7 @@ require_relative 'rubocop/cop/lint/safe_navigation_consistency'
328
337
  require_relative 'rubocop/cop/lint/safe_navigation_chain'
329
338
  require_relative 'rubocop/cop/lint/safe_navigation_with_empty'
330
339
  require_relative 'rubocop/cop/lint/script_permission'
340
+ require_relative 'rubocop/cop/lint/send_with_mixin_argument'
331
341
  require_relative 'rubocop/cop/lint/shadowed_argument'
332
342
  require_relative 'rubocop/cop/lint/shadowed_exception'
333
343
  require_relative 'rubocop/cop/lint/shadowing_outer_local_variable'
@@ -336,10 +346,6 @@ require_relative 'rubocop/cop/lint/syntax'
336
346
  require_relative 'rubocop/cop/lint/to_json'
337
347
  require_relative 'rubocop/cop/lint/underscore_prefixed_variable_name'
338
348
  require_relative 'rubocop/cop/lint/unified_integer'
339
- require_relative 'rubocop/cop/lint/unneeded_cop_disable_directive'
340
- require_relative 'rubocop/cop/lint/unneeded_cop_enable_directive'
341
- require_relative 'rubocop/cop/lint/unneeded_require_statement'
342
- require_relative 'rubocop/cop/lint/unneeded_splat_expansion'
343
349
  require_relative 'rubocop/cop/lint/unreachable_code'
344
350
  require_relative 'rubocop/cop/lint/unused_block_argument'
345
351
  require_relative 'rubocop/cop/lint/unused_method_argument'
@@ -414,6 +420,7 @@ require_relative 'rubocop/cop/style/def_with_parentheses'
414
420
  require_relative 'rubocop/cop/style/dir'
415
421
  require_relative 'rubocop/cop/style/documentation_method'
416
422
  require_relative 'rubocop/cop/style/documentation'
423
+ require_relative 'rubocop/cop/style/double_cop_disable_directive'
417
424
  require_relative 'rubocop/cop/style/double_negation'
418
425
  require_relative 'rubocop/cop/style/each_for_simple_loop'
419
426
  require_relative 'rubocop/cop/style/each_with_object'
@@ -466,6 +473,7 @@ require_relative 'rubocop/cop/style/multiline_if_modifier'
466
473
  require_relative 'rubocop/cop/style/multiline_method_signature'
467
474
  require_relative 'rubocop/cop/style/multiline_memoization'
468
475
  require_relative 'rubocop/cop/style/multiline_ternary_operator'
476
+ require_relative 'rubocop/cop/style/multiline_when_then'
469
477
  require_relative 'rubocop/cop/style/multiple_comparison'
470
478
  require_relative 'rubocop/cop/style/mutable_constant'
471
479
  require_relative 'rubocop/cop/style/negated_if'
@@ -495,12 +503,17 @@ require_relative 'rubocop/cop/style/proc'
495
503
  require_relative 'rubocop/cop/style/raise_args'
496
504
  require_relative 'rubocop/cop/style/random_with_offset'
497
505
  require_relative 'rubocop/cop/style/redundant_begin'
506
+ require_relative 'rubocop/cop/style/redundant_capital_w'
507
+ require_relative 'rubocop/cop/style/redundant_condition'
498
508
  require_relative 'rubocop/cop/style/redundant_conditional'
499
509
  require_relative 'rubocop/cop/style/redundant_exception'
500
510
  require_relative 'rubocop/cop/style/redundant_freeze'
511
+ require_relative 'rubocop/cop/style/redundant_interpolation'
501
512
  require_relative 'rubocop/cop/style/redundant_parentheses'
513
+ require_relative 'rubocop/cop/style/redundant_percent_q'
502
514
  require_relative 'rubocop/cop/style/redundant_return'
503
515
  require_relative 'rubocop/cop/style/redundant_self'
516
+ require_relative 'rubocop/cop/style/redundant_sort'
504
517
  require_relative 'rubocop/cop/style/redundant_sort_by'
505
518
  require_relative 'rubocop/cop/style/regexp_literal'
506
519
  require_relative 'rubocop/cop/style/rescue_modifier'
@@ -537,11 +550,6 @@ require_relative 'rubocop/cop/style/trailing_method_end_statement'
537
550
  require_relative 'rubocop/cop/style/trailing_underscore_variable'
538
551
  require_relative 'rubocop/cop/style/trivial_accessors'
539
552
  require_relative 'rubocop/cop/style/unless_else'
540
- require_relative 'rubocop/cop/style/unneeded_capital_w'
541
- require_relative 'rubocop/cop/style/unneeded_condition'
542
- require_relative 'rubocop/cop/style/unneeded_interpolation'
543
- require_relative 'rubocop/cop/style/unneeded_percent_q'
544
- require_relative 'rubocop/cop/style/unneeded_sort'
545
553
  require_relative 'rubocop/cop/style/unpack_first'
546
554
  require_relative 'rubocop/cop/style/variable_interpolation'
547
555
  require_relative 'rubocop/cop/style/when_then'
@@ -575,6 +583,7 @@ require_relative 'rubocop/formatter/progress_formatter'
575
583
  require_relative 'rubocop/formatter/quiet_formatter'
576
584
  require_relative 'rubocop/formatter/tap_formatter'
577
585
  require_relative 'rubocop/formatter/worst_offenders_formatter'
586
+ require_relative 'rubocop/formatter/pacman_formatter'
578
587
  # relies on progress formatter
579
588
  require_relative 'rubocop/formatter/auto_gen_config_formatter'
580
589
 
@@ -584,7 +593,9 @@ require_relative 'rubocop/cached_data'
584
593
  require_relative 'rubocop/config'
585
594
  require_relative 'rubocop/config_loader_resolver'
586
595
  require_relative 'rubocop/config_loader'
596
+ require_relative 'rubocop/config_obsoletion'
587
597
  require_relative 'rubocop/config_store'
598
+ require_relative 'rubocop/config_validator'
588
599
  require_relative 'rubocop/target_finder'
589
600
  require_relative 'rubocop/token'
590
601
  require_relative 'rubocop/comment_config'
@@ -41,6 +41,7 @@ module RuboCop
41
41
  regexp: RegexpNode,
42
42
  resbody: ResbodyNode,
43
43
  retry: RetryNode,
44
+ return: ReturnNode,
44
45
  csend: SendNode,
45
46
  send: SendNode,
46
47
  str: StrNode,
@@ -302,12 +302,10 @@ module RuboCop
302
302
 
303
303
  ## Destructuring
304
304
 
305
- def_node_matcher :receiver, <<-PATTERN
305
+ def_node_matcher :receiver, <<~PATTERN
306
306
  {(send $_ ...) (block (send $_ ...) ...)}
307
307
  PATTERN
308
308
 
309
- # Note: for masgn, #asgn_rhs will be an array node
310
- def_node_matcher :asgn_rhs, '[assignment? (... $_)]'
311
309
  def_node_matcher :str_content, '(str $_)'
312
310
 
313
311
  def const_name
@@ -321,7 +319,7 @@ module RuboCop
321
319
  end
322
320
  end
323
321
 
324
- def_node_matcher :defined_module0, <<-PATTERN
322
+ def_node_matcher :defined_module0, <<~PATTERN
325
323
  {(class (const $_ $_) ...)
326
324
  (module (const $_ $_) ...)
327
325
  (casgn $_ $_ (send (const nil? {:Class :Module}) :new ...))
@@ -367,7 +365,7 @@ module RuboCop
367
365
  end
368
366
 
369
367
  # Some cops treat the shovel operator as a kind of assignment.
370
- def_node_matcher :assignment_or_similar?, <<-PATTERN
368
+ def_node_matcher :assignment_or_similar?, <<~PATTERN
371
369
  {assignment? (send _recv :<< ...)}
372
370
  PATTERN
373
371
 
@@ -471,6 +469,10 @@ module RuboCop
471
469
  parent&.send_type? && parent.arguments.include?(self)
472
470
  end
473
471
 
472
+ def boolean_type?
473
+ true_type? || false_type?
474
+ end
475
+
474
476
  def numeric_type?
475
477
  int_type? || float_type?
476
478
  end
@@ -479,11 +481,11 @@ module RuboCop
479
481
  irange_type? || erange_type?
480
482
  end
481
483
 
482
- def_node_matcher :guard_clause?, <<-PATTERN
483
- [{(send nil? {:raise :fail} ...) return break next} single_line?]
484
+ def_node_matcher :guard_clause?, <<~PATTERN
485
+ [${(send nil? {:raise :fail} ...) return break next} single_line?]
484
486
  PATTERN
485
487
 
486
- def_node_matcher :proc?, <<-PATTERN
488
+ def_node_matcher :proc?, <<~PATTERN
487
489
  {(block (send nil? :proc) ...)
488
490
  (block (send (const nil? :Proc) :new) ...)
489
491
  (send (const nil? :Proc) :new)}
@@ -492,15 +494,11 @@ module RuboCop
492
494
  def_node_matcher :lambda?, '(block (send nil? :lambda) ...)'
493
495
  def_node_matcher :lambda_or_proc?, '{lambda? proc?}'
494
496
 
495
- def_node_matcher :class_constructor?, <<-PATTERN
497
+ def_node_matcher :class_constructor?, <<~PATTERN
496
498
  { (send (const nil? {:Class :Module}) :new ...)
497
499
  (block (send (const nil? {:Class :Module}) :new ...) ...)}
498
500
  PATTERN
499
501
 
500
- def_node_matcher :module_definition?, <<-PATTERN
501
- {class module (casgn _ _ class_constructor?)}
502
- PATTERN
503
-
504
502
  # Some expressions are evaluated for their value, some for their side
505
503
  # effects, and some for both
506
504
  # If we know that an expression is useful only for its side effects, that
@@ -638,7 +636,7 @@ module RuboCop
638
636
  end
639
637
  end
640
638
 
641
- def_node_matcher :new_class_or_module_block?, <<-PATTERN
639
+ def_node_matcher :new_class_or_module_block?, <<~PATTERN
642
640
  ^(casgn _ _ (block (send (const _ {:Class :Module}) :new) ...))
643
641
  PATTERN
644
642
  end