rubocop 1.76.0 → 1.76.2

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 236bdf0fa5879274099388142e17b886fc852cdc1e762d50c74a31254c7c6136
4
- data.tar.gz: 03011b196c686aa5ce1cc617d56c19041dbdc76ba237626316048be9e75dc62c
3
+ metadata.gz: 0c98c6b67493a9eeb135c1e86846e068746676cd7caba305df7343f6da5a9307
4
+ data.tar.gz: a5e75c620016505e918bc98e273a729f14388b6c3cf95358c4975d785ca7fa57
5
5
  SHA512:
6
- metadata.gz: 91eb23282705c816206704923efdea2cb45ad09677a5d72a8741a565d9ed96146ad688aa54c1dc5be7f6d83c6e4d099605bdd91cb941d0d2b1fb36ace05b02a8
7
- data.tar.gz: 6ff783d52e62e4dda5cae1c78f8648ef8af4078c5f052134a23c9229018e33d29a21d3ecaa80bfdc74d382b73a1a666f67d9e1b3436b1dfb5745a96861cf92ec
6
+ metadata.gz: '08701aa9d2fa3f7a1cf2b950b8bdf8640c47965345c3572645dd04f73507142ebf08aa16d5e7ab829a9e74330d45b4280ef700a7974eb02d7cf29e5890f67bb8'
7
+ data.tar.gz: 8d0f787edacfee68d6e6bc13db5c9f2247f137c3074fec0af47dae1b6b0b51403e9d071d1a40a81529271d35d1954a5848e16c489ebb175c9b2a24a4c1192a48
data/README.md CHANGED
@@ -112,7 +112,7 @@ Here's a list of RuboCop's core developers:
112
112
  * [Yuji Nakayama](https://github.com/yujinakayama) (retired)
113
113
  * [Evgeni Dzhelyov](https://github.com/edzhelyov) (retired)
114
114
  * [Ted Johansson](https://github.com/drenmi)
115
- * [Masataka Kuwabara](https://github.com/pocke)
115
+ * [Masataka Kuwabara](https://github.com/pocke) (retired)
116
116
  * [Koichi Ito](https://github.com/koic)
117
117
  * [Maxim Krizhanovski](https://github.com/darhazer)
118
118
  * [Benjamin Quorning](https://github.com/bquorning)
data/config/default.yml CHANGED
@@ -2689,7 +2689,7 @@ Metrics/AbcSize:
2689
2689
  A calculated magnitude based on number of assignments,
2690
2690
  branches, and conditions.
2691
2691
  References:
2692
- - http://c2.com/cgi/wiki?AbcMetric
2692
+ - https://wiki.c2.com/?AbcMetric
2693
2693
  - https://en.wikipedia.org/wiki/ABC_Software_Metric
2694
2694
  Enabled: true
2695
2695
  VersionAdded: '0.27'
@@ -3063,6 +3063,7 @@ Naming/PredicateMethod:
3063
3063
  Description: 'Checks that predicate methods end with `?` and non-predicate methods do not.'
3064
3064
  Enabled: pending
3065
3065
  VersionAdded: '1.76'
3066
+ VersionChanged: '1.76'
3066
3067
  # In `aggressive` mode, the cop will register an offense for predicate methods that
3067
3068
  # may return a non-boolean value.
3068
3069
  # In `conservative` mode, the cop will *not* register an offense for predicate methods
@@ -3070,6 +3071,8 @@ Naming/PredicateMethod:
3070
3071
  Mode: conservative
3071
3072
  AllowedMethods:
3072
3073
  - call
3074
+ AllowedPatterns: []
3075
+ AllowBangMethods: false
3073
3076
 
3074
3077
  Naming/PredicatePrefix:
3075
3078
  Description: 'Predicate method names should not be prefixed and end with a `?`.'
@@ -5006,7 +5009,7 @@ Style/OpenStructUse:
5006
5009
  Avoid using OpenStruct. As of Ruby 3.0, use is officially discouraged due to performance,
5007
5010
  version compatibility, and potential security issues.
5008
5011
  References:
5009
- - https://docs.ruby-lang.org/en/3.0.0/OpenStruct.html#class-OpenStruct-label-Caveats
5012
+ - https://docs.ruby-lang.org/en/3.0/OpenStruct.html#class-OpenStruct-label-Caveats
5010
5013
 
5011
5014
  Enabled: pending
5012
5015
  Safe: false
@@ -138,7 +138,7 @@ module RuboCop
138
138
  end
139
139
 
140
140
  def previous_line_ignoring_comments(processed_source, send_line)
141
- processed_source[0..send_line - 2].reverse.find { |line| !comment_line?(line) }
141
+ processed_source[0..(send_line - 2)].reverse.find { |line| !comment_line?(line) }
142
142
  end
143
143
 
144
144
  def previous_line_empty?(send_line)
@@ -27,7 +27,9 @@ module RuboCop
27
27
  # @example
28
28
  # # bad
29
29
  # x || 1..2
30
+ # x - 1..2
30
31
  # (x || 1..2)
32
+ # x || 1..y || 2
31
33
  # 1..2.to_a
32
34
  #
33
35
  # # good, unambiguous
@@ -41,6 +43,7 @@ module RuboCop
41
43
  #
42
44
  # # good, ambiguity removed
43
45
  # x || (1..2)
46
+ # (x - 1)..2
44
47
  # (x || 1)..2
45
48
  # (x || 1)..(y || 2)
46
49
  # (1..2).to_a
@@ -96,6 +99,8 @@ module RuboCop
96
99
  # to avoid the ambiguity of `1..2.to_a`.
97
100
  return false if node.receiver&.basic_literal?
98
101
 
102
+ return false if node.operator_method? && !node.method?(:[])
103
+
99
104
  require_parentheses_for_method_chain? || node.receiver.nil?
100
105
  end
101
106
 
@@ -20,7 +20,7 @@ module RuboCop
20
20
 
21
21
  def on_interpolation(begin_node)
22
22
  node_children = begin_node.children.dup
23
- node_children.delete_if { |e| e&.nil_type? || (e&.basic_literal? && e&.value&.empty?) }
23
+ node_children.delete_if { |e| e.nil_type? || (e.basic_literal? && e.str_content&.empty?) }
24
24
  return unless node_children.empty?
25
25
 
26
26
  add_offense(begin_node) { |corrector| corrector.remove(begin_node) }
@@ -97,7 +97,7 @@ module RuboCop
97
97
  end
98
98
 
99
99
  def require_parentheses?(send_node)
100
- return true if operator_inside_hash?(send_node)
100
+ return true if operator_inside_collection_literal?(send_node)
101
101
  return false unless send_node.comparison_method?
102
102
  return false unless (node = send_node.parent)
103
103
 
@@ -105,10 +105,10 @@ module RuboCop
105
105
  (node.respond_to?(:comparison_method?) && node.comparison_method?)
106
106
  end
107
107
 
108
- def operator_inside_hash?(send_node)
109
- # If an operator call (without a dot) is inside a hash, it needs
108
+ def operator_inside_collection_literal?(send_node)
109
+ # If an operator call (without a dot) is inside an array or a hash, it needs
110
110
  # to be parenthesized when converted to safe navigation.
111
- send_node.parent&.pair_type? && !send_node.loc.dot
111
+ send_node.parent&.type?(:array, :pair) && !send_node.loc.dot
112
112
  end
113
113
  end
114
114
  end
@@ -4,10 +4,10 @@ module RuboCop
4
4
  module Cop
5
5
  module Lint
6
6
  # Checks for redundant access modifiers, including those with no
7
- # code, those which are repeated, and leading `public` modifiers in a
8
- # class or module body. Conditionally-defined methods are considered as
9
- # always being defined, and thus access modifiers guarding such methods
10
- # are not redundant.
7
+ # code, those which are repeated, those which are on top-level, and
8
+ # leading `public` modifiers in a class or module body.
9
+ # Conditionally-defined methods are considered as always being defined,
10
+ # and thus access modifiers guarding such methods are not redundant.
11
11
  #
12
12
  # This cop has `ContextCreatingMethods` option. The default setting value
13
13
  # is an empty array that means no method is specified.
@@ -58,6 +58,12 @@ module RuboCop
58
58
  # private # this is redundant (no following methods are defined)
59
59
  # end
60
60
  #
61
+ # # bad
62
+ # private # this is useless (access modifiers have no effect on top-level)
63
+ #
64
+ # def method
65
+ # end
66
+ #
61
67
  # # good
62
68
  # class Foo
63
69
  # private # this is not redundant (a method is defined)
@@ -145,6 +151,17 @@ module RuboCop
145
151
  alias on_numblock on_block
146
152
  alias on_itblock on_block
147
153
 
154
+ def on_begin(node)
155
+ return if node.parent
156
+
157
+ node.child_nodes.each do |child|
158
+ next unless child.send_type? && access_modifier?(child)
159
+
160
+ # This call always registers an offense for access modifier `child.method_name`
161
+ check_send_node(child, child.method_name, true)
162
+ end
163
+ end
164
+
148
165
  private
149
166
 
150
167
  def autocorrect(corrector, node)
@@ -10,6 +10,9 @@ module RuboCop
10
10
  # applies to `Array.new`, `Array#fetch`, `Hash#fetch`, `ENV.fetch` and
11
11
  # `Thread#fetch`.
12
12
  #
13
+ # A `fetch` call without a receiver is considered a custom method and does not register
14
+ # an offense.
15
+ #
13
16
  # @safety
14
17
  # This cop is unsafe because the receiver could have nonstandard implementation
15
18
  # of `fetch`, or be a class other than the one listed above.
@@ -56,7 +59,7 @@ module RuboCop
56
59
  def_node_matcher :default_value_argument_and_block, <<~PATTERN
57
60
  (any_block
58
61
  {
59
- (call _receiver :fetch $_key $_default_value)
62
+ (call !nil? :fetch $_key $_default_value)
60
63
  (send (const _ :Array) :new $_size $_default_value)
61
64
  }
62
65
  _args
@@ -89,7 +89,7 @@ module RuboCop
89
89
 
90
90
  if first_non_comment_token
91
91
  # `line` is 1-indexed so we need to subtract 1 to get the array index
92
- processed_source.lines[0...first_non_comment_token.line - 1]
92
+ processed_source.lines[0...(first_non_comment_token.line - 1)]
93
93
  else
94
94
  processed_source.lines
95
95
  end
@@ -6,7 +6,7 @@ module RuboCop
6
6
  # Checks that predicate methods end with `?` and non-predicate methods do not.
7
7
  #
8
8
  # The names of predicate methods (methods that return a boolean value) should end
9
- # in a question mark. Methods that dont return a boolean, shouldnt
9
+ # in a question mark. Methods that don't return a boolean, shouldn't
10
10
  # end in a question mark.
11
11
  #
12
12
  # The cop assesses a predicate method as one that returns boolean values. Likewise,
@@ -22,7 +22,11 @@ module RuboCop
22
22
  #
23
23
  # The cop also has `AllowedMethods` configuration in order to prevent the cop from
24
24
  # registering an offense from a method name that does not confirm to the naming
25
- # guidelines. By default, `call` is allowed.
25
+ # guidelines. By default, `call` is allowed. The cop also has `AllowedPatterns`
26
+ # configuration to allow method names by regular expression.
27
+ #
28
+ # The cop can furthermore be configured to allow all bang methods (method names
29
+ # ending with `!`), with `AllowBangMethods: true` (default false).
26
30
  #
27
31
  # @example Mode: conservative (default)
28
32
  # # bad
@@ -73,8 +77,21 @@ module RuboCop
73
77
  # true
74
78
  # end
75
79
  #
80
+ # @example AllowBangMethods: false (default)
81
+ # # bad
82
+ # def save!
83
+ # true
84
+ # end
85
+ #
86
+ # @example AllowBangMethods: true
87
+ # # good
88
+ # def save!
89
+ # true
90
+ # end
91
+ #
76
92
  class PredicateMethod < Base
77
93
  include AllowedMethods
94
+ include AllowedPattern
78
95
 
79
96
  MSG_PREDICATE = 'Predicate method names should end with `?`.'
80
97
  MSG_NON_PREDICATE = 'Non-predicate method names should not end with `?`.'
@@ -97,6 +114,8 @@ module RuboCop
97
114
 
98
115
  def allowed?(node)
99
116
  allowed_method?(node.method_name) ||
117
+ matches_allowed_pattern?(node.method_name) ||
118
+ allowed_bang_method?(node) ||
100
119
  node.operator_method? ||
101
120
  node.body.nil?
102
121
  end
@@ -169,7 +188,7 @@ module RuboCop
169
188
 
170
189
  def last_value(node)
171
190
  value = node.begin_type? ? node.children.last : node
172
- value.return_type? ? extract_return_value(value) : value
191
+ value&.return_type? ? extract_return_value(value) : value
173
192
  end
174
193
 
175
194
  def process_return_values(return_values)
@@ -210,6 +229,16 @@ module RuboCop
210
229
  def conservative?
211
230
  cop_config.fetch('Mode', :conservative).to_sym == :conservative
212
231
  end
232
+
233
+ def allowed_bang_method?(node)
234
+ return false unless allow_bang_methods?
235
+
236
+ node.bang_method?
237
+ end
238
+
239
+ def allow_bang_methods?
240
+ cop_config.fetch('AllowBangMethods', false)
241
+ end
213
242
  end
214
243
  end
215
244
  end
@@ -451,7 +451,9 @@ module RuboCop
451
451
  corrector.remove_preceding(condition.loc.else, condition.loc.else.column - column)
452
452
  end
453
453
 
454
- return unless condition.loc.end && !same_line?(condition.loc.end, condition)
454
+ return unless condition.loc.end && !same_line?(
455
+ condition.branches.last.parent.else_branch, condition.loc.end
456
+ )
455
457
 
456
458
  corrector.remove_preceding(condition.loc.end, condition.loc.end.column - column)
457
459
  end
@@ -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
 
@@ -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
@@ -12,6 +12,8 @@ module RuboCop
12
12
  # Cop is unsafe because the receiver of `flatten` method might not
13
13
  # be an `Array`, so it's possible it won't respond to `join` method,
14
14
  # or the end result would be different.
15
+ # Also, if the global variable `$,` is set to a value other than the default `nil`,
16
+ # false positives may occur.
15
17
  #
16
18
  # @example
17
19
  # # bad
@@ -30,7 +32,7 @@ module RuboCop
30
32
 
31
33
  # @!method flatten_join?(node)
32
34
  def_node_matcher :flatten_join?, <<~PATTERN
33
- (call (call !nil? :flatten _?) :join _?)
35
+ (call (call !nil? :flatten _?) :join (nil)?)
34
36
  PATTERN
35
37
 
36
38
  def on_send(node)
@@ -164,8 +164,9 @@ 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
-
168
- return 'a one-line pattern matching' if node.any_match_pattern_type?
167
+ if disallowed_one_line_pattern_matching?(begin_node, node)
168
+ return 'a one-line pattern matching'
169
+ end
169
170
  return 'an interpolated expression' if interpolation?(begin_node)
170
171
  return 'a method argument' if argument_of_parenthesized_method_call?(begin_node, node)
171
172
 
@@ -253,6 +254,12 @@ module RuboCop
253
254
  end
254
255
  end
255
256
 
257
+ def disallowed_one_line_pattern_matching?(begin_node, node)
258
+ return false if begin_node.parent&.any_def_type? && begin_node.parent.endless?
259
+
260
+ node.any_match_pattern_type? && node.each_ancestor.none?(&:operator_keyword?)
261
+ end
262
+
256
263
  def raised_to_power_negative_numeric?(begin_node, node)
257
264
  return false unless node.numeric_type?
258
265
 
@@ -123,11 +123,11 @@ module RuboCop
123
123
  def on_if(node)
124
124
  # Allow conditional nodes to use `self` in the condition if that variable
125
125
  # 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)
126
+ node.each_descendant(:lvasgn, :masgn) do |descendant_node|
127
+ if descendant_node.lvasgn_type?
128
+ add_lhs_to_local_variables_scopes(node.condition, descendant_node.lhs)
129
+ else
130
+ add_masgn_lhs_variables(node.condition, descendant_node.lhs)
131
131
  end
132
132
  end
133
133
  end
@@ -86,6 +86,10 @@ module RuboCop
86
86
  # foo.baz = bar if foo
87
87
  # foo.baz + bar if foo
88
88
  # foo.bar > 2 if foo
89
+ #
90
+ # foo ? foo[index] : nil # Ignored `foo&.[](index)` due to unclear readability benefit.
91
+ # foo ? foo[idx] = v : nil # Ignored `foo&.[]=(idx, v)` due to unclear readability benefit.
92
+ # foo ? foo * 42 : nil # Ignored `foo&.*(42)` due to unclear readability benefit.
89
93
  class SafeNavigation < Base # rubocop:disable Metrics/ClassLength
90
94
  include NilMethods
91
95
  include RangeHelp
@@ -146,6 +150,7 @@ module RuboCop
146
150
 
147
151
  body = extract_if_body(node)
148
152
  method_call = receiver.parent
153
+ return if dotless_operator_call?(method_call) || method_call.double_colon?
149
154
 
150
155
  removal_ranges = [begin_range(node, body), end_range(node, body)]
151
156
 
@@ -181,6 +186,8 @@ module RuboCop
181
186
  end
182
187
  end
183
188
 
189
+ private
190
+
184
191
  def report_offense(node, rhs, rhs_receiver, *removal_ranges, offense_range: node)
185
192
  add_offense(offense_range) do |corrector|
186
193
  next if ignored_node?(node)
@@ -198,8 +205,6 @@ module RuboCop
198
205
  end
199
206
  end
200
207
 
201
- private
202
-
203
208
  def find_method_chain(node)
204
209
  return node unless node&.parent&.call_type?
205
210
 
@@ -253,6 +258,12 @@ module RuboCop
253
258
  end
254
259
  end
255
260
 
261
+ def dotless_operator_call?(method_call)
262
+ return false if method_call.loc.dot
263
+
264
+ method_call.method?(:[]) || method_call.method?(:[]=) || method_call.operator_method?
265
+ end
266
+
256
267
  def handle_comments(corrector, node, method_call)
257
268
  comments = comments(node)
258
269
  return if comments.empty?
@@ -380,8 +391,7 @@ module RuboCop
380
391
  method_chain)
381
392
  start_method.each_ancestor do |ancestor|
382
393
  break unless %i[send block].include?(ancestor.type)
383
- next unless ancestor.send_type?
384
- next if ancestor.safe_navigation?
394
+ next if !ancestor.send_type? || ancestor.operator_method?
385
395
 
386
396
  corrector.insert_before(ancestor.loc.dot, '&')
387
397
 
@@ -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
@@ -72,9 +72,15 @@ module RuboCop
72
72
  #
73
73
  # expect_no_corrections
74
74
  #
75
- # If your code has variables of different lengths, you can use `%{foo}`,
76
- # `^{foo}`, and `_{foo}` to format your template; you can also abbreviate
77
- # offense messages with `[...]`:
75
+ # If your code has variables of different lengths, you can use the
76
+ # following markers to format your template by passing the variables as a
77
+ # keyword arguments:
78
+ #
79
+ # - `%{foo}`: Interpolates `foo`
80
+ # - `^{foo}`: Inserts `'^' * foo.size` for dynamic offense range length
81
+ # - `_{foo}`: Inserts `' ' * foo.size` for dynamic offense range indentation
82
+ #
83
+ # You can also abbreviate offense messages with `[...]`.
78
84
  #
79
85
  # %w[raise fail].each do |keyword|
80
86
  # expect_offense(<<~RUBY, keyword: keyword)
@@ -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.0'
6
+ STRING = '1.76.2'
7
7
 
8
8
  MSG = '%<version>s (using %<parser_version>s, ' \
9
9
  'rubocop-ast %<rubocop_ast_version>s, ' \
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.0
4
+ version: 1.76.2
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-04 00:00:00.000000000 Z
12
+ date: 2025-06-17 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'
@@ -1085,7 +1085,7 @@ licenses:
1085
1085
  - MIT
1086
1086
  metadata:
1087
1087
  homepage_uri: https://rubocop.org/
1088
- changelog_uri: https://github.com/rubocop/rubocop/releases/tag/v1.76.0
1088
+ changelog_uri: https://github.com/rubocop/rubocop/releases/tag/v1.76.2
1089
1089
  source_code_uri: https://github.com/rubocop/rubocop/
1090
1090
  documentation_uri: https://docs.rubocop.org/rubocop/1.76/
1091
1091
  bug_tracker_uri: https://github.com/rubocop/rubocop/issues