rubocop 1.7.0 → 1.8.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/LICENSE.txt +1 -1
- data/README.md +2 -2
- data/config/default.yml +61 -9
- data/lib/rubocop.rb +6 -1
- data/lib/rubocop/comment_config.rb +6 -6
- data/lib/rubocop/cop/layout/empty_line_between_defs.rb +1 -1
- data/lib/rubocop/cop/layout/multiline_operation_indentation.rb +2 -2
- data/lib/rubocop/cop/layout/space_before_brackets.rb +10 -12
- data/lib/rubocop/cop/lint/deprecated_constants.rb +75 -0
- data/lib/rubocop/cop/lint/lambda_without_literal_block.rb +44 -0
- data/lib/rubocop/cop/lint/non_deterministic_require_order.rb +10 -6
- data/lib/rubocop/cop/lint/redundant_cop_disable_directive.rb +2 -1
- data/lib/rubocop/cop/lint/redundant_dir_glob_sort.rb +48 -0
- data/lib/rubocop/cop/mixin/allowed_identifiers.rb +18 -0
- data/lib/rubocop/cop/mixin/comments_help.rb +1 -10
- data/lib/rubocop/cop/mixin/first_element_line_break.rb +1 -1
- data/lib/rubocop/cop/naming/variable_name.rb +2 -0
- data/lib/rubocop/cop/naming/variable_number.rb +1 -8
- data/lib/rubocop/cop/style/empty_literal.rb +6 -2
- data/lib/rubocop/cop/style/endless_method.rb +102 -0
- data/lib/rubocop/cop/style/hash_like_case.rb +2 -1
- data/lib/rubocop/cop/style/if_inside_else.rb +8 -3
- data/lib/rubocop/cop/style/method_call_with_args_parentheses.rb +4 -0
- data/lib/rubocop/cop/style/nested_parenthesized_calls.rb +4 -0
- data/lib/rubocop/cop/style/raise_args.rb +3 -2
- data/lib/rubocop/cop/style/redundant_return.rb +1 -1
- data/lib/rubocop/cop/style/single_line_methods.rb +29 -2
- data/lib/rubocop/cop/style/sole_nested_conditional.rb +1 -1
- data/lib/rubocop/target_ruby.rb +47 -11
- data/lib/rubocop/version.rb +1 -1
- metadata +12 -7
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 9e14b02ef2156539b9acbf92f0a131cbf5459cccdbb799cf96116f51b61e45c3
|
4
|
+
data.tar.gz: 2322dcababa13d2dbc001fc4a6fb8fe8c39e39b0d27869f4b1b5c59aceefa577
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: afc301f47f48f46587318215a0d64a246ac9f4007f7c2396867a1c26cff2a467d59ebd30531adaf5dd3eebcaea001f19b34ab4737bebfe4b51dda7f329a0b4f9
|
7
|
+
data.tar.gz: ee54178b27d0dc5e058f004a27ea53d581583bf3386bf2fc572b4b16ad6099d849720935a6c632aaade0a3c71ca92129c0b3c9dc4dff80e00977d5141bc02615
|
data/LICENSE.txt
CHANGED
data/README.md
CHANGED
@@ -51,7 +51,7 @@ To prevent an unwanted RuboCop update you might want to use a conservative versi
|
|
51
51
|
in your `Gemfile`:
|
52
52
|
|
53
53
|
```rb
|
54
|
-
gem 'rubocop', '~> 1.
|
54
|
+
gem 'rubocop', '~> 1.8', require: false
|
55
55
|
```
|
56
56
|
|
57
57
|
See [versioning](https://docs.rubocop.org/rubocop/1.0/versioning.html) for further details.
|
@@ -241,5 +241,5 @@ RuboCop's changelog is available [here](CHANGELOG.md).
|
|
241
241
|
|
242
242
|
## Copyright
|
243
243
|
|
244
|
-
Copyright (c) 2012-
|
244
|
+
Copyright (c) 2012-2021 Bozhidar Batsov. See [LICENSE.txt](LICENSE.txt) for
|
245
245
|
further details.
|
data/config/default.yml
CHANGED
@@ -132,12 +132,13 @@ AllCops:
|
|
132
132
|
# If a value is specified for TargetRubyVersion then it is used. Acceptable
|
133
133
|
# values are specificed as a float (i.e. 2.5); the teeny version of Ruby
|
134
134
|
# should not be included. If the project specifies a Ruby version in the
|
135
|
-
# .ruby-version
|
136
|
-
# the desired version of Ruby by inspecting the
|
137
|
-
#
|
138
|
-
#
|
139
|
-
# from the lock file.) If the
|
140
|
-
#
|
135
|
+
# .tool-versions or .ruby-version files, Gemfile or gems.rb file, RuboCop will
|
136
|
+
# try to determine the desired version of Ruby by inspecting the
|
137
|
+
# .tool-versions file first, then .ruby-version, followed by the Gemfile.lock
|
138
|
+
# or gems.locked file. (Although the Ruby version is specified in the Gemfile
|
139
|
+
# or gems.rb file, RuboCop reads the final value from the lock file.) If the
|
140
|
+
# Ruby version is still unresolved, RuboCop will use the oldest officially
|
141
|
+
# supported Ruby version (currently Ruby 2.4).
|
141
142
|
TargetRubyVersion: ~
|
142
143
|
# Determines if a notification for extension libraries should be shown when
|
143
144
|
# rubocop is run. Keys are the name of the extension, and values are an array
|
@@ -1197,7 +1198,6 @@ Layout/SpaceBeforeBrackets:
|
|
1197
1198
|
StyleGuide: '#space-in-brackets-access'
|
1198
1199
|
Enabled: pending
|
1199
1200
|
VersionAdded: '1.7'
|
1200
|
-
Safe: false
|
1201
1201
|
|
1202
1202
|
Layout/SpaceBeforeComma:
|
1203
1203
|
Description: 'No spaces before commas.'
|
@@ -1469,6 +1469,34 @@ Lint/DeprecatedClassMethods:
|
|
1469
1469
|
Enabled: true
|
1470
1470
|
VersionAdded: '0.19'
|
1471
1471
|
|
1472
|
+
Lint/DeprecatedConstants:
|
1473
|
+
Description: 'Checks for deprecated constants.'
|
1474
|
+
Enabled: pending
|
1475
|
+
VersionAdded: '1.8'
|
1476
|
+
# You can configure deprecated constants.
|
1477
|
+
# If there is an alternative method, you can set alternative value as `Alternative`.
|
1478
|
+
# And you can set the deprecated version as `DeprecatedVersion`.
|
1479
|
+
# These options can be omitted if they are not needed.
|
1480
|
+
#
|
1481
|
+
# DeprecatedConstants:
|
1482
|
+
# 'DEPRECATED_CONSTANT':
|
1483
|
+
# Alternative: 'alternative_value'
|
1484
|
+
# DeprecatedVersion: 'deprecated_version'
|
1485
|
+
#
|
1486
|
+
DeprecatedConstants:
|
1487
|
+
'NIL':
|
1488
|
+
Alternative: 'nil'
|
1489
|
+
DeprecatedVersion: '2.4'
|
1490
|
+
'TRUE':
|
1491
|
+
Alternative: 'true'
|
1492
|
+
DeprecatedVersion: '2.4'
|
1493
|
+
'FALSE':
|
1494
|
+
Alternative: 'false'
|
1495
|
+
DeprecatedVersion: '2.4'
|
1496
|
+
'Random::DEFAULT':
|
1497
|
+
Alternative: 'Random.new'
|
1498
|
+
DeprecatedVersion: '3.0'
|
1499
|
+
|
1472
1500
|
Lint/DeprecatedOpenSSLConstant:
|
1473
1501
|
Description: "Don't use algorithm constants for `OpenSSL::Cipher` and `OpenSSL::Digest`."
|
1474
1502
|
Enabled: true
|
@@ -1674,6 +1702,11 @@ Lint/InterpolationCheck:
|
|
1674
1702
|
VersionAdded: '0.50'
|
1675
1703
|
VersionChanged: '0.87'
|
1676
1704
|
|
1705
|
+
Lint/LambdaWithoutLiteralBlock:
|
1706
|
+
Description: 'Checks uses of lambda without a literal block.'
|
1707
|
+
Enabled: pending
|
1708
|
+
VersionAdded: '1.8'
|
1709
|
+
|
1677
1710
|
Lint/LiteralAsCondition:
|
1678
1711
|
Description: 'Checks of literals used in conditions.'
|
1679
1712
|
Enabled: true
|
@@ -1836,6 +1869,11 @@ Lint/RedundantCopEnableDirective:
|
|
1836
1869
|
Enabled: true
|
1837
1870
|
VersionAdded: '0.76'
|
1838
1871
|
|
1872
|
+
Lint/RedundantDirGlobSort:
|
1873
|
+
Description: 'Checks for redundant `sort` method to `Dir.glob` and `Dir[]`.'
|
1874
|
+
Enabled: pending
|
1875
|
+
VersionAdded: '1.8'
|
1876
|
+
|
1839
1877
|
Lint/RedundantRequireStatement:
|
1840
1878
|
Description: 'Checks for unnecessary `require` statement.'
|
1841
1879
|
Enabled: true
|
@@ -2502,10 +2540,12 @@ Naming/VariableName:
|
|
2502
2540
|
StyleGuide: '#snake-case-symbols-methods-vars'
|
2503
2541
|
Enabled: true
|
2504
2542
|
VersionAdded: '0.50'
|
2543
|
+
VersionChanged: '1.8'
|
2505
2544
|
EnforcedStyle: snake_case
|
2506
2545
|
SupportedStyles:
|
2507
2546
|
- snake_case
|
2508
2547
|
- camelCase
|
2548
|
+
AllowedIdentifiers: []
|
2509
2549
|
|
2510
2550
|
Naming/VariableNumber:
|
2511
2551
|
Description: 'Use the configured style when numbering symbols, methods and variables.'
|
@@ -3197,6 +3237,17 @@ Style/EndBlock:
|
|
3197
3237
|
VersionAdded: '0.9'
|
3198
3238
|
VersionChanged: '0.81'
|
3199
3239
|
|
3240
|
+
Style/EndlessMethod:
|
3241
|
+
Description: 'Avoid the use of multi-lined endless method definitions.'
|
3242
|
+
StyleGuide: '#endless-methods'
|
3243
|
+
Enabled: pending
|
3244
|
+
VersionAdded: '1.8'
|
3245
|
+
EnforcedStyle: allow_single_line
|
3246
|
+
SupportedStyles:
|
3247
|
+
- allow_single_line
|
3248
|
+
- allow_always
|
3249
|
+
- disallow
|
3250
|
+
|
3200
3251
|
Style/EvalWithLocation:
|
3201
3252
|
Description: 'Pass `__FILE__` and `__LINE__` to `eval` method, as they are used by backtraces.'
|
3202
3253
|
Enabled: true
|
@@ -3726,7 +3777,8 @@ Style/MutableConstant:
|
|
3726
3777
|
Description: 'Do not assign mutable objects to constants.'
|
3727
3778
|
Enabled: true
|
3728
3779
|
VersionAdded: '0.34'
|
3729
|
-
VersionChanged: '
|
3780
|
+
VersionChanged: '1.8'
|
3781
|
+
SafeAutoCorrect: false
|
3730
3782
|
EnforcedStyle: literals
|
3731
3783
|
SupportedStyles:
|
3732
3784
|
# literals: freeze literals assigned to constants
|
@@ -4330,7 +4382,7 @@ Style/SingleLineMethods:
|
|
4330
4382
|
StyleGuide: '#no-single-line-methods'
|
4331
4383
|
Enabled: true
|
4332
4384
|
VersionAdded: '0.9'
|
4333
|
-
VersionChanged: '1.
|
4385
|
+
VersionChanged: '1.8'
|
4334
4386
|
AllowIfMethodIsEmpty: true
|
4335
4387
|
|
4336
4388
|
Style/SlicingWithRange:
|
data/lib/rubocop.rb
CHANGED
@@ -7,7 +7,7 @@ require 'rainbow'
|
|
7
7
|
require 'set'
|
8
8
|
require 'forwardable'
|
9
9
|
require 'regexp_parser'
|
10
|
-
require 'unicode/display_width
|
10
|
+
require 'unicode/display_width'
|
11
11
|
|
12
12
|
# we have to require RuboCop's version, before rubocop-ast's
|
13
13
|
require_relative 'rubocop/version'
|
@@ -61,6 +61,7 @@ require_relative 'rubocop/cop/mixin/annotation_comment'
|
|
61
61
|
require_relative 'rubocop/cop/mixin/array_min_size'
|
62
62
|
require_relative 'rubocop/cop/mixin/array_syntax'
|
63
63
|
require_relative 'rubocop/cop/mixin/alignment'
|
64
|
+
require_relative 'rubocop/cop/mixin/allowed_identifiers'
|
64
65
|
require_relative 'rubocop/cop/mixin/allowed_methods'
|
65
66
|
require_relative 'rubocop/cop/mixin/auto_corrector'
|
66
67
|
require_relative 'rubocop/cop/mixin/check_assignment'
|
@@ -262,6 +263,7 @@ require_relative 'rubocop/cop/lint/constant_definition_in_block'
|
|
262
263
|
require_relative 'rubocop/cop/lint/constant_resolution'
|
263
264
|
require_relative 'rubocop/cop/lint/debugger'
|
264
265
|
require_relative 'rubocop/cop/lint/deprecated_class_methods'
|
266
|
+
require_relative 'rubocop/cop/lint/deprecated_constants'
|
265
267
|
require_relative 'rubocop/cop/lint/deprecated_open_ssl_constant'
|
266
268
|
require_relative 'rubocop/cop/lint/disjunctive_assignment_in_constructor'
|
267
269
|
require_relative 'rubocop/cop/lint/duplicate_branch'
|
@@ -295,6 +297,7 @@ require_relative 'rubocop/cop/lint/implicit_string_concatenation'
|
|
295
297
|
require_relative 'rubocop/cop/lint/inherit_exception'
|
296
298
|
require_relative 'rubocop/cop/lint/ineffective_access_modifier'
|
297
299
|
require_relative 'rubocop/cop/lint/interpolation_check'
|
300
|
+
require_relative 'rubocop/cop/lint/lambda_without_literal_block'
|
298
301
|
require_relative 'rubocop/cop/lint/literal_as_condition'
|
299
302
|
require_relative 'rubocop/cop/lint/literal_in_interpolation'
|
300
303
|
require_relative 'rubocop/cop/lint/loop'
|
@@ -318,6 +321,7 @@ require_relative 'rubocop/cop/lint/raise_exception'
|
|
318
321
|
require_relative 'rubocop/cop/lint/rand_one'
|
319
322
|
require_relative 'rubocop/cop/lint/redundant_cop_disable_directive'
|
320
323
|
require_relative 'rubocop/cop/lint/redundant_cop_enable_directive'
|
324
|
+
require_relative 'rubocop/cop/lint/redundant_dir_glob_sort'
|
321
325
|
require_relative 'rubocop/cop/lint/redundant_require_statement'
|
322
326
|
require_relative 'rubocop/cop/lint/redundant_safe_navigation'
|
323
327
|
require_relative 'rubocop/cop/lint/redundant_splat_expansion'
|
@@ -446,6 +450,7 @@ require_relative 'rubocop/cop/style/empty_else'
|
|
446
450
|
require_relative 'rubocop/cop/style/empty_lambda_parameter'
|
447
451
|
require_relative 'rubocop/cop/style/empty_literal'
|
448
452
|
require_relative 'rubocop/cop/style/empty_method'
|
453
|
+
require_relative 'rubocop/cop/style/endless_method'
|
449
454
|
require_relative 'rubocop/cop/style/encoding'
|
450
455
|
require_relative 'rubocop/cop/style/end_block'
|
451
456
|
require_relative 'rubocop/cop/style/eval_with_location'
|
@@ -47,6 +47,12 @@ module RuboCop
|
|
47
47
|
)
|
48
48
|
end
|
49
49
|
|
50
|
+
def comment_only_line?(line_number)
|
51
|
+
non_comment_token_line_numbers.none? do |non_comment_line_number|
|
52
|
+
non_comment_line_number == line_number
|
53
|
+
end
|
54
|
+
end
|
55
|
+
|
50
56
|
private
|
51
57
|
|
52
58
|
def extra_enabled_comments_with_names(extras:, names:)
|
@@ -166,12 +172,6 @@ module RuboCop
|
|
166
172
|
@all_cop_names ||= Cop::Registry.global.names - [REDUNDANT_DISABLE]
|
167
173
|
end
|
168
174
|
|
169
|
-
def comment_only_line?(line_number)
|
170
|
-
non_comment_token_line_numbers.none? do |non_comment_line_number|
|
171
|
-
non_comment_line_number == line_number
|
172
|
-
end
|
173
|
-
end
|
174
|
-
|
175
175
|
def non_comment_token_line_numbers
|
176
176
|
@non_comment_token_line_numbers ||= begin
|
177
177
|
non_comment_tokens = processed_source.tokens.reject(&:comment?)
|
@@ -16,14 +16,14 @@ module RuboCop
|
|
16
16
|
# if a +
|
17
17
|
# b
|
18
18
|
# something &&
|
19
|
-
#
|
19
|
+
# something_else
|
20
20
|
# end
|
21
21
|
#
|
22
22
|
# # good
|
23
23
|
# if a +
|
24
24
|
# b
|
25
25
|
# something &&
|
26
|
-
#
|
26
|
+
# something_else
|
27
27
|
# end
|
28
28
|
#
|
29
29
|
# @example EnforcedStyle: indented
|
@@ -6,10 +6,6 @@ module RuboCop
|
|
6
6
|
# Checks for space between the name of a receiver and a left
|
7
7
|
# brackets.
|
8
8
|
#
|
9
|
-
# This cop is marked as unsafe because it can occur false positives
|
10
|
-
# for `do_something [this_is_an_array_literal_argument]` that take
|
11
|
-
# an array without parentheses as an argument.
|
12
|
-
#
|
13
9
|
# @example
|
14
10
|
#
|
15
11
|
# # bad
|
@@ -25,21 +21,23 @@ module RuboCop
|
|
25
21
|
MSG = 'Remove the space before the opening brackets.'
|
26
22
|
|
27
23
|
def on_send(node)
|
28
|
-
return if node.parenthesized? || node.parent&.send_type?
|
29
24
|
return unless (first_argument = node.first_argument)
|
30
25
|
|
31
26
|
begin_pos = first_argument.source_range.begin_pos
|
32
|
-
|
33
|
-
return unless (range = offense_range(node, first_argument, begin_pos))
|
27
|
+
return unless (range = offense_range(node, begin_pos))
|
34
28
|
|
35
29
|
register_offense(range)
|
36
30
|
end
|
37
31
|
|
38
32
|
private
|
39
33
|
|
40
|
-
def offense_range(node,
|
41
|
-
if
|
42
|
-
|
34
|
+
def offense_range(node, begin_pos)
|
35
|
+
if reference_variable_with_brackets?(node)
|
36
|
+
receiver_end_pos = node.receiver.source_range.end_pos
|
37
|
+
selector_begin_pos = node.loc.selector.begin_pos
|
38
|
+
return if receiver_end_pos >= selector_begin_pos
|
39
|
+
|
40
|
+
range_between(receiver_end_pos, selector_begin_pos)
|
43
41
|
elsif node.method?(:[]=)
|
44
42
|
end_pos = node.receiver.source_range.end_pos
|
45
43
|
|
@@ -55,8 +53,8 @@ module RuboCop
|
|
55
53
|
end
|
56
54
|
end
|
57
55
|
|
58
|
-
def
|
59
|
-
node.receiver
|
56
|
+
def reference_variable_with_brackets?(node)
|
57
|
+
node.receiver&.variable? && node.method?(:[]) && node.arguments.size == 1
|
60
58
|
end
|
61
59
|
end
|
62
60
|
end
|
@@ -0,0 +1,75 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module RuboCop
|
4
|
+
module Cop
|
5
|
+
module Lint
|
6
|
+
# This cop checks for deprecated constants.
|
7
|
+
#
|
8
|
+
# It has `DeprecatedConstants` config. If there is an alternative method, you can set
|
9
|
+
# alternative value as `Alternative`. And you can set the deprecated version as
|
10
|
+
# `DeprecatedVersion`. These options can be omitted if they are not needed.
|
11
|
+
#
|
12
|
+
# DeprecatedConstants:
|
13
|
+
# 'DEPRECATED_CONSTANT':
|
14
|
+
# Alternative: 'alternative_value'
|
15
|
+
# DeprecatedVersion: 'deprecated_version'
|
16
|
+
#
|
17
|
+
# By default, `NIL`, `TRUE`, `FALSE` and `Random::DEFAULT` are configured.
|
18
|
+
#
|
19
|
+
# @example
|
20
|
+
#
|
21
|
+
# # bad
|
22
|
+
# NIL
|
23
|
+
# TRUE
|
24
|
+
# FALSE
|
25
|
+
# Random::DEFAULT # Return value of Ruby 2 is `Random` instance, Ruby 3.0 is `Random` class.
|
26
|
+
#
|
27
|
+
# # good
|
28
|
+
# nil
|
29
|
+
# true
|
30
|
+
# false
|
31
|
+
# Random.new # `::DEFAULT` has been deprecated in Ruby 3, `.new` is compatible with Ruby 2.
|
32
|
+
#
|
33
|
+
class DeprecatedConstants < Base
|
34
|
+
extend AutoCorrector
|
35
|
+
|
36
|
+
SUGGEST_GOOD_MSG = 'Use `%<good>s` instead of `%<bad>s`%<deprecated_message>s.'
|
37
|
+
DO_NOT_USE_MSG = 'Do not use `%<bad>s`%<deprecated_message>s.'
|
38
|
+
|
39
|
+
def on_const(node)
|
40
|
+
constant = node.absolute? ? consntant_name(node, node.short_name.to_s) : node.source
|
41
|
+
return unless (deprecated_constant = deprecated_constants[constant])
|
42
|
+
|
43
|
+
alternative = deprecated_constant['Alternative']
|
44
|
+
version = deprecated_constant['DeprecatedVersion']
|
45
|
+
|
46
|
+
add_offense(node, message: message(alternative, node.source, version)) do |corrector|
|
47
|
+
corrector.replace(node, alternative)
|
48
|
+
end
|
49
|
+
end
|
50
|
+
|
51
|
+
private
|
52
|
+
|
53
|
+
def consntant_name(node, nested_constant_name)
|
54
|
+
return nested_constant_name unless node.namespace.const_type?
|
55
|
+
|
56
|
+
consntant_name(node.namespace, "#{node.namespace.short_name}::#{nested_constant_name}")
|
57
|
+
end
|
58
|
+
|
59
|
+
def message(good, bad, deprecated_version)
|
60
|
+
deprecated_message = ", deprecated since Ruby #{deprecated_version}" if deprecated_version
|
61
|
+
|
62
|
+
if good
|
63
|
+
format(SUGGEST_GOOD_MSG, good: good, bad: bad, deprecated_message: deprecated_message)
|
64
|
+
else
|
65
|
+
format(DO_NOT_USE_MSG, bad: bad, deprecated_message: deprecated_message)
|
66
|
+
end
|
67
|
+
end
|
68
|
+
|
69
|
+
def deprecated_constants
|
70
|
+
cop_config.fetch('DeprecatedConstants', {})
|
71
|
+
end
|
72
|
+
end
|
73
|
+
end
|
74
|
+
end
|
75
|
+
end
|
@@ -0,0 +1,44 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module RuboCop
|
4
|
+
module Cop
|
5
|
+
module Lint
|
6
|
+
# This cop checks uses of lambda without a literal block.
|
7
|
+
# It emulates the following warning in Ruby 3.0:
|
8
|
+
#
|
9
|
+
# % ruby -vwe 'lambda(&proc {})'
|
10
|
+
# ruby 3.0.0p0 (2020-12-25 revision 95aff21468) [x86_64-darwin19]
|
11
|
+
# -e:1: warning: lambda without a literal block is deprecated; use the proc without
|
12
|
+
# lambda instead
|
13
|
+
#
|
14
|
+
# This way, proc object is never converted to lambda.
|
15
|
+
# Auto-correction replaces with compatible proc argument.
|
16
|
+
#
|
17
|
+
# @example
|
18
|
+
#
|
19
|
+
# # bad
|
20
|
+
# lambda(&proc { do_something })
|
21
|
+
# lambda(&Proc.new { do_something })
|
22
|
+
#
|
23
|
+
# # good
|
24
|
+
# proc { do_something }
|
25
|
+
# Proc.new { do_something }
|
26
|
+
# lambda { do_something } # If you use lambda.
|
27
|
+
#
|
28
|
+
class LambdaWithoutLiteralBlock < Base
|
29
|
+
extend AutoCorrector
|
30
|
+
|
31
|
+
MSG = 'lambda without a literal block is deprecated; use the proc without lambda instead.'
|
32
|
+
RESTRICT_ON_SEND = %i[lambda].freeze
|
33
|
+
|
34
|
+
def on_send(node)
|
35
|
+
return if node.parent&.block_type? || !node.first_argument
|
36
|
+
|
37
|
+
add_offense(node) do |corrector|
|
38
|
+
corrector.replace(node, node.first_argument.source.delete('&'))
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
@@ -11,6 +11,11 @@ module RuboCop
|
|
11
11
|
# that are hard to debug. To ensure this doesn't happen,
|
12
12
|
# always sort the list.
|
13
13
|
#
|
14
|
+
# `Dir.glob` and `Dir[]` sort globbed results by default in Ruby 3.0.
|
15
|
+
# So all bad cases are acceptable when Ruby 3.0 or higher are used.
|
16
|
+
#
|
17
|
+
# This cop will be deprecated and removed when supporting only Ruby 3.0 and higher.
|
18
|
+
#
|
14
19
|
# @example
|
15
20
|
#
|
16
21
|
# # bad
|
@@ -23,8 +28,6 @@ module RuboCop
|
|
23
28
|
# require file
|
24
29
|
# end
|
25
30
|
#
|
26
|
-
# @example
|
27
|
-
#
|
28
31
|
# # bad
|
29
32
|
# Dir.glob(Rails.root.join(__dir__, 'test', '*.rb')) do |file|
|
30
33
|
# require file
|
@@ -35,28 +38,28 @@ module RuboCop
|
|
35
38
|
# require file
|
36
39
|
# end
|
37
40
|
#
|
38
|
-
# @example
|
39
|
-
#
|
40
41
|
# # bad
|
41
42
|
# Dir['./lib/**/*.rb'].each(&method(:require))
|
42
43
|
#
|
43
44
|
# # good
|
44
45
|
# Dir['./lib/**/*.rb'].sort.each(&method(:require))
|
45
46
|
#
|
46
|
-
# @example
|
47
|
-
#
|
48
47
|
# # bad
|
49
48
|
# Dir.glob(Rails.root.join('test', '*.rb'), &method(:require))
|
50
49
|
#
|
51
50
|
# # good
|
52
51
|
# Dir.glob(Rails.root.join('test', '*.rb')).sort.each(&method(:require))
|
53
52
|
#
|
53
|
+
# # good - Respect intent if `sort` keyword option is specified in Ruby 3.0 or higher.
|
54
|
+
# Dir.glob(Rails.root.join(__dir__, 'test', '*.rb'), sort: false).each(&method(:require))
|
55
|
+
#
|
54
56
|
class NonDeterministicRequireOrder < Base
|
55
57
|
extend AutoCorrector
|
56
58
|
|
57
59
|
MSG = 'Sort files before requiring them.'
|
58
60
|
|
59
61
|
def on_block(node)
|
62
|
+
return if target_ruby_version >= 3.0
|
60
63
|
return unless node.body
|
61
64
|
return unless unsorted_dir_loop?(node.send_node)
|
62
65
|
|
@@ -70,6 +73,7 @@ module RuboCop
|
|
70
73
|
end
|
71
74
|
|
72
75
|
def on_block_pass(node)
|
76
|
+
return if target_ruby_version >= 3.0
|
73
77
|
return unless method_require?(node)
|
74
78
|
return unless unsorted_dir_pass?(node.parent)
|
75
79
|
|
@@ -61,7 +61,8 @@ module RuboCop
|
|
61
61
|
end
|
62
62
|
|
63
63
|
def comment_range_with_surrounding_space(range)
|
64
|
-
if previous_line_blank?(range)
|
64
|
+
if previous_line_blank?(range) &&
|
65
|
+
processed_source.comment_config.comment_only_line?(range.line)
|
65
66
|
# When the previous line is blank, it should be retained
|
66
67
|
range_with_surrounding_space(range: range, side: :right)
|
67
68
|
else
|
@@ -0,0 +1,48 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module RuboCop
|
4
|
+
module Cop
|
5
|
+
module Lint
|
6
|
+
# Sort globbed results by default in Ruby 3.0.
|
7
|
+
# This cop checks for redundant `sort` method to `Dir.glob` and `Dir[]`.
|
8
|
+
#
|
9
|
+
# @example
|
10
|
+
#
|
11
|
+
# # bad
|
12
|
+
# Dir.glob('./lib/**/*.rb').sort.each do |file|
|
13
|
+
# end
|
14
|
+
#
|
15
|
+
# Dir['./lib/**/*.rb'].sort.each do |file|
|
16
|
+
# end
|
17
|
+
#
|
18
|
+
# # good
|
19
|
+
# Dir.glob('./lib/**/*.rb').each do |file|
|
20
|
+
# end
|
21
|
+
#
|
22
|
+
# Dir['./lib/**/*.rb'].each do |file|
|
23
|
+
# end
|
24
|
+
#
|
25
|
+
class RedundantDirGlobSort < Base
|
26
|
+
extend AutoCorrector
|
27
|
+
extend TargetRubyVersion
|
28
|
+
|
29
|
+
minimum_target_ruby_version 3.0
|
30
|
+
|
31
|
+
MSG = 'Remove redundant `sort`.'
|
32
|
+
RESTRICT_ON_SEND = %i[sort].freeze
|
33
|
+
GLOB_METHODS = %i[glob []].freeze
|
34
|
+
|
35
|
+
def on_send(node)
|
36
|
+
return unless (receiver = node.receiver)
|
37
|
+
return unless receiver.receiver.const_type? && receiver.receiver.short_name == :Dir
|
38
|
+
return unless GLOB_METHODS.include?(receiver.method_name)
|
39
|
+
|
40
|
+
add_offense(node.loc.selector) do |corrector|
|
41
|
+
corrector.remove(node.loc.selector)
|
42
|
+
corrector.remove(node.loc.dot)
|
43
|
+
end
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|
47
|
+
end
|
48
|
+
end
|
@@ -0,0 +1,18 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module RuboCop
|
4
|
+
module Cop
|
5
|
+
# This module encapsulates the ability to allow certain identifiers in a cop.
|
6
|
+
module AllowedIdentifiers
|
7
|
+
SIGILS = '@$' # if a variable starts with a sigil it will be removed
|
8
|
+
|
9
|
+
def allowed_identifier?(name)
|
10
|
+
allowed_identifiers.include?(name.to_s.delete(SIGILS))
|
11
|
+
end
|
12
|
+
|
13
|
+
def allowed_identifiers
|
14
|
+
cop_config.fetch('AllowedIdentifiers', [])
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
@@ -22,16 +22,7 @@ module RuboCop
|
|
22
22
|
end
|
23
23
|
|
24
24
|
def begin_pos_with_comment(node)
|
25
|
-
|
26
|
-
first_comment = nil
|
27
|
-
|
28
|
-
processed_source.comments_before_line(annotation_line)
|
29
|
-
.reverse_each do |comment|
|
30
|
-
if comment.location.line == annotation_line
|
31
|
-
first_comment = comment
|
32
|
-
annotation_line -= 1
|
33
|
-
end
|
34
|
-
end
|
25
|
+
first_comment = processed_source.ast_with_comments[node].first
|
35
26
|
|
36
27
|
start_line_position(first_comment || node)
|
37
28
|
end
|
@@ -20,6 +20,7 @@ module RuboCop
|
|
20
20
|
# # good
|
21
21
|
# fooBar = 1
|
22
22
|
class VariableName < Base
|
23
|
+
include AllowedIdentifiers
|
23
24
|
include ConfigurableNaming
|
24
25
|
|
25
26
|
MSG = 'Use %<style>s for variable names.'
|
@@ -27,6 +28,7 @@ module RuboCop
|
|
27
28
|
def on_lvasgn(node)
|
28
29
|
name, = *node
|
29
30
|
return unless name
|
31
|
+
return if allowed_identifier?(name)
|
30
32
|
|
31
33
|
check_name(node, name, node.loc.name)
|
32
34
|
end
|
@@ -97,6 +97,7 @@ module RuboCop
|
|
97
97
|
# expect(Open3).to receive(:capture3)
|
98
98
|
#
|
99
99
|
class VariableNumber < Base
|
100
|
+
include AllowedIdentifiers
|
100
101
|
include ConfigurableNumbering
|
101
102
|
|
102
103
|
MSG = 'Use %<style>s for %<identifier_type>s numbers.'
|
@@ -139,14 +140,6 @@ module RuboCop
|
|
139
140
|
|
140
141
|
format(MSG, style: style, identifier_type: identifier_type)
|
141
142
|
end
|
142
|
-
|
143
|
-
def allowed_identifier?(name)
|
144
|
-
allowed_identifiers.include?(name.to_s.delete('@'))
|
145
|
-
end
|
146
|
-
|
147
|
-
def allowed_identifiers
|
148
|
-
cop_config.fetch('AllowedIdentifiers', [])
|
149
|
-
end
|
150
143
|
end
|
151
144
|
end
|
152
145
|
end
|
@@ -32,8 +32,12 @@ module RuboCop
|
|
32
32
|
def_node_matcher :str_node, '(send (const {nil? cbase} :String) :new)'
|
33
33
|
def_node_matcher :array_with_block,
|
34
34
|
'(block (send (const {nil? cbase} :Array) :new) args _)'
|
35
|
-
def_node_matcher :hash_with_block,
|
36
|
-
|
35
|
+
def_node_matcher :hash_with_block, <<~PATTERN
|
36
|
+
{
|
37
|
+
(block (send (const {nil? cbase} :Hash) :new) args _)
|
38
|
+
(numblock (send (const {nil? cbase} :Hash) :new) ...)
|
39
|
+
}
|
40
|
+
PATTERN
|
37
41
|
|
38
42
|
def on_send(node)
|
39
43
|
return unless (message = offense_message(node))
|
@@ -0,0 +1,102 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module RuboCop
|
4
|
+
module Cop
|
5
|
+
module Style
|
6
|
+
# This cop checks for endless methods.
|
7
|
+
#
|
8
|
+
# It can enforce either the use of endless methods definitions
|
9
|
+
# for single-lined method bodies, or disallow endless methods.
|
10
|
+
#
|
11
|
+
# Other method definition types are not considered by this cop.
|
12
|
+
#
|
13
|
+
# The supported styles are:
|
14
|
+
# * allow_single_line (default) - only single line endless method definitions are allowed.
|
15
|
+
# * allow_always - all endless method definitions are allowed.
|
16
|
+
# * disallow - all endless method definitions are disallowed.
|
17
|
+
#
|
18
|
+
# NOTE: Incorrect endless method definitions will always be
|
19
|
+
# corrected to a multi-line definition.
|
20
|
+
#
|
21
|
+
# @example EnforcedStyle: allow_single_line (default)
|
22
|
+
# # good
|
23
|
+
# def my_method() = x
|
24
|
+
#
|
25
|
+
# # bad, multi-line endless method
|
26
|
+
# def my_method() = x.foo
|
27
|
+
# .bar
|
28
|
+
# .baz
|
29
|
+
#
|
30
|
+
# @example EnforcedStyle: allow_always
|
31
|
+
# # good
|
32
|
+
# def my_method() = x
|
33
|
+
#
|
34
|
+
# # good
|
35
|
+
# def my_method() = x.foo
|
36
|
+
# .bar
|
37
|
+
# .baz
|
38
|
+
#
|
39
|
+
# @example EnforcedStyle: disallow
|
40
|
+
# # bad
|
41
|
+
# def my_method; x end
|
42
|
+
#
|
43
|
+
# # bad
|
44
|
+
# def my_method() = x.foo
|
45
|
+
# .bar
|
46
|
+
# .baz
|
47
|
+
#
|
48
|
+
class EndlessMethod < Base
|
49
|
+
include ConfigurableEnforcedStyle
|
50
|
+
extend TargetRubyVersion
|
51
|
+
extend AutoCorrector
|
52
|
+
|
53
|
+
minimum_target_ruby_version 3.0
|
54
|
+
|
55
|
+
CORRECTION_STYLES = %w[multiline single_line].freeze
|
56
|
+
MSG = 'Avoid endless method definitions.'
|
57
|
+
MSG_MULTI_LINE = 'Avoid endless method definitions with multiple lines.'
|
58
|
+
|
59
|
+
def on_def(node)
|
60
|
+
if style == :disallow
|
61
|
+
handle_disallow_style(node)
|
62
|
+
else
|
63
|
+
handle_allow_style(node)
|
64
|
+
end
|
65
|
+
end
|
66
|
+
|
67
|
+
private
|
68
|
+
|
69
|
+
def handle_allow_style(node)
|
70
|
+
return unless node.endless?
|
71
|
+
return if node.single_line? || style == :allow_always
|
72
|
+
|
73
|
+
add_offense(node, message: MSG_MULTI_LINE) do |corrector|
|
74
|
+
correct_to_multiline(corrector, node)
|
75
|
+
end
|
76
|
+
end
|
77
|
+
|
78
|
+
def handle_disallow_style(node)
|
79
|
+
return unless node.endless?
|
80
|
+
|
81
|
+
add_offense(node) do |corrector|
|
82
|
+
correct_to_multiline(corrector, node)
|
83
|
+
end
|
84
|
+
end
|
85
|
+
|
86
|
+
def correct_to_multiline(corrector, node)
|
87
|
+
replacement = <<~RUBY.strip
|
88
|
+
def #{node.method_name}#{arguments(node)}
|
89
|
+
#{node.body.source}
|
90
|
+
end
|
91
|
+
RUBY
|
92
|
+
|
93
|
+
corrector.replace(node, replacement)
|
94
|
+
end
|
95
|
+
|
96
|
+
def arguments(node, missing = '')
|
97
|
+
node.arguments.any? ? node.arguments.source : missing
|
98
|
+
end
|
99
|
+
end
|
100
|
+
end
|
101
|
+
end
|
102
|
+
end
|
@@ -68,7 +68,8 @@ module RuboCop
|
|
68
68
|
length = cop_config['MinBranchesCount'] || 3
|
69
69
|
return length if length.is_a?(Integer) && length.positive?
|
70
70
|
|
71
|
-
|
71
|
+
warn Rainbow('`MinBranchesCount` needs to be a positive integer!').red
|
72
|
+
exit!
|
72
73
|
end
|
73
74
|
end
|
74
75
|
end
|
@@ -82,12 +82,10 @@ module RuboCop
|
|
82
82
|
def autocorrect(corrector, node)
|
83
83
|
if node.modifier_form?
|
84
84
|
correct_to_elsif_from_modifier_form(corrector, node)
|
85
|
-
end_range = node.parent.loc.end
|
86
85
|
else
|
87
86
|
correct_to_elsif_from_if_inside_else_form(corrector, node, node.condition)
|
88
|
-
end_range = node.loc.end
|
89
87
|
end
|
90
|
-
corrector.remove(range_by_whole_lines(
|
88
|
+
corrector.remove(range_by_whole_lines(find_end_range(node), include_final_newline: true))
|
91
89
|
corrector.remove(
|
92
90
|
range_by_whole_lines(node.if_branch.source_range, include_final_newline: true)
|
93
91
|
)
|
@@ -110,6 +108,13 @@ module RuboCop
|
|
110
108
|
corrector.remove(condition)
|
111
109
|
end
|
112
110
|
|
111
|
+
def find_end_range(node)
|
112
|
+
end_range = node.loc.end
|
113
|
+
return end_range if end_range
|
114
|
+
|
115
|
+
find_end_range(node.parent)
|
116
|
+
end
|
117
|
+
|
113
118
|
def allow_if_modifier_in_else_branch?(else_branch)
|
114
119
|
allow_if_modifier? && else_branch&.modifier_form?
|
115
120
|
end
|
@@ -157,6 +157,10 @@ module RuboCop
|
|
157
157
|
include OmitParentheses
|
158
158
|
extend AutoCorrector
|
159
159
|
|
160
|
+
def self.autocorrect_incompatible_with
|
161
|
+
[Style::NestedParenthesizedCalls]
|
162
|
+
end
|
163
|
+
|
160
164
|
def on_send(node)
|
161
165
|
send(style, node) # call require_parentheses or omit_parentheses
|
162
166
|
end
|
@@ -81,11 +81,12 @@ module RuboCop
|
|
81
81
|
return node.source if message_nodes.size > 1
|
82
82
|
|
83
83
|
argument = message_nodes.first.source
|
84
|
+
exception_class = exception_node.const_name || exception_node.receiver.source
|
84
85
|
|
85
86
|
if node.parent && requires_parens?(node.parent)
|
86
|
-
"#{node.method_name}(#{
|
87
|
+
"#{node.method_name}(#{exception_class}.new(#{argument}))"
|
87
88
|
else
|
88
|
-
"#{node.method_name} #{
|
89
|
+
"#{node.method_name} #{exception_class}.new(#{argument})"
|
89
90
|
end
|
90
91
|
end
|
91
92
|
|
@@ -66,7 +66,7 @@ module RuboCop
|
|
66
66
|
end
|
67
67
|
|
68
68
|
def correct_with_arguments(return_node, corrector)
|
69
|
-
if return_node.
|
69
|
+
if return_node.children.size > 1
|
70
70
|
add_brackets(corrector, return_node)
|
71
71
|
elsif hash_without_braces?(return_node.first_argument)
|
72
72
|
add_braces(corrector, return_node.first_argument)
|
@@ -8,6 +8,10 @@ module RuboCop
|
|
8
8
|
#
|
9
9
|
# Endless methods added in Ruby 3.0 are also accepted by this cop.
|
10
10
|
#
|
11
|
+
# If `Style/EndlessMethod` is enabled with `EnforcedStyle: allow` or
|
12
|
+
# `allow_always`, single-line methods will be auto-corrected to endless
|
13
|
+
# methods if there is only one statement in the body.
|
14
|
+
#
|
11
15
|
# @example
|
12
16
|
# # bad
|
13
17
|
# def some_method; body end
|
@@ -47,6 +51,28 @@ module RuboCop
|
|
47
51
|
private
|
48
52
|
|
49
53
|
def autocorrect(corrector, node)
|
54
|
+
if correct_to_endless?(node.body)
|
55
|
+
correct_to_endless(corrector, node)
|
56
|
+
else
|
57
|
+
correct_to_multiline(corrector, node)
|
58
|
+
end
|
59
|
+
end
|
60
|
+
|
61
|
+
def allow_empty?
|
62
|
+
cop_config['AllowIfMethodIsEmpty']
|
63
|
+
end
|
64
|
+
|
65
|
+
def correct_to_endless?(body_node)
|
66
|
+
endless_method_config = config.for_cop('Style/EndlessMethod')
|
67
|
+
|
68
|
+
return false unless endless_method_config['Enabled']
|
69
|
+
return false if endless_method_config['EnforcedStyle'] == 'disallow'
|
70
|
+
return false unless body_node
|
71
|
+
|
72
|
+
!(body_node.begin_type? || body_node.kwbegin_type?)
|
73
|
+
end
|
74
|
+
|
75
|
+
def correct_to_multiline(corrector, node)
|
50
76
|
each_part(node.body) do |part|
|
51
77
|
LineBreakCorrector.break_line_before(
|
52
78
|
range: part, node: node, corrector: corrector,
|
@@ -62,8 +88,9 @@ module RuboCop
|
|
62
88
|
move_comment(node, corrector)
|
63
89
|
end
|
64
90
|
|
65
|
-
def
|
66
|
-
|
91
|
+
def correct_to_endless(corrector, node)
|
92
|
+
replacement = "def #{node.method_name}(#{node.arguments.source}) = #{node.body.source}"
|
93
|
+
corrector.replace(node, replacement)
|
67
94
|
end
|
68
95
|
|
69
96
|
def each_part(body)
|
@@ -100,7 +100,7 @@ module RuboCop
|
|
100
100
|
def correct_for_comment(corrector, node, if_branch)
|
101
101
|
return if config.for_cop('Style/IfUnlessModifier')['Enabled']
|
102
102
|
|
103
|
-
comments = processed_source.
|
103
|
+
comments = processed_source.ast_with_comments[if_branch]
|
104
104
|
comment_text = comments.map(&:text).join("\n") << "\n"
|
105
105
|
|
106
106
|
corrector.insert_before(node.loc.keyword, comment_text) unless comments.empty?
|
data/lib/rubocop/target_ruby.rb
CHANGED
@@ -44,33 +44,61 @@ module RuboCop
|
|
44
44
|
# The target ruby version may be found in a .ruby-version file.
|
45
45
|
# @api private
|
46
46
|
class RubyVersionFile < Source
|
47
|
-
|
47
|
+
RUBY_VERSION_FILENAME = '.ruby-version'
|
48
|
+
RUBY_VERSION_PATTERN = /\A(?:ruby-)?(?<version>\d+\.\d+)/.freeze
|
48
49
|
|
49
50
|
def name
|
50
|
-
"`#{
|
51
|
+
"`#{RUBY_VERSION_FILENAME}`"
|
51
52
|
end
|
52
53
|
|
53
54
|
private
|
54
55
|
|
56
|
+
def filename
|
57
|
+
RUBY_VERSION_FILENAME
|
58
|
+
end
|
59
|
+
|
60
|
+
def pattern
|
61
|
+
RUBY_VERSION_PATTERN
|
62
|
+
end
|
63
|
+
|
55
64
|
def find_version
|
56
|
-
file =
|
65
|
+
file = version_file
|
57
66
|
return unless file && File.file?(file)
|
58
67
|
|
59
|
-
|
60
|
-
# `(ruby-)` is not a capture type.
|
61
|
-
File.read(file).match(/\A(ruby-)?(?<version>\d+\.\d+)/) do |md|
|
62
|
-
# rubocop:enable Lint/MixedRegexpCaptureTypes
|
68
|
+
File.read(file).match(pattern) do |md|
|
63
69
|
md[:version].to_f
|
64
70
|
end
|
65
71
|
end
|
66
72
|
|
67
|
-
def
|
68
|
-
@
|
69
|
-
@config.find_file_upwards(
|
73
|
+
def version_file
|
74
|
+
@version_file ||=
|
75
|
+
@config.find_file_upwards(filename,
|
70
76
|
@config.base_dir_for_path_parameters)
|
71
77
|
end
|
72
78
|
end
|
73
79
|
|
80
|
+
# The target ruby version may be found in a .tool-versions file, in a line
|
81
|
+
# starting with `ruby`.
|
82
|
+
# @api private
|
83
|
+
class ToolVersionsFile < RubyVersionFile
|
84
|
+
TOOL_VERSIONS_FILENAME = '.tool-versions'
|
85
|
+
TOOL_VERSIONS_PATTERN = /\Aruby (?:ruby-)?(?<version>\d+\.\d+)/.freeze
|
86
|
+
|
87
|
+
def name
|
88
|
+
"`#{TOOL_VERSIONS_FILENAME}`"
|
89
|
+
end
|
90
|
+
|
91
|
+
private
|
92
|
+
|
93
|
+
def filename
|
94
|
+
TOOL_VERSIONS_FILENAME
|
95
|
+
end
|
96
|
+
|
97
|
+
def pattern
|
98
|
+
TOOL_VERSIONS_PATTERN
|
99
|
+
end
|
100
|
+
end
|
101
|
+
|
74
102
|
# The lock file of Bundler may identify the target ruby version.
|
75
103
|
# @api private
|
76
104
|
class BundlerLockFile < Source
|
@@ -194,7 +222,15 @@ module RuboCop
|
|
194
222
|
KNOWN_RUBIES
|
195
223
|
end
|
196
224
|
|
197
|
-
SOURCES = [
|
225
|
+
SOURCES = [
|
226
|
+
RuboCopConfig,
|
227
|
+
RubyVersionFile,
|
228
|
+
ToolVersionsFile,
|
229
|
+
BundlerLockFile,
|
230
|
+
GemspecFile,
|
231
|
+
Default
|
232
|
+
].freeze
|
233
|
+
|
198
234
|
private_constant :SOURCES
|
199
235
|
|
200
236
|
def initialize(config)
|
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: 1.
|
4
|
+
version: 1.8.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:
|
13
|
+
date: 2021-01-07 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: parallel
|
@@ -32,14 +32,14 @@ dependencies:
|
|
32
32
|
requirements:
|
33
33
|
- - ">="
|
34
34
|
- !ruby/object:Gem::Version
|
35
|
-
version:
|
35
|
+
version: 3.0.0.0
|
36
36
|
type: :runtime
|
37
37
|
prerelease: false
|
38
38
|
version_requirements: !ruby/object:Gem::Requirement
|
39
39
|
requirements:
|
40
40
|
- - ">="
|
41
41
|
- !ruby/object:Gem::Version
|
42
|
-
version:
|
42
|
+
version: 3.0.0.0
|
43
43
|
- !ruby/object:Gem::Dependency
|
44
44
|
name: rainbow
|
45
45
|
requirement: !ruby/object:Gem::Requirement
|
@@ -137,7 +137,7 @@ dependencies:
|
|
137
137
|
version: 1.4.0
|
138
138
|
- - "<"
|
139
139
|
- !ruby/object:Gem::Version
|
140
|
-
version: '
|
140
|
+
version: '3.0'
|
141
141
|
type: :runtime
|
142
142
|
prerelease: false
|
143
143
|
version_requirements: !ruby/object:Gem::Requirement
|
@@ -147,7 +147,7 @@ dependencies:
|
|
147
147
|
version: 1.4.0
|
148
148
|
- - "<"
|
149
149
|
- !ruby/object:Gem::Version
|
150
|
-
version: '
|
150
|
+
version: '3.0'
|
151
151
|
- !ruby/object:Gem::Dependency
|
152
152
|
name: bundler
|
153
153
|
requirement: !ruby/object:Gem::Requirement
|
@@ -368,6 +368,7 @@ files:
|
|
368
368
|
- lib/rubocop/cop/lint/constant_resolution.rb
|
369
369
|
- lib/rubocop/cop/lint/debugger.rb
|
370
370
|
- lib/rubocop/cop/lint/deprecated_class_methods.rb
|
371
|
+
- lib/rubocop/cop/lint/deprecated_constants.rb
|
371
372
|
- lib/rubocop/cop/lint/deprecated_open_ssl_constant.rb
|
372
373
|
- lib/rubocop/cop/lint/disjunctive_assignment_in_constructor.rb
|
373
374
|
- lib/rubocop/cop/lint/duplicate_branch.rb
|
@@ -401,6 +402,7 @@ files:
|
|
401
402
|
- lib/rubocop/cop/lint/ineffective_access_modifier.rb
|
402
403
|
- lib/rubocop/cop/lint/inherit_exception.rb
|
403
404
|
- lib/rubocop/cop/lint/interpolation_check.rb
|
405
|
+
- lib/rubocop/cop/lint/lambda_without_literal_block.rb
|
404
406
|
- lib/rubocop/cop/lint/literal_as_condition.rb
|
405
407
|
- lib/rubocop/cop/lint/literal_in_interpolation.rb
|
406
408
|
- lib/rubocop/cop/lint/loop.rb
|
@@ -424,6 +426,7 @@ files:
|
|
424
426
|
- lib/rubocop/cop/lint/rand_one.rb
|
425
427
|
- lib/rubocop/cop/lint/redundant_cop_disable_directive.rb
|
426
428
|
- lib/rubocop/cop/lint/redundant_cop_enable_directive.rb
|
429
|
+
- lib/rubocop/cop/lint/redundant_dir_glob_sort.rb
|
427
430
|
- lib/rubocop/cop/lint/redundant_require_statement.rb
|
428
431
|
- lib/rubocop/cop/lint/redundant_safe_navigation.rb
|
429
432
|
- lib/rubocop/cop/lint/redundant_splat_expansion.rb
|
@@ -485,6 +488,7 @@ files:
|
|
485
488
|
- lib/rubocop/cop/metrics/utils/repeated_csend_discount.rb
|
486
489
|
- lib/rubocop/cop/migration/department_name.rb
|
487
490
|
- lib/rubocop/cop/mixin/alignment.rb
|
491
|
+
- lib/rubocop/cop/mixin/allowed_identifiers.rb
|
488
492
|
- lib/rubocop/cop/mixin/allowed_methods.rb
|
489
493
|
- lib/rubocop/cop/mixin/annotation_comment.rb
|
490
494
|
- lib/rubocop/cop/mixin/array_min_size.rb
|
@@ -627,6 +631,7 @@ files:
|
|
627
631
|
- lib/rubocop/cop/style/empty_method.rb
|
628
632
|
- lib/rubocop/cop/style/encoding.rb
|
629
633
|
- lib/rubocop/cop/style/end_block.rb
|
634
|
+
- lib/rubocop/cop/style/endless_method.rb
|
630
635
|
- lib/rubocop/cop/style/eval_with_location.rb
|
631
636
|
- lib/rubocop/cop/style/even_odd.rb
|
632
637
|
- lib/rubocop/cop/style/expand_path_arguments.rb
|
@@ -851,7 +856,7 @@ metadata:
|
|
851
856
|
homepage_uri: https://rubocop.org/
|
852
857
|
changelog_uri: https://github.com/rubocop-hq/rubocop/blob/master/CHANGELOG.md
|
853
858
|
source_code_uri: https://github.com/rubocop-hq/rubocop/
|
854
|
-
documentation_uri: https://docs.rubocop.org/rubocop/1.
|
859
|
+
documentation_uri: https://docs.rubocop.org/rubocop/1.8/
|
855
860
|
bug_tracker_uri: https://github.com/rubocop-hq/rubocop/issues
|
856
861
|
post_install_message:
|
857
862
|
rdoc_options: []
|