rubocop 1.22.0 → 1.22.1
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/lib/rubocop/config_loader.rb +1 -1
- data/lib/rubocop/cop/layout/dot_position.rb +7 -3
- data/lib/rubocop/cop/lint/require_relative_self_path.rb +1 -0
- data/lib/rubocop/cop/mixin/string_literals_help.rb +5 -1
- data/lib/rubocop/cop/style/quoted_symbols.rb +10 -6
- data/lib/rubocop/cop/style/redundant_argument.rb +5 -2
- data/lib/rubocop/cop/style/select_by_regexp.rb +30 -3
- data/lib/rubocop/cop/util.rb +2 -1
- data/lib/rubocop/rake_task.rb +1 -1
- data/lib/rubocop/result_cache.rb +2 -2
- data/lib/rubocop/runner.rb +1 -1
- data/lib/rubocop/version.rb +1 -1
- metadata +6 -6
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: fc48ec8bad4f5af1a464cb2d8d512975a10efd1d9c73e74ce024f798a4b200cc
|
4
|
+
data.tar.gz: 65ed09a920ce2211ab2d29a26780d1b198c08d29b3af92ef783c46024e056607
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 9fff6f773ae50140975bfac3f671f1657cd7da4c1df10623a7e36096e21032630fa8c41eb5a5d4eb8f07b92a48e7d99fc2b40d20da5811fc4bb0060dfc410e3b
|
7
|
+
data.tar.gz: 0aa4fa740168feb2643edbeecedc723c3da44c0f2c4843a39b9593c7dda07db21d05552ae52731b1b1ddbeeb2ffe0816d2c5e7d0423caec2dc40888cbd52758f
|
@@ -136,7 +136,7 @@ module RuboCop
|
|
136
136
|
end
|
137
137
|
end
|
138
138
|
|
139
|
-
# Returns the path
|
139
|
+
# Returns the path RuboCop inferred as the root of the project. No file
|
140
140
|
# searches will go past this directory.
|
141
141
|
def project_root
|
142
142
|
@project_root ||= find_project_root
|
@@ -68,14 +68,18 @@ module RuboCop
|
|
68
68
|
end
|
69
69
|
|
70
70
|
def proper_dot_position?(node)
|
71
|
-
receiver_line = receiver_end_line(node.receiver)
|
72
71
|
selector_line = selector_range(node).line
|
73
72
|
|
74
|
-
# receiver and selector
|
75
|
-
|
73
|
+
# If the receiver is a HEREDOC and the selector is on the same line
|
74
|
+
# then there is nothing to do
|
75
|
+
return true if heredoc?(node.receiver) && node.receiver.loc.first_line == selector_line
|
76
76
|
|
77
|
+
receiver_line = receiver_end_line(node.receiver)
|
77
78
|
dot_line = node.loc.dot.line
|
78
79
|
|
80
|
+
# receiver and selector are on the same line
|
81
|
+
return true if selector_line == receiver_line
|
82
|
+
|
79
83
|
# don't register an offense if there is a line comment between the
|
80
84
|
# dot and the selector otherwise, we might break the code while
|
81
85
|
# "correcting" it (even if there is just an extra blank line, treat
|
@@ -27,6 +27,7 @@ module RuboCop
|
|
27
27
|
|
28
28
|
def on_send(node)
|
29
29
|
return unless (required_feature = node.first_argument)
|
30
|
+
return unless required_feature.respond_to?(:value)
|
30
31
|
return unless same_file?(processed_source.file_path, required_feature.value)
|
31
32
|
|
32
33
|
add_offense(node) do |corrector|
|
@@ -13,7 +13,11 @@ module RuboCop
|
|
13
13
|
if style == :single_quotes
|
14
14
|
!double_quotes_required?(src)
|
15
15
|
else
|
16
|
-
|
16
|
+
# The string needs single quotes if:
|
17
|
+
# 1. It contains a double quote
|
18
|
+
# 2. It contains text that would become an escape sequence with double quotes
|
19
|
+
# 3. It contains text that would become an interpolation with double quotes
|
20
|
+
!/" | (?<!\\)\\[abcefMnrtuUx0-7] | \#[@{$]/x.match?(src)
|
17
21
|
end
|
18
22
|
end
|
19
23
|
end
|
@@ -4,7 +4,8 @@ module RuboCop
|
|
4
4
|
module Cop
|
5
5
|
module Style
|
6
6
|
# Checks if the quotes used for quoted symbols match the configured defaults.
|
7
|
-
# By default uses the same configuration as `Style/StringLiterals
|
7
|
+
# By default uses the same configuration as `Style/StringLiterals`; if that
|
8
|
+
# cop is not enabled, the default `EnforcedStyle` is `single_quotes`.
|
8
9
|
#
|
9
10
|
# String interpolation is always kept in double quotes.
|
10
11
|
#
|
@@ -75,11 +76,14 @@ module RuboCop
|
|
75
76
|
end
|
76
77
|
|
77
78
|
def correct_quotes(str)
|
78
|
-
if style == :single_quotes
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
79
|
+
correction = if style == :single_quotes
|
80
|
+
to_string_literal(str)
|
81
|
+
else
|
82
|
+
str.gsub("\\'", "'").inspect
|
83
|
+
end
|
84
|
+
|
85
|
+
# The conversion process doubles escaped slashes, so they have to be reverted
|
86
|
+
correction.gsub('\\\\', '\\')
|
83
87
|
end
|
84
88
|
|
85
89
|
def style
|
@@ -58,8 +58,11 @@ module RuboCop
|
|
58
58
|
return if node.arguments.count != 1
|
59
59
|
return unless redundant_argument?(node)
|
60
60
|
|
61
|
-
|
62
|
-
|
61
|
+
offense_range = argument_range(node)
|
62
|
+
message = format(MSG, arg: node.arguments.first.source)
|
63
|
+
|
64
|
+
add_offense(offense_range, message: message) do |corrector|
|
65
|
+
corrector.remove(offense_range)
|
63
66
|
end
|
64
67
|
end
|
65
68
|
|
@@ -3,9 +3,15 @@
|
|
3
3
|
module RuboCop
|
4
4
|
module Cop
|
5
5
|
module Style
|
6
|
-
# This cop looks for places where an subset of an array
|
7
|
-
# is calculated based on a `Regexp`
|
8
|
-
# `grep_v` instead.
|
6
|
+
# This cop looks for places where an subset of an Enumerable (array,
|
7
|
+
# range, set, etc.; see note below) is calculated based on a `Regexp`
|
8
|
+
# match, and suggests `grep` or `grep_v` instead.
|
9
|
+
#
|
10
|
+
# NOTE: Hashes do not behave as you may expect with `grep`, which
|
11
|
+
# means that `hash.grep` is not equivalent to `hash.select`. Although
|
12
|
+
# RuboCop is limited by static analysis, this cop attempts to avoid
|
13
|
+
# registering an offense when the receiver is a hash (hash literal,
|
14
|
+
# `Hash.new`, `Hash#[]`, or `to_h`/`to_hash`).
|
9
15
|
#
|
10
16
|
# NOTE: `grep` and `grep_v` were optimized when used without a block
|
11
17
|
# in Ruby 3.0, but may be slower in previous versions.
|
@@ -16,6 +22,10 @@ module RuboCop
|
|
16
22
|
# not be created by `grep`, but may have previously been relied
|
17
23
|
# upon after the `match?` or `=~` call.
|
18
24
|
#
|
25
|
+
# Additionally, the cop cannot guarantee that the receiver of
|
26
|
+
# `select` or `reject` is actually an array by static analysis,
|
27
|
+
# so the correction may not be actually equivalent.
|
28
|
+
#
|
19
29
|
# @example
|
20
30
|
# # bad (select or find_all)
|
21
31
|
# array.select { |x| x.match? /regexp/ }
|
@@ -49,6 +59,16 @@ module RuboCop
|
|
49
59
|
}
|
50
60
|
PATTERN
|
51
61
|
|
62
|
+
# Returns true if a node appears to return a hash
|
63
|
+
# @!method creates_hash?(node)
|
64
|
+
def_node_matcher :creates_hash?, <<~PATTERN
|
65
|
+
{
|
66
|
+
(send (const _ :Hash) {:new :[]} ...)
|
67
|
+
(block (send (const _ :Hash) :new ...) ...)
|
68
|
+
(send _ { :to_h :to_hash } ...)
|
69
|
+
}
|
70
|
+
PATTERN
|
71
|
+
|
52
72
|
# @!method calls_lvar?(node, name)
|
53
73
|
def_node_matcher :calls_lvar?, <<~PATTERN
|
54
74
|
{
|
@@ -61,6 +81,7 @@ module RuboCop
|
|
61
81
|
def on_send(node)
|
62
82
|
return unless (block_node = node.block_node)
|
63
83
|
return if block_node.body.begin_type?
|
84
|
+
return if receiver_allowed?(block_node.receiver)
|
64
85
|
return unless (regexp_method_send_node = extract_send_node(block_node))
|
65
86
|
|
66
87
|
regexp = find_regexp(regexp_method_send_node)
|
@@ -69,6 +90,12 @@ module RuboCop
|
|
69
90
|
|
70
91
|
private
|
71
92
|
|
93
|
+
def receiver_allowed?(node)
|
94
|
+
return false unless node
|
95
|
+
|
96
|
+
node.hash_type? || creates_hash?(node)
|
97
|
+
end
|
98
|
+
|
72
99
|
def register_offense(node, block_node, regexp)
|
73
100
|
replacement = REPLACEMENTS[node.method_name.to_sym]
|
74
101
|
message = format(MSG, replacement: replacement, original_method: node.method_name)
|
data/lib/rubocop/cop/util.rb
CHANGED
@@ -113,7 +113,8 @@ module RuboCop
|
|
113
113
|
if needs_escaping?(string) && compatible_external_encoding_for?(string)
|
114
114
|
string.inspect
|
115
115
|
else
|
116
|
-
|
116
|
+
# In a single-quoted strings, double quotes don't need to be escaped
|
117
|
+
"'#{string.gsub('\"', '"').gsub('\\') { '\\\\' }}'"
|
117
118
|
end
|
118
119
|
end
|
119
120
|
|
data/lib/rubocop/rake_task.rb
CHANGED
@@ -33,7 +33,7 @@ module RuboCop
|
|
33
33
|
private
|
34
34
|
|
35
35
|
def run_cli(verbose, options)
|
36
|
-
# We lazy-load
|
36
|
+
# We lazy-load RuboCop so that the task doesn't dramatically impact the
|
37
37
|
# load time of your Rakefile.
|
38
38
|
require 'rubocop'
|
39
39
|
|
data/lib/rubocop/result_cache.rb
CHANGED
@@ -6,7 +6,7 @@ require 'etc'
|
|
6
6
|
require 'zlib'
|
7
7
|
|
8
8
|
module RuboCop
|
9
|
-
# Provides functionality for caching
|
9
|
+
# Provides functionality for caching RuboCop runs.
|
10
10
|
# @api private
|
11
11
|
class ResultCache
|
12
12
|
NON_CHANGING = %i[color format formatters out debug fail_level auto_correct
|
@@ -170,7 +170,7 @@ module RuboCop
|
|
170
170
|
attr_accessor :source_checksum, :inhibit_cleanup
|
171
171
|
end
|
172
172
|
|
173
|
-
# The checksum of the
|
173
|
+
# The checksum of the RuboCop program running the inspection.
|
174
174
|
def rubocop_checksum
|
175
175
|
ResultCache.source_checksum ||=
|
176
176
|
begin
|
data/lib/rubocop/runner.rb
CHANGED
@@ -60,7 +60,7 @@ module RuboCop
|
|
60
60
|
|
61
61
|
private
|
62
62
|
|
63
|
-
# Warms up the RuboCop cache by forking a suitable number of
|
63
|
+
# Warms up the RuboCop cache by forking a suitable number of RuboCop
|
64
64
|
# instances that each inspects its allotted group of files.
|
65
65
|
def warm_cache(target_files)
|
66
66
|
puts 'Running parallel inspection' if @options[:debug]
|
data/lib/rubocop/version.rb
CHANGED
metadata
CHANGED
@@ -1,16 +1,16 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rubocop
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.22.
|
4
|
+
version: 1.22.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Bozhidar Batsov
|
8
8
|
- Jonas Arvidsson
|
9
9
|
- Yuji Nakayama
|
10
|
-
autorequire:
|
10
|
+
autorequire:
|
11
11
|
bindir: exe
|
12
12
|
cert_chain: []
|
13
|
-
date: 2021-
|
13
|
+
date: 2021-10-04 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: parallel
|
@@ -899,7 +899,7 @@ metadata:
|
|
899
899
|
source_code_uri: https://github.com/rubocop/rubocop/
|
900
900
|
documentation_uri: https://docs.rubocop.org/rubocop/1.22/
|
901
901
|
bug_tracker_uri: https://github.com/rubocop/rubocop/issues
|
902
|
-
post_install_message:
|
902
|
+
post_install_message:
|
903
903
|
rdoc_options: []
|
904
904
|
require_paths:
|
905
905
|
- lib
|
@@ -914,8 +914,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
914
914
|
- !ruby/object:Gem::Version
|
915
915
|
version: '0'
|
916
916
|
requirements: []
|
917
|
-
rubygems_version: 3.
|
918
|
-
signing_key:
|
917
|
+
rubygems_version: 3.2.22
|
918
|
+
signing_key:
|
919
919
|
specification_version: 4
|
920
920
|
summary: Automatic Ruby code style checking tool.
|
921
921
|
test_files: []
|