rubocop 0.81.0 → 0.82.0
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/README.md +2 -2
- data/config/default.yml +59 -13
- data/lib/rubocop.rb +4 -2
- data/lib/rubocop/ast/node.rb +1 -1
- data/lib/rubocop/ast/node/array_node.rb +13 -0
- data/lib/rubocop/ast/node/mixin/method_dispatch_node.rb +8 -0
- data/lib/rubocop/cli.rb +10 -4
- data/lib/rubocop/config.rb +9 -1
- data/lib/rubocop/config_loader.rb +24 -15
- data/lib/rubocop/config_loader_resolver.rb +1 -1
- data/lib/rubocop/config_obsoletion.rb +1 -0
- data/lib/rubocop/config_validator.rb +16 -0
- data/lib/rubocop/cop/badge.rb +5 -5
- data/lib/rubocop/cop/bundler/insecure_protocol_source.rb +1 -1
- data/lib/rubocop/cop/corrector.rb +48 -24
- data/lib/rubocop/cop/correctors/alignment_corrector.rb +2 -2
- data/lib/rubocop/cop/correctors/condition_corrector.rb +1 -2
- data/lib/rubocop/cop/correctors/empty_line_corrector.rb +1 -1
- data/lib/rubocop/cop/correctors/lambda_literal_to_method_corrector.rb +3 -3
- data/lib/rubocop/cop/correctors/line_break_corrector.rb +2 -2
- data/lib/rubocop/cop/correctors/percent_literal_corrector.rb +1 -1
- data/lib/rubocop/cop/correctors/string_literal_corrector.rb +2 -2
- data/lib/rubocop/cop/internal_affairs/offense_location_keyword.rb +1 -1
- data/lib/rubocop/cop/layout/dot_position.rb +1 -1
- data/lib/rubocop/cop/layout/end_of_line.rb +2 -2
- data/lib/rubocop/cop/layout/first_array_element_indentation.rb +16 -10
- data/lib/rubocop/cop/layout/first_hash_element_indentation.rb +1 -1
- data/lib/rubocop/cop/layout/heredoc_argument_closing_parenthesis.rb +2 -2
- data/lib/rubocop/cop/layout/heredoc_indentation.rb +2 -2
- data/lib/rubocop/cop/layout/{tab.rb → indentation_style.rb} +48 -6
- data/lib/rubocop/cop/layout/leading_comment_space.rb +1 -1
- data/lib/rubocop/cop/layout/line_length.rb +2 -2
- data/lib/rubocop/cop/layout/multiline_block_layout.rb +1 -1
- data/lib/rubocop/cop/layout/space_around_block_parameters.rb +3 -3
- data/lib/rubocop/cop/layout/space_around_method_call_operator.rb +133 -0
- data/lib/rubocop/cop/layout/space_around_operators.rb +1 -1
- data/lib/rubocop/cop/layout/space_in_lambda_literal.rb +1 -1
- data/lib/rubocop/cop/layout/space_inside_block_braces.rb +2 -2
- data/lib/rubocop/cop/layout/space_inside_range_literal.rb +2 -2
- data/lib/rubocop/cop/lint/boolean_symbol.rb +2 -2
- data/lib/rubocop/cop/lint/debugger.rb +1 -1
- data/lib/rubocop/cop/lint/implicit_string_concatenation.rb +1 -1
- data/lib/rubocop/cop/lint/inherit_exception.rb +1 -1
- data/lib/rubocop/cop/lint/interpolation_check.rb +1 -1
- data/lib/rubocop/cop/lint/literal_in_interpolation.rb +1 -1
- data/lib/rubocop/cop/lint/multiple_comparison.rb +1 -1
- data/lib/rubocop/cop/lint/non_deterministic_require_order.rb +2 -2
- data/lib/rubocop/cop/lint/number_conversion.rb +1 -1
- data/lib/rubocop/cop/lint/percent_string_array.rb +2 -2
- data/lib/rubocop/cop/lint/raise_exception.rb +42 -6
- data/lib/rubocop/cop/lint/redundant_string_coercion.rb +1 -1
- data/lib/rubocop/cop/lint/unified_integer.rb +0 -2
- data/lib/rubocop/cop/lint/uri_regexp.rb +4 -4
- data/lib/rubocop/cop/mixin/hash_transform_method.rb +1 -1
- data/lib/rubocop/cop/mixin/line_length_help.rb +1 -1
- data/lib/rubocop/cop/mixin/statement_modifier.rb +4 -3
- data/lib/rubocop/cop/mixin/trailing_comma.rb +1 -1
- data/lib/rubocop/cop/naming/class_and_module_camel_case.rb +1 -1
- data/lib/rubocop/cop/naming/constant_name.rb +2 -1
- data/lib/rubocop/cop/naming/heredoc_delimiter_naming.rb +1 -1
- data/lib/rubocop/cop/naming/rescued_exceptions_variable_name.rb +1 -1
- data/lib/rubocop/cop/registry.rb +11 -4
- data/lib/rubocop/cop/style/alias.rb +4 -4
- data/lib/rubocop/cop/style/and_or.rb +5 -6
- data/lib/rubocop/cop/style/array_join.rb +1 -1
- data/lib/rubocop/cop/style/case_equality.rb +24 -1
- data/lib/rubocop/cop/style/character_literal.rb +2 -2
- data/lib/rubocop/cop/style/conditional_assignment.rb +8 -8
- data/lib/rubocop/cop/style/copyright.rb +1 -1
- data/lib/rubocop/cop/style/dir.rb +1 -1
- data/lib/rubocop/cop/style/disable_cops_within_source_code_directive.rb +49 -0
- data/lib/rubocop/cop/style/double_cop_disable_directive.rb +1 -1
- data/lib/rubocop/cop/style/each_for_simple_loop.rb +1 -1
- data/lib/rubocop/cop/style/each_with_object.rb +3 -3
- data/lib/rubocop/cop/style/empty_method.rb +1 -1
- data/lib/rubocop/cop/style/even_odd.rb +1 -1
- data/lib/rubocop/cop/style/expand_path_arguments.rb +3 -3
- data/lib/rubocop/cop/style/exponential_notation.rb +119 -0
- data/lib/rubocop/cop/style/format_string.rb +2 -2
- data/lib/rubocop/cop/style/hash_each_methods.rb +3 -3
- data/lib/rubocop/cop/style/hash_syntax.rb +3 -5
- data/lib/rubocop/cop/style/hash_transform_values.rb +0 -3
- data/lib/rubocop/cop/style/if_unless_modifier.rb +23 -3
- data/lib/rubocop/cop/style/lambda.rb +2 -2
- data/lib/rubocop/cop/style/lambda_call.rb +2 -2
- data/lib/rubocop/cop/style/mixin_grouping.rb +1 -1
- data/lib/rubocop/cop/style/module_function.rb +2 -2
- data/lib/rubocop/cop/style/multiline_if_modifier.rb +1 -1
- data/lib/rubocop/cop/style/multiline_memoization.rb +1 -1
- data/lib/rubocop/cop/style/mutable_constant.rb +2 -4
- data/lib/rubocop/cop/style/next.rb +2 -2
- data/lib/rubocop/cop/style/nil_comparison.rb +1 -1
- data/lib/rubocop/cop/style/non_nil_check.rb +4 -4
- data/lib/rubocop/cop/style/not.rb +1 -1
- data/lib/rubocop/cop/style/numeric_literal_prefix.rb +1 -1
- data/lib/rubocop/cop/style/numeric_literals.rb +1 -1
- data/lib/rubocop/cop/style/numeric_predicate.rb +1 -1
- data/lib/rubocop/cop/style/one_line_conditional.rb +1 -1
- data/lib/rubocop/cop/style/or_assignment.rb +1 -1
- data/lib/rubocop/cop/style/percent_q_literals.rb +1 -1
- data/lib/rubocop/cop/style/perl_backrefs.rb +2 -2
- data/lib/rubocop/cop/style/proc.rb +1 -1
- data/lib/rubocop/cop/style/raise_args.rb +1 -1
- data/lib/rubocop/cop/style/random_with_offset.rb +3 -3
- data/lib/rubocop/cop/style/redundant_condition.rb +3 -4
- data/lib/rubocop/cop/style/redundant_conditional.rb +1 -1
- data/lib/rubocop/cop/style/redundant_exception.rb +3 -3
- data/lib/rubocop/cop/style/redundant_interpolation.rb +2 -2
- data/lib/rubocop/cop/style/redundant_percent_q.rb +2 -2
- data/lib/rubocop/cop/style/redundant_return.rb +5 -7
- data/lib/rubocop/cop/style/redundant_self.rb +1 -1
- data/lib/rubocop/cop/style/rescue_modifier.rb +1 -1
- data/lib/rubocop/cop/style/return_nil.rb +1 -1
- data/lib/rubocop/cop/style/safe_navigation.rb +1 -1
- data/lib/rubocop/cop/style/self_assignment.rb +1 -1
- data/lib/rubocop/cop/style/special_global_vars.rb +1 -1
- data/lib/rubocop/cop/style/stabby_lambda_parentheses.rb +1 -4
- data/lib/rubocop/cop/style/string_hash_keys.rb +1 -1
- data/lib/rubocop/cop/style/symbol_array.rb +1 -1
- data/lib/rubocop/cop/style/symbol_literal.rb +2 -2
- data/lib/rubocop/cop/style/ternary_parentheses.rb +1 -2
- data/lib/rubocop/cop/style/trailing_comma_in_arguments.rb +2 -1
- data/lib/rubocop/cop/style/trailing_comma_in_block_args.rb +3 -0
- data/lib/rubocop/cop/style/trivial_accessors.rb +1 -1
- data/lib/rubocop/cop/style/unpack_first.rb +0 -4
- data/lib/rubocop/cop/style/variable_interpolation.rb +1 -1
- data/lib/rubocop/cop/style/while_until_modifier.rb +1 -1
- data/lib/rubocop/cop/style/word_array.rb +1 -1
- data/lib/rubocop/cop/style/zero_length_predicate.rb +1 -1
- data/lib/rubocop/formatter/formatter_set.rb +0 -1
- data/lib/rubocop/formatter/pacman_formatter.rb +1 -1
- data/lib/rubocop/options.rb +7 -1
- data/lib/rubocop/processed_source.rb +0 -3
- data/lib/rubocop/rspec/cop_helper.rb +1 -1
- data/lib/rubocop/rspec/expect_offense.rb +1 -1
- data/lib/rubocop/rspec/shared_contexts.rb +0 -4
- data/lib/rubocop/runner.rb +1 -1
- data/lib/rubocop/target_ruby.rb +2 -2
- data/lib/rubocop/version.rb +1 -1
- metadata +7 -5
- data/lib/rubocop/formatter/disabled_lines_formatter.rb +0 -57
@@ -24,10 +24,10 @@ module RuboCop
|
|
24
24
|
backref, = *node
|
25
25
|
parent_type = node.parent ? node.parent.type : nil
|
26
26
|
if %i[dstr xstr regexp].include?(parent_type)
|
27
|
-
corrector.replace(node
|
27
|
+
corrector.replace(node,
|
28
28
|
"{Regexp.last_match(#{backref})}")
|
29
29
|
else
|
30
|
-
corrector.replace(node
|
30
|
+
corrector.replace(node,
|
31
31
|
"Regexp.last_match(#{backref})")
|
32
32
|
end
|
33
33
|
end
|
@@ -66,13 +66,13 @@ module RuboCop
|
|
66
66
|
def autocorrect(node)
|
67
67
|
lambda do |corrector|
|
68
68
|
if integer_op_rand?(node)
|
69
|
-
corrector.replace(node
|
69
|
+
corrector.replace(node,
|
70
70
|
corrected_integer_op_rand(node))
|
71
71
|
elsif rand_op_integer?(node)
|
72
|
-
corrector.replace(node
|
72
|
+
corrector.replace(node,
|
73
73
|
corrected_rand_op_integer(node))
|
74
74
|
elsif rand_modified?(node)
|
75
|
-
corrector.replace(node
|
75
|
+
corrector.replace(node,
|
76
76
|
corrected_rand_modified(node))
|
77
77
|
end
|
78
78
|
end
|
@@ -48,11 +48,11 @@ module RuboCop
|
|
48
48
|
if node.ternary?
|
49
49
|
correct_ternary(corrector, node)
|
50
50
|
elsif node.modifier_form? || !node.else_branch
|
51
|
-
corrector.replace(node
|
51
|
+
corrector.replace(node, node.if_branch.source)
|
52
52
|
else
|
53
53
|
corrected = make_ternary_form(node)
|
54
54
|
|
55
|
-
corrector.replace(node
|
55
|
+
corrector.replace(node, corrected)
|
56
56
|
end
|
57
57
|
end
|
58
58
|
end
|
@@ -116,8 +116,7 @@ module RuboCop
|
|
116
116
|
|
117
117
|
return unless node.else_branch.range_type?
|
118
118
|
|
119
|
-
corrector.
|
120
|
-
corrector.insert_after(node.else_branch.loc.expression, ')')
|
119
|
+
corrector.wrap(node.else_branch, '(', ')')
|
121
120
|
end
|
122
121
|
end
|
123
122
|
end
|
@@ -32,17 +32,17 @@ module RuboCop
|
|
32
32
|
exploded?(node) do |command, message|
|
33
33
|
return lambda do |corrector|
|
34
34
|
if node.parenthesized?
|
35
|
-
corrector.replace(node
|
35
|
+
corrector.replace(node,
|
36
36
|
"#{command}(#{message.source})")
|
37
37
|
else
|
38
|
-
corrector.replace(node
|
38
|
+
corrector.replace(node,
|
39
39
|
"#{command} #{message.source}")
|
40
40
|
end
|
41
41
|
end
|
42
42
|
end
|
43
43
|
compact?(node) do |new_call, message|
|
44
44
|
lambda do |corrector|
|
45
|
-
corrector.replace(new_call
|
45
|
+
corrector.replace(new_call, message.source)
|
46
46
|
end
|
47
47
|
end
|
48
48
|
end
|
@@ -72,13 +72,13 @@ module RuboCop
|
|
72
72
|
|
73
73
|
def autocorrect_variable_interpolation(embedded_node, node)
|
74
74
|
replacement = "#{embedded_node.loc.expression.source}.to_s"
|
75
|
-
->(corrector) { corrector.replace(node
|
75
|
+
->(corrector) { corrector.replace(node, replacement) }
|
76
76
|
end
|
77
77
|
|
78
78
|
def autocorrect_single_variable_interpolation(embedded_node, node)
|
79
79
|
variable_loc = embedded_node.children.first.loc
|
80
80
|
replacement = "#{variable_loc.expression.source}.to_s"
|
81
|
-
->(corrector) { corrector.replace(node
|
81
|
+
->(corrector) { corrector.replace(node, replacement) }
|
82
82
|
end
|
83
83
|
|
84
84
|
def autocorrect_other(embedded_node, node)
|
@@ -47,7 +47,7 @@ module RuboCop
|
|
47
47
|
|
48
48
|
def autocorrect(node)
|
49
49
|
delimiter =
|
50
|
-
|
50
|
+
/^%Q[^"]+$|'/.match?(node.source) ? QUOTE : SINGLE_QUOTE
|
51
51
|
lambda do |corrector|
|
52
52
|
corrector.replace(node.loc.begin, delimiter)
|
53
53
|
corrector.replace(node.loc.end, delimiter)
|
@@ -95,7 +95,7 @@ module RuboCop
|
|
95
95
|
def acceptable_q?(node)
|
96
96
|
src = node.source
|
97
97
|
|
98
|
-
return true if src
|
98
|
+
return true if STRING_INTERPOLATION_REGEXP.match?(src)
|
99
99
|
|
100
100
|
src.scan(/\\./).any? { |s| s =~ ESCAPED_NON_BACKSLASH }
|
101
101
|
end
|
@@ -71,7 +71,7 @@ module RuboCop
|
|
71
71
|
private
|
72
72
|
|
73
73
|
def correct_without_arguments(return_node, corrector)
|
74
|
-
corrector.replace(return_node
|
74
|
+
corrector.replace(return_node, 'nil')
|
75
75
|
end
|
76
76
|
|
77
77
|
def correct_with_arguments(return_node, corrector)
|
@@ -91,15 +91,13 @@ module RuboCop
|
|
91
91
|
end
|
92
92
|
|
93
93
|
def add_brackets(corrector, node)
|
94
|
-
|
95
|
-
corrector.
|
96
|
-
corrector.insert_after(kids.last, ']')
|
94
|
+
corrector.insert_before(node.children.first, '[')
|
95
|
+
corrector.insert_after(node.children.last, ']')
|
97
96
|
end
|
98
97
|
|
99
98
|
def add_braces(corrector, node)
|
100
|
-
|
101
|
-
corrector.
|
102
|
-
corrector.insert_after(kids.last, '}')
|
99
|
+
corrector.insert_before(node.children.first, '{')
|
100
|
+
corrector.insert_after(node.children.last, '}')
|
103
101
|
end
|
104
102
|
|
105
103
|
# rubocop:disable Metrics/CyclomaticComplexity
|
@@ -88,7 +88,7 @@ module RuboCop
|
|
88
88
|
def apply_autocorrect(node, rhs, operator, new_rhs)
|
89
89
|
lambda do |corrector|
|
90
90
|
corrector.insert_before(node.loc.operator, operator)
|
91
|
-
corrector.replace(rhs
|
91
|
+
corrector.replace(rhs, new_rhs.source)
|
92
92
|
end
|
93
93
|
end
|
94
94
|
end
|
@@ -57,10 +57,7 @@ module RuboCop
|
|
57
57
|
|
58
58
|
def missing_parentheses_corrector(node)
|
59
59
|
lambda do |corrector|
|
60
|
-
|
61
|
-
|
62
|
-
corrector.insert_before(args_loc, '(')
|
63
|
-
corrector.insert_after(args_loc, ')')
|
60
|
+
corrector.wrap(node, '(', ')')
|
64
61
|
end
|
65
62
|
end
|
66
63
|
|
@@ -16,14 +16,14 @@ module RuboCop
|
|
16
16
|
MSG = 'Do not use strings for word-like symbol literals.'
|
17
17
|
|
18
18
|
def on_sym(node)
|
19
|
-
return unless
|
19
|
+
return unless /\A:["'][A-Za-z_]\w*["']\z/.match?(node.source)
|
20
20
|
|
21
21
|
add_offense(node)
|
22
22
|
end
|
23
23
|
|
24
24
|
def autocorrect(node)
|
25
25
|
lambda do |corrector|
|
26
|
-
corrector.replace(node
|
26
|
+
corrector.replace(node, node.source.delete(%q('")))
|
27
27
|
end
|
28
28
|
end
|
29
29
|
end
|
@@ -207,8 +207,7 @@ module RuboCop
|
|
207
207
|
|
208
208
|
def correct_unparenthesized(condition)
|
209
209
|
lambda do |corrector|
|
210
|
-
corrector.
|
211
|
-
corrector.insert_after(condition.source_range, ')')
|
210
|
+
corrector.wrap(condition, '(', ')')
|
212
211
|
end
|
213
212
|
end
|
214
213
|
|
@@ -10,7 +10,8 @@ module RuboCop
|
|
10
10
|
# for all parenthesized method calls with arguments.
|
11
11
|
# - `comma`: Requires a comma after the last argument, but only for
|
12
12
|
# parenthesized method calls where each argument is on its own line.
|
13
|
-
# - `no_comma`:
|
13
|
+
# - `no_comma`: Requires that there is no comma after the last
|
14
|
+
# argument.
|
14
15
|
#
|
15
16
|
# @example EnforcedStyleForMultiline: consistent_comma
|
16
17
|
# # bad
|
@@ -44,6 +44,9 @@ module RuboCop
|
|
44
44
|
MSG = 'Useless trailing comma present in block arguments.'
|
45
45
|
|
46
46
|
def on_block(node)
|
47
|
+
# lambda literal (`->`) never has block arguments.
|
48
|
+
return if node.send_node.lambda_literal?
|
49
|
+
|
47
50
|
return unless useless_trailing_comma?(node)
|
48
51
|
|
49
52
|
add_offense(node, location: last_comma(node).pos)
|
@@ -18,10 +18,6 @@ module RuboCop
|
|
18
18
|
# 'foo'.unpack1('h*')
|
19
19
|
#
|
20
20
|
class UnpackFirst < Cop
|
21
|
-
extend TargetRubyVersion
|
22
|
-
|
23
|
-
minimum_target_ruby_version 2.4
|
24
|
-
|
25
21
|
MSG = 'Use `%<receiver>s.unpack1(%<format>s)` instead of '\
|
26
22
|
'`%<receiver>s.unpack(%<format>s)%<method>s`.'
|
27
23
|
|
@@ -11,7 +11,6 @@ module RuboCop
|
|
11
11
|
BUILTIN_FORMATTERS_FOR_KEYS = {
|
12
12
|
'[a]utogenconf' => AutoGenConfigFormatter,
|
13
13
|
'[c]lang' => ClangStyleFormatter,
|
14
|
-
'[d]isabled' => DisabledLinesFormatter,
|
15
14
|
'[e]macs' => EmacsStyleFormatter,
|
16
15
|
'[fi]les' => FileListFormatter,
|
17
16
|
'[fu]ubar' => FuubarStyleFormatter,
|