rbhint 0.85.1.rc2 → 0.87.1.rc1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +9 -1
- data/bin/rubocop-profile +16 -0
- data/config/default.yml +118 -10
- data/lib/rbhint/version.rb +1 -1
- data/lib/rubocop.rb +15 -1
- data/lib/rubocop/cli.rb +0 -2
- data/lib/rubocop/cli/command/auto_genenerate_config.rb +40 -5
- data/lib/rubocop/cli/command/init_dotfile.rb +1 -1
- data/lib/rubocop/cli/command/show_cops.rb +1 -1
- data/lib/rubocop/config_loader.rb +24 -66
- data/lib/rubocop/config_obsoletion.rb +0 -1
- data/lib/rubocop/cop/autocorrect_logic.rb +14 -24
- data/lib/rubocop/cop/badge.rb +1 -1
- data/lib/rubocop/cop/base.rb +407 -0
- data/lib/rubocop/cop/bundler/insecure_protocol_source.rb +10 -20
- data/lib/rubocop/cop/commissioner.rb +48 -50
- data/lib/rubocop/cop/cop.rb +85 -236
- data/lib/rubocop/cop/corrector.rb +38 -115
- data/lib/rubocop/cop/correctors/multiline_literal_brace_corrector.rb +26 -0
- data/lib/rubocop/cop/gemspec/required_ruby_version.rb +6 -1
- data/lib/rubocop/cop/gemspec/ruby_version_globals_usage.rb +1 -1
- data/lib/rubocop/cop/generator.rb +1 -1
- data/lib/rubocop/cop/internal_affairs/node_type_predicate.rb +11 -14
- data/lib/rubocop/cop/layout/case_indentation.rb +18 -19
- data/lib/rubocop/cop/layout/class_structure.rb +2 -37
- data/lib/rubocop/cop/layout/empty_lines_around_access_modifier.rb +1 -0
- data/lib/rubocop/cop/layout/empty_lines_around_attribute_accessor.rb +1 -8
- data/lib/rubocop/cop/layout/end_alignment.rb +3 -2
- data/lib/rubocop/cop/layout/first_argument_indentation.rb +4 -0
- data/lib/rubocop/cop/layout/hash_alignment.rb +1 -2
- data/lib/rubocop/cop/layout/multiline_block_layout.rb +17 -7
- data/lib/rubocop/cop/layout/space_around_block_parameters.rb +22 -27
- data/lib/rubocop/cop/layout/space_around_method_call_operator.rb +27 -68
- data/lib/rubocop/cop/layout/space_inside_array_literal_brackets.rb +3 -2
- data/lib/rubocop/cop/legacy/corrections_proxy.rb +49 -0
- data/lib/rubocop/cop/legacy/corrector.rb +29 -0
- data/lib/rubocop/cop/lint/deprecated_open_ssl_constant.rb +4 -4
- data/lib/rubocop/cop/lint/duplicate_elsif_condition.rb +39 -0
- data/lib/rubocop/cop/lint/duplicate_methods.rb +2 -2
- data/lib/rubocop/cop/lint/implicit_string_concatenation.rb +3 -2
- data/lib/rubocop/cop/lint/interpolation_check.rb +13 -0
- data/lib/rubocop/cop/lint/literal_as_condition.rb +11 -1
- data/lib/rubocop/cop/lint/nested_method_definition.rb +14 -20
- data/lib/rubocop/cop/lint/non_deterministic_require_order.rb +2 -2
- data/lib/rubocop/cop/lint/parentheses_as_grouped_expression.rb +8 -3
- data/lib/rubocop/cop/lint/raise_exception.rb +8 -0
- data/lib/rubocop/cop/lint/rand_one.rb +1 -1
- data/lib/rubocop/cop/lint/redundant_cop_disable_directive.rb +27 -23
- data/lib/rubocop/cop/lint/redundant_splat_expansion.rb +2 -2
- data/lib/rubocop/cop/lint/regexp_as_condition.rb +6 -0
- data/lib/rubocop/cop/lint/safe_navigation_with_empty.rb +8 -0
- data/lib/rubocop/cop/lint/syntax.rb +11 -26
- data/lib/rubocop/cop/lint/unused_method_argument.rb +1 -1
- data/lib/rubocop/cop/lint/useless_access_modifier.rb +1 -1
- data/lib/rubocop/cop/metrics/block_length.rb +24 -2
- data/lib/rubocop/cop/metrics/block_nesting.rb +1 -1
- data/lib/rubocop/cop/metrics/class_length.rb +26 -3
- data/lib/rubocop/cop/metrics/cyclomatic_complexity.rb +1 -1
- data/lib/rubocop/cop/metrics/method_length.rb +24 -1
- data/lib/rubocop/cop/metrics/module_length.rb +26 -3
- data/lib/rubocop/cop/metrics/parameter_lists.rb +1 -1
- data/lib/rubocop/cop/metrics/perceived_complexity.rb +3 -3
- data/lib/rubocop/cop/metrics/utils/code_length_calculator.rb +129 -0
- data/lib/rubocop/cop/mixin/allowed_methods.rb +19 -0
- data/lib/rubocop/cop/mixin/auto_corrector.rb +12 -0
- data/lib/rubocop/cop/mixin/code_length.rb +4 -0
- data/lib/rubocop/cop/mixin/configurable_formatting.rb +1 -1
- data/lib/rubocop/cop/mixin/enforce_superclass.rb +3 -1
- data/lib/rubocop/cop/mixin/nil_methods.rb +3 -5
- data/lib/rubocop/cop/mixin/ordered_gem_node.rb +6 -1
- data/lib/rubocop/cop/mixin/statement_modifier.rb +3 -3
- data/lib/rubocop/cop/mixin/surrounding_space.rb +7 -2
- data/lib/rubocop/cop/mixin/too_many_lines.rb +3 -13
- data/lib/rubocop/cop/mixin/uncommunicative_name.rb +4 -2
- data/lib/rubocop/cop/mixin/visibility_help.rb +50 -0
- data/lib/rubocop/cop/naming/ascii_identifiers.rb +27 -4
- data/lib/rubocop/cop/naming/binary_operator_parameter_name.rb +2 -2
- data/lib/rubocop/cop/naming/method_name.rb +1 -1
- data/lib/rubocop/cop/naming/method_parameter_name.rb +1 -1
- data/lib/rubocop/cop/naming/predicate_name.rb +3 -5
- data/lib/rubocop/cop/naming/variable_name.rb +1 -1
- data/lib/rubocop/cop/naming/variable_number.rb +1 -1
- data/lib/rubocop/cop/offense.rb +16 -2
- data/lib/rubocop/cop/style/accessor_grouping.rb +147 -0
- data/lib/rubocop/cop/style/array_coercion.rb +63 -0
- data/lib/rubocop/cop/style/auto_resource_cleanup.rb +3 -2
- data/lib/rubocop/cop/style/bisected_attr_accessor.rb +146 -0
- data/lib/rubocop/cop/style/case_like_if.rb +217 -0
- data/lib/rubocop/cop/style/class_vars.rb +21 -0
- data/lib/rubocop/cop/style/commented_keyword.rb +5 -2
- data/lib/rubocop/cop/style/conditional_assignment.rb +1 -1
- data/lib/rubocop/cop/style/date_time.rb +1 -1
- data/lib/rubocop/cop/style/dir.rb +2 -2
- data/lib/rubocop/cop/style/empty_literal.rb +5 -5
- data/lib/rubocop/cop/style/expand_path_arguments.rb +2 -2
- data/lib/rubocop/cop/style/exponential_notation.rb +6 -8
- data/lib/rubocop/cop/style/float_division.rb +7 -10
- data/lib/rubocop/cop/style/format_string_token.rb +5 -5
- data/lib/rubocop/cop/style/hash_as_last_array_item.rb +62 -0
- data/lib/rubocop/cop/style/hash_like_case.rb +76 -0
- data/lib/rubocop/cop/style/if_unless_modifier.rb +11 -11
- data/lib/rubocop/cop/style/if_unless_modifier_of_if_unless.rb +12 -0
- data/lib/rubocop/cop/style/missing_else.rb +1 -11
- data/lib/rubocop/cop/style/multiline_block_chain.rb +10 -1
- data/lib/rubocop/cop/style/mutable_constant.rb +4 -4
- data/lib/rubocop/cop/style/nested_parenthesized_calls.rb +2 -5
- data/lib/rubocop/cop/style/numeric_predicate.rb +3 -4
- data/lib/rubocop/cop/style/parallel_assignment.rb +3 -3
- data/lib/rubocop/cop/style/proc.rb +1 -1
- data/lib/rubocop/cop/style/random_with_offset.rb +4 -10
- data/lib/rubocop/cop/style/redundant_assignment.rb +117 -0
- data/lib/rubocop/cop/style/redundant_exception.rb +14 -10
- data/lib/rubocop/cop/style/redundant_fetch_block.rb +122 -0
- data/lib/rubocop/cop/style/redundant_file_extension_in_require.rb +50 -0
- data/lib/rubocop/cop/style/redundant_freeze.rb +1 -1
- data/lib/rubocop/cop/style/redundant_parentheses.rb +7 -1
- data/lib/rubocop/cop/style/redundant_regexp_character_class.rb +2 -1
- data/lib/rubocop/cop/style/redundant_regexp_escape.rb +2 -2
- data/lib/rubocop/cop/style/redundant_sort.rb +3 -2
- data/lib/rubocop/cop/style/rescue_standard_error.rb +1 -1
- data/lib/rubocop/cop/style/signal_exception.rb +1 -1
- data/lib/rubocop/cop/style/stabby_lambda_parentheses.rb +3 -2
- data/lib/rubocop/cop/style/stderr_puts.rb +1 -1
- data/lib/rubocop/cop/style/struct_inheritance.rb +2 -2
- data/lib/rubocop/cop/style/symbol_proc.rb +1 -1
- data/lib/rubocop/cop/style/trailing_method_end_statement.rb +9 -32
- data/lib/rubocop/cop/style/trivial_accessors.rb +8 -7
- data/lib/rubocop/cop/style/yoda_condition.rb +18 -1
- data/lib/rubocop/cop/style/zero_length_predicate.rb +2 -2
- data/lib/rubocop/cop/team.rb +97 -81
- data/lib/rubocop/cop/utils/format_string.rb +1 -2
- data/lib/rubocop/cop/variable_force/variable.rb +5 -3
- data/lib/rubocop/file_finder.rb +4 -4
- data/lib/rubocop/formatter/disabled_config_formatter.rb +1 -1
- data/lib/rubocop/name_similarity.rb +1 -3
- data/lib/rubocop/options.rb +15 -8
- data/lib/rubocop/path_util.rb +2 -17
- data/lib/rubocop/rake_task.rb +6 -9
- data/lib/rubocop/result_cache.rb +9 -5
- data/lib/rubocop/rspec/cop_helper.rb +4 -4
- data/lib/rubocop/rspec/expect_offense.rb +52 -22
- data/lib/rubocop/rspec/shared_contexts.rb +8 -8
- data/lib/rubocop/runner.rb +33 -32
- data/lib/rubocop/target_ruby.rb +1 -1
- data/lib/rubocop/version.rb +1 -1
- metadata +25 -8
- data/lib/rubocop/cop/mixin/classish_length.rb +0 -37
@@ -62,6 +62,7 @@ module RuboCop
|
|
62
62
|
#
|
63
63
|
class EmptyLinesAroundAttributeAccessor < Cop
|
64
64
|
include RangeHelp
|
65
|
+
include AllowedMethods
|
65
66
|
|
66
67
|
MSG = 'Add an empty line after attribute accessor.'
|
67
68
|
|
@@ -114,14 +115,6 @@ module RuboCop
|
|
114
115
|
def allow_alias_syntax?
|
115
116
|
cop_config.fetch('AllowAliasSyntax', true)
|
116
117
|
end
|
117
|
-
|
118
|
-
def allowed_method?(name)
|
119
|
-
allowed_methods.include?(name.to_s)
|
120
|
-
end
|
121
|
-
|
122
|
-
def allowed_methods
|
123
|
-
cop_config.fetch('AllowedMethods', [])
|
124
|
-
end
|
125
118
|
end
|
126
119
|
end
|
127
120
|
end
|
@@ -150,9 +150,10 @@ module RuboCop
|
|
150
150
|
end
|
151
151
|
|
152
152
|
def alignment_node(node)
|
153
|
-
|
153
|
+
case style
|
154
|
+
when :keyword
|
154
155
|
node
|
155
|
-
|
156
|
+
when :variable
|
156
157
|
alignment_node_for_variable_style(node)
|
157
158
|
else
|
158
159
|
start_line_range(node)
|
@@ -95,17 +95,27 @@ module RuboCop
|
|
95
95
|
end
|
96
96
|
|
97
97
|
def line_break_necessary_in_args?(node)
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
98
|
+
needed_length_for_args(node) > max_line_length
|
99
|
+
end
|
100
|
+
|
101
|
+
def needed_length_for_args(node)
|
102
|
+
node.source_range.column +
|
103
|
+
characters_needed_for_space_and_pipes(node) +
|
104
|
+
node.source.lines.first.chomp.length +
|
105
|
+
block_arg_string(node, node.arguments).length
|
106
|
+
end
|
107
|
+
|
108
|
+
def characters_needed_for_space_and_pipes(node)
|
109
|
+
if node.source.lines.first.end_with?("|\n")
|
110
|
+
PIPE_SIZE
|
111
|
+
else
|
112
|
+
1 + PIPE_SIZE * 2
|
113
|
+
end
|
103
114
|
end
|
104
115
|
|
105
116
|
def add_offense_for_expression(node, expr, msg)
|
106
117
|
expression = expr.source_range
|
107
118
|
range = range_between(expression.begin_pos, expression.end_pos)
|
108
|
-
|
109
119
|
add_offense(node, location: range, message: msg)
|
110
120
|
end
|
111
121
|
|
@@ -121,7 +131,7 @@ module RuboCop
|
|
121
131
|
end
|
122
132
|
|
123
133
|
def autocorrect_body(corrector, node, block_body)
|
124
|
-
first_node = if block_body.begin_type?
|
134
|
+
first_node = if block_body.begin_type? && !block_body.source.start_with?('(')
|
125
135
|
block_body.children.first
|
126
136
|
else
|
127
137
|
block_body
|
@@ -24,9 +24,10 @@ module RuboCop
|
|
24
24
|
# # good
|
25
25
|
# {}.each { | x, y | puts x }
|
26
26
|
# ->( x, y ) { puts x }
|
27
|
-
class SpaceAroundBlockParameters <
|
27
|
+
class SpaceAroundBlockParameters < Base
|
28
28
|
include ConfigurableEnforcedStyle
|
29
29
|
include RangeHelp
|
30
|
+
extend AutoCorrector
|
30
31
|
|
31
32
|
def on_block(node)
|
32
33
|
arguments = node.arguments
|
@@ -38,23 +39,6 @@ module RuboCop
|
|
38
39
|
check_each_arg(arguments)
|
39
40
|
end
|
40
41
|
|
41
|
-
# @param target [RuboCop::AST::Node,Parser::Source::Range]
|
42
|
-
def autocorrect(target)
|
43
|
-
lambda do |corrector|
|
44
|
-
if target.is_a?(RuboCop::AST::Node)
|
45
|
-
if target.parent.children.first == target
|
46
|
-
corrector.insert_before(target, ' ')
|
47
|
-
else
|
48
|
-
corrector.insert_after(target, ' ')
|
49
|
-
end
|
50
|
-
elsif /^\s+$/.match?(target.source)
|
51
|
-
corrector.remove(target)
|
52
|
-
else
|
53
|
-
corrector.insert_after(target, ' ')
|
54
|
-
end
|
55
|
-
end
|
56
|
-
end
|
57
|
-
|
58
42
|
private
|
59
43
|
|
60
44
|
def pipes(arguments)
|
@@ -72,11 +56,12 @@ module RuboCop
|
|
72
56
|
def check_inside_pipes(arguments)
|
73
57
|
opening_pipe, closing_pipe = pipes(arguments)
|
74
58
|
|
75
|
-
|
59
|
+
case style
|
60
|
+
when :no_space
|
76
61
|
check_no_space_style_inside_pipes(arguments.children,
|
77
62
|
opening_pipe,
|
78
63
|
closing_pipe)
|
79
|
-
|
64
|
+
when :space
|
80
65
|
check_space_style_inside_pipes(arguments.children,
|
81
66
|
opening_pipe,
|
82
67
|
closing_pipe)
|
@@ -97,7 +82,7 @@ module RuboCop
|
|
97
82
|
|
98
83
|
check_no_space(opening_pipe.end_pos, first.begin_pos,
|
99
84
|
'Space before first')
|
100
|
-
check_no_space(last_end_pos_inside_pipes(last
|
85
|
+
check_no_space(last_end_pos_inside_pipes(last),
|
101
86
|
closing_pipe.begin_pos, 'Space after last')
|
102
87
|
end
|
103
88
|
|
@@ -118,7 +103,7 @@ module RuboCop
|
|
118
103
|
|
119
104
|
def check_closing_pipe_space(args, closing_pipe)
|
120
105
|
last = args.last.source_range
|
121
|
-
last_end_pos = last_end_pos_inside_pipes(last
|
106
|
+
last_end_pos = last_end_pos_inside_pipes(last)
|
122
107
|
|
123
108
|
check_space(last_end_pos, closing_pipe.begin_pos, last,
|
124
109
|
'after last block parameter')
|
@@ -126,8 +111,9 @@ module RuboCop
|
|
126
111
|
'Extra space after last')
|
127
112
|
end
|
128
113
|
|
129
|
-
def last_end_pos_inside_pipes(
|
130
|
-
|
114
|
+
def last_end_pos_inside_pipes(range)
|
115
|
+
pos = range.end_pos
|
116
|
+
range.source_buffer.source[pos] == ',' ? pos + 1 : pos
|
131
117
|
end
|
132
118
|
|
133
119
|
def check_each_arg(args)
|
@@ -151,7 +137,14 @@ module RuboCop
|
|
151
137
|
return if space_begin_pos != space_end_pos
|
152
138
|
|
153
139
|
target = node || range
|
154
|
-
|
140
|
+
message = "Space #{msg} missing."
|
141
|
+
add_offense(target, message: message) do |corrector|
|
142
|
+
if node
|
143
|
+
corrector.insert_before(node, ' ')
|
144
|
+
else
|
145
|
+
corrector.insert_after(target, ' ')
|
146
|
+
end
|
147
|
+
end
|
155
148
|
end
|
156
149
|
|
157
150
|
def check_no_space(space_begin_pos, space_end_pos, msg)
|
@@ -160,8 +153,10 @@ module RuboCop
|
|
160
153
|
range = range_between(space_begin_pos, space_end_pos)
|
161
154
|
return if range.source.include?("\n")
|
162
155
|
|
163
|
-
|
164
|
-
|
156
|
+
message = "#{msg} block parameter detected."
|
157
|
+
add_offense(range, message: message) do |corrector|
|
158
|
+
corrector.remove(range)
|
159
|
+
end
|
165
160
|
end
|
166
161
|
end
|
167
162
|
end
|
@@ -34,96 +34,55 @@ module RuboCop
|
|
34
34
|
# RbHint::Hint::Hint
|
35
35
|
# ::RbHint::Hint
|
36
36
|
#
|
37
|
-
class SpaceAroundMethodCallOperator <
|
38
|
-
include
|
37
|
+
class SpaceAroundMethodCallOperator < Base
|
38
|
+
include RangeHelp
|
39
|
+
extend AutoCorrector
|
40
|
+
|
41
|
+
SPACES_REGEXP = /\A[ \t]+\z/.freeze
|
39
42
|
|
40
43
|
MSG = 'Avoid using spaces around a method call operator.'
|
41
44
|
|
42
45
|
def on_send(node)
|
43
|
-
return unless
|
46
|
+
return unless node.dot? || node.safe_navigation?
|
44
47
|
|
45
|
-
|
48
|
+
check_space_before_dot(node)
|
49
|
+
check_space_after_dot(node)
|
46
50
|
end
|
51
|
+
alias on_csend on_send
|
47
52
|
|
48
53
|
def on_const(node)
|
49
54
|
return unless node.loc.double_colon
|
50
55
|
|
51
|
-
|
52
|
-
end
|
53
|
-
|
54
|
-
def autocorrect(node)
|
55
|
-
operator = operator_token(node)
|
56
|
-
left = left_token_for_auto_correction(node, operator)
|
57
|
-
right = right_token_for_auto_correction(operator)
|
58
|
-
|
59
|
-
lambda do |corrector|
|
60
|
-
SpaceCorrector.remove_space(
|
61
|
-
processed_source, corrector, left, right
|
62
|
-
)
|
63
|
-
end
|
56
|
+
check_space_after_double_colon(node)
|
64
57
|
end
|
65
58
|
|
66
|
-
alias on_csend on_send
|
67
|
-
|
68
59
|
private
|
69
60
|
|
70
|
-
def
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
if !right.comment? && valid_right_token?(right, operator)
|
76
|
-
no_space_offenses(node, operator, right, MSG)
|
77
|
-
end
|
78
|
-
return unless valid_left_token?(left, operator)
|
79
|
-
|
80
|
-
no_space_offenses(node, left, operator, MSG) if add_left_offense
|
81
|
-
end
|
82
|
-
|
83
|
-
def operator_token(node)
|
84
|
-
operator_location =
|
85
|
-
node.const_type? ? node.loc.double_colon : node.loc.dot
|
86
|
-
|
87
|
-
processed_source.find_token do |token|
|
88
|
-
token.pos == operator_location
|
89
|
-
end
|
90
|
-
end
|
91
|
-
|
92
|
-
def previous_token(current_token)
|
93
|
-
index = processed_source.tokens.index(current_token)
|
94
|
-
index.zero? ? nil : processed_source.tokens[index - 1]
|
95
|
-
end
|
96
|
-
|
97
|
-
def next_token(current_token)
|
98
|
-
index = processed_source.tokens.index(current_token)
|
99
|
-
processed_source.tokens[index + 1]
|
100
|
-
end
|
101
|
-
|
102
|
-
def dot_or_safe_navigation_operator?(node)
|
103
|
-
node.dot? || node.safe_navigation?
|
61
|
+
def check_space_before_dot(node)
|
62
|
+
receiver_pos = node.receiver.source_range.end_pos
|
63
|
+
dot_pos = node.loc.dot.begin_pos
|
64
|
+
check_space(receiver_pos, dot_pos)
|
104
65
|
end
|
105
66
|
|
106
|
-
def
|
107
|
-
|
67
|
+
def check_space_after_dot(node)
|
68
|
+
dot_pos = node.loc.dot.end_pos
|
69
|
+
selector_pos = node.loc.selector.begin_pos
|
70
|
+
check_space(dot_pos, selector_pos)
|
108
71
|
end
|
109
72
|
|
110
|
-
def
|
111
|
-
|
73
|
+
def check_space_after_double_colon(node)
|
74
|
+
double_colon_pos = node.loc.double_colon.end_pos
|
75
|
+
name_pos = node.loc.name.begin_pos
|
76
|
+
check_space(double_colon_pos, name_pos)
|
112
77
|
end
|
113
78
|
|
114
|
-
def
|
115
|
-
|
116
|
-
return operator if node.const_type?
|
117
|
-
return left_token if valid_left_token?(left_token, operator)
|
118
|
-
|
119
|
-
operator
|
120
|
-
end
|
79
|
+
def check_space(begin_pos, end_pos)
|
80
|
+
return if end_pos <= begin_pos
|
121
81
|
|
122
|
-
|
123
|
-
|
124
|
-
return right_token if !right_token.comment? && valid_right_token?(right_token, operator)
|
82
|
+
range = range_between(begin_pos, end_pos)
|
83
|
+
return unless range.source.match?(SPACES_REGEXP)
|
125
84
|
|
126
|
-
|
85
|
+
add_offense(range) { |corrector| corrector.remove(range) }
|
127
86
|
end
|
128
87
|
end
|
129
88
|
end
|
@@ -142,11 +142,12 @@ module RuboCop
|
|
142
142
|
end
|
143
143
|
|
144
144
|
def issue_offenses(node, left, right, start_ok, end_ok)
|
145
|
-
|
145
|
+
case style
|
146
|
+
when :no_space
|
146
147
|
start_ok = next_to_comment?(node, left)
|
147
148
|
no_space_offenses(node, left, right, MSG, start_ok: start_ok,
|
148
149
|
end_ok: end_ok)
|
149
|
-
|
150
|
+
when :space
|
150
151
|
space_offenses(node, left, right, MSG, start_ok: start_ok,
|
151
152
|
end_ok: end_ok)
|
152
153
|
else
|
@@ -0,0 +1,49 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module RuboCop
|
4
|
+
module Cop
|
5
|
+
module Legacy
|
6
|
+
# Legacy support for Corrector#corrections
|
7
|
+
# See https://docs.rubocop.org/rubocop/cop_api_v1_changelog.html
|
8
|
+
class CorrectionsProxy
|
9
|
+
def initialize(corrector)
|
10
|
+
@corrector = corrector
|
11
|
+
end
|
12
|
+
|
13
|
+
def <<(callable)
|
14
|
+
suppress_clobbering do
|
15
|
+
@corrector.transaction do
|
16
|
+
callable.call(@corrector)
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
def empty?
|
22
|
+
@corrector.empty?
|
23
|
+
end
|
24
|
+
|
25
|
+
def concat(corrections)
|
26
|
+
if corrections.is_a?(CorrectionsProxy)
|
27
|
+
suppress_clobbering do
|
28
|
+
corrector.merge!(corrections.corrector)
|
29
|
+
end
|
30
|
+
else
|
31
|
+
corrections.each { |correction| self << correction }
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
35
|
+
protected
|
36
|
+
|
37
|
+
attr_reader :corrector
|
38
|
+
|
39
|
+
private
|
40
|
+
|
41
|
+
def suppress_clobbering
|
42
|
+
yield
|
43
|
+
rescue ::Parser::ClobberingError
|
44
|
+
# ignore Clobbering errors
|
45
|
+
end
|
46
|
+
end
|
47
|
+
end
|
48
|
+
end
|
49
|
+
end
|
@@ -0,0 +1,29 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module RuboCop
|
4
|
+
module Cop
|
5
|
+
module Legacy
|
6
|
+
# Legacy Corrector for v0 API support.
|
7
|
+
# See https://docs.rubocop.org/rubocop/cop_api_v1_changelog.html
|
8
|
+
class Corrector < RuboCop::Cop::Corrector
|
9
|
+
# Support legacy second argument
|
10
|
+
def initialize(source, corr = [])
|
11
|
+
super(source)
|
12
|
+
if corr.is_a?(CorrectionsProxy)
|
13
|
+
merge!(corr.send(:corrector))
|
14
|
+
else
|
15
|
+
# warn "Corrector.new with corrections is deprecated." unless corr.empty? TODO
|
16
|
+
corr.each do |c|
|
17
|
+
corrections << c
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
def corrections
|
23
|
+
# warn "#corrections is deprecated. Open an issue if you have a valid usecase." TODO
|
24
|
+
CorrectionsProxy.new(self)
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
@@ -15,7 +15,7 @@ module RuboCop
|
|
15
15
|
# OpenSSL::Cipher::AES.new(128, :GCM)
|
16
16
|
#
|
17
17
|
# # good
|
18
|
-
# OpenSSL::Cipher.new('
|
18
|
+
# OpenSSL::Cipher.new('aes-128-gcm')
|
19
19
|
#
|
20
20
|
# @example
|
21
21
|
#
|
@@ -127,9 +127,9 @@ module RuboCop
|
|
127
127
|
end
|
128
128
|
|
129
129
|
def build_cipher_arguments(node, algorithm_name)
|
130
|
-
algorithm_parts = algorithm_name.split('-')
|
131
|
-
size_and_mode = sanitize_arguments(node.arguments)
|
132
|
-
"'#{(algorithm_parts + size_and_mode + ['
|
130
|
+
algorithm_parts = algorithm_name.downcase.split('-')
|
131
|
+
size_and_mode = sanitize_arguments(node.arguments).map(&:downcase)
|
132
|
+
"'#{(algorithm_parts + size_and_mode + ['cbc']).take(3).join('-')}'"
|
133
133
|
end
|
134
134
|
end
|
135
135
|
end
|