rubocop 1.76.1 → 1.77.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 (53) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +2 -2
  3. data/config/default.yml +22 -0
  4. data/lib/rubocop/cop/correctors/parentheses_corrector.rb +5 -2
  5. data/lib/rubocop/cop/gemspec/attribute_assignment.rb +91 -0
  6. data/lib/rubocop/cop/gemspec/duplicated_assignment.rb +0 -22
  7. data/lib/rubocop/cop/gemspec/require_mfa.rb +15 -1
  8. data/lib/rubocop/cop/internal_affairs/node_matcher_directive.rb +4 -4
  9. data/lib/rubocop/cop/layout/closing_parenthesis_indentation.rb +1 -1
  10. data/lib/rubocop/cop/layout/empty_lines_around_access_modifier.rb +1 -1
  11. data/lib/rubocop/cop/layout/line_length.rb +26 -5
  12. data/lib/rubocop/cop/layout/space_before_brackets.rb +2 -9
  13. data/lib/rubocop/cop/layout/space_inside_array_literal_brackets.rb +7 -2
  14. data/lib/rubocop/cop/lint/ambiguous_range.rb +5 -0
  15. data/lib/rubocop/cop/lint/empty_interpolation.rb +1 -1
  16. data/lib/rubocop/cop/lint/float_comparison.rb +4 -4
  17. data/lib/rubocop/cop/lint/literal_as_condition.rb +2 -2
  18. data/lib/rubocop/cop/lint/redundant_regexp_quantifiers.rb +1 -1
  19. data/lib/rubocop/cop/lint/safe_navigation_chain.rb +4 -4
  20. data/lib/rubocop/cop/lint/self_assignment.rb +25 -0
  21. data/lib/rubocop/cop/lint/useless_access_modifier.rb +29 -4
  22. data/lib/rubocop/cop/lint/useless_default_value_argument.rb +4 -1
  23. data/lib/rubocop/cop/lint/useless_ruby2_keywords.rb +3 -3
  24. data/lib/rubocop/cop/mixin/alignment.rb +1 -1
  25. data/lib/rubocop/cop/mixin/frozen_string_literal.rb +1 -1
  26. data/lib/rubocop/cop/mixin/gemspec_help.rb +22 -0
  27. data/lib/rubocop/cop/mixin/line_length_help.rb +24 -8
  28. data/lib/rubocop/cop/naming/file_name.rb +2 -2
  29. data/lib/rubocop/cop/naming/predicate_method.rb +73 -8
  30. data/lib/rubocop/cop/naming/predicate_prefix.rb +2 -2
  31. data/lib/rubocop/cop/style/case_like_if.rb +1 -1
  32. data/lib/rubocop/cop/style/collection_querying.rb +167 -0
  33. data/lib/rubocop/cop/style/conditional_assignment.rb +3 -1
  34. data/lib/rubocop/cop/style/exponential_notation.rb +2 -2
  35. data/lib/rubocop/cop/style/fetch_env_var.rb +32 -6
  36. data/lib/rubocop/cop/style/hash_conversion.rb +12 -3
  37. data/lib/rubocop/cop/style/if_unless_modifier.rb +11 -2
  38. data/lib/rubocop/cop/style/it_block_parameter.rb +2 -2
  39. data/lib/rubocop/cop/style/method_call_with_args_parentheses/omit_parentheses.rb +1 -1
  40. data/lib/rubocop/cop/style/min_max_comparison.rb +13 -5
  41. data/lib/rubocop/cop/style/redundant_interpolation.rb +1 -1
  42. data/lib/rubocop/cop/style/redundant_parentheses.rb +10 -1
  43. data/lib/rubocop/cop/style/redundant_self.rb +8 -5
  44. data/lib/rubocop/cop/style/sole_nested_conditional.rb +2 -1
  45. data/lib/rubocop/cop/style/symbol_proc.rb +1 -1
  46. data/lib/rubocop/cop/style/trailing_comma_in_block_args.rb +1 -1
  47. data/lib/rubocop/formatter/fuubar_style_formatter.rb +1 -1
  48. data/lib/rubocop/formatter/offense_count_formatter.rb +1 -1
  49. data/lib/rubocop/lsp/diagnostic.rb +4 -4
  50. data/lib/rubocop/version.rb +1 -1
  51. data/lib/rubocop.rb +2 -0
  52. data/lib/ruby_lsp/rubocop/addon.rb +2 -2
  53. metadata +8 -6
