rubocop-performance 1.20.1 → 1.20.2
Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 1dad3fdab16d4dbcb3047e3319ab415b6e9ae3e2cbf14a73a1874831bf473701
|
4
|
+
data.tar.gz: ca98aec2aac71f768e63c5b5ed3c73c2a5ef8242433fc8fe078e9930f47a4d38
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 16536c625e9f66d73368d70153a139f72da96dee225807c1154c07e7a2df999be9f06278b1c6db95836baa6832524da39715f8240151236c5b29ec47ce99e91b
|
7
|
+
data.tar.gz: bfd72acdc38b7337c4b783fc8e5e14516aa8926980cfbf2051487350eb939648ac9af302e1f5c0abc889f3564efb98ff5a7551d107d8d28b2912c4c9a0128b79
|
@@ -16,13 +16,19 @@ module RuboCop
|
|
16
16
|
# send('do_something')
|
17
17
|
# attr_accessor 'do_something'
|
18
18
|
# instance_variable_get('@ivar')
|
19
|
-
#
|
19
|
+
# respond_to?("string_#{interpolation}")
|
20
20
|
#
|
21
21
|
# # good
|
22
22
|
# send(:do_something)
|
23
23
|
# attr_accessor :do_something
|
24
24
|
# instance_variable_get(:@ivar)
|
25
|
-
#
|
25
|
+
# respond_to?(:"string_#{interpolation}")
|
26
|
+
#
|
27
|
+
# # good - these methods don't support namespaced symbols
|
28
|
+
# const_get("#{module_path}::Base")
|
29
|
+
# const_source_location("#{module_path}::Base")
|
30
|
+
# const_defined?("#{module_path}::Base")
|
31
|
+
#
|
26
32
|
#
|
27
33
|
class StringIdentifierArgument < Base
|
28
34
|
extend AutoCorrector
|
@@ -34,6 +40,8 @@ module RuboCop
|
|
34
40
|
protected public public_constant module_function
|
35
41
|
].freeze
|
36
42
|
|
43
|
+
INTERPOLATION_IGNORE_METHODS = %i[const_get const_source_location const_defined?].freeze
|
44
|
+
|
37
45
|
TWO_ARGUMENTS_METHOD = :alias_method
|
38
46
|
MULTIPLE_ARGUMENTS_METHODS = %i[
|
39
47
|
attr_accessor attr_reader attr_writer private private_constant
|
@@ -44,14 +52,14 @@ module RuboCop
|
|
44
52
|
# And `attr` may not be used because `Style/Attr` registers an offense.
|
45
53
|
# https://github.com/rubocop/rubocop-performance/issues/278
|
46
54
|
RESTRICT_ON_SEND = (%i[
|
47
|
-
class_variable_defined?
|
55
|
+
class_variable_defined? const_set
|
48
56
|
define_method instance_method method_defined? private_class_method? private_method_defined?
|
49
57
|
protected_method_defined? public_class_method public_instance_method public_method_defined?
|
50
58
|
remove_class_variable remove_method undef_method class_variable_get class_variable_set
|
51
59
|
deprecate_constant remove_const ruby2_keywords define_singleton_method instance_variable_defined?
|
52
60
|
instance_variable_get instance_variable_set method public_method public_send remove_instance_variable
|
53
61
|
respond_to? send singleton_method __send__
|
54
|
-
] + COMMAND_METHODS).freeze
|
62
|
+
] + COMMAND_METHODS + INTERPOLATION_IGNORE_METHODS).freeze
|
55
63
|
|
56
64
|
def on_send(node)
|
57
65
|
return if COMMAND_METHODS.include?(node.method_name) && node.receiver
|
@@ -75,9 +83,13 @@ module RuboCop
|
|
75
83
|
[node.first_argument]
|
76
84
|
end
|
77
85
|
|
78
|
-
arguments.compact.filter
|
79
|
-
|
80
|
-
|
86
|
+
arguments.compact.filter { |argument| string_argument_compatible?(argument, node) }
|
87
|
+
end
|
88
|
+
|
89
|
+
def string_argument_compatible?(argument, node)
|
90
|
+
return true if argument.str_type?
|
91
|
+
|
92
|
+
argument.dstr_type? && INTERPOLATION_IGNORE_METHODS.none? { |method| node.method?(method) }
|
81
93
|
end
|
82
94
|
|
83
95
|
def register_offense(argument, argument_value)
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rubocop-performance
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.20.
|
4
|
+
version: 1.20.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Bozhidar Batsov
|
@@ -10,7 +10,7 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date:
|
13
|
+
date: 2024-01-08 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: rubocop
|