rubocop 1.72.0 → 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 +4 -4
- data/config/default.yml +2 -0
- data/lib/rubocop/config_loader.rb +4 -0
- data/lib/rubocop/cop/internal_affairs/example_description.rb +4 -2
- data/lib/rubocop/cop/lint/redundant_type_conversion.rb +10 -0
- data/lib/rubocop/cop/lint/useless_constant_scoping.rb +7 -1
- data/lib/rubocop/cop/mixin/allowed_pattern.rb +4 -4
- data/lib/rubocop/cop/naming/block_forwarding.rb +3 -3
- data/lib/rubocop/cop/style/arguments_forwarding.rb +3 -3
- data/lib/rubocop/cop/style/redundant_format.rb +18 -2
- data/lib/rubocop/cop/style/redundant_parentheses.rb +4 -4
- data/lib/rubocop/plugin/configuration_integrator.rb +2 -0
- data/lib/rubocop/plugin/load_error.rb +5 -14
- data/lib/rubocop/rspec/cop_helper.rb +9 -0
- data/lib/rubocop/version.rb +1 -1
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 4a6ff0f849d961da13d2131ff60e0ed49dce01a4c2d32caa8484a2344344609b
|
4
|
+
data.tar.gz: 9da9fc43212c62cd6542649c90423e9365f50cb00e82b6337be1a241c6a17283
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
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."
|
@@ -163,6 +163,10 @@ module RuboCop
|
|
163
163
|
end
|
164
164
|
end
|
165
165
|
|
166
|
+
# This API is primarily intended for testing and documenting plugins.
|
167
|
+
# When testing a plugin using `rubocop/rspec/support`, the plugin is loaded automatically,
|
168
|
+
# so this API is usually not needed. It is intended to be used only when implementing tests
|
169
|
+
# that do not use `rubocop/rspec/support`.
|
166
170
|
# rubocop:disable Metrics/MethodLength
|
167
171
|
def inject_defaults!(config_yml_path)
|
168
172
|
if Pathname(config_yml_path).directory?
|
@@ -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, "
|
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.
|
111
|
+
node.type?(:str, :dstr) ? node.value : node.source
|
110
112
|
end
|
111
113
|
end
|
112
114
|
end
|
@@ -161,7 +161,10 @@ module RuboCop
|
|
161
161
|
}
|
162
162
|
PATTERN
|
163
163
|
|
164
|
+
# rubocop:disable Metrics/AbcSize
|
164
165
|
def on_send(node)
|
166
|
+
return if hash_or_set_with_block?(node)
|
167
|
+
|
165
168
|
receiver = find_receiver(node)
|
166
169
|
return unless literal_receiver?(node, receiver) ||
|
167
170
|
constructor?(node, receiver) ||
|
@@ -174,10 +177,17 @@ module RuboCop
|
|
174
177
|
corrector.remove(node.loc.dot.join(node.loc.selector))
|
175
178
|
end
|
176
179
|
end
|
180
|
+
# rubocop:enable Metrics/AbcSize
|
177
181
|
alias on_csend on_send
|
178
182
|
|
179
183
|
private
|
180
184
|
|
185
|
+
def hash_or_set_with_block?(node)
|
186
|
+
return false if !node.method?(:to_h) && !node.method?(:to_set)
|
187
|
+
|
188
|
+
node.parent&.any_block_type? || node.last_argument&.block_pass_type?
|
189
|
+
end
|
190
|
+
|
181
191
|
def find_receiver(node)
|
182
192
|
receiver = node.receiver
|
183
193
|
return unless receiver
|
@@ -56,7 +56,13 @@ module RuboCop
|
|
56
56
|
private
|
57
57
|
|
58
58
|
def after_private_modifier?(left_siblings)
|
59
|
-
left_siblings.compact.select
|
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
|
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
|
|
@@ -217,7 +216,9 @@ module RuboCop
|
|
217
216
|
|
218
217
|
def disallowed_literal?(begin_node, node)
|
219
218
|
if node.range_type?
|
220
|
-
begin_node.parent
|
219
|
+
return false unless (parent = begin_node.parent)
|
220
|
+
|
221
|
+
parent.begin_type? && parent.children.one?
|
221
222
|
else
|
222
223
|
!raised_to_power_negative_numeric?(begin_node, node)
|
223
224
|
end
|
@@ -297,7 +298,6 @@ module RuboCop
|
|
297
298
|
block.keywords? && begin_node.each_ancestor(:call).any?
|
298
299
|
end
|
299
300
|
end
|
300
|
-
# rubocop:enable Metrics/ClassLength
|
301
301
|
end
|
302
302
|
end
|
303
303
|
end
|
@@ -13,21 +13,12 @@ module RuboCop
|
|
13
13
|
|
14
14
|
def message
|
15
15
|
<<~MESSAGE
|
16
|
-
Failed
|
17
|
-
|
16
|
+
Failed to load plugin `#{@plugin_name}` because the corresponding plugin class could not be determined for instantiation.
|
17
|
+
Try upgrading it first (e.g., `bundle update #{@plugin_name}`).
|
18
|
+
If `#{@plugin_name}` is not yet a plugin, use `require: #{@plugin_name}` instead of `plugins: `#{@plugin_name}` in your configuration.
|
18
19
|
|
19
|
-
|
20
|
-
|
21
|
-
- If the plugin is a gem, defined in the gemspec as `default_lint_roller_plugin'
|
22
|
-
|
23
|
-
spec.metadata['default_lint_roller_plugin'] = 'MyModule::Plugin'
|
24
|
-
|
25
|
-
- Set in YAML as `plugin_class_name'; example:
|
26
|
-
|
27
|
-
plugins:
|
28
|
-
- incomplete:
|
29
|
-
require_path: my_module/plugin
|
30
|
-
plugin_class_name: "MyModule::Plugin"
|
20
|
+
For further assistance, check with the developer regarding the following points:
|
21
|
+
https://docs.rubocop.org/rubocop/plugin_migration_guide.html
|
31
22
|
MESSAGE
|
32
23
|
end
|
33
24
|
end
|
@@ -13,6 +13,15 @@ module CopHelper
|
|
13
13
|
let(:parser_engine) { ENV.fetch('PARSER_ENGINE', :parser_whitequark).to_sym }
|
14
14
|
let(:rails_version) { false }
|
15
15
|
|
16
|
+
before(:all) do
|
17
|
+
next if ENV['RUBOCOP_CORE_DEVELOPMENT']
|
18
|
+
|
19
|
+
plugins = Gem.loaded_specs.filter_map do |feature_name, feature_specification|
|
20
|
+
feature_name if feature_specification.metadata['default_lint_roller_plugin']
|
21
|
+
end
|
22
|
+
RuboCop::Plugin.integrate_plugins(RuboCop::Config.new, plugins)
|
23
|
+
end
|
24
|
+
|
16
25
|
def inspect_source(source, file = nil)
|
17
26
|
RuboCop::Formatter::DisabledConfigFormatter.config_to_allow_offenses = {}
|
18
27
|
RuboCop::Formatter::DisabledConfigFormatter.detected_styles = {}
|
data/lib/rubocop/version.rb
CHANGED
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.
|
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-
|
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.
|
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
|