@@ -9,7 +9,20 @@ module RuboCop
9
9
  # On the other hand, `ENV.fetch` raises `KeyError` or returns the explicitly
10
10
  # specified default value.
11
11
  #
12
- # @example
12
+ # @example DefaultToNil: true (default)
13
+ # # bad
14
+ # ENV['X']
15
+ # x = ENV['X']
16
+ #
17
+ # # good
18
+ # ENV.fetch('X', nil)
19
+ # x = ENV.fetch('X', nil)
20
+ #
21
+ # # also good
22
+ # !ENV['X']
23
+ # ENV['X'].some_method # (e.g. `.nil?`)
24
+ #
25
+ # @example DefaultToNil: false
13
26
  # # bad
14
27
  # ENV['X']
15
28
  # x = ENV['X']
@@ -25,7 +38,8 @@ module RuboCop
25
38
  class FetchEnvVar < Base
26
39
  extend AutoCorrector
27
40
 
28
- MSG = 'Use `ENV.fetch(%<key>s)` or `ENV.fetch(%<key>s, nil)` instead of `ENV[%<key>s]`.'
41
+ MSG_WITH_NIL = 'Use `ENV.fetch(%<key>s, nil)` instead of `ENV[%<key>s]`.'
42
+ MSG_WITHOUT_NIL = 'Use `ENV.fetch(%<key>s)` instead of `ENV[%<key>s]`.'
29
43
  RESTRICT_ON_SEND = [:[]].freeze
30
44
 
31
45
  # @!method env_with_bracket?(node)
@@ -37,7 +51,7 @@ module RuboCop
37
51
  env_with_bracket?(node) do |name_node|
38
52
  break unless offensive?(node)
39
53
 
40
- message = format(MSG, key: name_node.source)
54
+ message = format(offense_message, key: name_node.source)
41
55
  add_offense(node, message: message) do |corrector|
42
56
  corrector.replace(node, new_code(name_node))
43
57
  end
@@ -46,6 +60,14 @@ module RuboCop
46
60
 
47
61
  private
48
62
 
63
+ def default_to_nil?
64
+ cop_config.fetch('DefaultToNil', true)
65
+ end
66
+
67
+ def offense_message
68
+ default_to_nil? ? MSG_WITH_NIL : MSG_WITHOUT_NIL
69
+ end
70
+
49
71
  def allowed_var?(node)
50
72
  env_key_node = node.children.last
51
73
  env_key_node.str_type? && cop_config['AllowedVars'].include?(env_key_node.value)
@@ -53,12 +75,12 @@ module RuboCop
53
75
 
54
76
  def used_as_flag?(node)
55
77
  return false if node.root?
56
- return true if used_if_condition_in_body(node)
78
+ return true if used_if_condition_in_body?(node)
57
79
 
58
80
  node.parent.send_type? && (node.parent.prefix_bang? || node.parent.comparison_method?)
59
81
  end
60
82
 
61
- def used_if_condition_in_body(node)
83
+ def used_if_condition_in_body?(node)
62
84
  if_node = node.ancestors.find(&:if_type?)
63
85
 
64
86
  return false unless (condition = if_node&.condition)
@@ -125,7 +147,11 @@ module RuboCop
125
147
  end
126
148
 
127
149
  def new_code(name_node)
128
- "ENV.fetch(#{name_node.source}, nil)"
150
+ if default_to_nil?
151
+ "ENV.fetch(#{name_node.source}, nil)"
152
+ else
153
+ "ENV.fetch(#{name_node.source})"
154
+ end
129
155
  end
130
156
  end
131
157
  end
@@ -54,7 +54,7 @@ module RuboCop
54
54
  def_node_matcher :hash_from_array?, '(send (const {nil? cbase} :Hash) :[] ...)'
55
55
 
56
56
  def on_send(node)
57
- return unless hash_from_array?(node)
57
+ return if part_of_ignored_node?(node) || !hash_from_array?(node)
58
58
 
59
59
  # There are several cases:
60
60
  # If there is one argument:
@@ -63,11 +63,12 @@ module RuboCop
63
63
  # If there is 0 or 2+ arguments:
64
64
  # Hash[a1, a2, a3, a4] => {a1 => a2, a3 => a4}
65
65
  # ...but don't suggest correction if there is odd number of them (it is a bug)
66
- node.arguments.count == 1 ? single_argument(node) : multi_argument(node)
66
+ node.arguments.one? ? single_argument(node) : multi_argument(node)
67
67
  end
