rubocop 0.89.0 → 0.89.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/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
@@ -23,8 +23,9 @@ module RuboCop
|
|
23
23
|
# var.kind_of?(Time)
|
24
24
|
# var.kind_of?(String)
|
25
25
|
#
|
26
|
-
class ClassCheck <
|
26
|
+
class ClassCheck < Base
|
27
27
|
include ConfigurableEnforcedStyle
|
28
|
+
extend AutoCorrector
|
28
29
|
|
29
30
|
MSG = 'Prefer `Object#%<prefer>s` over `Object#%<current>s`.'
|
30
31
|
|
@@ -34,15 +35,12 @@ module RuboCop
|
|
34
35
|
class_check?(node) do |method_name|
|
35
36
|
return if style == method_name
|
36
37
|
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
def autocorrect(node)
|
42
|
-
lambda do |corrector|
|
43
|
-
replacement = node.method?(:is_a?) ? 'kind_of?' : 'is_a?'
|
38
|
+
message = message(node)
|
39
|
+
add_offense(node.loc.selector, message: message) do |corrector|
|
40
|
+
replacement = node.method?(:is_a?) ? 'kind_of?' : 'is_a?'
|
44
41
|
|
45
|
-
|
42
|
+
corrector.replace(node.loc.selector, replacement)
|
43
|
+
end
|
46
44
|
end
|
47
45
|
end
|
48
46
|
|
@@ -20,7 +20,9 @@ module RuboCop
|
|
20
20
|
# # ...
|
21
21
|
# end
|
22
22
|
# end
|
23
|
-
class ClassMethods <
|
23
|
+
class ClassMethods < Base
|
24
|
+
extend AutoCorrector
|
25
|
+
|
24
26
|
MSG = 'Use `self.%<method>s` instead of `%<class>s.%<method>s`.'
|
25
27
|
|
26
28
|
def on_class(node)
|
@@ -36,23 +38,17 @@ module RuboCop
|
|
36
38
|
end
|
37
39
|
alias on_module on_class
|
38
40
|
|
39
|
-
def autocorrect(node)
|
40
|
-
->(corrector) { corrector.replace(node.loc.name, 'self') }
|
41
|
-
end
|
42
|
-
|
43
41
|
private
|
44
42
|
|
45
43
|
def check_defs(name, node)
|
46
44
|
# check if the class/module name matches the definee for the defs node
|
47
45
|
return unless name == node.receiver
|
48
46
|
|
49
|
-
|
50
|
-
end
|
51
|
-
|
52
|
-
def message(node)
|
53
|
-
_, class_name = *node
|
47
|
+
message = format(MSG, method: node.method_name, class: name.source)
|
54
48
|
|
55
|
-
|
49
|
+
add_offense(node.receiver.loc.name, message: message) do |corrector|
|
50
|
+
corrector.replace(node.receiver, 'self')
|
51
|
+
end
|
56
52
|
end
|
57
53
|
end
|
58
54
|
end
|
@@ -45,23 +45,19 @@ module RuboCop
|
|
45
45
|
# end
|
46
46
|
# end
|
47
47
|
#
|
48
|
-
class ClassVars <
|
49
|
-
MSG = 'Replace class var %<class_var>s with a class '
|
50
|
-
'instance var.'
|
48
|
+
class ClassVars < Base
|
49
|
+
MSG = 'Replace class var %<class_var>s with a class instance var.'
|
51
50
|
|
52
51
|
def on_cvasgn(node)
|
53
|
-
add_offense(node,
|
52
|
+
add_offense(node.loc.name, message: format(MSG, class_var: node.children.first))
|
54
53
|
end
|
55
54
|
|
56
55
|
def on_send(node)
|
57
56
|
return unless node.method?(:class_variable_set)
|
58
57
|
|
59
|
-
add_offense(
|
60
|
-
|
61
|
-
|
62
|
-
def message(node)
|
63
|
-
class_var, = *node
|
64
|
-
format(MSG, class_var: class_var)
|
58
|
+
add_offense(
|
59
|
+
node.first_argument, message: format(MSG, class_var: node.first_argument.source)
|
60
|
+
)
|
65
61
|
end
|
66
62
|
end
|
67
63
|
end
|
@@ -37,8 +37,9 @@ module RuboCop
|
|
37
37
|
# items.select
|
38
38
|
# items.include?
|
39
39
|
#
|
40
|
-
class CollectionMethods <
|
40
|
+
class CollectionMethods < Base
|
41
41
|
include MethodPreference
|
42
|
+
extend AutoCorrector
|
42
43
|
|
43
44
|
MSG = 'Prefer `%<prefer>s` over `%<current>s`.'
|
44
45
|
|
@@ -47,31 +48,24 @@ module RuboCop
|
|
47
48
|
end
|
48
49
|
|
49
50
|
def on_send(node)
|
50
|
-
return unless node.arguments.one? &&
|
51
|
-
node.first_argument.block_pass_type?
|
51
|
+
return unless node.arguments.one? && node.first_argument.block_pass_type?
|
52
52
|
|
53
53
|
check_method_node(node)
|
54
54
|
end
|
55
55
|
|
56
|
-
def autocorrect(node)
|
57
|
-
lambda do |corrector|
|
58
|
-
corrector.replace(node.loc.selector,
|
59
|
-
preferred_method(node.loc.selector.source))
|
60
|
-
end
|
61
|
-
end
|
62
|
-
|
63
56
|
private
|
64
57
|
|
65
|
-
def message(node)
|
66
|
-
format(MSG,
|
67
|
-
prefer: preferred_method(node.method_name),
|
68
|
-
current: node.method_name)
|
69
|
-
end
|
70
|
-
|
71
58
|
def check_method_node(node)
|
72
59
|
return unless preferred_methods[node.method_name]
|
73
60
|
|
74
|
-
|
61
|
+
message = message(node)
|
62
|
+
add_offense(node.loc.selector, message: message) do |corrector|
|
63
|
+
corrector.replace(node.loc.selector, preferred_method(node.loc.selector.source))
|
64
|
+
end
|
65
|
+
end
|
66
|
+
|
67
|
+
def message(node)
|
68
|
+
format(MSG, prefer: preferred_method(node.method_name), current: node.method_name)
|
75
69
|
end
|
76
70
|
end
|
77
71
|
end
|
@@ -17,7 +17,9 @@ module RuboCop
|
|
17
17
|
# FileUtils.rmdir(dir)
|
18
18
|
# Marshal.dump(obj)
|
19
19
|
#
|
20
|
-
class ColonMethodCall <
|
20
|
+
class ColonMethodCall < Base
|
21
|
+
extend AutoCorrector
|
22
|
+
|
21
23
|
MSG = 'Do not use `::` for method calls.'
|
22
24
|
|
23
25
|
def_node_matcher :java_type_node?, <<~PATTERN
|
@@ -32,15 +34,12 @@ module RuboCop
|
|
32
34
|
def on_send(node)
|
33
35
|
return unless node.receiver && node.double_colon?
|
34
36
|
return if node.camel_case_method?
|
35
|
-
|
36
37
|
# ignore Java interop code like Java::int
|
37
38
|
return if java_type_node?(node)
|
38
39
|
|
39
|
-
add_offense(node
|
40
|
-
|
41
|
-
|
42
|
-
def autocorrect(node)
|
43
|
-
->(corrector) { corrector.replace(node.loc.dot, '.') }
|
40
|
+
add_offense(node.loc.dot) do |corrector|
|
41
|
+
corrector.replace(node.loc.dot, '.')
|
42
|
+
end
|
44
43
|
end
|
45
44
|
end
|
46
45
|
end
|
@@ -19,17 +19,17 @@ module RuboCop
|
|
19
19
|
# end
|
20
20
|
# end
|
21
21
|
#
|
22
|
-
class ColonMethodDefinition <
|
22
|
+
class ColonMethodDefinition < Base
|
23
|
+
extend AutoCorrector
|
24
|
+
|
23
25
|
MSG = 'Do not use `::` for defining class methods.'
|
24
26
|
|
25
27
|
def on_defs(node)
|
26
28
|
return unless node.loc.operator.source == '::'
|
27
29
|
|
28
|
-
add_offense(node
|
29
|
-
|
30
|
-
|
31
|
-
def autocorrect(node)
|
32
|
-
->(corrector) { corrector.replace(node.loc.operator, '.') }
|
30
|
+
add_offense(node.loc.operator) do |corrector|
|
31
|
+
corrector.replace(node.loc.operator, '.')
|
32
|
+
end
|
33
33
|
end
|
34
34
|
end
|
35
35
|
end
|
@@ -75,8 +75,9 @@ module RuboCop
|
|
75
75
|
# @example AllowInnerBackticks: true
|
76
76
|
# # good
|
77
77
|
# `echo \`ls\``
|
78
|
-
class CommandLiteral <
|
78
|
+
class CommandLiteral < Base
|
79
79
|
include ConfigurableEnforcedStyle
|
80
|
+
extend AutoCorrector
|
80
81
|
|
81
82
|
MSG_USE_BACKTICKS = 'Use backticks around command string.'
|
82
83
|
MSG_USE_PERCENT_X = 'Use `%x` around command string.'
|
@@ -85,43 +86,41 @@ module RuboCop
|
|
85
86
|
return if node.heredoc?
|
86
87
|
|
87
88
|
if backtick_literal?(node)
|
88
|
-
check_backtick_literal(node)
|
89
|
+
check_backtick_literal(node, MSG_USE_PERCENT_X)
|
89
90
|
else
|
90
|
-
check_percent_x_literal(node)
|
91
|
-
end
|
92
|
-
end
|
93
|
-
|
94
|
-
def autocorrect(node)
|
95
|
-
return if contains_backtick?(node)
|
96
|
-
|
97
|
-
replacement = if backtick_literal?(node)
|
98
|
-
['%x', ''].zip(preferred_delimiter).map(&:join)
|
99
|
-
else
|
100
|
-
%w[` `]
|
101
|
-
end
|
102
|
-
|
103
|
-
lambda do |corrector|
|
104
|
-
corrector.replace(node.loc.begin, replacement.first)
|
105
|
-
corrector.replace(node.loc.end, replacement.last)
|
91
|
+
check_percent_x_literal(node, MSG_USE_BACKTICKS)
|
106
92
|
end
|
107
93
|
end
|
108
94
|
|
109
95
|
private
|
110
96
|
|
111
|
-
def check_backtick_literal(node)
|
97
|
+
def check_backtick_literal(node, message)
|
112
98
|
return if allowed_backtick_literal?(node)
|
113
99
|
|
114
|
-
add_offense(node)
|
100
|
+
add_offense(node, message: message) do |corrector|
|
101
|
+
autocorrect(corrector, node)
|
102
|
+
end
|
115
103
|
end
|
116
104
|
|
117
|
-
def check_percent_x_literal(node)
|
105
|
+
def check_percent_x_literal(node, message)
|
118
106
|
return if allowed_percent_x_literal?(node)
|
119
107
|
|
120
|
-
add_offense(node)
|
108
|
+
add_offense(node, message: message) do |corrector|
|
109
|
+
autocorrect(corrector, node)
|
110
|
+
end
|
121
111
|
end
|
122
112
|
|
123
|
-
def
|
124
|
-
|
113
|
+
def autocorrect(corrector, node)
|
114
|
+
return if contains_backtick?(node)
|
115
|
+
|
116
|
+
replacement = if backtick_literal?(node)
|
117
|
+
['%x', ''].zip(preferred_delimiter).map(&:join)
|
118
|
+
else
|
119
|
+
%w[` `]
|
120
|
+
end
|
121
|
+
|
122
|
+
corrector.replace(node.loc.begin, replacement.first)
|
123
|
+
corrector.replace(node.loc.end, replacement.last)
|
125
124
|
end
|
126
125
|
|
127
126
|
def allowed_backtick_literal?(node)
|
@@ -30,9 +30,10 @@ module RuboCop
|
|
30
30
|
#
|
31
31
|
# # good
|
32
32
|
# # OPTIMIZE: does not work
|
33
|
-
class CommentAnnotation <
|
33
|
+
class CommentAnnotation < Base
|
34
34
|
include AnnotationComment
|
35
35
|
include RangeHelp
|
36
|
+
extend AutoCorrector
|
36
37
|
|
37
38
|
MSG = 'Annotation keywords like `%<keyword>s` should be all ' \
|
38
39
|
'upper case, followed by a colon, and a space, ' \
|
@@ -40,7 +41,7 @@ module RuboCop
|
|
40
41
|
MISSING_NOTE = 'Annotation comment, with keyword `%<keyword>s`, ' \
|
41
42
|
'is missing a note.'
|
42
43
|
|
43
|
-
def
|
44
|
+
def on_new_investigation
|
44
45
|
processed_source.comments.each_with_index do |comment, index|
|
45
46
|
next unless first_comment_line?(processed_source.comments, index) ||
|
46
47
|
inline_comment?(comment)
|
@@ -49,26 +50,25 @@ module RuboCop
|
|
49
50
|
next unless annotation?(comment) &&
|
50
51
|
!correct_annotation?(first_word, colon, space, note)
|
51
52
|
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
first_word, colon, space),
|
56
|
-
message: format(note ? MSG : MISSING_NOTE, keyword: first_word)
|
57
|
-
)
|
53
|
+
range = annotation_range(comment, margin, first_word, colon, space)
|
54
|
+
|
55
|
+
register_offense(range, note, first_word)
|
58
56
|
end
|
59
57
|
end
|
60
58
|
|
61
|
-
|
62
|
-
margin, first_word, colon, space, note = split_comment(comment)
|
63
|
-
return if note.nil?
|
59
|
+
private
|
64
60
|
|
65
|
-
|
61
|
+
def register_offense(range, note, first_word)
|
62
|
+
add_offense(
|
63
|
+
range,
|
64
|
+
message: format(note ? MSG : MISSING_NOTE, keyword: first_word)
|
65
|
+
) do |corrector|
|
66
|
+
next if note.nil?
|
66
67
|
|
67
|
-
|
68
|
+
corrector.replace(range, "#{first_word.upcase}: ")
|
69
|
+
end
|
68
70
|
end
|
69
71
|
|
70
|
-
private
|
71
|
-
|
72
72
|
def first_comment_line?(comments, index)
|
73
73
|
index.zero? ||
|
74
74
|
comments[index - 1].loc.line < comments[index].loc.line - 1
|
@@ -26,7 +26,7 @@ module RuboCop
|
|
26
26
|
# public_constant :BAZ
|
27
27
|
# end
|
28
28
|
#
|
29
|
-
class ConstantVisibility <
|
29
|
+
class ConstantVisibility < Base
|
30
30
|
MSG = 'Explicitly make `%<constant_name>s` public or private using ' \
|
31
31
|
'either `#public_constant` or `#private_constant`.'
|
32
32
|
|
@@ -34,7 +34,8 @@ module RuboCop
|
|
34
34
|
return unless class_or_module_scope?(node)
|
35
35
|
return if visibility_declaration?(node)
|
36
36
|
|
37
|
-
|
37
|
+
message = message(node)
|
38
|
+
add_offense(node, message: message)
|
38
39
|
end
|
39
40
|
|
40
41
|
private
|
@@ -15,28 +15,24 @@ module RuboCop
|
|
15
15
|
# that RuboCop scans, a comment that matches this regex must be found or
|
16
16
|
# an offense is reported.
|
17
17
|
#
|
18
|
-
class Copyright <
|
18
|
+
class Copyright < Base
|
19
19
|
include RangeHelp
|
20
|
+
extend AutoCorrector
|
20
21
|
|
21
22
|
MSG = 'Include a copyright notice matching /%<notice>s/ before ' \
|
22
23
|
'any code.'
|
23
24
|
AUTOCORRECT_EMPTY_WARNING = 'An AutocorrectNotice must be defined in ' \
|
24
25
|
'your RuboCop config'
|
25
26
|
|
26
|
-
def
|
27
|
-
return if notice.empty?
|
28
|
-
return if notice_found?(processed_source)
|
27
|
+
def on_new_investigation
|
28
|
+
return if notice.empty? || notice_found?(processed_source)
|
29
29
|
|
30
|
-
|
31
|
-
|
32
|
-
location: range, message: format(MSG, notice: notice))
|
33
|
-
end
|
34
|
-
|
35
|
-
def autocorrect(token)
|
36
|
-
verify_autocorrect_notice!
|
30
|
+
add_offense(offense_range, message: format(MSG, notice: notice)) do |corrector|
|
31
|
+
verify_autocorrect_notice!
|
37
32
|
|
38
|
-
|
33
|
+
token = insert_notice_before(processed_source)
|
39
34
|
range = token.nil? ? range_between(0, 0) : token.pos
|
35
|
+
|
40
36
|
corrector.insert_before(range, "#{autocorrect_notice}\n")
|
41
37
|
end
|
42
38
|
end
|
@@ -51,6 +47,10 @@ module RuboCop
|
|
51
47
|
cop_config['AutocorrectNotice']
|
52
48
|
end
|
53
49
|
|
50
|
+
def offense_range
|
51
|
+
source_range(processed_source.buffer, 1, 0)
|
52
|
+
end
|
53
|
+
|
54
54
|
def verify_autocorrect_notice!
|
55
55
|
raise Warning, AUTOCORRECT_EMPTY_WARNING if autocorrect_notice.empty?
|
56
56
|
|
@@ -33,24 +33,22 @@ module RuboCop
|
|
33
33
|
# def Baz.foo
|
34
34
|
# # does a thing
|
35
35
|
# end
|
36
|
-
class DefWithParentheses <
|
36
|
+
class DefWithParentheses < Base
|
37
|
+
extend AutoCorrector
|
38
|
+
|
37
39
|
MSG = "Omit the parentheses in defs when the method doesn't accept " \
|
38
40
|
'any arguments.'
|
39
41
|
|
40
42
|
def on_def(node)
|
41
43
|
return if node.single_line?
|
42
|
-
return unless !node.arguments? && node.arguments.loc.begin
|
44
|
+
return unless !node.arguments? && (node_arguments_loc_begin = node.arguments.loc.begin)
|
43
45
|
|
44
|
-
add_offense(
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
def autocorrect(node)
|
49
|
-
lambda do |corrector|
|
50
|
-
corrector.remove(node.loc.begin)
|
51
|
-
corrector.remove(node.loc.end)
|
46
|
+
add_offense(node_arguments_loc_begin) do |corrector|
|
47
|
+
corrector.remove(node_arguments_loc_begin)
|
48
|
+
corrector.remove(node.arguments.loc.end)
|
52
49
|
end
|
53
50
|
end
|
51
|
+
alias on_defs on_def
|
54
52
|
end
|
55
53
|
end
|
56
54
|
end
|