rubocop 0.37.0 → 0.37.1
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of rubocop might be problematic. Click here for more details.
- checksums.yaml +4 -4
- data/README.md +1 -1
- data/config/default.yml +2 -3
- data/config/enabled.yml +2 -2
- data/lib/rubocop.rb +2 -1
- data/lib/rubocop/ast_node.rb +34 -17
- data/lib/rubocop/ast_node/traversal.rb +2 -1
- data/lib/rubocop/config.rb +1 -1
- data/lib/rubocop/cop/commissioner.rb +5 -5
- data/lib/rubocop/cop/corrector.rb +17 -3
- data/lib/rubocop/cop/lint/debugger.rb +2 -2
- data/lib/rubocop/cop/lint/nested_method_definition.rb +5 -1
- data/lib/rubocop/cop/lint/unneeded_disable.rb +1 -1
- data/lib/rubocop/cop/metrics/parameter_lists.rb +1 -1
- data/lib/rubocop/cop/performance/redundant_match.rb +2 -1
- data/lib/rubocop/cop/performance/redundant_merge.rb +1 -2
- data/lib/rubocop/cop/rails/find_each.rb +1 -1
- data/lib/rubocop/cop/style/block_end_newline.rb +1 -1
- data/lib/rubocop/cop/style/conditional_assignment.rb +25 -7
- data/lib/rubocop/cop/style/empty_line_between_defs.rb +13 -7
- data/lib/rubocop/cop/style/frozen_string_literal_comment.rb +1 -12
- data/lib/rubocop/cop/style/guard_clause.rb +3 -1
- data/lib/rubocop/cop/style/initial_indentation.rb +1 -1
- data/lib/rubocop/cop/style/line_end_concatenation.rb +1 -1
- data/lib/rubocop/cop/style/multiline_block_layout.rb +14 -12
- data/lib/rubocop/cop/style/not.rb +1 -1
- data/lib/rubocop/cop/style/semicolon.rb +14 -7
- data/lib/rubocop/cop/style/space_around_keyword.rb +13 -4
- data/lib/rubocop/cop/style/space_around_operators.rb +2 -2
- data/lib/rubocop/cop/style/trailing_underscore_variable.rb +32 -27
- data/lib/rubocop/cop/style/word_array.rb +1 -1
- data/lib/rubocop/cop/team.rb +20 -9
- data/lib/rubocop/cop/util.rb +4 -5
- data/lib/rubocop/formatter/formatter_set.rb +3 -3
- data/lib/rubocop/version.rb +1 -1
- metadata +5 -43
- data/.yardopts +0 -2
- data/CHANGELOG.md +0 -1941
- data/CONTRIBUTING.md +0 -68
- data/assets/logo.png +0 -0
- data/assets/output.html.erb +0 -247
- data/logo/rubo-logo-horizontal.png +0 -0
- data/logo/rubo-logo-square.png +0 -0
- data/logo/rubo-logo-symbol.png +0 -0
- data/relnotes/v0.19.0.md +0 -94
- data/relnotes/v0.19.1.md +0 -16
- data/relnotes/v0.20.0.md +0 -69
- data/relnotes/v0.20.1.md +0 -24
- data/relnotes/v0.21.0.md +0 -56
- data/relnotes/v0.22.0.md +0 -77
- data/relnotes/v0.23.0.md +0 -79
- data/relnotes/v0.24.0.md +0 -77
- data/relnotes/v0.24.1.md +0 -15
- data/relnotes/v0.25.0.md +0 -91
- data/relnotes/v0.26.0.md +0 -89
- data/relnotes/v0.26.1.md +0 -12
- data/relnotes/v0.27.0.md +0 -77
- data/relnotes/v0.27.1.md +0 -66
- data/relnotes/v0.28.0.md +0 -90
- data/relnotes/v0.29.0.md +0 -116
- data/relnotes/v0.29.1.md +0 -12
- data/relnotes/v0.30.0.md +0 -145
- data/relnotes/v0.30.1.md +0 -103
- data/relnotes/v0.31.0.md +0 -120
- data/relnotes/v0.32.0.md +0 -139
- data/relnotes/v0.32.1.md +0 -122
- data/relnotes/v0.33.0.md +0 -157
- data/relnotes/v0.34.0.md +0 -182
- data/relnotes/v0.34.1.md +0 -129
- data/relnotes/v0.34.2.md +0 -139
- data/relnotes/v0.35.0.md +0 -210
- data/relnotes/v0.36.0.md +0 -307
- data/relnotes/v0.37.0.md +0 -200
- data/rubocop.gemspec +0 -49
@@ -16,11 +16,8 @@ module RuboCop
|
|
16
16
|
MSG = 'Missing frozen string literal comment.'.freeze
|
17
17
|
SHEBANG = '#!'.freeze
|
18
18
|
|
19
|
-
def_node_matcher :frozen_strings, '{(send {dstr str} :<< ...)
|
20
|
-
(send {dstr str} :freeze)}'
|
21
|
-
|
22
19
|
def investigate(processed_source)
|
23
|
-
return
|
20
|
+
return if style == :when_needed && target_ruby_version < 2.3
|
24
21
|
return if processed_source.buffer.source.empty?
|
25
22
|
|
26
23
|
return if frozen_string_literal_comment_exists?(processed_source)
|
@@ -28,14 +25,6 @@ module RuboCop
|
|
28
25
|
offense(processed_source)
|
29
26
|
end
|
30
27
|
|
31
|
-
def on_send(node)
|
32
|
-
return unless style == :when_needed
|
33
|
-
return if target_ruby_version < 2.3
|
34
|
-
return if frozen_string_literal_comment_exists?(processed_source)
|
35
|
-
|
36
|
-
frozen_strings(node) { offense(processed_source) }
|
37
|
-
end
|
38
|
-
|
39
28
|
def autocorrect(_node)
|
40
29
|
lambda do |corrector|
|
41
30
|
last_special_comment = last_special_comment(processed_source)
|
@@ -82,7 +82,9 @@ module RuboCop
|
|
82
82
|
end
|
83
83
|
|
84
84
|
def elsif?(node)
|
85
|
-
node.
|
85
|
+
return false unless node.parent && node.parent.if_type?
|
86
|
+
_condition, _if_branch, else_branch = *node.parent
|
87
|
+
else_branch.equal?(node)
|
86
88
|
end
|
87
89
|
|
88
90
|
def check_trailing_if(node)
|
@@ -17,7 +17,7 @@ module RuboCop
|
|
17
17
|
return if first_token.pos.column == 0
|
18
18
|
|
19
19
|
with_space = range_with_surrounding_space(first_token.pos, :left,
|
20
|
-
|
20
|
+
!:with_newline)
|
21
21
|
# If the file starts with a byte order mark (BOM), the column can be
|
22
22
|
# non-zero, but then we find out here if there's no space to the left
|
23
23
|
# of the first token.
|
@@ -39,7 +39,7 @@ module RuboCop
|
|
39
39
|
def autocorrect(operator_range)
|
40
40
|
# Include any trailing whitespace so we don't create a syntax error.
|
41
41
|
operator_range = range_with_surrounding_space(operator_range,
|
42
|
-
:right,
|
42
|
+
:right,
|
43
43
|
!:with_newline)
|
44
44
|
->(corrector) { corrector.replace(operator_range, '\\') }
|
45
45
|
end
|
@@ -53,8 +53,7 @@ module RuboCop
|
|
53
53
|
_block_start, args, last_expression = node.children
|
54
54
|
|
55
55
|
unless args.children.empty?
|
56
|
-
|
57
|
-
if do_loc.line != line
|
56
|
+
if do_loc.line != args.loc.last_line
|
58
57
|
add_offense_for_expression(node, args, ARG_MSG)
|
59
58
|
end
|
60
59
|
end
|
@@ -77,9 +76,8 @@ module RuboCop
|
|
77
76
|
def autocorrect(node)
|
78
77
|
lambda do |corrector|
|
79
78
|
_method, args, block_body = *node
|
80
|
-
unless args.children.empty? ||
|
81
|
-
|
82
|
-
autocorrect_arguments(corrector, node, args, block_body)
|
79
|
+
unless args.children.empty? || args.loc.last_line == node.loc.line
|
80
|
+
autocorrect_arguments(corrector, node, args)
|
83
81
|
expr_before_body = args.source_range.end
|
84
82
|
end
|
85
83
|
|
@@ -92,12 +90,10 @@ module RuboCop
|
|
92
90
|
end
|
93
91
|
end
|
94
92
|
|
95
|
-
def autocorrect_arguments(corrector, node, args
|
96
|
-
end_pos =
|
97
|
-
|
98
|
-
|
99
|
-
node.loc.end.begin.begin_pos - 1
|
100
|
-
end
|
93
|
+
def autocorrect_arguments(corrector, node, args)
|
94
|
+
end_pos =
|
95
|
+
range_with_surrounding_space(args.source_range, :right, false)
|
96
|
+
.end_pos
|
101
97
|
range = Parser::Source::Range.new(args.source_range.source_buffer,
|
102
98
|
node.loc.begin.end.begin_pos,
|
103
99
|
end_pos)
|
@@ -118,7 +114,13 @@ module RuboCop
|
|
118
114
|
end
|
119
115
|
|
120
116
|
def block_arg_string(args)
|
121
|
-
args.children.map
|
117
|
+
args.children.map do |arg|
|
118
|
+
if arg.mlhs_type?
|
119
|
+
"(#{block_arg_string(arg)})"
|
120
|
+
else
|
121
|
+
arg.source
|
122
|
+
end
|
123
|
+
end.join(', ')
|
122
124
|
end
|
123
125
|
end
|
124
126
|
end
|
@@ -13,7 +13,7 @@ module RuboCop
|
|
13
13
|
return unless processed_source.ast
|
14
14
|
@processed_source = processed_source
|
15
15
|
|
16
|
-
|
16
|
+
check_for_line_terminator_or_opener
|
17
17
|
end
|
18
18
|
|
19
19
|
def on_begin(node)
|
@@ -33,26 +33,33 @@ module RuboCop
|
|
33
33
|
# if the first semicolon on the line is a separator of
|
34
34
|
# expressions. It's just a guess.
|
35
35
|
column = @processed_source[line - 1].index(';')
|
36
|
-
convention_on(line, column,
|
36
|
+
convention_on(line, column, false)
|
37
37
|
end
|
38
38
|
end
|
39
39
|
|
40
40
|
private
|
41
41
|
|
42
|
-
def
|
42
|
+
def check_for_line_terminator_or_opener
|
43
43
|
tokens_for_lines = @processed_source.tokens.group_by do |token|
|
44
44
|
token.pos.line
|
45
45
|
end
|
46
46
|
|
47
47
|
tokens_for_lines.each do |line, tokens|
|
48
|
-
|
49
|
-
|
48
|
+
if tokens.last.type == :tSEMI
|
49
|
+
convention_on(line, tokens.last.pos.column, true)
|
50
|
+
end
|
51
|
+
|
52
|
+
if tokens.first.type == :tSEMI
|
53
|
+
convention_on(line, tokens.first.pos.column, true)
|
54
|
+
end
|
50
55
|
end
|
51
56
|
end
|
52
57
|
|
53
|
-
def convention_on(line, column,
|
58
|
+
def convention_on(line, column, autocorrect)
|
54
59
|
range = source_range(@processed_source.buffer, line, column)
|
55
|
-
|
60
|
+
# Don't attempt to autocorrect if semicolon is separating statements
|
61
|
+
# on the same line
|
62
|
+
add_offense(autocorrect ? range : nil, range)
|
56
63
|
end
|
57
64
|
|
58
65
|
def autocorrect(range)
|
@@ -30,7 +30,8 @@ module RuboCop
|
|
30
30
|
MSG_AFTER = 'Space after keyword `%s` is missing.'.freeze
|
31
31
|
|
32
32
|
DO = 'do'.freeze
|
33
|
-
ACCEPT_LEFT_PAREN =
|
33
|
+
ACCEPT_LEFT_PAREN =
|
34
|
+
%w(break next not return super yield defined?).freeze
|
34
35
|
|
35
36
|
def on_and(node)
|
36
37
|
check(node, [:operator].freeze) if node.keyword?
|
@@ -100,6 +101,10 @@ module RuboCop
|
|
100
101
|
check(node, [:keyword].freeze)
|
101
102
|
end
|
102
103
|
|
104
|
+
def on_zsuper(node)
|
105
|
+
check(node, [:keyword].freeze)
|
106
|
+
end
|
107
|
+
|
103
108
|
def on_until(node)
|
104
109
|
check(node, [:begin, :end, :keyword].freeze)
|
105
110
|
end
|
@@ -116,6 +121,10 @@ module RuboCop
|
|
116
121
|
check(node, [:keyword].freeze)
|
117
122
|
end
|
118
123
|
|
124
|
+
def on_defined?(node)
|
125
|
+
check(node, [:keyword].freeze)
|
126
|
+
end
|
127
|
+
|
119
128
|
private
|
120
129
|
|
121
130
|
def check(node, locations, begin_keyword = DO)
|
@@ -167,10 +176,10 @@ module RuboCop
|
|
167
176
|
def space_after_missing?(range)
|
168
177
|
pos = range.end_pos
|
169
178
|
char = range.source_buffer.source[pos]
|
170
|
-
return false unless
|
179
|
+
return false unless char
|
171
180
|
return false if accept_left_parenthesis?(range) && char == '('.freeze
|
172
181
|
|
173
|
-
char !~ /[\s;,#\\\)\}\]]/
|
182
|
+
char !~ /[\s;,#\\\)\}\]\.]/
|
174
183
|
end
|
175
184
|
|
176
185
|
def accept_left_parenthesis?(range)
|
@@ -182,7 +191,7 @@ module RuboCop
|
|
182
191
|
return false unless ancestor
|
183
192
|
return true if ancestor.and_type? || ancestor.or_type?
|
184
193
|
return false unless ancestor.send_type?
|
185
|
-
operator?(ancestor.
|
194
|
+
operator?(ancestor.method_name)
|
186
195
|
end
|
187
196
|
|
188
197
|
def autocorrect(range)
|
@@ -40,8 +40,8 @@ module RuboCop
|
|
40
40
|
if node.loc.operator # aref assignment, attribute assignment
|
41
41
|
on_special_asgn(node)
|
42
42
|
elsif !node.unary_operation? && !called_with_dot?(node)
|
43
|
-
op = node.
|
44
|
-
if operator?(op
|
43
|
+
op = node.method_name
|
44
|
+
if op != :[] && op != :! && operator?(op)
|
45
45
|
_, _, right, = *node
|
46
46
|
check_operator(node.loc.selector, right.source_range)
|
47
47
|
end
|
@@ -21,41 +21,25 @@ module RuboCop
|
|
21
21
|
class TrailingUnderscoreVariable < Cop
|
22
22
|
include SurroundingSpace
|
23
23
|
|
24
|
-
MSG = 'Do not use trailing `_`s in parallel assignment.'
|
24
|
+
MSG = 'Do not use trailing `_`s in parallel assignment. ' \
|
25
|
+
'Prefer `%s`.'.freeze
|
25
26
|
UNDERSCORE = '_'.freeze
|
26
27
|
|
27
28
|
def on_masgn(node)
|
28
|
-
|
29
|
-
variables = *left
|
30
|
-
first_offense = find_first_offense(variables)
|
29
|
+
return unless (range = unneeded_range(node))
|
31
30
|
|
32
|
-
|
31
|
+
good_code = node.source
|
32
|
+
offset = range.begin_pos - node.source_range.begin_pos
|
33
|
+
good_code[offset, range.size] = ''
|
33
34
|
|
34
|
-
range
|
35
|
-
Parser::Source::Range.new(node.source_range.source_buffer,
|
36
|
-
first_offense.source_range.begin_pos,
|
37
|
-
variables.last.source_range.end_pos)
|
38
|
-
add_offense(node, range)
|
35
|
+
add_offense(node, range, format(MSG, good_code))
|
39
36
|
end
|
40
37
|
|
41
38
|
def autocorrect(node)
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
end_position =
|
47
|
-
if first_offense.source_range == variables.first.source_range
|
48
|
-
right.source_range.begin_pos
|
49
|
-
else
|
50
|
-
node.loc.operator.begin_pos
|
51
|
-
end
|
52
|
-
|
53
|
-
range =
|
54
|
-
Parser::Source::Range.new(node.source_range.source_buffer,
|
55
|
-
first_offense.source_range.begin_pos,
|
56
|
-
end_position)
|
57
|
-
|
58
|
-
->(corrector) { corrector.remove(range) unless range.nil? }
|
39
|
+
lambda do |corrector|
|
40
|
+
range = unneeded_range(node)
|
41
|
+
corrector.remove(range) if range
|
42
|
+
end
|
59
43
|
end
|
60
44
|
|
61
45
|
private
|
@@ -88,6 +72,27 @@ module RuboCop
|
|
88
72
|
@allow_named_underscore_variables ||=
|
89
73
|
cop_config['AllowNamedUnderscoreVariables']
|
90
74
|
end
|
75
|
+
|
76
|
+
def unneeded_range(node)
|
77
|
+
left, right = *node
|
78
|
+
variables = *left
|
79
|
+
first_offense = find_first_offense(variables)
|
80
|
+
|
81
|
+
return unless first_offense
|
82
|
+
|
83
|
+
end_position =
|
84
|
+
if first_offense.source_range == variables.first.source_range
|
85
|
+
right.source_range.begin_pos
|
86
|
+
else
|
87
|
+
node.loc.operator.begin_pos
|
88
|
+
end
|
89
|
+
|
90
|
+
range =
|
91
|
+
Parser::Source::Range.new(node.source_range.source_buffer,
|
92
|
+
first_offense.source_range.begin_pos,
|
93
|
+
end_position)
|
94
|
+
range_with_surrounding_space(range, :right)
|
95
|
+
end
|
91
96
|
end
|
92
97
|
end
|
93
98
|
end
|
data/lib/rubocop/cop/team.rb
CHANGED
@@ -5,6 +5,13 @@ module RuboCop
|
|
5
5
|
module Cop
|
6
6
|
# FIXME
|
7
7
|
class Team
|
8
|
+
# If these cops try to autocorrect the same file at the same time,
|
9
|
+
# bad things are liable to happen
|
10
|
+
INCOMPATIBLE_COPS = {
|
11
|
+
Style::SymbolProc => [Style::SpaceBeforeBlockBraces],
|
12
|
+
Style::SpaceBeforeBlockBraces => [Style::SymbolProc]
|
13
|
+
}.freeze
|
14
|
+
|
8
15
|
attr_reader :errors, :warnings, :updated_source_file
|
9
16
|
|
10
17
|
alias updated_source_file? updated_source_file
|
@@ -90,7 +97,7 @@ module RuboCop
|
|
90
97
|
@updated_source_file = false
|
91
98
|
return unless autocorrect?
|
92
99
|
|
93
|
-
new_source =
|
100
|
+
new_source = autocorrect_all_cops(buffer, cops)
|
94
101
|
|
95
102
|
return if new_source == buffer.source
|
96
103
|
|
@@ -104,15 +111,19 @@ module RuboCop
|
|
104
111
|
@updated_source_file = true
|
105
112
|
end
|
106
113
|
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
|
114
|
+
def autocorrect_all_cops(buffer, cops)
|
115
|
+
corrector = Corrector.new(buffer)
|
116
|
+
skip = Set.new
|
117
|
+
|
118
|
+
cops.each do |cop|
|
119
|
+
next if cop.corrections.empty?
|
120
|
+
next if skip.include?(cop.class)
|
121
|
+
corrector.corrections.concat(cop.corrections)
|
122
|
+
incompatible = INCOMPATIBLE_COPS[cop.class]
|
123
|
+
skip.merge(incompatible) if incompatible
|
124
|
+
end
|
112
125
|
|
113
|
-
if
|
114
|
-
corrections = cop_with_corrections.corrections
|
115
|
-
corrector = Corrector.new(buffer, corrections)
|
126
|
+
if !corrector.corrections.empty?
|
116
127
|
corrector.rewrite
|
117
128
|
else
|
118
129
|
buffer.source
|
data/lib/rubocop/cop/util.rb
CHANGED
@@ -129,8 +129,8 @@ module RuboCop
|
|
129
129
|
end
|
130
130
|
end
|
131
131
|
|
132
|
-
def range_with_surrounding_comma(range, side = :both
|
133
|
-
buffer
|
132
|
+
def range_with_surrounding_comma(range, side = :both)
|
133
|
+
buffer = @processed_source.buffer
|
134
134
|
src = buffer.source
|
135
135
|
|
136
136
|
go_left, go_right = directions(side)
|
@@ -143,9 +143,8 @@ module RuboCop
|
|
143
143
|
Parser::Source::Range.new(buffer, begin_pos, end_pos)
|
144
144
|
end
|
145
145
|
|
146
|
-
def range_with_surrounding_space(range, side = :both,
|
147
|
-
|
148
|
-
buffer ||= @processed_source.buffer
|
146
|
+
def range_with_surrounding_space(range, side = :both, with_newline = true)
|
147
|
+
buffer = @processed_source.buffer
|
149
148
|
src = buffer.source
|
150
149
|
|
151
150
|
go_left, go_right = directions(side)
|
@@ -80,9 +80,9 @@ module RuboCop
|
|
80
80
|
key.start_with?(specified_key)
|
81
81
|
end
|
82
82
|
|
83
|
-
if matching_keys.empty?
|
84
|
-
|
85
|
-
|
83
|
+
raise %(No formatter for "#{specified_key}") if matching_keys.empty?
|
84
|
+
|
85
|
+
if matching_keys.size > 1
|
86
86
|
raise %(Cannot determine formatter for "#{specified_key}")
|
87
87
|
end
|
88
88
|
|
data/lib/rubocop/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rubocop
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.37.
|
4
|
+
version: 0.37.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Bozhidar Batsov
|
@@ -10,7 +10,7 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date: 2016-02-
|
13
|
+
date: 2016-02-09 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: rainbow
|
@@ -38,7 +38,7 @@ dependencies:
|
|
38
38
|
requirements:
|
39
39
|
- - ">="
|
40
40
|
- !ruby/object:Gem::Version
|
41
|
-
version: 2.3.0.
|
41
|
+
version: 2.3.0.4
|
42
42
|
- - "<"
|
43
43
|
- !ruby/object:Gem::Version
|
44
44
|
version: '3.0'
|
@@ -48,7 +48,7 @@ dependencies:
|
|
48
48
|
requirements:
|
49
49
|
- - ">="
|
50
50
|
- !ruby/object:Gem::Version
|
51
|
-
version: 2.3.0.
|
51
|
+
version: 2.3.0.4
|
52
52
|
- - "<"
|
53
53
|
- !ruby/object:Gem::Version
|
54
54
|
version: '3.0'
|
@@ -119,13 +119,8 @@ extra_rdoc_files:
|
|
119
119
|
- LICENSE.txt
|
120
120
|
- README.md
|
121
121
|
files:
|
122
|
-
- ".yardopts"
|
123
|
-
- CHANGELOG.md
|
124
|
-
- CONTRIBUTING.md
|
125
122
|
- LICENSE.txt
|
126
123
|
- README.md
|
127
|
-
- assets/logo.png
|
128
|
-
- assets/output.html.erb
|
129
124
|
- bin/rubocop
|
130
125
|
- config/default.yml
|
131
126
|
- config/disabled.yml
|
@@ -507,39 +502,6 @@ files:
|
|
507
502
|
- lib/rubocop/token.rb
|
508
503
|
- lib/rubocop/version.rb
|
509
504
|
- lib/rubocop/warning.rb
|
510
|
-
- logo/rubo-logo-horizontal.png
|
511
|
-
- logo/rubo-logo-square.png
|
512
|
-
- logo/rubo-logo-symbol.png
|
513
|
-
- relnotes/v0.19.0.md
|
514
|
-
- relnotes/v0.19.1.md
|
515
|
-
- relnotes/v0.20.0.md
|
516
|
-
- relnotes/v0.20.1.md
|
517
|
-
- relnotes/v0.21.0.md
|
518
|
-
- relnotes/v0.22.0.md
|
519
|
-
- relnotes/v0.23.0.md
|
520
|
-
- relnotes/v0.24.0.md
|
521
|
-
- relnotes/v0.24.1.md
|
522
|
-
- relnotes/v0.25.0.md
|
523
|
-
- relnotes/v0.26.0.md
|
524
|
-
- relnotes/v0.26.1.md
|
525
|
-
- relnotes/v0.27.0.md
|
526
|
-
- relnotes/v0.27.1.md
|
527
|
-
- relnotes/v0.28.0.md
|
528
|
-
- relnotes/v0.29.0.md
|
529
|
-
- relnotes/v0.29.1.md
|
530
|
-
- relnotes/v0.30.0.md
|
531
|
-
- relnotes/v0.30.1.md
|
532
|
-
- relnotes/v0.31.0.md
|
533
|
-
- relnotes/v0.32.0.md
|
534
|
-
- relnotes/v0.32.1.md
|
535
|
-
- relnotes/v0.33.0.md
|
536
|
-
- relnotes/v0.34.0.md
|
537
|
-
- relnotes/v0.34.1.md
|
538
|
-
- relnotes/v0.34.2.md
|
539
|
-
- relnotes/v0.35.0.md
|
540
|
-
- relnotes/v0.36.0.md
|
541
|
-
- relnotes/v0.37.0.md
|
542
|
-
- rubocop.gemspec
|
543
505
|
homepage: http://github.com/bbatsov/rubocop
|
544
506
|
licenses:
|
545
507
|
- MIT
|
@@ -560,7 +522,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
560
522
|
version: '0'
|
561
523
|
requirements: []
|
562
524
|
rubyforge_project:
|
563
|
-
rubygems_version: 2.
|
525
|
+
rubygems_version: 2.4.5
|
564
526
|
signing_key:
|
565
527
|
specification_version: 4
|
566
528
|
summary: Automatic Ruby code style checking tool.
|