68
68
 
69
69
  private
70
70
 
71
+ # rubocop:disable Metrics/MethodLength
71
72
  def single_argument(node)
72
73
  first_argument = node.first_argument
73
74
  if first_argument.hash_type?
@@ -82,8 +83,11 @@ module RuboCop
82
83
  replacement = "(#{replacement})" if requires_parens?(first_argument)
83
84
  corrector.replace(node, "#{replacement}.to_h")
84
85
  end
86
+
87
+ ignore_node(node)
85
88
  end
86
89
  end
90
+ # rubocop:enable Metrics/MethodLength
87
91
 
88
92
  def use_zip_method_without_argument?(first_argument)
89
93
  return false unless first_argument&.send_type?
@@ -111,7 +115,12 @@ module RuboCop
111
115
  end
112
116
 
113
117
  def requires_parens?(node)
114
- (node.call_type? && node.arguments.any? && !node.parenthesized?) || node.operator_keyword?
118
+ if node.call_type?
119
+ return false if node.method?(:[])
120
+ return true if node.arguments.any? && !node.parenthesized?
121
+ end
122
+
123
+ node.operator_keyword?
115
124
  end
116
125
 
117
126
  def multi_argument(node)
@@ -223,8 +223,17 @@ module RuboCop
223
223
 
224
224
  def too_long_line_based_on_allow_uri?(line)
225
225
  if allow_uri?
226
- uri_range = find_excessive_uri_range(line)
227
- return false if uri_range && allowed_uri_position?(line, uri_range)
226
+ uri_range = find_excessive_range(line, :uri)
227
+ return false if uri_range && allowed_position?(line, uri_range)
228
+ end
229
+
230
+ true
231
+ end
232
+
233
+ def too_long_line_based_on_allow_qualified_name?(line)
234
+ if allow_qualified_name?
235
+ namespace_range = find_excessive_range(line, :namespace)
236
+ return false if namespace_range && allowed_position?(line, namespace_range)
228
237
  end
229
238
 
230
239
  true
@@ -57,7 +57,7 @@ module RuboCop
57
57
 
58
58
  MSG_USE_IT_PARAMETER = 'Use `it` block parameter.'
59
59
  MSG_AVOID_IT_PARAMETER = 'Avoid using `it` block parameter.'
60
- MSG_AVOID_IT_PARAMETER_MULTI_LINE = 'Avoid using numbered parameters for multi-line blocks.'
60
+ MSG_AVOID_IT_PARAMETER_MULTILINE = 'Avoid using `it` block parameter for multi-line blocks.'
61
61
 
62
62
  minimum_target_ruby_version 3.4
63
63
 
@@ -96,7 +96,7 @@ module RuboCop
96
96
  when :allow_single_line
97
97
  return if node.single_line?
98
98
 
99
- add_offense(node, message: MSG_AVOID_IT_PARAMETER_MULTI_LINE)
99
+ add_offense(node, message: MSG_AVOID_IT_PARAMETER_MULTILINE)
100
100
  when :disallow
101
101
  variables = find_block_variables(node, 'it')
102
102
 
@@ -251,7 +251,7 @@ module RuboCop
251
251
  return false unless (last_argument = node.last_argument)
252
252
  return true if last_argument.forwarded_restarg_type?
253
253
 
254
- last_argument.hash_type? && last_argument.children.first&.forwarded_kwrestarg_type?
254
+ last_argument.hash_type? && last_argument.children.any?(&:forwarded_kwrestarg_type?)
255
255
  end
256
256
  end
257
257
  # rubocop:enable Metrics/ModuleLength, Metrics/CyclomaticComplexity
@@ -39,13 +39,21 @@ module RuboCop
39
39
  include RangeHelp
40
40
 
41
41
  MSG = 'Use `%<prefer>s` instead.'
42
- GRATER_OPERATORS = %i[> >=].freeze
42
+ GREATER_OPERATORS = %i[> >=].freeze
43
43
  LESS_OPERATORS = %i[< <=].freeze
44
- COMPARISON_OPERATORS = GRATER_OPERATORS + LESS_OPERATORS
44
+ COMPARISON_OPERATORS = (GREATER_OPERATORS + LESS_OPERATORS).to_set.freeze
45
+
46
+ # @!method comparison_condition(node, name)
47
+ def_node_matcher :comparison_condition, <<~PATTERN
48
+ {
49
+ (send $_lhs $COMPARISON_OPERATORS $_rhs)
50
+ (begin (send $_lhs $COMPARISON_OPERATORS $_rhs))
51
+ }
52
+ PATTERN
45
53
 
