rubocop 0.66.0 → 0.67.0
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/config/default.yml +75 -26
- data/exe/rubocop +12 -0
- data/lib/rubocop.rb +12 -5
- data/lib/rubocop/cli.rb +11 -9
- data/lib/rubocop/config.rb +3 -0
- data/lib/rubocop/config_loader_resolver.rb +2 -2
- data/lib/rubocop/cop/commissioner.rb +3 -3
- data/lib/rubocop/cop/layout/multiline_array_line_breaks.rb +39 -0
- data/lib/rubocop/cop/layout/multiline_hash_key_line_breaks.rb +50 -0
- data/lib/rubocop/cop/layout/multiline_method_argument_line_breaks.rb +52 -0
- data/lib/rubocop/cop/lint/to_json.rb +5 -2
- data/lib/rubocop/cop/mixin/multiline_element_line_breaks.rb +33 -0
- data/lib/rubocop/cop/mixin/uncommunicative_name.rb +6 -1
- data/lib/rubocop/cop/naming/rescued_exceptions_variable_name.rb +76 -0
- data/lib/rubocop/cop/rails/active_record_override.rb +67 -0
- data/lib/rubocop/cop/rails/blank.rb +6 -0
- data/lib/rubocop/cop/rails/lexically_scoped_action_filter.rb +30 -4
- data/lib/rubocop/cop/rails/link_to_blank.rb +7 -6
- data/lib/rubocop/cop/rails/present.rb +5 -1
- data/lib/rubocop/cop/rails/redundant_allow_nil.rb +105 -0
- data/lib/rubocop/cop/rails/redundant_receiver_in_with_options.rb +1 -0
- data/lib/rubocop/cop/style/block_comments.rb +9 -1
- data/lib/rubocop/cop/{performance → style}/redundant_sort_by.rb +1 -1
- data/lib/rubocop/cop/{performance → style}/sample.rb +1 -1
- data/lib/rubocop/cop/style/stderr_puts.rb +9 -3
- data/lib/rubocop/cop/{performance/lstrip_rstrip.rb → style/strip.rb} +2 -2
- data/lib/rubocop/cop/style/struct_inheritance.rb +10 -2
- data/lib/rubocop/cop/{performance → style}/unneeded_sort.rb +1 -1
- data/lib/rubocop/node_pattern.rb +8 -6
- data/lib/rubocop/path_util.rb +3 -3
- data/lib/rubocop/processed_source.rb +2 -2
- data/lib/rubocop/remote_config.rb +6 -4
- data/lib/rubocop/result_cache.rb +2 -2
- data/lib/rubocop/runner.rb +2 -2
- data/lib/rubocop/target_finder.rb +7 -2
- data/lib/rubocop/version.rb +1 -1
- metadata +29 -7
@@ -52,10 +52,18 @@ module RuboCop
|
|
52
52
|
def parts(comment)
|
53
53
|
expr = comment.loc.expression
|
54
54
|
eq_begin = expr.resize(BEGIN_LENGTH)
|
55
|
-
eq_end =
|
55
|
+
eq_end = eq_end_part(comment, expr)
|
56
56
|
contents = range_between(eq_begin.end_pos, eq_end.begin_pos)
|
57
57
|
[eq_begin, eq_end, contents]
|
58
58
|
end
|
59
|
+
|
60
|
+
def eq_end_part(comment, expr)
|
61
|
+
if comment.text.chomp == comment.text
|
62
|
+
range_between(expr.end_pos - END_LENGTH - 1, expr.end_pos - 2)
|
63
|
+
else
|
64
|
+
range_between(expr.end_pos - END_LENGTH, expr.end_pos)
|
65
|
+
end
|
66
|
+
end
|
59
67
|
end
|
60
68
|
end
|
61
69
|
end
|
@@ -17,12 +17,14 @@ module RuboCop
|
|
17
17
|
class StderrPuts < Cop
|
18
18
|
include RangeHelp
|
19
19
|
|
20
|
-
MSG =
|
21
|
-
|
20
|
+
MSG =
|
21
|
+
'Use `warn` instead of `%<bad>s` to allow such output to be disabled.'
|
22
|
+
.freeze
|
22
23
|
|
23
24
|
def_node_matcher :stderr_puts?, <<-PATTERN
|
24
25
|
(send
|
25
|
-
(gvar #stderr_gvar?) :
|
26
|
+
{(gvar #stderr_gvar?) (const nil? :STDERR)}
|
27
|
+
:puts $_
|
26
28
|
...)
|
27
29
|
PATTERN
|
28
30
|
|
@@ -40,6 +42,10 @@ module RuboCop
|
|
40
42
|
|
41
43
|
private
|
42
44
|
|
45
|
+
def message(node)
|
46
|
+
format(MSG, bad: "#{node.receiver.source}.#{node.method_name}")
|
47
|
+
end
|
48
|
+
|
43
49
|
def stderr_gvar?(sym)
|
44
50
|
sym == :$stderr
|
45
51
|
end
|
@@ -2,7 +2,7 @@
|
|
2
2
|
|
3
3
|
module RuboCop
|
4
4
|
module Cop
|
5
|
-
module
|
5
|
+
module Style
|
6
6
|
# This cop identifies places where `lstrip.rstrip` can be replaced by
|
7
7
|
# `strip`.
|
8
8
|
#
|
@@ -13,7 +13,7 @@ module RuboCop
|
|
13
13
|
#
|
14
14
|
# # good
|
15
15
|
# 'abc'.strip
|
16
|
-
class
|
16
|
+
class Strip < Cop
|
17
17
|
include RangeHelp
|
18
18
|
|
19
19
|
MSG = 'Use `strip` instead of `%<methods>s`.'.freeze
|
@@ -8,12 +8,20 @@ module RuboCop
|
|
8
8
|
# @example
|
9
9
|
# # bad
|
10
10
|
# class Person < Struct.new(:first_name, :last_name)
|
11
|
+
# def age
|
12
|
+
# 42
|
13
|
+
# end
|
11
14
|
# end
|
12
15
|
#
|
13
16
|
# # good
|
14
|
-
# Person = Struct.new(:first_name, :last_name)
|
17
|
+
# Person = Struct.new(:first_name, :last_name) do
|
18
|
+
# def age
|
19
|
+
# 42
|
20
|
+
# end
|
21
|
+
# end
|
15
22
|
class StructInheritance < Cop
|
16
|
-
MSG = "Don't extend an instance initialized by `Struct.new`."
|
23
|
+
MSG = "Don't extend an instance initialized by `Struct.new`. " \
|
24
|
+
'Use a block to customize the struct.'.freeze
|
17
25
|
|
18
26
|
def on_class(node)
|
19
27
|
_name, superclass, _body = *node
|
data/lib/rubocop/node_pattern.rb
CHANGED
@@ -96,11 +96,11 @@ module RuboCop
|
|
96
96
|
# Builds Ruby code which implements a pattern
|
97
97
|
class Compiler
|
98
98
|
SYMBOL = %r{:(?:[\w+@*/?!<>=~|%^-]+|\[\]=?)}.freeze
|
99
|
-
IDENTIFIER = /[a-zA-Z_-]
|
99
|
+
IDENTIFIER = /[a-zA-Z_][a-zA-Z0-9_-]*/.freeze
|
100
100
|
META = /\(|\)|\{|\}|\[|\]|\$\.\.\.|\$|!|\^|\.\.\./.freeze
|
101
101
|
NUMBER = /-?\d+(?:\.\d+)?/.freeze
|
102
102
|
STRING = /".+?"/.freeze
|
103
|
-
METHOD_NAME = /\#?#{IDENTIFIER}
|
103
|
+
METHOD_NAME = /\#?#{IDENTIFIER}[\!\?]?\(?/.freeze
|
104
104
|
PARAM_NUMBER = /%\d*/.freeze
|
105
105
|
|
106
106
|
SEPARATORS = /[\s]+/.freeze
|
@@ -109,9 +109,10 @@ module RuboCop
|
|
109
109
|
|
110
110
|
TOKEN = /\G(?:#{SEPARATORS}|#{TOKENS}|.)/.freeze
|
111
111
|
|
112
|
-
NODE = /\A#{IDENTIFIER}
|
113
|
-
PREDICATE = /\A#{IDENTIFIER}
|
114
|
-
WILDCARD = /\A_
|
112
|
+
NODE = /\A#{IDENTIFIER}\Z/.freeze
|
113
|
+
PREDICATE = /\A#{IDENTIFIER}\?\(?\Z/.freeze
|
114
|
+
WILDCARD = /\A_(?:#{IDENTIFIER})?\Z/.freeze
|
115
|
+
|
115
116
|
FUNCALL = /\A\##{METHOD_NAME}/.freeze
|
116
117
|
LITERAL = /\A(?:#{SYMBOL}|#{NUMBER}|#{STRING})\Z/.freeze
|
117
118
|
PARAM = /\A#{PARAM_NUMBER}\Z/.freeze
|
@@ -372,7 +373,8 @@ module RuboCop
|
|
372
373
|
end
|
373
374
|
|
374
375
|
def compile_nodetype(cur_node, type)
|
375
|
-
"(#{cur_node} &&
|
376
|
+
"(#{cur_node}.is_a?(RuboCop::AST::Node) && " \
|
377
|
+
"#{cur_node}.#{type.tr('-', '_')}_type?)"
|
376
378
|
end
|
377
379
|
|
378
380
|
def compile_param(cur_node, number, seq_head)
|
data/lib/rubocop/path_util.rb
CHANGED
@@ -41,10 +41,10 @@ module RuboCop
|
|
41
41
|
when Regexp
|
42
42
|
begin
|
43
43
|
path =~ pattern
|
44
|
-
rescue ArgumentError =>
|
45
|
-
return false if
|
44
|
+
rescue ArgumentError => ex
|
45
|
+
return false if ex.message.start_with?('invalid byte sequence')
|
46
46
|
|
47
|
-
raise
|
47
|
+
raise exception
|
48
48
|
end
|
49
49
|
end
|
50
50
|
end
|
@@ -47,8 +47,8 @@ module RuboCop
|
|
47
47
|
generate_request(uri) do |request|
|
48
48
|
begin
|
49
49
|
handle_response(http.request(request), limit, &block)
|
50
|
-
rescue SocketError =>
|
51
|
-
handle_response(
|
50
|
+
rescue SocketError => ex
|
51
|
+
handle_response(ex, limit, &block)
|
52
52
|
end
|
53
53
|
end
|
54
54
|
end
|
@@ -72,8 +72,10 @@ module RuboCop
|
|
72
72
|
else
|
73
73
|
begin
|
74
74
|
response.error!
|
75
|
-
rescue StandardError =>
|
76
|
-
|
75
|
+
rescue StandardError => ex
|
76
|
+
message = "#{ex.message} while downloading remote config"\
|
77
|
+
" file #{uri}"
|
78
|
+
raise ex, message
|
77
79
|
end
|
78
80
|
end
|
79
81
|
end
|
data/lib/rubocop/result_cache.rb
CHANGED
@@ -100,9 +100,9 @@ module RuboCop
|
|
100
100
|
|
101
101
|
begin
|
102
102
|
FileUtils.mkdir_p(dir)
|
103
|
-
rescue Errno::EACCES =>
|
103
|
+
rescue Errno::EACCES => ex
|
104
104
|
warn "Couldn't create cache directory. Continuing without cache."\
|
105
|
-
"\n #{
|
105
|
+
"\n #{ex.message}"
|
106
106
|
return
|
107
107
|
end
|
108
108
|
|
data/lib/rubocop/runner.rb
CHANGED
@@ -108,8 +108,8 @@ module RuboCop
|
|
108
108
|
end
|
109
109
|
formatter_set.file_finished(file, offenses)
|
110
110
|
offenses
|
111
|
-
rescue InfiniteCorrectionLoop =>
|
112
|
-
formatter_set.file_finished(file,
|
111
|
+
rescue InfiniteCorrectionLoop => ex
|
112
|
+
formatter_set.file_finished(file, ex.offenses.compact.sort.freeze)
|
113
113
|
raise
|
114
114
|
end
|
115
115
|
|
@@ -145,8 +145,13 @@ module RuboCop
|
|
145
145
|
|
146
146
|
first_line = File.open(file, &:readline)
|
147
147
|
!(first_line =~ /#!.*(#{ruby_interpreters(file).join('|')})/).nil?
|
148
|
-
rescue EOFError, ArgumentError =>
|
149
|
-
|
148
|
+
rescue EOFError, ArgumentError => ex
|
149
|
+
if debug?
|
150
|
+
warn(
|
151
|
+
"Unprocessable file #{file}: #{ex.class}, #{ex.message}"
|
152
|
+
)
|
153
|
+
end
|
154
|
+
|
150
155
|
false
|
151
156
|
end
|
152
157
|
|
data/lib/rubocop/version.rb
CHANGED
@@ -3,7 +3,7 @@
|
|
3
3
|
module RuboCop
|
4
4
|
# This module holds the RuboCop version information.
|
5
5
|
module Version
|
6
|
-
STRING = '0.
|
6
|
+
STRING = '0.67.0'.freeze
|
7
7
|
|
8
8
|
MSG = '%<version>s (using Parser %<parser_version>s, running on ' \
|
9
9
|
'%<ruby_engine>s %<ruby_version>s %<ruby_platform>s)'.freeze
|
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.
|
4
|
+
version: 0.67.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Bozhidar Batsov
|
@@ -10,7 +10,7 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: exe
|
12
12
|
cert_chain: []
|
13
|
-
date: 2019-
|
13
|
+
date: 2019-04-04 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: jaro_winkler
|
@@ -315,9 +315,12 @@ files:
|
|
315
315
|
- lib/rubocop/cop/layout/leading_blank_lines.rb
|
316
316
|
- lib/rubocop/cop/layout/leading_comment_space.rb
|
317
317
|
- lib/rubocop/cop/layout/multiline_array_brace_layout.rb
|
318
|
+
- lib/rubocop/cop/layout/multiline_array_line_breaks.rb
|
318
319
|
- lib/rubocop/cop/layout/multiline_assignment_layout.rb
|
319
320
|
- lib/rubocop/cop/layout/multiline_block_layout.rb
|
320
321
|
- lib/rubocop/cop/layout/multiline_hash_brace_layout.rb
|
322
|
+
- lib/rubocop/cop/layout/multiline_hash_key_line_breaks.rb
|
323
|
+
- lib/rubocop/cop/layout/multiline_method_argument_line_breaks.rb
|
321
324
|
- lib/rubocop/cop/layout/multiline_method_call_brace_layout.rb
|
322
325
|
- lib/rubocop/cop/layout/multiline_method_call_indentation.rb
|
323
326
|
- lib/rubocop/cop/layout/multiline_method_definition_brace_layout.rb
|
@@ -472,6 +475,7 @@ files:
|
|
472
475
|
- lib/rubocop/cop/mixin/method_complexity.rb
|
473
476
|
- lib/rubocop/cop/mixin/method_preference.rb
|
474
477
|
- lib/rubocop/cop/mixin/min_body_length.rb
|
478
|
+
- lib/rubocop/cop/mixin/multiline_element_line_breaks.rb
|
475
479
|
- lib/rubocop/cop/mixin/multiline_expression_indentation.rb
|
476
480
|
- lib/rubocop/cop/mixin/multiline_literal_brace_layout.rb
|
477
481
|
- lib/rubocop/cop/mixin/negative_conditional.rb
|
@@ -512,6 +516,7 @@ files:
|
|
512
516
|
- lib/rubocop/cop/naming/memoized_instance_variable_name.rb
|
513
517
|
- lib/rubocop/cop/naming/method_name.rb
|
514
518
|
- lib/rubocop/cop/naming/predicate_name.rb
|
519
|
+
- lib/rubocop/cop/naming/rescued_exceptions_variable_name.rb
|
515
520
|
- lib/rubocop/cop/naming/uncommunicative_block_param_name.rb
|
516
521
|
- lib/rubocop/cop/naming/uncommunicative_method_param_name.rb
|
517
522
|
- lib/rubocop/cop/naming/variable_name.rb
|
@@ -529,25 +534,22 @@ files:
|
|
529
534
|
- lib/rubocop/cop/performance/fixed_size.rb
|
530
535
|
- lib/rubocop/cop/performance/flat_map.rb
|
531
536
|
- lib/rubocop/cop/performance/inefficient_hash_search.rb
|
532
|
-
- lib/rubocop/cop/performance/lstrip_rstrip.rb
|
533
537
|
- lib/rubocop/cop/performance/open_struct.rb
|
534
538
|
- lib/rubocop/cop/performance/range_include.rb
|
535
539
|
- lib/rubocop/cop/performance/redundant_block_call.rb
|
536
540
|
- lib/rubocop/cop/performance/redundant_match.rb
|
537
541
|
- lib/rubocop/cop/performance/redundant_merge.rb
|
538
|
-
- lib/rubocop/cop/performance/redundant_sort_by.rb
|
539
542
|
- lib/rubocop/cop/performance/regexp_match.rb
|
540
543
|
- lib/rubocop/cop/performance/reverse_each.rb
|
541
|
-
- lib/rubocop/cop/performance/sample.rb
|
542
544
|
- lib/rubocop/cop/performance/size.rb
|
543
545
|
- lib/rubocop/cop/performance/start_with.rb
|
544
546
|
- lib/rubocop/cop/performance/string_replacement.rb
|
545
547
|
- lib/rubocop/cop/performance/times_map.rb
|
546
548
|
- lib/rubocop/cop/performance/unfreeze_string.rb
|
547
|
-
- lib/rubocop/cop/performance/unneeded_sort.rb
|
548
549
|
- lib/rubocop/cop/performance/uri_default_parser.rb
|
549
550
|
- lib/rubocop/cop/rails/action_filter.rb
|
550
551
|
- lib/rubocop/cop/rails/active_record_aliases.rb
|
552
|
+
- lib/rubocop/cop/rails/active_record_override.rb
|
551
553
|
- lib/rubocop/cop/rails/active_support_aliases.rb
|
552
554
|
- lib/rubocop/cop/rails/application_job.rb
|
553
555
|
- lib/rubocop/cop/rails/application_record.rb
|
@@ -581,6 +583,7 @@ files:
|
|
581
583
|
- lib/rubocop/cop/rails/presence.rb
|
582
584
|
- lib/rubocop/cop/rails/present.rb
|
583
585
|
- lib/rubocop/cop/rails/read_write_attribute.rb
|
586
|
+
- lib/rubocop/cop/rails/redundant_allow_nil.rb
|
584
587
|
- lib/rubocop/cop/rails/redundant_receiver_in_with_options.rb
|
585
588
|
- lib/rubocop/cop/rails/reflection_class_name.rb
|
586
589
|
- lib/rubocop/cop/rails/refute_methods.rb
|
@@ -719,11 +722,13 @@ files:
|
|
719
722
|
- lib/rubocop/cop/style/redundant_parentheses.rb
|
720
723
|
- lib/rubocop/cop/style/redundant_return.rb
|
721
724
|
- lib/rubocop/cop/style/redundant_self.rb
|
725
|
+
- lib/rubocop/cop/style/redundant_sort_by.rb
|
722
726
|
- lib/rubocop/cop/style/regexp_literal.rb
|
723
727
|
- lib/rubocop/cop/style/rescue_modifier.rb
|
724
728
|
- lib/rubocop/cop/style/rescue_standard_error.rb
|
725
729
|
- lib/rubocop/cop/style/return_nil.rb
|
726
730
|
- lib/rubocop/cop/style/safe_navigation.rb
|
731
|
+
- lib/rubocop/cop/style/sample.rb
|
727
732
|
- lib/rubocop/cop/style/self_assignment.rb
|
728
733
|
- lib/rubocop/cop/style/semicolon.rb
|
729
734
|
- lib/rubocop/cop/style/send.rb
|
@@ -737,6 +742,7 @@ files:
|
|
737
742
|
- lib/rubocop/cop/style/string_literals.rb
|
738
743
|
- lib/rubocop/cop/style/string_literals_in_interpolation.rb
|
739
744
|
- lib/rubocop/cop/style/string_methods.rb
|
745
|
+
- lib/rubocop/cop/style/strip.rb
|
740
746
|
- lib/rubocop/cop/style/struct_inheritance.rb
|
741
747
|
- lib/rubocop/cop/style/symbol_array.rb
|
742
748
|
- lib/rubocop/cop/style/symbol_literal.rb
|
@@ -756,6 +762,7 @@ files:
|
|
756
762
|
- lib/rubocop/cop/style/unneeded_condition.rb
|
757
763
|
- lib/rubocop/cop/style/unneeded_interpolation.rb
|
758
764
|
- lib/rubocop/cop/style/unneeded_percent_q.rb
|
765
|
+
- lib/rubocop/cop/style/unneeded_sort.rb
|
759
766
|
- lib/rubocop/cop/style/unpack_first.rb
|
760
767
|
- lib/rubocop/cop/style/variable_interpolation.rb
|
761
768
|
- lib/rubocop/cop/style/when_then.rb
|
@@ -829,7 +836,22 @@ metadata:
|
|
829
836
|
source_code_uri: https://github.com/rubocop-hq/rubocop/
|
830
837
|
documentation_uri: https://docs.rubocop.org/
|
831
838
|
bug_tracker_uri: https://github.com/rubocop-hq/rubocop/issues
|
832
|
-
post_install_message:
|
839
|
+
post_install_message: |
|
840
|
+
Performance Cops will be removed from RuboCop 0.68. Use rubocop-performance gem instead.
|
841
|
+
|
842
|
+
Put this in your Gemfile.
|
843
|
+
|
844
|
+
gem 'rubocop-performance'
|
845
|
+
|
846
|
+
And then execute:
|
847
|
+
|
848
|
+
$ bundle install
|
849
|
+
|
850
|
+
Put this into your .rubocop.yml.
|
851
|
+
|
852
|
+
require: rubocop-performance
|
853
|
+
|
854
|
+
More information: https://github.com/rubocop-hq/rubocop-performance
|
833
855
|
rdoc_options: []
|
834
856
|
require_paths:
|
835
857
|
- lib
|