rubocop 1.72.1 → 1.72.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: 9909c26bded9ccffc98132b899b68773a19b0e1259d834d2cd147abf2ca8534e
4
- data.tar.gz: d6e58861b573240488aebcdaab3ec984a8c6fe75fd0da8cb51bfa8be3c4469ba
3
+ metadata.gz: 4a6ff0f849d961da13d2131ff60e0ed49dce01a4c2d32caa8484a2344344609b
4
+ data.tar.gz: 9da9fc43212c62cd6542649c90423e9365f50cb00e82b6337be1a241c6a17283
5
5
  SHA512:
6
- metadata.gz: 235ed1dea8218bf39fff25ebcb297391ced4a9aeb4c582979711c095958c0aaab44dcead59108f7463f0f0d7da046b4b9f88be0be4016bdc369259ef89c37162
7
- data.tar.gz: b80078b908cbf8b75b0b9b047e7806521a65ca83cce802b38172d946cc625ffdd9bc255f91b1eba6e22d42670fee6aaa7d1ef2a81653a39ee1b1e869a7d0797b
6
+ metadata.gz: 7ff34957554167b3b1e30645e3754094968fae93d0284a3882460b3e24f44fd64bcf358b23fd0e8154489206fd9c95fc6555b551f1af5ac810805fac2b6d27be
7
+ data.tar.gz: 48e989049de37523554c740ba1368e32de38bc0f879c1fc717924a758a1ba465ef4413cba80a42be59ccaaf87616b52c0ad437256702bf5fd091c4a5818f428a
data/config/default.yml CHANGED
@@ -5171,7 +5171,9 @@ Style/RedundantFilterChain:
5171
5171
  Style/RedundantFormat:
5172
5172
  Description: 'Checks for usages of `Kernel#format` or `Kernel#sprintf` with only a single argument.'
5173
5173
  Enabled: pending
5174
+ SafeAutoCorrect: false
5174
5175
  VersionAdded: '1.72'
5176
+ VersionChanged: '1.72'
5175
5177
 
5176
5178
  Style/RedundantFreeze:
5177
5179
  Description: "Checks usages of Object#freeze on immutable objects."
@@ -90,8 +90,10 @@ module RuboCop
90
90
  description_text = string_contents(current_description)
91
91
  return unless (new_description = correct_description(description_text, description_map))
92
92
 
93
+ quote = current_description.dstr_type? ? '"' : "'"
94
+
93
95
  add_offense(current_description, message: message) do |corrector|
94
- corrector.replace(current_description, "'#{new_description}'")
96
+ corrector.replace(current_description, "#{quote}#{new_description}#{quote}")
95
97
  end
96
98
  end
97
99
 
@@ -106,7 +108,7 @@ module RuboCop
106
108
  end
107
109
 
108
110
  def string_contents(node)
109
- node.str_type? ? node.value : node.source
111
+ node.type?(:str, :dstr) ? node.value : node.source
110
112
  end
111
113
  end
112
114
  end
@@ -56,7 +56,13 @@ module RuboCop
56
56
  private
57
57
 
58
58
  def after_private_modifier?(left_siblings)
59
- left_siblings.compact.select(&:send_type?).any? { |node| node.command?(:private) }
59
+ access_modifier_candidates = left_siblings.compact.select do |left_sibling|
60
+ left_sibling.respond_to?(:send_type?) && left_sibling.send_type?
61
+ end
62
+
63
+ access_modifier_candidates.any? do |candidate|
64
+ candidate.command?(:private) && candidate.arguments.none?
65
+ end
60
66
  end
61
67
 
62
68
  def private_constantize?(right_siblings, const_value)
@@ -18,12 +18,12 @@ module RuboCop
18
18
  end
19
19
 
20
20
  # @deprecated Use allowed_line? instead
21
- def ignored_line?
21
+ def ignored_line?(line)
22
22
  warn Rainbow(<<~WARNING).yellow, uplevel: 1
23
23
  `ignored_line?` is deprecated. Use `allowed_line?` instead.
24
24
  WARNING
25
25
 
26
- allowed_line?
26
+ allowed_line?(line)
27
27
  end
28
28
 
29
29
  def matches_allowed_pattern?(line)
@@ -31,12 +31,12 @@ module RuboCop
31
31
  end
32
32
 
33
33
  # @deprecated Use matches_allowed_pattern? instead
34
- def matches_ignored_pattern?
34
+ def matches_ignored_pattern?(line)
35
35
  warn Rainbow(<<~WARNING).yellow, uplevel: 1
36
36
  `matches_ignored_pattern?` is deprecated. Use `matches_allowed_pattern?` instead.
37
37
  WARNING
38
38
 
39
- matches_allowed_pattern?
39
+ matches_allowed_pattern?(line)
40
40
  end
41
41
 
42
42
  def allowed_patterns
@@ -14,10 +14,10 @@ module RuboCop
14
14
  # autocorrected.
15
15
  #
16
16
  # [NOTE]
17
- # --
17
+ # ====
18
18
  # Because of a bug in Ruby 3.3.0, when a block is referenced inside of another block,
19
19
  # no offense will be registered until Ruby 3.4:
20
-
20
+ #
21
21
  # [source,ruby]
22
22
  # ----
