rubocop 1.54.0 → 1.54.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/lib/rubocop/cop/internal_affairs/location_line_equality_comparison.rb +3 -1
- data/lib/rubocop/cop/layout/space_after_comma.rb +9 -1
- data/lib/rubocop/cop/layout/trailing_empty_lines.rb +5 -0
- data/lib/rubocop/cop/lint/redundant_regexp_quantifiers.rb +10 -0
- data/lib/rubocop/cop/metrics/utils/code_length_calculator.rb +1 -1
- data/lib/rubocop/cop/mixin/preceding_following_alignment.rb +5 -5
- data/lib/rubocop/cop/mixin/trailing_comma.rb +1 -1
- data/lib/rubocop/cop/naming/heredoc_delimiter_naming.rb +3 -1
- data/lib/rubocop/cop/style/frozen_string_literal_comment.rb +3 -1
- data/lib/rubocop/cop/style/redundant_regexp_argument.rb +1 -0
- data/lib/rubocop/cop/style/return_nil_in_predicate_method_definition.rb +2 -2
- data/lib/rubocop/cop/style/semicolon.rb +0 -3
- data/lib/rubocop/cop/variable_force/assignment.rb +14 -3
- data/lib/rubocop/server/client_command/exec.rb +1 -1
- data/lib/rubocop/string_interpreter.rb +3 -3
- data/lib/rubocop/target_finder.rb +1 -1
- data/lib/rubocop/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: b5aa0f1796446e72fc2559c5e0ba132c8b8e0e2f244c649e37c475f309911cab
|
4
|
+
data.tar.gz: ab9d4c1160f25912df7db584e67e4c2ce13f8372823a8f5f732ca6664ea63863
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: b314533429676735ccfbda5f7e891087c7c277fc84789aa4c82c6961ab966f8d7c6ce1c491f0b6033a7893c48348eebff092dc50f462dd5b3a3cbe77954adf99
|
7
|
+
data.tar.gz: 91e2894b3931bed08640afc882785b5e18371d79fee3a1f4a9eddcb44faa9c4b2232fe798185fcb2b57c3b4561efab25ac019ae543fa4c9b0bdaf0f8a361522b
|
@@ -51,7 +51,9 @@ module RuboCop
|
|
51
51
|
|
52
52
|
def extract_receiver(node)
|
53
53
|
receiver = node.receiver
|
54
|
-
|
54
|
+
if receiver.send_type? && (receiver.method?(:loc) || receiver.method?(:source_range))
|
55
|
+
receiver = receiver.receiver
|
56
|
+
end
|
55
57
|
receiver.source
|
56
58
|
end
|
57
59
|
end
|
@@ -24,7 +24,15 @@ module RuboCop
|
|
24
24
|
end
|
25
25
|
|
26
26
|
def kind(token)
|
27
|
-
'comma' if token.comma?
|
27
|
+
'comma' if token.comma? && !before_semicolon?(token)
|
28
|
+
end
|
29
|
+
|
30
|
+
private
|
31
|
+
|
32
|
+
def before_semicolon?(token)
|
33
|
+
tokens = processed_source.tokens
|
34
|
+
|
35
|
+
tokens[tokens.index(token) + 1].semicolon?
|
28
36
|
end
|
29
37
|
end
|
30
38
|
end
|
@@ -51,6 +51,7 @@ module RuboCop
|
|
51
51
|
# there could be good reasons why it needs to end with a certain
|
52
52
|
# number of newlines.
|
53
53
|
return if ends_in_end?(processed_source)
|
54
|
+
return if end_with_percent_blank_string?(processed_source)
|
54
55
|
|
55
56
|
whitespace_at_end = buffer.source[/\s*\Z/]
|
56
57
|
blank_lines = whitespace_at_end.count("\n") - 1
|
@@ -86,6 +87,10 @@ module RuboCop
|
|
86
87
|
extra&.strip&.start_with?('__END__')
|
87
88
|
end
|
88
89
|
|
90
|
+
def end_with_percent_blank_string?(processed_source)
|
91
|
+
processed_source.buffer.source.end_with?("%\n\n")
|
92
|
+
end
|
93
|
+
|
89
94
|
def message(wanted_blank_lines, blank_lines)
|
90
95
|
case blank_lines
|
91
96
|
when -1
|
@@ -5,6 +5,14 @@ module RuboCop
|
|
5
5
|
module Lint
|
6
6
|
# Checks for redundant quantifiers inside Regexp literals.
|
7
7
|
#
|
8
|
+
# It is always allowed when interpolation is used in a regexp literal,
|
9
|
+
# because it's unknown what kind of string will be expanded as a result:
|
10
|
+
#
|
11
|
+
# [source,ruby]
|
12
|
+
# ----
|
13
|
+
# /(?:a*#{interpolation})?/x
|
14
|
+
# ----
|
15
|
+
#
|
8
16
|
# @example
|
9
17
|
# # bad
|
10
18
|
# /(?:x+)+/
|
@@ -32,6 +40,8 @@ module RuboCop
|
|
32
40
|
'with a single `%<replacement>s`.'
|
33
41
|
|
34
42
|
def on_regexp(node)
|
43
|
+
return if node.interpolation?
|
44
|
+
|
35
45
|
each_redundantly_quantified_pair(node) do |group, child|
|
36
46
|
replacement = merged_quantifier(group, child)
|
37
47
|
add_offense(
|
@@ -75,9 +75,7 @@ module RuboCop
|
|
75
75
|
end
|
76
76
|
|
77
77
|
def aligned_token?(range, line)
|
78
|
-
aligned_words?(range, line) ||
|
79
|
-
aligned_char?(range, line) ||
|
80
|
-
aligned_assignment?(range, line)
|
78
|
+
aligned_words?(range, line) || aligned_dot?(range, line) || aligned_assignment?(range, line)
|
81
79
|
end
|
82
80
|
|
83
81
|
def aligned_operator?(range, line)
|
@@ -88,8 +86,10 @@ module RuboCop
|
|
88
86
|
/\s\S/.match?(line[range.column - 1, 2])
|
89
87
|
end
|
90
88
|
|
91
|
-
def
|
92
|
-
line[range.column]
|
89
|
+
def aligned_dot?(range, line)
|
90
|
+
char = line[range.column]
|
91
|
+
|
92
|
+
char == '.' && char == range.source[0]
|
93
93
|
end
|
94
94
|
|
95
95
|
def aligned_assignment?(range, line)
|
@@ -106,7 +106,7 @@ module RuboCop
|
|
106
106
|
end
|
107
107
|
|
108
108
|
def elements(node)
|
109
|
-
return node.children unless
|
109
|
+
return node.children unless node.call_type?
|
110
110
|
|
111
111
|
node.arguments.flat_map do |argument|
|
112
112
|
# For each argument, if it is a multi-line hash without braces,
|
@@ -142,7 +142,9 @@ module RuboCop
|
|
142
142
|
end
|
143
143
|
|
144
144
|
next_token = processed_source.tokens[token_number]
|
145
|
-
|
145
|
+
if next_token&.text&.valid_encoding? && Encoding::ENCODING_PATTERN.match?(next_token.text)
|
146
|
+
token = next_token
|
147
|
+
end
|
146
148
|
|
147
149
|
token
|
148
150
|
end
|
@@ -31,7 +31,7 @@ module RuboCop
|
|
31
31
|
# do_something?
|
32
32
|
# end
|
33
33
|
#
|
34
|
-
# @example
|
34
|
+
# @example AllowedMethods: ['foo?']
|
35
35
|
# # good
|
36
36
|
# def foo?
|
37
37
|
# return if condition
|
@@ -39,7 +39,7 @@ module RuboCop
|
|
39
39
|
# do_something?
|
40
40
|
# end
|
41
41
|
#
|
42
|
-
# @example
|
42
|
+
# @example AllowedPatterns: [/foo/]
|
43
43
|
# # good
|
44
44
|
# def foo?
|
45
45
|
# return if condition
|
@@ -62,9 +62,6 @@ module RuboCop
|
|
62
62
|
private
|
63
63
|
|
64
64
|
def check_for_line_terminator_or_opener
|
65
|
-
# Make the obvious check first
|
66
|
-
return unless processed_source.raw_source.include?(';')
|
67
|
-
|
68
65
|
each_semicolon do |line, column, token_before_semicolon|
|
69
66
|
register_semicolon(line, column, false, token_before_semicolon)
|
70
67
|
end
|
@@ -102,10 +102,11 @@ module RuboCop
|
|
102
102
|
end
|
103
103
|
|
104
104
|
def multiple_assignment_node
|
105
|
-
grandparent_node = node.parent&.parent
|
106
|
-
|
105
|
+
return nil unless (grandparent_node = node.parent&.parent)
|
106
|
+
if (node = find_multiple_assignment_node(grandparent_node))
|
107
|
+
return node
|
108
|
+
end
|
107
109
|
return nil unless grandparent_node.type == MULTIPLE_ASSIGNMENT_TYPE
|
108
|
-
return nil unless node.parent.type == MULTIPLE_LEFT_HAND_SIDE_TYPE
|
109
110
|
|
110
111
|
grandparent_node
|
111
112
|
end
|
@@ -122,6 +123,16 @@ module RuboCop
|
|
122
123
|
|
123
124
|
node.parent
|
124
125
|
end
|
126
|
+
|
127
|
+
def find_multiple_assignment_node(grandparent_node)
|
128
|
+
return unless grandparent_node.type == MULTIPLE_LEFT_HAND_SIDE_TYPE
|
129
|
+
return if grandparent_node.children.any?(&:splat_type?)
|
130
|
+
|
131
|
+
parent = grandparent_node.parent
|
132
|
+
return parent if parent.type == MULTIPLE_ASSIGNMENT_TYPE
|
133
|
+
|
134
|
+
find_multiple_assignment_node(parent)
|
135
|
+
end
|
125
136
|
end
|
126
137
|
end
|
127
138
|
end
|
@@ -32,7 +32,7 @@ module RuboCop
|
|
32
32
|
|
33
33
|
def ensure_server!
|
34
34
|
if incompatible_version?
|
35
|
-
|
35
|
+
warn 'RuboCop version incompatibility found, RuboCop server restarting...'
|
36
36
|
ClientCommand::Stop.new.run
|
37
37
|
elsif check_running_server
|
38
38
|
return
|
@@ -32,9 +32,9 @@ module RuboCop
|
|
32
32
|
|
33
33
|
def interpret_string_escape(escape)
|
34
34
|
case escape[1]
|
35
|
-
when 'u'
|
36
|
-
when 'x'
|
37
|
-
when /\d/
|
35
|
+
when 'u' then interpret_unicode(escape)
|
36
|
+
when 'x' then interpret_hex(escape)
|
37
|
+
when /\d/ then interpret_octal(escape)
|
38
38
|
else
|
39
39
|
escape[1] # literal escaped char, like \\
|
40
40
|
end
|
@@ -114,7 +114,7 @@ module RuboCop
|
|
114
114
|
end
|
115
115
|
|
116
116
|
def combined_exclude_glob_patterns(base_dir)
|
117
|
-
exclude = @config_store.for(base_dir).for_all_cops['Exclude']
|
117
|
+
exclude = @config_store.for(base_dir).for_all_cops['Exclude'] || []
|
118
118
|
patterns = exclude.select { |pattern| pattern.is_a?(String) && pattern.end_with?('/**/*') }
|
119
119
|
.map { |pattern| pattern.sub("#{base_dir}/", '') }
|
120
120
|
"#{base_dir}/{#{patterns.join(',')}}"
|
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.54.
|
4
|
+
version: 1.54.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Bozhidar Batsov
|
@@ -10,7 +10,7 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: exe
|
12
12
|
cert_chain: []
|
13
|
-
date: 2023-07-
|
13
|
+
date: 2023-07-13 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: json
|