46
54
  def on_if(node)
47
- lhs, operator, rhs = *node.condition
48
- return unless COMPARISON_OPERATORS.include?(operator)
55
+ lhs, operator, rhs = comparison_condition(node.condition)
56
+ return unless operator
49
57
 
50
58
  if_branch = node.if_branch
51
59
  else_branch = node.else_branch
@@ -63,7 +71,7 @@ module RuboCop
63
71
 
64
72
  def preferred_method(operator, lhs, rhs, if_branch, else_branch)
65
73
  if lhs == if_branch && rhs == else_branch
66
- GRATER_OPERATORS.include?(operator) ? 'max' : 'min'
74
+ GREATER_OPERATORS.include?(operator) ? 'max' : 'min'
67
75
  elsif lhs == else_branch && rhs == if_branch
68
76
  LESS_OPERATORS.include?(operator) ? 'max' : 'min'
69
77
  end
@@ -130,7 +130,7 @@ module RuboCop
130
130
  end
131
131
 
132
132
  def require_parentheses?(node)
133
- node.send_type? && !node.arguments.count.zero? && !node.parenthesized_call?
133
+ node.send_type? && node.arguments.any? && !node.parenthesized_call?
134
134
  end
135
135
  end
136
136
  end
@@ -164,7 +164,7 @@ module RuboCop
164
164
  if node.lambda_or_proc? && (node.braces? || node.send_node.lambda_literal?)
165
165
  return 'an expression'
166
166
  end
167
- if node.any_match_pattern_type? && node.each_ancestor.none?(&:operator_keyword?)
167
+ if disallowed_one_line_pattern_matching?(begin_node, node)
168
168
  return 'a one-line pattern matching'
169
169
  end
170
170
  return 'an interpolated expression' if interpolation?(begin_node)
@@ -254,6 +254,15 @@ module RuboCop
254
254
  end
255
255
  end
256
256
 
257
+ def disallowed_one_line_pattern_matching?(begin_node, node)
258
+ if (parent = begin_node.parent)
259
+ return false if parent.any_def_type? && parent.endless?
260
+ return false if parent.assignment?
261
+ end
262
+
263
+ node.any_match_pattern_type? && node.each_ancestor.none?(&:operator_keyword?)
264
+ end
265
+
257
266
  def raised_to_power_negative_numeric?(begin_node, node)
258
267
  return false unless node.numeric_type?
259
268
 
@@ -67,6 +67,9 @@ module RuboCop
67
67
 
68
68
  def on_or_asgn(node)
69
69
  allow_self(node.lhs)
70
+
71
+ lhs_name = node.lhs.lvasgn_type? ? node.lhs.name : node.lhs
72
+ add_lhs_to_local_variables_scopes(node.rhs, lhs_name)
70
73
  end
71
74
  alias on_and_asgn on_or_asgn
72
75
 
@@ -123,11 +126,11 @@ module RuboCop
123
126
  def on_if(node)
124
127
  # Allow conditional nodes to use `self` in the condition if that variable
125
128
  # name is used in an `lvasgn` or `masgn` within the `if`.
126
- node.child_nodes.each do |child_node|
127
- if child_node.lvasgn_type?
128
- add_lhs_to_local_variables_scopes(node.condition, child_node.lhs)
129
- elsif child_node.masgn_type?
130
- add_masgn_lhs_variables(node.condition, child_node.lhs)
129
+ node.each_descendant(:lvasgn, :masgn) do |descendant_node|
130
+ if descendant_node.lvasgn_type?
131
+ add_lhs_to_local_variables_scopes(node.condition, descendant_node.lhs)
132
+ else
133
+ add_masgn_lhs_variables(node.condition, descendant_node.lhs)
131
134
  end
132
135
  end
133
136
  end
@@ -115,8 +115,9 @@ module RuboCop
115
115
  end
116
116
 
117
117
  def correct_node(corrector, node)
118
- corrector.replace(node.loc.keyword, 'if') if node.unless?
118
+ corrector.replace(node.loc.keyword, 'if') if node.unless? && !part_of_ignored_node?(node)
119
119
  corrector.replace(node.condition, chainable_condition(node))
120
+ ignore_node(node)
120
121
  end
121
122
 
122
123
  def correct_for_guard_condition_style(corrector, node, if_branch)
