rubocop 0.89.0 → 0.89.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +1 -1
- data/lib/rubocop/cli/command/show_cops.rb +1 -1
- data/lib/rubocop/comment_config.rb +3 -5
- data/lib/rubocop/config.rb +1 -1
- data/lib/rubocop/config_loader.rb +1 -1
- data/lib/rubocop/config_validator.rb +1 -1
- data/lib/rubocop/cop/correctors/line_break_corrector.rb +1 -1
- data/lib/rubocop/cop/correctors/percent_literal_corrector.rb +1 -1
- data/lib/rubocop/cop/layout/class_structure.rb +3 -7
- data/lib/rubocop/cop/layout/comment_indentation.rb +1 -1
- data/lib/rubocop/cop/layout/extra_spacing.rb +14 -21
- data/lib/rubocop/cop/layout/leading_comment_space.rb +1 -1
- data/lib/rubocop/cop/lint/binary_operator_with_identical_operands.rb +2 -1
- data/lib/rubocop/cop/lint/missing_super.rb +9 -9
- data/lib/rubocop/cop/lint/out_of_range_regexp_ref.rb +33 -4
- data/lib/rubocop/cop/lint/redundant_cop_disable_directive.rb +14 -17
- data/lib/rubocop/cop/lint/uri_regexp.rb +9 -25
- data/lib/rubocop/cop/migration/department_name.rb +2 -2
- data/lib/rubocop/cop/mixin/alignment.rb +2 -1
- data/lib/rubocop/cop/mixin/check_line_breakable.rb +1 -1
- data/lib/rubocop/cop/mixin/enforce_superclass.rb +0 -2
- data/lib/rubocop/cop/mixin/hash_transform_method.rb +5 -11
- data/lib/rubocop/cop/mixin/line_length_help.rb +1 -3
- data/lib/rubocop/cop/mixin/multiline_literal_brace_layout.rb +1 -2
- data/lib/rubocop/cop/mixin/percent_array.rb +2 -6
- data/lib/rubocop/cop/mixin/range_help.rb +18 -4
- data/lib/rubocop/cop/mixin/statement_modifier.rb +3 -3
- data/lib/rubocop/cop/mixin/trailing_comma.rb +2 -4
- data/lib/rubocop/cop/style/access_modifier_declarations.rb +5 -8
- data/lib/rubocop/cop/style/accessor_grouping.rb +20 -20
- data/lib/rubocop/cop/style/alias.rb +34 -33
- data/lib/rubocop/cop/style/and_or.rb +9 -11
- data/lib/rubocop/cop/style/array_join.rb +6 -8
- data/lib/rubocop/cop/style/ascii_comments.rb +4 -4
- data/lib/rubocop/cop/style/attr.rb +11 -9
- data/lib/rubocop/cop/style/auto_resource_cleanup.rb +2 -5
- data/lib/rubocop/cop/style/bare_percent_literals.rb +10 -12
- data/lib/rubocop/cop/style/begin_block.rb +2 -2
- data/lib/rubocop/cop/style/bisected_attr_accessor.rb +9 -12
- data/lib/rubocop/cop/style/block_comments.rb +14 -18
- data/lib/rubocop/cop/style/block_delimiters.rb +23 -23
- data/lib/rubocop/cop/style/case_like_if.rb +17 -14
- data/lib/rubocop/cop/style/class_and_module_children.rb +14 -11
- data/lib/rubocop/cop/style/class_check.rb +7 -9
- data/lib/rubocop/cop/style/class_methods.rb +7 -11
- data/lib/rubocop/cop/style/class_vars.rb +6 -10
- data/lib/rubocop/cop/style/collection_methods.rb +11 -17
- data/lib/rubocop/cop/style/colon_method_call.rb +6 -7
- data/lib/rubocop/cop/style/colon_method_definition.rb +6 -6
- data/lib/rubocop/cop/style/command_literal.rb +23 -24
- data/lib/rubocop/cop/style/comment_annotation.rb +15 -15
- data/lib/rubocop/cop/style/commented_keyword.rb +1 -1
- data/lib/rubocop/cop/style/conditional_assignment.rb +1 -1
- data/lib/rubocop/cop/style/constant_visibility.rb +3 -2
- data/lib/rubocop/cop/style/copyright.rb +12 -12
- data/lib/rubocop/cop/style/date_time.rb +1 -1
- data/lib/rubocop/cop/style/def_with_parentheses.rb +8 -10
- data/lib/rubocop/cop/style/dir.rb +7 -10
- data/lib/rubocop/cop/style/disable_cops_within_source_code_directive.rb +7 -9
- data/lib/rubocop/cop/style/documentation.rb +2 -4
- data/lib/rubocop/cop/style/documentation_method.rb +1 -1
- data/lib/rubocop/cop/style/double_cop_disable_directive.rb +12 -15
- data/lib/rubocop/cop/style/double_negation.rb +2 -2
- data/lib/rubocop/cop/style/each_for_simple_loop.rb +5 -8
- data/lib/rubocop/cop/style/each_with_object.rb +16 -17
- data/lib/rubocop/cop/style/empty_case_condition.rb +19 -20
- data/lib/rubocop/cop/style/empty_else.rb +17 -19
- data/lib/rubocop/cop/style/empty_literal.rb +15 -16
- data/lib/rubocop/cop/style/empty_method.rb +5 -8
- data/lib/rubocop/cop/style/encoding.rb +5 -9
- data/lib/rubocop/cop/style/end_block.rb +4 -6
- data/lib/rubocop/cop/style/eval_with_location.rb +5 -7
- data/lib/rubocop/cop/style/even_odd.rb +7 -11
- data/lib/rubocop/cop/style/expand_path_arguments.rb +21 -24
- data/lib/rubocop/cop/style/exponential_notation.rb +1 -1
- data/lib/rubocop/cop/style/float_division.rb +1 -1
- data/lib/rubocop/cop/style/for.rb +11 -15
- data/lib/rubocop/cop/style/format_string.rb +17 -19
- data/lib/rubocop/cop/style/format_string_token.rb +4 -7
- data/lib/rubocop/cop/style/frozen_string_literal_comment.rb +19 -41
- data/lib/rubocop/cop/style/global_vars.rb +2 -2
- data/lib/rubocop/cop/style/guard_clause.rb +3 -4
- data/lib/rubocop/cop/style/hash_as_last_array_item.rb +1 -1
- data/lib/rubocop/cop/style/hash_each_methods.rb +5 -8
- data/lib/rubocop/cop/style/hash_syntax.rb +0 -2
- data/lib/rubocop/cop/style/hash_transform_keys.rb +3 -2
- data/lib/rubocop/cop/style/hash_transform_values.rb +2 -1
- data/lib/rubocop/cop/style/identical_conditional_branches.rb +1 -1
- data/lib/rubocop/cop/style/if_inside_else.rb +2 -2
- data/lib/rubocop/cop/style/if_unless_modifier.rb +10 -12
- data/lib/rubocop/cop/style/if_unless_modifier_of_if_unless.rb +3 -7
- data/lib/rubocop/cop/style/if_with_semicolon.rb +3 -6
- data/lib/rubocop/cop/style/implicit_runtime_error.rb +1 -1
- data/lib/rubocop/cop/style/infinite_loop.rb +23 -23
- data/lib/rubocop/cop/style/inline_comment.rb +3 -3
- data/lib/rubocop/cop/style/inverse_methods.rb +20 -29
- data/lib/rubocop/cop/style/lambda.rb +7 -12
- data/lib/rubocop/cop/style/lambda_call.rb +14 -13
- data/lib/rubocop/cop/style/line_end_concatenation.rb +19 -16
- data/lib/rubocop/cop/style/method_call_with_args_parentheses.rb +2 -1
- data/lib/rubocop/cop/style/method_call_with_args_parentheses/omit_parentheses.rb +11 -11
- data/lib/rubocop/cop/style/method_call_with_args_parentheses/require_parentheses.rb +4 -8
- data/lib/rubocop/cop/style/method_call_without_args_parentheses.rb +7 -6
- data/lib/rubocop/cop/style/method_called_on_do_end_block.rb +2 -2
- data/lib/rubocop/cop/style/method_def_parentheses.rb +11 -16
- data/lib/rubocop/cop/style/min_max.rb +8 -12
- data/lib/rubocop/cop/style/missing_else.rb +13 -13
- data/lib/rubocop/cop/style/missing_respond_to_missing.rb +1 -1
- data/lib/rubocop/cop/style/mixin_grouping.rb +24 -27
- data/lib/rubocop/cop/style/mixin_usage.rb +1 -1
- data/lib/rubocop/cop/style/module_function.rb +10 -13
- data/lib/rubocop/cop/style/multiline_if_modifier.rb +3 -10
- data/lib/rubocop/cop/style/multiline_if_then.rb +4 -10
- data/lib/rubocop/cop/style/multiline_memoization.rb +12 -10
- data/lib/rubocop/cop/style/multiline_method_signature.rb +1 -1
- data/lib/rubocop/cop/style/multiline_ternary_operator.rb +4 -6
- data/lib/rubocop/cop/style/multiline_when_then.rb +7 -9
- data/lib/rubocop/cop/style/multiple_comparison.rb +1 -1
- data/lib/rubocop/cop/style/mutable_constant.rb +23 -20
- data/lib/rubocop/cop/style/nested_parenthesized_calls.rb +3 -1
- data/lib/rubocop/cop/style/redundant_sort.rb +0 -2
- data/lib/rubocop/cop/style/safe_navigation.rb +4 -4
- data/lib/rubocop/cop/style/single_line_methods.rb +1 -1
- data/lib/rubocop/cop/util.rb +2 -0
- data/lib/rubocop/cops_documentation_generator.rb +1 -1
- data/lib/rubocop/formatter/disabled_config_formatter.rb +1 -1
- data/lib/rubocop/formatter/junit_formatter.rb +1 -1
- data/lib/rubocop/options.rb +3 -3
- data/lib/rubocop/rspec/shared_contexts.rb +1 -5
- data/lib/rubocop/runner.rb +1 -1
- data/lib/rubocop/version.rb +1 -1
- metadata +4 -4
@@ -46,8 +46,9 @@ module RuboCop
|
|
46
46
|
# f = ->(x) do
|
47
47
|
# x
|
48
48
|
# end
|
49
|
-
class Lambda <
|
49
|
+
class Lambda < Base
|
50
50
|
include ConfigurableEnforcedStyle
|
51
|
+
extend AutoCorrector
|
51
52
|
|
52
53
|
LITERAL_MESSAGE = 'Use the `-> { ... }` lambda literal syntax for ' \
|
53
54
|
'%<modifier>s lambdas.'
|
@@ -69,21 +70,15 @@ module RuboCop
|
|
69
70
|
|
70
71
|
return unless offending_selector?(node, selector)
|
71
72
|
|
72
|
-
add_offense(node,
|
73
|
-
|
74
|
-
message: message(node, selector))
|
75
|
-
end
|
76
|
-
alias on_numblock on_block
|
77
|
-
|
78
|
-
def autocorrect(node)
|
79
|
-
if node.send_node.source == 'lambda'
|
80
|
-
lambda do |corrector|
|
73
|
+
add_offense(node.send_node.source_range, message: message(node, selector)) do |corrector|
|
74
|
+
if node.send_node.source == 'lambda'
|
81
75
|
autocorrect_method_to_literal(corrector, node)
|
76
|
+
else
|
77
|
+
LambdaLiteralToMethodCorrector.new(node).call(corrector)
|
82
78
|
end
|
83
|
-
else
|
84
|
-
LambdaLiteralToMethodCorrector.new(node)
|
85
79
|
end
|
86
80
|
end
|
81
|
+
alias on_numblock on_block
|
87
82
|
|
88
83
|
private
|
89
84
|
|
@@ -18,30 +18,31 @@ module RuboCop
|
|
18
18
|
#
|
19
19
|
# # good
|
20
20
|
# lambda.(x, y)
|
21
|
-
class LambdaCall <
|
21
|
+
class LambdaCall < Base
|
22
22
|
include ConfigurableEnforcedStyle
|
23
|
+
extend AutoCorrector
|
23
24
|
|
24
25
|
def on_send(node)
|
25
26
|
return unless node.receiver && node.method?(:call)
|
26
27
|
|
27
|
-
if offense?(node)
|
28
|
-
add_offense(node)
|
28
|
+
if offense?(node) && opposite_style_detected
|
29
|
+
add_offense(node) do |corrector|
|
30
|
+
autocorrect(corrector, node)
|
31
|
+
end
|
29
32
|
else
|
30
33
|
correct_style_detected
|
31
34
|
end
|
32
35
|
end
|
33
36
|
|
34
|
-
def autocorrect(node)
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
replacement = node.source.sub("#{receiver}.", "#{receiver}.call")
|
37
|
+
def autocorrect(corrector, node)
|
38
|
+
if explicit_style?
|
39
|
+
receiver = node.receiver.source
|
40
|
+
replacement = node.source.sub("#{receiver}.", "#{receiver}.call")
|
39
41
|
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
end
|
42
|
+
corrector.replace(node, replacement)
|
43
|
+
else
|
44
|
+
add_parentheses(node, corrector) unless node.parenthesized?
|
45
|
+
corrector.remove(node.loc.selector)
|
45
46
|
end
|
46
47
|
end
|
47
48
|
|
@@ -19,8 +19,9 @@ module RuboCop
|
|
19
19
|
# some_str = 'ala' \
|
20
20
|
# 'bala'
|
21
21
|
#
|
22
|
-
class LineEndConcatenation <
|
22
|
+
class LineEndConcatenation < Base
|
23
23
|
include RangeHelp
|
24
|
+
extend AutoCorrector
|
24
25
|
|
25
26
|
MSG = 'Use `\\` instead of `+` or `<<` to concatenate ' \
|
26
27
|
'those strings.'
|
@@ -36,25 +37,12 @@ module RuboCop
|
|
36
37
|
[Style::RedundantInterpolation]
|
37
38
|
end
|
38
39
|
|
39
|
-
def
|
40
|
+
def on_new_investigation
|
40
41
|
processed_source.tokens.each_index do |index|
|
41
42
|
check_token_set(index)
|
42
43
|
end
|
43
44
|
end
|
44
45
|
|
45
|
-
def autocorrect(operator_range)
|
46
|
-
# Include any trailing whitespace so we don't create a syntax error.
|
47
|
-
operator_range = range_with_surrounding_space(range: operator_range,
|
48
|
-
side: :right,
|
49
|
-
newlines: false)
|
50
|
-
one_more_char = operator_range.resize(operator_range.size + 1)
|
51
|
-
# Don't create a double backslash at the end of the line, in case
|
52
|
-
# there already was a backslash after the concatenation operator.
|
53
|
-
operator_range = one_more_char if one_more_char.source.end_with?('\\')
|
54
|
-
|
55
|
-
->(corrector) { corrector.replace(operator_range, '\\') }
|
56
|
-
end
|
57
|
-
|
58
46
|
private
|
59
47
|
|
60
48
|
def check_token_set(index)
|
@@ -68,7 +56,22 @@ module RuboCop
|
|
68
56
|
|
69
57
|
return unless eligible_next_successor?(next_successor)
|
70
58
|
|
71
|
-
add_offense(operator.pos
|
59
|
+
add_offense(operator.pos) do |corrector|
|
60
|
+
autocorrect(corrector, operator.pos)
|
61
|
+
end
|
62
|
+
end
|
63
|
+
|
64
|
+
def autocorrect(corrector, operator_range)
|
65
|
+
# Include any trailing whitespace so we don't create a syntax error.
|
66
|
+
operator_range = range_with_surrounding_space(range: operator_range,
|
67
|
+
side: :right,
|
68
|
+
newlines: false)
|
69
|
+
one_more_char = operator_range.resize(operator_range.size + 1)
|
70
|
+
# Don't create a double backslash at the end of the line, in case
|
71
|
+
# there already was a backslash after the concatenation operator.
|
72
|
+
operator_range = one_more_char if one_more_char.source.end_with?('\\')
|
73
|
+
|
74
|
+
corrector.replace(operator_range, '\\')
|
72
75
|
end
|
73
76
|
|
74
77
|
def eligible_token_set?(predecessor, operator, successor)
|
@@ -143,10 +143,11 @@ module RuboCop
|
|
143
143
|
#
|
144
144
|
# # good
|
145
145
|
# Array 1
|
146
|
-
class MethodCallWithArgsParentheses <
|
146
|
+
class MethodCallWithArgsParentheses < Base
|
147
147
|
include ConfigurableEnforcedStyle
|
148
148
|
include IgnoredMethods
|
149
149
|
include IgnoredPattern
|
150
|
+
extend AutoCorrector
|
150
151
|
|
151
152
|
def initialize(*)
|
152
153
|
super
|
@@ -15,14 +15,7 @@ module RuboCop
|
|
15
15
|
return if allowed_camel_case_method_call?(node)
|
16
16
|
return if legitimate_call_with_parentheses?(node)
|
17
17
|
|
18
|
-
add_offense(
|
19
|
-
end
|
20
|
-
alias on_csend on_send
|
21
|
-
alias on_super on_send
|
22
|
-
alias on_yield on_send
|
23
|
-
|
24
|
-
def autocorrect(node)
|
25
|
-
lambda do |corrector|
|
18
|
+
add_offense(offense_range(node)) do |corrector|
|
26
19
|
if parentheses_at_the_end_of_multiline_call?(node)
|
27
20
|
corrector.replace(args_begin(node), ' \\')
|
28
21
|
else
|
@@ -31,13 +24,20 @@ module RuboCop
|
|
31
24
|
corrector.remove(node.loc.end)
|
32
25
|
end
|
33
26
|
end
|
27
|
+
alias on_csend on_send
|
28
|
+
alias on_super on_send
|
29
|
+
alias on_yield on_send
|
30
|
+
|
31
|
+
private
|
32
|
+
|
33
|
+
def offense_range(node)
|
34
|
+
node.loc.begin.join(node.loc.end)
|
35
|
+
end
|
34
36
|
|
35
|
-
def message(
|
37
|
+
def message(_range = nil)
|
36
38
|
'Omit parentheses for method calls with arguments.'
|
37
39
|
end
|
38
40
|
|
39
|
-
private
|
40
|
-
|
41
41
|
def super_call_without_arguments?(node)
|
42
42
|
node.super_type? && node.arguments.none?
|
43
43
|
end
|
@@ -12,19 +12,15 @@ module RuboCop
|
|
12
12
|
return if eligible_for_parentheses_omission?(node)
|
13
13
|
return unless node.arguments? && !node.parenthesized?
|
14
14
|
|
15
|
-
add_offense(node)
|
16
|
-
end
|
17
|
-
alias on_csend on_send
|
18
|
-
alias on_super on_send
|
19
|
-
alias on_yield on_send
|
20
|
-
|
21
|
-
def autocorrect(node)
|
22
|
-
lambda do |corrector|
|
15
|
+
add_offense(node) do |corrector|
|
23
16
|
corrector.replace(args_begin(node), '(')
|
24
17
|
|
25
18
|
corrector.insert_after(args_end(node), ')') unless args_parenthesized?(node)
|
26
19
|
end
|
27
20
|
end
|
21
|
+
alias on_csend on_send
|
22
|
+
alias on_super on_send
|
23
|
+
alias on_yield on_send
|
28
24
|
|
29
25
|
def message(_node = nil)
|
30
26
|
'Use parentheses for method calls with arguments.'
|
@@ -11,8 +11,9 @@ module RuboCop
|
|
11
11
|
#
|
12
12
|
# # good
|
13
13
|
# object.some_method
|
14
|
-
class MethodCallWithoutArgsParentheses <
|
14
|
+
class MethodCallWithoutArgsParentheses < Base
|
15
15
|
include IgnoredMethods
|
16
|
+
extend AutoCorrector
|
16
17
|
|
17
18
|
MSG = 'Do not use parentheses for method calls with ' \
|
18
19
|
'no arguments.'
|
@@ -23,11 +24,7 @@ module RuboCop
|
|
23
24
|
return if ignored_method?(node.method_name)
|
24
25
|
return if same_name_assignment?(node)
|
25
26
|
|
26
|
-
add_offense(
|
27
|
-
end
|
28
|
-
|
29
|
-
def autocorrect(node)
|
30
|
-
lambda do |corrector|
|
27
|
+
add_offense(offense_range(node)) do |corrector|
|
31
28
|
corrector.remove(node.loc.begin)
|
32
29
|
corrector.remove(node.loc.end)
|
33
30
|
end
|
@@ -69,6 +66,10 @@ module RuboCop
|
|
69
66
|
|
70
67
|
var_nodes.any? { |n| n.to_a.first == variable_name }
|
71
68
|
end
|
69
|
+
|
70
|
+
def offense_range(node)
|
71
|
+
node.loc.begin.join(node.loc.end)
|
72
|
+
end
|
72
73
|
end
|
73
74
|
end
|
74
75
|
end
|
@@ -12,7 +12,7 @@ module RuboCop
|
|
12
12
|
# a do
|
13
13
|
# b
|
14
14
|
# end.c
|
15
|
-
class MethodCalledOnDoEndBlock <
|
15
|
+
class MethodCalledOnDoEndBlock < Base
|
16
16
|
include RangeHelp
|
17
17
|
|
18
18
|
MSG = 'Avoid chaining a method call on a do...end block.'
|
@@ -37,7 +37,7 @@ module RuboCop
|
|
37
37
|
range = range_between(receiver.loc.end.begin_pos,
|
38
38
|
node.source_range.end_pos)
|
39
39
|
|
40
|
-
add_offense(
|
40
|
+
add_offense(range)
|
41
41
|
end
|
42
42
|
alias on_csend on_send
|
43
43
|
end
|
@@ -84,9 +84,10 @@ module RuboCop
|
|
84
84
|
# last_descriptive_var_name)
|
85
85
|
# do_something
|
86
86
|
# end
|
87
|
-
class MethodDefParentheses <
|
87
|
+
class MethodDefParentheses < Base
|
88
88
|
include ConfigurableEnforcedStyle
|
89
89
|
include RangeHelp
|
90
|
+
extend AutoCorrector
|
90
91
|
|
91
92
|
MSG_PRESENT = 'Use def without parentheses.'
|
92
93
|
MSG_MISSING = 'Use def with parentheses when there are ' \
|
@@ -109,17 +110,6 @@ module RuboCop
|
|
109
110
|
end
|
110
111
|
alias on_defs on_def
|
111
112
|
|
112
|
-
def autocorrect(node)
|
113
|
-
lambda do |corrector|
|
114
|
-
if node.args_type?
|
115
|
-
# offense is registered on args node when parentheses are unwanted
|
116
|
-
correct_arguments(node, corrector)
|
117
|
-
else
|
118
|
-
correct_definition(node, corrector)
|
119
|
-
end
|
120
|
-
end
|
121
|
-
end
|
122
|
-
|
123
113
|
private
|
124
114
|
|
125
115
|
def correct_arguments(arg_node, corrector)
|
@@ -150,14 +140,19 @@ module RuboCop
|
|
150
140
|
def missing_parentheses(node)
|
151
141
|
location = node.arguments.source_range
|
152
142
|
|
153
|
-
|
154
|
-
|
143
|
+
return unless unexpected_style_detected(:require_no_parentheses)
|
144
|
+
|
145
|
+
add_offense(location, message: MSG_MISSING) do |corrector|
|
146
|
+
correct_definition(node, corrector)
|
155
147
|
end
|
156
148
|
end
|
157
149
|
|
158
150
|
def unwanted_parentheses(args)
|
159
|
-
|
160
|
-
|
151
|
+
return unless unexpected_style_detected(:require_parentheses)
|
152
|
+
|
153
|
+
add_offense(args, message: MSG_PRESENT) do |corrector|
|
154
|
+
# offense is registered on args node when parentheses are unwanted
|
155
|
+
correct_arguments(args, corrector)
|
161
156
|
end
|
162
157
|
end
|
163
158
|
end
|
@@ -14,27 +14,23 @@ module RuboCop
|
|
14
14
|
# # good
|
15
15
|
# bar = foo.minmax
|
16
16
|
# return foo.minmax
|
17
|
-
class MinMax <
|
17
|
+
class MinMax < Base
|
18
|
+
extend AutoCorrector
|
19
|
+
|
18
20
|
MSG = 'Use `%<receiver>s.minmax` instead of `%<offender>s`.'
|
19
21
|
|
20
22
|
def on_array(node)
|
21
23
|
min_max_candidate(node) do |receiver|
|
22
24
|
offender = offending_range(node)
|
23
25
|
|
24
|
-
add_offense(
|
25
|
-
|
26
|
-
end
|
27
|
-
end
|
28
|
-
alias on_return on_array
|
29
|
-
|
30
|
-
def autocorrect(node)
|
31
|
-
receiver = node.children.first.receiver
|
26
|
+
add_offense(offender, message: message(offender, receiver)) do |corrector|
|
27
|
+
receiver = node.children.first.receiver
|
32
28
|
|
33
|
-
|
34
|
-
|
35
|
-
"#{receiver.source}.minmax")
|
29
|
+
corrector.replace(offending_range(node), "#{receiver.source}.minmax")
|
30
|
+
end
|
36
31
|
end
|
37
32
|
end
|
33
|
+
alias on_return on_array
|
38
34
|
|
39
35
|
private
|
40
36
|
|
@@ -93,7 +93,7 @@ module RuboCop
|
|
93
93
|
# else
|
94
94
|
# # the content of `else` branch will be determined by Style/EmptyElse
|
95
95
|
# end
|
96
|
-
class MissingElse <
|
96
|
+
class MissingElse < Base
|
97
97
|
include OnNormalIfUnless
|
98
98
|
include ConfigurableEnforcedStyle
|
99
99
|
|
@@ -119,20 +119,20 @@ module RuboCop
|
|
119
119
|
private
|
120
120
|
|
121
121
|
def check(node)
|
122
|
-
|
122
|
+
return if node.else?
|
123
|
+
|
124
|
+
add_offense(node, message: format(message_template, type: node.type))
|
123
125
|
end
|
124
126
|
|
125
|
-
def
|
126
|
-
|
127
|
-
|
128
|
-
|
129
|
-
|
130
|
-
|
131
|
-
|
132
|
-
|
133
|
-
|
134
|
-
|
135
|
-
format(template, type: node.type)
|
127
|
+
def message_template
|
128
|
+
case empty_else_style
|
129
|
+
when :empty
|
130
|
+
MSG_NIL
|
131
|
+
when :nil
|
132
|
+
MSG_EMPTY
|
133
|
+
else
|
134
|
+
MSG
|
135
|
+
end
|
136
136
|
end
|
137
137
|
|
138
138
|
def if_style?
|
@@ -30,8 +30,9 @@ module RuboCop
|
|
30
30
|
# class Foo
|
31
31
|
# extend Qox, Bar
|
32
32
|
# end
|
33
|
-
class MixinGrouping <
|
33
|
+
class MixinGrouping < Base
|
34
34
|
include ConfigurableEnforcedStyle
|
35
|
+
extend AutoCorrector
|
35
36
|
|
36
37
|
MIXIN_METHODS = %i[extend include prepend].freeze
|
37
38
|
MSG = 'Put `%<mixin>s` mixins in %<suffix>s.'
|
@@ -47,23 +48,6 @@ module RuboCop
|
|
47
48
|
|
48
49
|
alias on_module on_class
|
49
50
|
|
50
|
-
def autocorrect(node)
|
51
|
-
range = node.loc.expression
|
52
|
-
if separated_style?
|
53
|
-
correction = separate_mixins(node)
|
54
|
-
else
|
55
|
-
mixins = sibling_mixins(node)
|
56
|
-
if node == mixins.first
|
57
|
-
correction = group_mixins(node, mixins)
|
58
|
-
else
|
59
|
-
range = range_to_remove_for_subsequent_mixin(mixins, node)
|
60
|
-
correction = ''
|
61
|
-
end
|
62
|
-
end
|
63
|
-
|
64
|
-
->(corrector) { corrector.replace(range, correction) }
|
65
|
-
end
|
66
|
-
|
67
51
|
private
|
68
52
|
|
69
53
|
def range_to_remove_for_subsequent_mixin(mixins, node)
|
@@ -89,13 +73,33 @@ module RuboCop
|
|
89
73
|
def check_grouped_style(send_node)
|
90
74
|
return if sibling_mixins(send_node).size == 1
|
91
75
|
|
92
|
-
|
76
|
+
message = format(MSG, mixin: send_node.method_name, suffix: 'a single statement')
|
77
|
+
|
78
|
+
add_offense(send_node, message: message) do |corrector|
|
79
|
+
range = send_node.loc.expression
|
80
|
+
mixins = sibling_mixins(send_node)
|
81
|
+
if send_node == mixins.first
|
82
|
+
correction = group_mixins(send_node, mixins)
|
83
|
+
else
|
84
|
+
range = range_to_remove_for_subsequent_mixin(mixins, send_node)
|
85
|
+
correction = ''
|
86
|
+
end
|
87
|
+
|
88
|
+
corrector.replace(range, correction)
|
89
|
+
end
|
93
90
|
end
|
94
91
|
|
95
92
|
def check_separated_style(send_node)
|
96
93
|
return if send_node.arguments.one?
|
97
94
|
|
98
|
-
|
95
|
+
message = format(MSG, mixin: send_node.method_name, suffix: 'separate statements')
|
96
|
+
|
97
|
+
add_offense(send_node, message: message) do |corrector|
|
98
|
+
range = send_node.loc.expression
|
99
|
+
correction = separate_mixins(send_node)
|
100
|
+
|
101
|
+
corrector.replace(range, correction)
|
102
|
+
end
|
99
103
|
end
|
100
104
|
|
101
105
|
def sibling_mixins(send_node)
|
@@ -107,13 +111,6 @@ module RuboCop
|
|
107
111
|
end
|
108
112
|
end
|
109
113
|
|
110
|
-
def message(send_node)
|
111
|
-
suffix =
|
112
|
-
separated_style? ? 'separate statements' : 'a single statement'
|
113
|
-
|
114
|
-
format(MSG, mixin: send_node.method_name, suffix: suffix)
|
115
|
-
end
|
116
|
-
|
117
114
|
def grouped_style?
|
118
115
|
style == :grouped
|
119
116
|
end
|