rubocop 1.11.0 → 1.12.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +2 -2
- data/config/default.yml +16 -1
- data/lib/rubocop.rb +1 -0
- data/lib/rubocop/cli/command/suggest_extensions.rb +3 -2
- data/lib/rubocop/comment_config.rb +43 -94
- data/lib/rubocop/cop/correctors/alignment_corrector.rb +3 -6
- data/lib/rubocop/cop/layout/access_modifier_indentation.rb +11 -8
- data/lib/rubocop/cop/layout/argument_alignment.rb +6 -5
- data/lib/rubocop/cop/layout/array_alignment.rb +7 -6
- data/lib/rubocop/cop/layout/assignment_indentation.rb +6 -3
- data/lib/rubocop/cop/layout/block_end_newline.rb +4 -8
- data/lib/rubocop/cop/layout/closing_parenthesis_indentation.rb +14 -15
- data/lib/rubocop/cop/layout/comment_indentation.rb +16 -16
- data/lib/rubocop/cop/layout/else_alignment.rb +9 -6
- data/lib/rubocop/cop/layout/first_argument_indentation.rb +6 -5
- data/lib/rubocop/cop/layout/first_array_element_indentation.rb +9 -6
- data/lib/rubocop/cop/layout/first_hash_element_indentation.rb +22 -15
- data/lib/rubocop/cop/layout/first_parameter_indentation.rb +6 -5
- data/lib/rubocop/cop/layout/indentation_consistency.rb +9 -6
- data/lib/rubocop/cop/layout/indentation_style.rb +27 -30
- data/lib/rubocop/cop/layout/indentation_width.rb +19 -9
- data/lib/rubocop/cop/layout/multiline_method_call_indentation.rb +6 -5
- data/lib/rubocop/cop/layout/multiline_operation_indentation.rb +6 -5
- data/lib/rubocop/cop/layout/parameter_alignment.rb +6 -5
- data/lib/rubocop/cop/lint/number_conversion.rb +7 -0
- data/lib/rubocop/cop/lint/redundant_cop_disable_directive.rb +1 -2
- data/lib/rubocop/cop/lint/suppressed_exception.rb +44 -1
- data/lib/rubocop/cop/lint/symbol_conversion.rb +89 -2
- data/lib/rubocop/cop/mixin/alignment.rb +10 -3
- data/lib/rubocop/cop/mixin/comments_help.rb +5 -1
- data/lib/rubocop/cop/mixin/documentation_comment.rb +1 -1
- data/lib/rubocop/cop/mixin/line_length_help.rb +11 -6
- data/lib/rubocop/cop/mixin/multiline_element_indentation.rb +3 -1
- data/lib/rubocop/cop/mixin/multiline_expression_indentation.rb +4 -3
- data/lib/rubocop/cop/mixin/preferred_delimiters.rb +1 -1
- data/lib/rubocop/cop/mixin/uncommunicative_name.rb +4 -6
- data/lib/rubocop/cop/naming/memoized_instance_variable_name.rb +4 -0
- data/lib/rubocop/cop/naming/rescued_exceptions_variable_name.rb +10 -0
- data/lib/rubocop/cop/registry.rb +9 -0
- data/lib/rubocop/cop/style/access_modifier_declarations.rb +1 -1
- data/lib/rubocop/cop/style/bisected_attr_accessor.rb +59 -71
- data/lib/rubocop/cop/style/bisected_attr_accessor/macro.rb +62 -0
- data/lib/rubocop/cop/style/case_like_if.rb +15 -4
- data/lib/rubocop/cop/style/class_equality_comparison.rb +2 -0
- data/lib/rubocop/cop/style/command_literal.rb +1 -1
- data/lib/rubocop/cop/style/disable_cops_within_source_code_directive.rb +2 -2
- data/lib/rubocop/cop/style/documentation.rb +25 -3
- data/lib/rubocop/cop/style/eval_with_location.rb +1 -1
- data/lib/rubocop/cop/style/hash_syntax.rb +16 -15
- data/lib/rubocop/cop/style/method_call_with_args_parentheses.rb +40 -0
- data/lib/rubocop/cop/style/method_call_with_args_parentheses/omit_parentheses.rb +20 -2
- data/lib/rubocop/cop/style/negated_if_else_condition.rb +15 -2
- data/lib/rubocop/cop/style/redundant_begin.rb +26 -3
- data/lib/rubocop/cop/style/redundant_return.rb +4 -0
- data/lib/rubocop/cop/style/redundant_self.rb +7 -3
- data/lib/rubocop/cop/style/regexp_literal.rb +1 -1
- data/lib/rubocop/cop/style/rescue_modifier.rb +17 -14
- data/lib/rubocop/cop/style/sole_nested_conditional.rb +16 -0
- data/lib/rubocop/cop/style/string_chars.rb +38 -0
- data/lib/rubocop/cop/style/struct_inheritance.rb +2 -0
- data/lib/rubocop/cop/style/trailing_body_on_method_definition.rb +5 -1
- data/lib/rubocop/cop/style/unless_logical_operators.rb +8 -2
- data/lib/rubocop/directive_comment.rb +64 -9
- data/lib/rubocop/ext/regexp_parser.rb +3 -6
- data/lib/rubocop/magic_comment.rb +1 -1
- data/lib/rubocop/target_finder.rb +1 -0
- data/lib/rubocop/version.rb +1 -1
- metadata +5 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c4f019dc65a23e4fdd32592747afcbee2cf60dff91484b26714f587b9f70a178
|
4
|
+
data.tar.gz: 85f0e9d193e2165646764047f5422cb7942c87a147c96ff8e4a05b186eaea3c5
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 5064fb48121769e10df9fe4dd7295151f15c2a3ae5f67fbb2869302a7ad268dfd3ed20e7a3242bf59ef68c1c6cf4e92452fedab08971702d29dba06516250de8
|
7
|
+
data.tar.gz: 3b01830b9394f8336bdc415d90e2805f2817eb9fa9686a11392ef8009c4a58dd4b04e40c4a8005e90204774e85b38a6885c315581d55c56bf4a847c71c570447
|
data/README.md
CHANGED
@@ -51,10 +51,10 @@ To prevent an unwanted RuboCop update you might want to use a conservative versi
|
|
51
51
|
in your `Gemfile`:
|
52
52
|
|
53
53
|
```rb
|
54
|
-
gem 'rubocop', '~> 1.
|
54
|
+
gem 'rubocop', '~> 1.12', require: false
|
55
55
|
```
|
56
56
|
|
57
|
-
See [versioning](https://docs.rubocop.org/rubocop/
|
57
|
+
See [our versioning policy](https://docs.rubocop.org/rubocop/versioning.html) for further details.
|
58
58
|
|
59
59
|
## Quickstart
|
60
60
|
|
data/config/default.yml
CHANGED
@@ -2055,13 +2055,18 @@ Lint/SuppressedException:
|
|
2055
2055
|
StyleGuide: '#dont-hide-exceptions'
|
2056
2056
|
Enabled: true
|
2057
2057
|
AllowComments: true
|
2058
|
+
AllowNil: true
|
2058
2059
|
VersionAdded: '0.9'
|
2059
|
-
VersionChanged: '
|
2060
|
+
VersionChanged: '1.12'
|
2060
2061
|
|
2061
2062
|
Lint/SymbolConversion:
|
2062
2063
|
Description: 'Checks for unnecessary symbol conversions.'
|
2063
2064
|
Enabled: pending
|
2064
2065
|
VersionAdded: '1.9'
|
2066
|
+
EnforcedStyle: strict
|
2067
|
+
SupportedStyles:
|
2068
|
+
- strict
|
2069
|
+
- consistent
|
2065
2070
|
|
2066
2071
|
Lint/Syntax:
|
2067
2072
|
Description: 'Checks for syntax errors.'
|
@@ -2489,6 +2494,7 @@ Naming/MemoizedInstanceVariableName:
|
|
2489
2494
|
- disallowed
|
2490
2495
|
- required
|
2491
2496
|
- optional
|
2497
|
+
Safe: false
|
2492
2498
|
|
2493
2499
|
Naming/MethodName:
|
2494
2500
|
Description: 'Use the configured style when naming methods.'
|
@@ -3174,6 +3180,7 @@ Style/Documentation:
|
|
3174
3180
|
Description: 'Document classes and non-namespace modules.'
|
3175
3181
|
Enabled: true
|
3176
3182
|
VersionAdded: '0.9'
|
3183
|
+
AllowedConstants: []
|
3177
3184
|
Exclude:
|
3178
3185
|
- 'spec/**/*'
|
3179
3186
|
- 'test/**/*'
|
@@ -3672,6 +3679,7 @@ Style/MethodCallWithArgsParentheses:
|
|
3672
3679
|
AllowParenthesesInMultilineCall: false
|
3673
3680
|
AllowParenthesesInChaining: false
|
3674
3681
|
AllowParenthesesInCamelCaseMethod: false
|
3682
|
+
AllowParenthesesInStringInterpolation: false
|
3675
3683
|
EnforcedStyle: require_parentheses
|
3676
3684
|
SupportedStyles:
|
3677
3685
|
- require_parentheses
|
@@ -4491,6 +4499,13 @@ Style/StderrPuts:
|
|
4491
4499
|
Enabled: true
|
4492
4500
|
VersionAdded: '0.51'
|
4493
4501
|
|
4502
|
+
Style/StringChars:
|
4503
|
+
Description: 'Checks for uses of `String#split` with empty string or regexp literal argument.'
|
4504
|
+
StyleGuide: '#string-chars'
|
4505
|
+
Enabled: pending
|
4506
|
+
Safe: false
|
4507
|
+
VersionAdded: '1.12'
|
4508
|
+
|
4494
4509
|
Style/StringConcatenation:
|
4495
4510
|
Description: 'Checks for places where string concatenation can be replaced with string interpolation.'
|
4496
4511
|
StyleGuide: '#string-interpolation'
|
data/lib/rubocop.rb
CHANGED
@@ -582,6 +582,7 @@ require_relative 'rubocop/cop/style/slicing_with_range'
|
|
582
582
|
require_relative 'rubocop/cop/style/special_global_vars'
|
583
583
|
require_relative 'rubocop/cop/style/stabby_lambda_parentheses'
|
584
584
|
require_relative 'rubocop/cop/style/stderr_puts'
|
585
|
+
require_relative 'rubocop/cop/style/string_chars'
|
585
586
|
require_relative 'rubocop/cop/style/string_concatenation'
|
586
587
|
require_relative 'rubocop/cop/style/string_hash_keys'
|
587
588
|
require_relative 'rubocop/cop/style/string_literals'
|
@@ -22,7 +22,7 @@ module RuboCop
|
|
22
22
|
'RuboCop extension libraries might be helpful:'
|
23
23
|
|
24
24
|
extensions.sort.each do |extension|
|
25
|
-
puts " * #{extension} (
|
25
|
+
puts " * #{extension} (https://github.com/rubocop/#{extension})"
|
26
26
|
end
|
27
27
|
|
28
28
|
puts
|
@@ -43,7 +43,8 @@ module RuboCop
|
|
43
43
|
# 2. When given RuboCop options that it doesn't make sense for
|
44
44
|
# 3. For all formatters except specified in `INCLUDED_FORMATTERS'`
|
45
45
|
ENV['CI'] ||
|
46
|
-
@options[:only] || @options[:debug] || @options[:list_target_files] ||
|
46
|
+
@options[:only] || @options[:debug] || @options[:list_target_files] ||
|
47
|
+
@options[:out] || @options[:stdin] ||
|
47
48
|
!INCLUDED_FORMATTERS.include?(current_formatter)
|
48
49
|
end
|
49
50
|
|
@@ -4,22 +4,6 @@ module RuboCop
|
|
4
4
|
# This class parses the special `rubocop:disable` comments in a source
|
5
5
|
# and provides a way to check if each cop is enabled at arbitrary line.
|
6
6
|
class CommentConfig
|
7
|
-
# @api private
|
8
|
-
REDUNDANT_DISABLE = 'Lint/RedundantCopDisableDirective'
|
9
|
-
|
10
|
-
# @api private
|
11
|
-
COP_NAME_PATTERN = '([A-Z]\w+/)*(?:[A-Z]\w+)'
|
12
|
-
# @api private
|
13
|
-
COP_NAMES_PATTERN = "(?:#{COP_NAME_PATTERN} , )*#{COP_NAME_PATTERN}"
|
14
|
-
# @api private
|
15
|
-
COPS_PATTERN = "(all|#{COP_NAMES_PATTERN})"
|
16
|
-
|
17
|
-
# @api private
|
18
|
-
COMMENT_DIRECTIVE_REGEXP = Regexp.new(
|
19
|
-
"# rubocop : ((?:disable|enable|todo))\\b #{COPS_PATTERN}"
|
20
|
-
.gsub(' ', '\s*')
|
21
|
-
)
|
22
|
-
|
23
7
|
CopAnalysis = Struct.new(:line_ranges, :start_line_number)
|
24
8
|
|
25
9
|
attr_reader :processed_source
|
@@ -56,13 +40,13 @@ module RuboCop
|
|
56
40
|
private
|
57
41
|
|
58
42
|
def extra_enabled_comments_with_names(extras:, names:)
|
59
|
-
each_directive do |
|
60
|
-
next unless comment_only_line?(
|
43
|
+
each_directive do |directive|
|
44
|
+
next unless comment_only_line?(directive.line_number)
|
61
45
|
|
62
|
-
if
|
63
|
-
handle_enable_all(names, extras
|
46
|
+
if directive.enabled_all?
|
47
|
+
handle_enable_all(directive, names, extras)
|
64
48
|
else
|
65
|
-
handle_switch(
|
49
|
+
handle_switch(directive, names, extras)
|
66
50
|
end
|
67
51
|
end
|
68
52
|
|
@@ -72,9 +56,11 @@ module RuboCop
|
|
72
56
|
def analyze # rubocop:todo Metrics/AbcSize
|
73
57
|
analyses = Hash.new { |hash, key| hash[key] = CopAnalysis.new([], nil) }
|
74
58
|
|
75
|
-
|
76
|
-
|
77
|
-
|
59
|
+
each_directive do |directive|
|
60
|
+
directive.cop_names.each do |cop_name|
|
61
|
+
cop_name = qualified_cop_name(cop_name)
|
62
|
+
analyses[cop_name] = analyze_cop(analyses[cop_name], directive)
|
63
|
+
end
|
78
64
|
end
|
79
65
|
|
80
66
|
analyses.each_with_object({}) do |element, hash|
|
@@ -83,37 +69,42 @@ module RuboCop
|
|
83
69
|
end
|
84
70
|
end
|
85
71
|
|
86
|
-
def analyze_cop(analysis,
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
72
|
+
def analyze_cop(analysis, directive)
|
73
|
+
# Disabling cops after comments like `#=SomeDslDirective` does not related to single line
|
74
|
+
if !comment_only_line?(directive.line_number) || directive.single_line?
|
75
|
+
analyze_single_line(analysis, directive)
|
76
|
+
elsif directive.disabled?
|
77
|
+
analyze_disabled(analysis, directive)
|
91
78
|
else
|
92
|
-
analyze_rest(analysis,
|
79
|
+
analyze_rest(analysis, directive)
|
93
80
|
end
|
94
81
|
end
|
95
82
|
|
96
|
-
def analyze_single_line(analysis,
|
97
|
-
return analysis unless disabled
|
83
|
+
def analyze_single_line(analysis, directive)
|
84
|
+
return analysis unless directive.disabled?
|
98
85
|
|
99
|
-
|
100
|
-
|
86
|
+
line = directive.line_number
|
87
|
+
start_line = analysis.start_line_number
|
88
|
+
|
89
|
+
CopAnalysis.new(analysis.line_ranges + [(line..line)], start_line)
|
101
90
|
end
|
102
91
|
|
103
|
-
def analyze_disabled(analysis,
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
92
|
+
def analyze_disabled(analysis, directive)
|
93
|
+
line = directive.line_number
|
94
|
+
start_line = analysis.start_line_number
|
95
|
+
|
96
|
+
# Cop already disabled on this line, so we end the current disabled
|
97
|
+
# range before we start a new range.
|
98
|
+
return CopAnalysis.new(analysis.line_ranges + [start_line..line], line) if start_line
|
109
99
|
|
110
100
|
CopAnalysis.new(analysis.line_ranges, line)
|
111
101
|
end
|
112
102
|
|
113
|
-
def analyze_rest(analysis,
|
114
|
-
|
115
|
-
|
116
|
-
|
103
|
+
def analyze_rest(analysis, directive)
|
104
|
+
line = directive.line_number
|
105
|
+
start_line = analysis.start_line_number
|
106
|
+
|
107
|
+
return CopAnalysis.new(analysis.line_ranges + [start_line..line], nil) if start_line
|
117
108
|
|
118
109
|
CopAnalysis.new(analysis.line_ranges, nil)
|
119
110
|
end
|
@@ -124,54 +115,17 @@ module RuboCop
|
|
124
115
|
analysis.line_ranges + [(analysis.start_line_number..Float::INFINITY)]
|
125
116
|
end
|
126
117
|
|
127
|
-
def each_mentioned_cop
|
128
|
-
each_directive do |comment, cop_names, disabled|
|
129
|
-
comment_line_number = comment.loc.expression.line
|
130
|
-
single_line = !comment_only_line?(comment_line_number) ||
|
131
|
-
directive_on_comment_line?(comment)
|
132
|
-
|
133
|
-
cop_names.each do |cop_name|
|
134
|
-
yield qualified_cop_name(cop_name), disabled, comment_line_number,
|
135
|
-
single_line
|
136
|
-
end
|
137
|
-
end
|
138
|
-
end
|
139
|
-
|
140
|
-
def directive_on_comment_line?(comment)
|
141
|
-
comment.text[1..-1].match?(COMMENT_DIRECTIVE_REGEXP)
|
142
|
-
end
|
143
|
-
|
144
118
|
def each_directive
|
145
119
|
processed_source.comments.each do |comment|
|
146
|
-
directive =
|
147
|
-
|
148
|
-
|
149
|
-
yield comment, *directive
|
120
|
+
directive = DirectiveComment.new(comment)
|
121
|
+
yield directive if directive.cop_names
|
150
122
|
end
|
151
123
|
end
|
152
124
|
|
153
|
-
def directive_parts(comment)
|
154
|
-
match = comment.text.match(COMMENT_DIRECTIVE_REGEXP)
|
155
|
-
return unless match
|
156
|
-
|
157
|
-
switch, cops_string = match.captures
|
158
|
-
|
159
|
-
cop_names =
|
160
|
-
cops_string == 'all' ? all_cop_names : cops_string.split(/,\s*/)
|
161
|
-
|
162
|
-
disabled = %w[disable todo].include?(switch)
|
163
|
-
|
164
|
-
[cop_names, disabled]
|
165
|
-
end
|
166
|
-
|
167
125
|
def qualified_cop_name(cop_name)
|
168
126
|
Cop::Registry.qualified_cop_name(cop_name.strip, processed_source.file_path)
|
169
127
|
end
|
170
128
|
|
171
|
-
def all_cop_names
|
172
|
-
@all_cop_names ||= Cop::Registry.global.names - [REDUNDANT_DISABLE]
|
173
|
-
end
|
174
|
-
|
175
129
|
def non_comment_token_line_numbers
|
176
130
|
@non_comment_token_line_numbers ||= begin
|
177
131
|
non_comment_tokens = processed_source.tokens.reject(&:comment?)
|
@@ -179,12 +133,7 @@ module RuboCop
|
|
179
133
|
end
|
180
134
|
end
|
181
135
|
|
182
|
-
def
|
183
|
-
_, cops = comment.text.match(COMMENT_DIRECTIVE_REGEXP).captures
|
184
|
-
cops == 'all'
|
185
|
-
end
|
186
|
-
|
187
|
-
def handle_enable_all(names, extras, comment)
|
136
|
+
def handle_enable_all(directive, names, extras)
|
188
137
|
enabled_cops = 0
|
189
138
|
names.each do |name, counter|
|
190
139
|
next unless counter.positive?
|
@@ -193,19 +142,19 @@ module RuboCop
|
|
193
142
|
enabled_cops += 1
|
194
143
|
end
|
195
144
|
|
196
|
-
extras[comment] << 'all' if enabled_cops.zero?
|
145
|
+
extras[directive.comment] << 'all' if enabled_cops.zero?
|
197
146
|
end
|
198
147
|
|
199
148
|
# Collect cops that have been disabled or enabled by name in a directive comment
|
200
149
|
# so that `Lint/RedundantCopEnableDirective` can register offenses correctly.
|
201
|
-
def handle_switch(
|
202
|
-
cop_names.each do |name|
|
203
|
-
if disabled
|
150
|
+
def handle_switch(directive, names, extras)
|
151
|
+
directive.cop_names.each do |name|
|
152
|
+
if directive.disabled?
|
204
153
|
names[name] += 1
|
205
154
|
elsif (names[name]).positive?
|
206
155
|
names[name] -= 1
|
207
156
|
else
|
208
|
-
extras[comment] << name
|
157
|
+
extras[directive.comment] << name
|
209
158
|
end
|
210
159
|
end
|
211
160
|
end
|
@@ -12,7 +12,7 @@ module RuboCop
|
|
12
12
|
class << self
|
13
13
|
attr_reader :processed_source
|
14
14
|
|
15
|
-
def correct(processed_source, node, column_delta)
|
15
|
+
def correct(corrector, processed_source, node, column_delta)
|
16
16
|
return unless node
|
17
17
|
|
18
18
|
@processed_source = processed_source
|
@@ -21,11 +21,8 @@ module RuboCop
|
|
21
21
|
|
22
22
|
taboo_ranges = inside_string_ranges(node)
|
23
23
|
|
24
|
-
|
25
|
-
|
26
|
-
autocorrect_line(corrector, line_begin_pos, expr, column_delta,
|
27
|
-
taboo_ranges)
|
28
|
-
end
|
24
|
+
each_line(expr) do |line_begin_pos|
|
25
|
+
autocorrect_line(corrector, line_begin_pos, expr, column_delta, taboo_ranges)
|
29
26
|
end
|
30
27
|
end
|
31
28
|
|
@@ -32,10 +32,11 @@ module RuboCop
|
|
32
32
|
# private
|
33
33
|
# def smooth; end
|
34
34
|
# end
|
35
|
-
class AccessModifierIndentation <
|
35
|
+
class AccessModifierIndentation < Base
|
36
36
|
include Alignment
|
37
37
|
include ConfigurableEnforcedStyle
|
38
38
|
include RangeHelp
|
39
|
+
extend AutoCorrector
|
39
40
|
|
40
41
|
MSG = '%<style>s access modifiers like `%<node>s`.'
|
41
42
|
|
@@ -48,12 +49,12 @@ module RuboCop
|
|
48
49
|
alias on_module on_class
|
49
50
|
alias on_block on_class
|
50
51
|
|
51
|
-
def autocorrect(node)
|
52
|
-
AlignmentCorrector.correct(processed_source, node, @column_delta)
|
53
|
-
end
|
54
|
-
|
55
52
|
private
|
56
53
|
|
54
|
+
def autocorrect(corrector, node)
|
55
|
+
AlignmentCorrector.correct(corrector, processed_source, node, @column_delta)
|
56
|
+
end
|
57
|
+
|
57
58
|
def check_body(body, node)
|
58
59
|
modifiers = body.each_child_node(:send)
|
59
60
|
.select(&:bare_access_modifier?)
|
@@ -69,18 +70,20 @@ module RuboCop
|
|
69
70
|
if @column_delta.zero?
|
70
71
|
correct_style_detected
|
71
72
|
else
|
72
|
-
add_offense(send_node) do
|
73
|
+
add_offense(send_node) do |corrector|
|
73
74
|
if offset == unexpected_indent_offset
|
74
75
|
opposite_style_detected
|
75
76
|
else
|
76
77
|
unrecognized_style_detected
|
77
78
|
end
|
79
|
+
|
80
|
+
autocorrect(corrector, send_node)
|
78
81
|
end
|
79
82
|
end
|
80
83
|
end
|
81
84
|
|
82
|
-
def message(
|
83
|
-
format(MSG, style: style.capitalize, node:
|
85
|
+
def message(range)
|
86
|
+
format(MSG, style: style.capitalize, node: range.source)
|
84
87
|
end
|
85
88
|
|
86
89
|
def expected_indent_offset
|
@@ -37,8 +37,9 @@ module RuboCop
|
|
37
37
|
#
|
38
38
|
# foo :bar,
|
39
39
|
# :baz
|
40
|
-
class ArgumentAlignment <
|
40
|
+
class ArgumentAlignment < Base
|
41
41
|
include Alignment
|
42
|
+
extend AutoCorrector
|
42
43
|
|
43
44
|
ALIGN_PARAMS_MSG = 'Align the arguments of a method call if ' \
|
44
45
|
'they span more than one line.'
|
@@ -54,12 +55,12 @@ module RuboCop
|
|
54
55
|
end
|
55
56
|
alias on_csend on_send
|
56
57
|
|
57
|
-
def autocorrect(node)
|
58
|
-
AlignmentCorrector.correct(processed_source, node, column_delta)
|
59
|
-
end
|
60
|
-
|
61
58
|
private
|
62
59
|
|
60
|
+
def autocorrect(corrector, node)
|
61
|
+
AlignmentCorrector.correct(corrector, processed_source, node, column_delta)
|
62
|
+
end
|
63
|
+
|
63
64
|
def message(_node)
|
64
65
|
fixed_indentation? ? FIXED_INDENT_MSG : ALIGN_PARAMS_MSG
|
65
66
|
end
|
@@ -33,8 +33,9 @@ module RuboCop
|
|
33
33
|
#
|
34
34
|
# array = [1, 2, 3,
|
35
35
|
# 4, 5, 6]
|
36
|
-
class ArrayAlignment <
|
36
|
+
class ArrayAlignment < Base
|
37
37
|
include Alignment
|
38
|
+
extend AutoCorrector
|
38
39
|
|
39
40
|
ALIGN_ELEMENTS_MSG = 'Align the elements of an array literal ' \
|
40
41
|
'if they span more than one line.'
|
@@ -49,13 +50,13 @@ module RuboCop
|
|
49
50
|
check_alignment(node.children, base_column(node, node.children))
|
50
51
|
end
|
51
52
|
|
52
|
-
def autocorrect(node)
|
53
|
-
AlignmentCorrector.correct(processed_source, node, column_delta)
|
54
|
-
end
|
55
|
-
|
56
53
|
private
|
57
54
|
|
58
|
-
def
|
55
|
+
def autocorrect(corrector, node)
|
56
|
+
AlignmentCorrector.correct(corrector, processed_source, node, column_delta)
|
57
|
+
end
|
58
|
+
|
59
|
+
def message(_range)
|
59
60
|
fixed_indentation? ? FIXED_INDENT_MSG : ALIGN_ELEMENTS_MSG
|
60
61
|
end
|
61
62
|
|