@@ -270,7 +270,7 @@ module RuboCop
270
270
  end
271
271
 
272
272
  def allow_if_method_has_argument?(send_node)
273
- !!cop_config.fetch('AllowMethodsWithArguments', false) && !send_node.arguments.count.zero?
273
+ !!cop_config.fetch('AllowMethodsWithArguments', false) && send_node.arguments.any?
274
274
  end
275
275
 
276
276
  def allow_comments?
@@ -97,7 +97,7 @@ module RuboCop
97
97
  pipes = tokens.select { |token| token.type == :tPIPE }
98
98
  begin_pos, end_pos = pipes.map { |pipe| tokens.index(pipe) }
99
99
 
100
- tokens[begin_pos + 1..end_pos - 1]
100
+ tokens[(begin_pos + 1)..(end_pos - 1)]
101
101
  end
102
102
  end
103
103
  end
@@ -22,7 +22,7 @@ module RuboCop
22
22
 
23
23
  @severest_offense = nil
24
24
 
25
- file_phrase = target_files.count == 1 ? 'file' : 'files'
25
+ file_phrase = target_files.one? ? 'file' : 'files'
26
26
 
27
27
  # 185/407 files |====== 45 ======> | ETA: 00:00:04
28
28
  # %c / %C | %w > %i | %e
@@ -24,7 +24,7 @@ module RuboCop
24
24
 
25
25
  return unless output.tty?
26
26
 
27
- file_phrase = target_files.count == 1 ? 'file' : 'files'
27
+ file_phrase = target_files.one? ? 'file' : 'files'
28
28
 
29
29
  # 185/407 files |====== 45 ======> | ETA: 00:00:04
30
30
  # %c / %C | %w > %i | %e
@@ -79,7 +79,7 @@ module RuboCop
79
79
  LanguageServer::Protocol::Interface::CodeDescription.new(href: doc_url)
80
80
  end
81
81
 
82
- # rubocop:disable Layout/LineLength, Metrics/MethodLength
82
+ # rubocop:disable Metrics/MethodLength
83
83
  def autocorrect_action
84
84
  LanguageServer::Protocol::Interface::CodeAction.new(
85
85
  title: "Autocorrect #{@offense.cop_name}",
@@ -98,7 +98,7 @@ module RuboCop
98
98
  is_preferred: true
99
99
  )
100
100
  end
101
- # rubocop:enable Layout/LineLength, Metrics/MethodLength
101
+ # rubocop:enable Metrics/MethodLength
102
102
 
103
103
  # rubocop:disable Metrics/MethodLength
104
104
  def offense_replacements
@@ -120,7 +120,7 @@ module RuboCop
120
120
  end
121
121
  # rubocop:enable Metrics/MethodLength
122
122
 
123
- # rubocop:disable Layout/LineLength, Metrics/MethodLength
123
+ # rubocop:disable Metrics/MethodLength
124
124
  def disable_line_action
125
125
  LanguageServer::Protocol::Interface::CodeAction.new(
126
126
  title: "Disable #{@offense.cop_name} for this line",
@@ -138,7 +138,7 @@ module RuboCop
138
138
  )
139
139
  )
140
140
  end
141
- # rubocop:enable Layout/LineLength, Metrics/MethodLength
141
+ # rubocop:enable Metrics/MethodLength
142
142
 
143
143
  def line_disable_comment
144
144
  new_text = if @offense.source_line.include?(' # rubocop:disable ')
@@ -3,7 +3,7 @@
3
3
  module RuboCop
4
4
  # This module holds the RuboCop version information.
5
5
  module Version
6
- STRING = '1.76.1'
6
+ STRING = '1.77.0'
7
7
 
8
8
  MSG = '%<version>s (using %<parser_version>s, ' \
9
9
  'rubocop-ast %<rubocop_ast_version>s, ' \
data/lib/rubocop.rb CHANGED
@@ -180,6 +180,7 @@ require_relative 'rubocop/cop/bundler/insecure_protocol_source'
180
180
  require_relative 'rubocop/cop/bundler/ordered_gems'
181
181
 
182
182
  require_relative 'rubocop/cop/gemspec/add_runtime_dependency'
183
+ require_relative 'rubocop/cop/gemspec/attribute_assignment'
183
184
  require_relative 'rubocop/cop/gemspec/dependency_version'
184
185
  require_relative 'rubocop/cop/gemspec/deprecated_attribute_assignment'