23
23
  # def foo(&block)
@@ -25,7 +25,7 @@ module RuboCop
25
25
  # block_method { bar(&block) }
26
26
  # end
27
27
  # ----
28
- # --
28
+ # ====
29
29
  #
30
30
  # @example EnforcedStyle: anonymous (default)
31
31
  #
@@ -32,10 +32,10 @@ module RuboCop
32
32
  # This cop handles not only method forwarding but also forwarding to `super`.
33
33
  #
34
34
  # [NOTE]
35
- # --
35
+ # ====
36
36
  # Because of a bug in Ruby 3.3.0, when a block is referenced inside of another block,
37
37
  # no offense will be registered until Ruby 3.4:
38
-
38
+ #
39
39
  # [source,ruby]
40
40
  # ----
41
41
  # def foo(&block)
@@ -43,7 +43,7 @@ module RuboCop
43
43
  # block_method { bar(&block) }
44
44
  # end
45
45
  # ----
46
- # --
46
+ # ====
47
47
  #
48
48
  # @example
49
49
  # # bad
@@ -12,6 +12,22 @@ module RuboCop
12
12
  # inlined into a string easily. This applies to the `%s`, `%d`, `%i`, `%u`, and
13
13
  # `%f` format specifiers.
14
14
  #
15
+ # @safety
16
+ # This cop's autocorrection is unsafe because string object returned by
17
+ # `format` and `sprintf` are never frozen. If `format('string')` is autocorrected to
18
+ # `'string'`, `FrozenError` may occur when calling a destructive method like `String#<<`.
19
+ # Consider using `'string'.dup` instead of `format('string')`.
20
+ # Additionally, since the necessity of `dup` cannot be determined automatically,
21
+ # this autocorrection is inherently unsafe.
22
+ #
23
+ # [source,ruby]
24
+ # ----
25
+ # # frozen_string_literal: true
26
+ #
27
+ # format('template').frozen? # => false
28
+ # 'template'.frozen? # => true
29
+ # ----
30
+ #
15
31
  # @example
16
32
  #
17
33
  # # bad
@@ -113,7 +129,7 @@ module RuboCop
113
129
  end
114
130
 
115
131
  def find_argument(sequence, arguments, hash)
116
- if sequence.annotated? || sequence.template?
132
+ if hash && (sequence.annotated? || sequence.template?)
117
133
  find_hash_value_node(hash, sequence.name.to_sym).first
118
134
  elsif sequence.arg_number
119
135
  arguments[sequence.arg_number.to_i - 1]
@@ -144,7 +160,7 @@ module RuboCop
144
160
  end
145
161
 
146
162
  def numeric?(argument)
147
- argument.type?(:numeric, :str) ||
163
+ argument&.type?(:numeric, :str) ||
148
164
  rational_number?(argument) ||
149
165
  complex_number?(argument)
150
166
  end
@@ -13,8 +13,7 @@ module RuboCop
13
13
  # # good
14
14
  # x if y.z.nil?
15
15
  #
16
- # rubocop:disable Metrics/ClassLength
17
- class RedundantParentheses < Base
16
+ class RedundantParentheses < Base # rubocop:disable Metrics/ClassLength
18
17
  include Parentheses
19
18
  extend AutoCorrector
20
19
 
@@ -299,7 +298,6 @@ module RuboCop
299
298
  block.keywords? && begin_node.each_ancestor(:call).any?
300
299
  end
301
300
  end
302
- # rubocop:enable Metrics/ClassLength
303
301
  end
304
302
  end
305
303
  end
@@ -57,6 +57,8 @@ module RuboCop
57
57
  all_cop_keys_configured_by_plugins
58
58
  )
59
59
 
60
+ plugin_config.make_excludes_absolute
61
+
60
62
  ConfigLoader.merge_with_default(plugin_config, plugin_config_path)
61
63
  end
62
64
  end
@@ -14,6 +14,8 @@ module CopHelper
14
14
  let(:rails_version) { false }
15
15
 
16
16
  before(:all) do
17
+ next if ENV['RUBOCOP_CORE_DEVELOPMENT']
18
+
17
19
  plugins = Gem.loaded_specs.filter_map do |feature_name, feature_specification|
18
20
  feature_name if feature_specification.metadata['default_lint_roller_plugin']
19
21
  end
@@ -3,7 +3,7 @@
3
3
  module RuboCop
4
4
  # This module holds the RuboCop version information.
5
5
  module Version
6
- STRING = '1.72.1'
6
+ STRING = '1.72.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.72.1
4
+ version: 1.72.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-02-15 00:00:00.000000000 Z
12
+ date: 2025-02-17 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: json
@@ -1075,7 +1075,7 @@ licenses:
1075
1075
  - MIT
1076
1076
  metadata:
1077
1077
  homepage_uri: https://rubocop.org/
1078
- changelog_uri: https://github.com/rubocop/rubocop/releases/tag/v1.72.1
1078
+ changelog_uri: https://github.com/rubocop/rubocop/releases/tag/v1.72.2
1079
1079
  source_code_uri: https://github.com/rubocop/rubocop/
1080
1080
  documentation_uri: https://docs.rubocop.org/rubocop/1.72/
1081
1081
  bug_tracker_uri: https://github.com/rubocop/rubocop/issues