185
186
  require_relative 'rubocop/cop/gemspec/development_dependencies'
@@ -507,6 +508,7 @@ require_relative 'rubocop/cop/style/class_methods_definitions'
507
508
  require_relative 'rubocop/cop/style/class_vars'
508
509
  require_relative 'rubocop/cop/style/collection_compact'
509
510
  require_relative 'rubocop/cop/style/collection_methods'
511
+ require_relative 'rubocop/cop/style/collection_querying'
510
512
  require_relative 'rubocop/cop/style/colon_method_call'
511
513
  require_relative 'rubocop/cop/style/colon_method_definition'
512
514
  require_relative 'rubocop/cop/style/combinable_defined'
@@ -34,7 +34,7 @@ module RubyLsp
34
34
  @runtime_adapter = nil
35
35
  end
36
36
 
37
- # rubocop:disable Layout/LineLength, Metrics/MethodLength
37
+ # rubocop:disable Metrics/MethodLength
38
38
  def register_additional_file_watchers(global_state, message_queue)
39
39
  return unless global_state.supports_watching_files
40
40
 
@@ -59,7 +59,7 @@ module RubyLsp
59
59
  )
60
60
  )
61
61
  end
62
- # rubocop:enable Layout/LineLength, Metrics/MethodLength
62
+ # rubocop:enable Metrics/MethodLength
63
63
 
64
64
  def workspace_did_change_watched_files(changes)
65
65
  return unless changes.any? { |change| change[:uri].end_with?('.rubocop.yml') }
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rubocop
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.76.1
4
+ version: 1.77.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Bozhidar Batsov
@@ -9,7 +9,7 @@ authors:
9
9
  - Yuji Nakayama
10
10
  bindir: exe
11
11
  cert_chain: []
12
- date: 2025-06-09 00:00:00.000000000 Z
12
+ date: 2025-06-20 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: json
@@ -127,7 +127,7 @@ dependencies:
127
127
  requirements:
128
128
  - - ">="
129
129
  - !ruby/object:Gem::Version
130
- version: 1.45.0
130
+ version: 1.45.1
131
131
  - - "<"
132
132
  - !ruby/object:Gem::Version
133
133
  version: '2.0'
@@ -137,7 +137,7 @@ dependencies:
137
137
  requirements:
138
138
  - - ">="
139
139
  - !ruby/object:Gem::Version
140
- version: 1.45.0
140
+ version: 1.45.1
141
141
  - - "<"
142
142
  - !ruby/object:Gem::Version
143
143
  version: '2.0'
@@ -265,6 +265,7 @@ files:
265
265
  - lib/rubocop/cop/exclude_limit.rb
266
266
  - lib/rubocop/cop/force.rb
267
267
  - lib/rubocop/cop/gemspec/add_runtime_dependency.rb
268
+ - lib/rubocop/cop/gemspec/attribute_assignment.rb
268
269
  - lib/rubocop/cop/gemspec/dependency_version.rb
269
270
  - lib/rubocop/cop/gemspec/deprecated_attribute_assignment.rb
270
271
  - lib/rubocop/cop/gemspec/development_dependencies.rb
@@ -727,6 +728,7 @@ files:
727
728
  - lib/rubocop/cop/style/class_vars.rb
728
729
  - lib/rubocop/cop/style/collection_compact.rb
729
730
  - lib/rubocop/cop/style/collection_methods.rb
731
+ - lib/rubocop/cop/style/collection_querying.rb
730
732
  - lib/rubocop/cop/style/colon_method_call.rb
731
733
  - lib/rubocop/cop/style/colon_method_definition.rb
732
734
  - lib/rubocop/cop/style/combinable_defined.rb
@@ -1085,9 +1087,9 @@ licenses:
1085
1087
  - MIT
1086
1088
  metadata:
1087
1089
  homepage_uri: https://rubocop.org/
1088
- changelog_uri: https://github.com/rubocop/rubocop/releases/tag/v1.76.1
1090
+ changelog_uri: https://github.com/rubocop/rubocop/releases/tag/v1.77.0
1089
1091
  source_code_uri: https://github.com/rubocop/rubocop/
1090
- documentation_uri: https://docs.rubocop.org/rubocop/1.76/
1092
+ documentation_uri: https://docs.rubocop.org/rubocop/1.77/
1091
1093
  bug_tracker_uri: https://github.com/rubocop/rubocop/issues
1092
1094
  rubygems_mfa_required: 'true'
1093
1095
  rdoc_options: []