rubocop 0.77.0 → 0.79.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/README.md +1 -1
- data/config/default.yml +39 -26
- data/lib/rubocop.rb +11 -2
- data/lib/rubocop/ast/builder.rb +43 -42
- data/lib/rubocop/ast/node/def_node.rb +11 -0
- data/lib/rubocop/ast/node/forward_args_node.rb +18 -0
- data/lib/rubocop/ast/traversal.rb +11 -3
- data/lib/rubocop/cli/command/auto_genenerate_config.rb +7 -7
- data/lib/rubocop/cli/command/show_cops.rb +11 -4
- data/lib/rubocop/config.rb +1 -1
- data/lib/rubocop/config_loader.rb +19 -19
- data/lib/rubocop/config_obsoletion.rb +3 -3
- data/lib/rubocop/config_validator.rb +55 -95
- data/lib/rubocop/cop/autocorrect_logic.rb +7 -4
- data/lib/rubocop/cop/bundler/insecure_protocol_source.rb +2 -2
- data/lib/rubocop/cop/cop.rb +3 -1
- data/lib/rubocop/cop/gemspec/ordered_dependencies.rb +1 -1
- data/lib/rubocop/cop/generator.rb +3 -4
- data/lib/rubocop/cop/generator/configuration_injector.rb +1 -1
- data/lib/rubocop/cop/layout/first_argument_indentation.rb +2 -2
- data/lib/rubocop/cop/layout/hash_alignment.rb +8 -4
- data/lib/rubocop/cop/layout/heredoc_indentation.rb +4 -4
- data/lib/rubocop/cop/{metrics → layout}/line_length.rb +5 -78
- data/lib/rubocop/cop/layout/multiline_block_layout.rb +14 -5
- data/lib/rubocop/cop/layout/space_around_operators.rb +31 -6
- data/lib/rubocop/cop/layout/space_before_block_braces.rb +17 -0
- data/lib/rubocop/cop/lint/debugger.rb +2 -2
- data/lib/rubocop/cop/lint/each_with_object_argument.rb +1 -1
- data/lib/rubocop/cop/lint/non_deterministic_require_order.rb +89 -0
- data/lib/rubocop/cop/lint/redundant_cop_disable_directive.rb +3 -3
- data/lib/rubocop/cop/lint/redundant_cop_enable_directive.rb +4 -4
- data/lib/rubocop/cop/migration/department_name.rb +16 -1
- data/lib/rubocop/cop/mixin/alignment.rb +1 -1
- data/lib/rubocop/cop/mixin/frozen_string_literal.rb +1 -7
- data/lib/rubocop/cop/mixin/line_length_help.rb +88 -0
- data/lib/rubocop/cop/mixin/rational_literal.rb +18 -0
- data/lib/rubocop/cop/mixin/statement_modifier.rb +2 -2
- data/lib/rubocop/cop/mixin/trailing_comma.rb +6 -3
- data/lib/rubocop/cop/naming/method_parameter_name.rb +1 -1
- data/lib/rubocop/cop/offense.rb +11 -0
- data/lib/rubocop/cop/registry.rb +7 -2
- data/lib/rubocop/cop/style/attr.rb +8 -0
- data/lib/rubocop/cop/style/conditional_assignment.rb +2 -2
- data/lib/rubocop/cop/style/guard_clause.rb +3 -2
- data/lib/rubocop/cop/style/if_unless_modifier.rb +38 -3
- data/lib/rubocop/cop/style/infinite_loop.rb +1 -1
- data/lib/rubocop/cop/style/method_call_with_args_parentheses.rb +4 -207
- data/lib/rubocop/cop/style/method_call_with_args_parentheses/omit_parentheses.rb +168 -0
- data/lib/rubocop/cop/style/method_call_with_args_parentheses/require_parentheses.rb +54 -0
- data/lib/rubocop/cop/style/multiline_method_signature.rb +1 -1
- data/lib/rubocop/cop/style/multiline_when_then.rb +5 -1
- data/lib/rubocop/cop/style/numeric_predicate.rb +4 -3
- data/lib/rubocop/cop/style/percent_literal_delimiters.rb +7 -7
- data/lib/rubocop/cop/style/trailing_underscore_variable.rb +7 -1
- data/lib/rubocop/cop/style/while_until_modifier.rb +1 -1
- data/lib/rubocop/cop/style/yoda_condition.rb +16 -1
- data/lib/rubocop/formatter/base_formatter.rb +2 -2
- data/lib/rubocop/formatter/json_formatter.rb +6 -5
- data/lib/rubocop/node_pattern.rb +1 -1
- data/lib/rubocop/options.rb +8 -8
- data/lib/rubocop/result_cache.rb +2 -0
- data/lib/rubocop/rspec/shared_contexts.rb +5 -0
- data/lib/rubocop/runner.rb +5 -1
- data/lib/rubocop/target_ruby.rb +151 -0
- data/lib/rubocop/version.rb +1 -1
- metadata +12 -5
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 3bdc80758a1e3604ccf4fc91cedac86412bea6d234b27c9b7ae064fb364076ce
|
4
|
+
data.tar.gz: 2890ef6acaede12b528cf963cdbb8a90f64ecbcef6c5da6b3684fcf90c7d4c07
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 8eb332a372b879708bedba857c21532665ad9b459b18977180fdc5d5ec0cb0f035968a907adfe70bd6e5688a97d9c321503d97d37e87cbf77b04168d1e071c1d
|
7
|
+
data.tar.gz: 98d0a07c70c4dca7c63cc96fb473a0079eee449d045b3543b55b90da3f1700c564d0f2ab7ccd909f63fefff7956680fd862710fabe2ccb0e9969b424b943216d
|
data/README.md
CHANGED
@@ -53,7 +53,7 @@ haven't reached version 1.0 yet). To prevent an unwanted RuboCop update you
|
|
53
53
|
might want to use a conservative version lock in your `Gemfile`:
|
54
54
|
|
55
55
|
```rb
|
56
|
-
gem 'rubocop', '~> 0.
|
56
|
+
gem 'rubocop', '~> 0.79.0', require: false
|
57
57
|
```
|
58
58
|
|
59
59
|
## Quickstart
|
data/config/default.yml
CHANGED
@@ -59,6 +59,7 @@ AllCops:
|
|
59
59
|
- '**/Vagrantfile'
|
60
60
|
Exclude:
|
61
61
|
- 'node_modules/**/*'
|
62
|
+
- 'tmp/**/*'
|
62
63
|
- 'vendor/**/*'
|
63
64
|
- '.git/**/*'
|
64
65
|
# Default formatter will be used if no `-f/--format` option is given.
|
@@ -196,9 +197,10 @@ Gemspec/RequiredRubyVersion:
|
|
196
197
|
VersionAdded: '0.52'
|
197
198
|
Include:
|
198
199
|
- '**/*.gemspec'
|
199
|
-
|
200
|
+
|
200
201
|
Gemspec/RubyVersionGlobalsUsage:
|
201
202
|
Description: Checks usage of RUBY_VERSION in gemspec.
|
203
|
+
StyleGuide: '#no-ruby-version-in-the-gemspec'
|
202
204
|
Enabled: true
|
203
205
|
VersionAdded: '0.72'
|
204
206
|
Include:
|
@@ -799,6 +801,29 @@ Layout/LeadingEmptyLines:
|
|
799
801
|
VersionAdded: '0.57'
|
800
802
|
VersionChanged: '0.77'
|
801
803
|
|
804
|
+
Layout/LineLength:
|
805
|
+
Description: 'Limit lines to 80 characters.'
|
806
|
+
StyleGuide: '#80-character-limits'
|
807
|
+
Enabled: true
|
808
|
+
VersionAdded: '0.25'
|
809
|
+
VersionChanged: '0.78'
|
810
|
+
AutoCorrect: false
|
811
|
+
Max: 80
|
812
|
+
# To make it possible to copy or click on URIs in the code, we allow lines
|
813
|
+
# containing a URI to be longer than Max.
|
814
|
+
AllowHeredoc: true
|
815
|
+
AllowURI: true
|
816
|
+
URISchemes:
|
817
|
+
- http
|
818
|
+
- https
|
819
|
+
# The IgnoreCopDirectives option causes the LineLength rule to ignore cop
|
820
|
+
# directives like '# rubocop: enable ...' when calculating a line's length.
|
821
|
+
IgnoreCopDirectives: true
|
822
|
+
# The IgnoredPatterns option is a list of !ruby/regexp and/or string
|
823
|
+
# elements. Strings will be converted to Regexp objects. A line that matches
|
824
|
+
# any regular expression listed in this option will be ignored by LineLength.
|
825
|
+
IgnoredPatterns: []
|
826
|
+
|
802
827
|
Layout/MultilineArrayBraceLayout:
|
803
828
|
Description: >-
|
804
829
|
Checks that the closing brace in an array literal is
|
@@ -1042,6 +1067,10 @@ Layout/SpaceAroundOperators:
|
|
1042
1067
|
# with an operator on the previous or next line, not counting empty lines
|
1043
1068
|
# or comment lines.
|
1044
1069
|
AllowForAlignment: true
|
1070
|
+
EnforcedStyleForExponentOperator: no_space
|
1071
|
+
SupportedStylesForExponentOperator:
|
1072
|
+
- space
|
1073
|
+
- no_space
|
1045
1074
|
|
1046
1075
|
Layout/SpaceBeforeBlockBraces:
|
1047
1076
|
Description: >-
|
@@ -1471,6 +1500,12 @@ Lint/NextWithoutAccumulator:
|
|
1471
1500
|
Enabled: true
|
1472
1501
|
VersionAdded: '0.36'
|
1473
1502
|
|
1503
|
+
Lint/NonDeterministicRequireOrder:
|
1504
|
+
Description: 'Always sort arrays returned by Dir.glob when requiring files.'
|
1505
|
+
Enabled: true
|
1506
|
+
VersionAdded: '0.78'
|
1507
|
+
Safe: false
|
1508
|
+
|
1474
1509
|
Lint/NonLocalExitFromIterator:
|
1475
1510
|
Description: 'Do not use return in iterator to cause non-local exit.'
|
1476
1511
|
Enabled: true
|
@@ -1809,29 +1844,6 @@ Metrics/CyclomaticComplexity:
|
|
1809
1844
|
VersionAdded: '0.25'
|
1810
1845
|
Max: 6
|
1811
1846
|
|
1812
|
-
Metrics/LineLength:
|
1813
|
-
Description: 'Limit lines to 80 characters.'
|
1814
|
-
StyleGuide: '#80-character-limits'
|
1815
|
-
Enabled: true
|
1816
|
-
VersionAdded: '0.25'
|
1817
|
-
VersionChanged: '0.68'
|
1818
|
-
AutoCorrect: false
|
1819
|
-
Max: 80
|
1820
|
-
# To make it possible to copy or click on URIs in the code, we allow lines
|
1821
|
-
# containing a URI to be longer than Max.
|
1822
|
-
AllowHeredoc: true
|
1823
|
-
AllowURI: true
|
1824
|
-
URISchemes:
|
1825
|
-
- http
|
1826
|
-
- https
|
1827
|
-
# The IgnoreCopDirectives option causes the LineLength rule to ignore cop
|
1828
|
-
# directives like '# rubocop: enable ...' when calculating a line's length.
|
1829
|
-
IgnoreCopDirectives: true
|
1830
|
-
# The IgnoredPatterns option is a list of !ruby/regexp and/or string
|
1831
|
-
# elements. Strings will be converted to Regexp objects. A line that matches
|
1832
|
-
# any regular expression listed in this option will be ignored by LineLength.
|
1833
|
-
IgnoredPatterns: []
|
1834
|
-
|
1835
1847
|
Metrics/MethodLength:
|
1836
1848
|
Description: 'Avoid methods longer than 10 lines of code.'
|
1837
1849
|
StyleGuide: '#short-methods'
|
@@ -2746,7 +2758,7 @@ Style/FrozenStringLiteralComment:
|
|
2746
2758
|
to help transition to frozen string literals by default.
|
2747
2759
|
Enabled: true
|
2748
2760
|
VersionAdded: '0.36'
|
2749
|
-
VersionChanged: '0.
|
2761
|
+
VersionChanged: '0.79'
|
2750
2762
|
EnforcedStyle: always
|
2751
2763
|
SupportedStyles:
|
2752
2764
|
# `always` will always add the frozen string literal comment to a file
|
@@ -2757,6 +2769,7 @@ Style/FrozenStringLiteralComment:
|
|
2757
2769
|
# `never` will enforce that the frozen string literal comment does not
|
2758
2770
|
# exist in a file.
|
2759
2771
|
- never
|
2772
|
+
Safe: false
|
2760
2773
|
|
2761
2774
|
Style/GlobalVars:
|
2762
2775
|
Description: 'Do not introduce global variables.'
|
@@ -3842,7 +3855,7 @@ Style/TrivialAccessors:
|
|
3842
3855
|
# Commonly used in DSLs
|
3843
3856
|
AllowDSLWriters: false
|
3844
3857
|
IgnoreClassMethods: false
|
3845
|
-
|
3858
|
+
AllowedMethods:
|
3846
3859
|
- to_ary
|
3847
3860
|
- to_a
|
3848
3861
|
- to_c
|
data/lib/rubocop.rb
CHANGED
@@ -43,6 +43,7 @@ require_relative 'rubocop/ast/node/def_node'
|
|
43
43
|
require_relative 'rubocop/ast/node/defined_node'
|
44
44
|
require_relative 'rubocop/ast/node/ensure_node'
|
45
45
|
require_relative 'rubocop/ast/node/for_node'
|
46
|
+
require_relative 'rubocop/ast/node/forward_args_node'
|
46
47
|
require_relative 'rubocop/ast/node/float_node'
|
47
48
|
require_relative 'rubocop/ast/node/hash_node'
|
48
49
|
require_relative 'rubocop/ast/node/if_node'
|
@@ -123,6 +124,7 @@ require_relative 'rubocop/cop/mixin/ignored_pattern'
|
|
123
124
|
require_relative 'rubocop/cop/mixin/ignored_methods'
|
124
125
|
require_relative 'rubocop/cop/mixin/integer_node'
|
125
126
|
require_relative 'rubocop/cop/mixin/interpolation'
|
127
|
+
require_relative 'rubocop/cop/mixin/line_length_help'
|
126
128
|
require_relative 'rubocop/cop/mixin/match_range'
|
127
129
|
require_relative 'rubocop/cop/mixin/method_complexity'
|
128
130
|
require_relative 'rubocop/cop/mixin/method_preference'
|
@@ -142,6 +144,7 @@ require_relative 'rubocop/cop/mixin/percent_array'
|
|
142
144
|
require_relative 'rubocop/cop/mixin/percent_literal'
|
143
145
|
require_relative 'rubocop/cop/mixin/preceding_following_alignment'
|
144
146
|
require_relative 'rubocop/cop/mixin/preferred_delimiters'
|
147
|
+
require_relative 'rubocop/cop/mixin/rational_literal'
|
145
148
|
require_relative 'rubocop/cop/mixin/rescue_node'
|
146
149
|
require_relative 'rubocop/cop/mixin/safe_assignment'
|
147
150
|
require_relative 'rubocop/cop/mixin/space_after_punctuation'
|
@@ -211,7 +214,7 @@ require_relative 'rubocop/cop/layout/empty_lines_around_arguments'
|
|
211
214
|
require_relative 'rubocop/cop/layout/empty_lines_around_begin_body'
|
212
215
|
require_relative 'rubocop/cop/layout/empty_lines_around_block_body'
|
213
216
|
require_relative 'rubocop/cop/layout/empty_lines_around_class_body'
|
214
|
-
require_relative 'rubocop/cop/layout/empty_lines_around_exception_handling_keywords' # rubocop:disable
|
217
|
+
require_relative 'rubocop/cop/layout/empty_lines_around_exception_handling_keywords' # rubocop:disable Layout/LineLength
|
215
218
|
require_relative 'rubocop/cop/layout/empty_lines_around_method_body'
|
216
219
|
require_relative 'rubocop/cop/layout/empty_lines_around_module_body'
|
217
220
|
require_relative 'rubocop/cop/layout/empty_lines'
|
@@ -234,6 +237,7 @@ require_relative 'rubocop/cop/layout/indentation_width'
|
|
234
237
|
require_relative 'rubocop/cop/layout/initial_indentation'
|
235
238
|
require_relative 'rubocop/cop/layout/leading_comment_space'
|
236
239
|
require_relative 'rubocop/cop/layout/leading_empty_lines'
|
240
|
+
require_relative 'rubocop/cop/layout/line_length'
|
237
241
|
require_relative 'rubocop/cop/layout/multiline_array_brace_layout'
|
238
242
|
require_relative 'rubocop/cop/layout/multiline_array_line_breaks'
|
239
243
|
require_relative 'rubocop/cop/layout/multiline_assignment_layout'
|
@@ -313,6 +317,7 @@ require_relative 'rubocop/cop/lint/multiple_comparison'
|
|
313
317
|
require_relative 'rubocop/cop/lint/nested_method_definition'
|
314
318
|
require_relative 'rubocop/cop/lint/nested_percent_literal'
|
315
319
|
require_relative 'rubocop/cop/lint/next_without_accumulator'
|
320
|
+
require_relative 'rubocop/cop/lint/non_deterministic_require_order'
|
316
321
|
require_relative 'rubocop/cop/lint/non_local_exit_from_iterator'
|
317
322
|
require_relative 'rubocop/cop/lint/number_conversion'
|
318
323
|
require_relative 'rubocop/cop/lint/ordered_magic_comments'
|
@@ -364,7 +369,6 @@ require_relative 'rubocop/cop/metrics/abc_size'
|
|
364
369
|
require_relative 'rubocop/cop/metrics/block_length'
|
365
370
|
require_relative 'rubocop/cop/metrics/block_nesting'
|
366
371
|
require_relative 'rubocop/cop/metrics/class_length'
|
367
|
-
require_relative 'rubocop/cop/metrics/line_length'
|
368
372
|
require_relative 'rubocop/cop/metrics/method_length'
|
369
373
|
require_relative 'rubocop/cop/metrics/module_length'
|
370
374
|
require_relative 'rubocop/cop/metrics/parameter_lists'
|
@@ -456,7 +460,11 @@ require_relative 'rubocop/cop/style/lambda'
|
|
456
460
|
require_relative 'rubocop/cop/style/lambda_call'
|
457
461
|
require_relative 'rubocop/cop/style/line_end_concatenation'
|
458
462
|
require_relative 'rubocop/cop/style/method_call_without_args_parentheses'
|
463
|
+
# rubocop:disable Layout/LineLength
|
459
464
|
require_relative 'rubocop/cop/style/method_call_with_args_parentheses'
|
465
|
+
require_relative 'rubocop/cop/style/method_call_with_args_parentheses/omit_parentheses'
|
466
|
+
require_relative 'rubocop/cop/style/method_call_with_args_parentheses/require_parentheses'
|
467
|
+
# rubocop:enable Layout/LineLength
|
460
468
|
require_relative 'rubocop/cop/style/method_called_on_do_end_block'
|
461
469
|
require_relative 'rubocop/cop/style/method_def_parentheses'
|
462
470
|
require_relative 'rubocop/cop/style/method_missing_super'
|
@@ -613,4 +621,5 @@ require_relative 'rubocop/cli/command/show_cops'
|
|
613
621
|
require_relative 'rubocop/cli/command/version'
|
614
622
|
require_relative 'rubocop/options'
|
615
623
|
require_relative 'rubocop/remote_config'
|
624
|
+
require_relative 'rubocop/target_ruby'
|
616
625
|
require_relative 'rubocop/yaml_duplication_checker'
|
data/lib/rubocop/ast/builder.rb
CHANGED
@@ -15,48 +15,49 @@ module RuboCop
|
|
15
15
|
# root_node = parser.parse(buffer)
|
16
16
|
class Builder < Parser::Builders::Default
|
17
17
|
NODE_MAP = {
|
18
|
-
and:
|
19
|
-
alias:
|
20
|
-
args:
|
21
|
-
array:
|
22
|
-
block:
|
23
|
-
break:
|
24
|
-
case:
|
25
|
-
class:
|
26
|
-
def:
|
27
|
-
defined?:
|
28
|
-
defs:
|
29
|
-
ensure:
|
30
|
-
for:
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
18
|
+
and: AndNode,
|
19
|
+
alias: AliasNode,
|
20
|
+
args: ArgsNode,
|
21
|
+
array: ArrayNode,
|
22
|
+
block: BlockNode,
|
23
|
+
break: BreakNode,
|
24
|
+
case: CaseNode,
|
25
|
+
class: ClassNode,
|
26
|
+
def: DefNode,
|
27
|
+
defined?: DefinedNode,
|
28
|
+
defs: DefNode,
|
29
|
+
ensure: EnsureNode,
|
30
|
+
for: ForNode,
|
31
|
+
forward_args: ForwardArgsNode,
|
32
|
+
float: FloatNode,
|
33
|
+
hash: HashNode,
|
34
|
+
if: IfNode,
|
35
|
+
int: IntNode,
|
36
|
+
irange: RangeNode,
|
37
|
+
erange: RangeNode,
|
38
|
+
kwsplat: KeywordSplatNode,
|
39
|
+
module: ModuleNode,
|
40
|
+
or: OrNode,
|
41
|
+
pair: PairNode,
|
42
|
+
regexp: RegexpNode,
|
43
|
+
resbody: ResbodyNode,
|
44
|
+
retry: RetryNode,
|
45
|
+
return: ReturnNode,
|
46
|
+
csend: SendNode,
|
47
|
+
send: SendNode,
|
48
|
+
str: StrNode,
|
49
|
+
dstr: StrNode,
|
50
|
+
xstr: StrNode,
|
51
|
+
sclass: SelfClassNode,
|
52
|
+
super: SuperNode,
|
53
|
+
zsuper: SuperNode,
|
54
|
+
sym: SymbolNode,
|
55
|
+
until: UntilNode,
|
56
|
+
until_post: UntilNode,
|
57
|
+
when: WhenNode,
|
58
|
+
while: WhileNode,
|
59
|
+
while_post: WhileNode,
|
60
|
+
yield: YieldNode
|
60
61
|
}.freeze
|
61
62
|
|
62
63
|
# Generates {Node} from the given information.
|
@@ -16,6 +16,17 @@ module RuboCop
|
|
16
16
|
method?(:initialize) || assignment_method?
|
17
17
|
end
|
18
18
|
|
19
|
+
# Checks whether this method definition node forwards its arguments
|
20
|
+
# as per the feature added in Ruby 2.7.
|
21
|
+
#
|
22
|
+
# @note This is written in a way that may support lead arguments
|
23
|
+
# which are rumored to be added in a later version of Ruby.
|
24
|
+
#
|
25
|
+
# @return [Boolean] whether the `def` node uses argument forwarding
|
26
|
+
def argument_forwarding?
|
27
|
+
arguments.any?(&:forward_args_type?)
|
28
|
+
end
|
29
|
+
|
19
30
|
# The name of the defined method as a symbol.
|
20
31
|
#
|
21
32
|
# @return [Symbol] the name of the defined method
|
@@ -0,0 +1,18 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module RuboCop
|
4
|
+
module AST
|
5
|
+
# A node extension for `forward-args` nodes. This will be used in place
|
6
|
+
# of a plain node when the builder constructs the AST, making its methods
|
7
|
+
# available to all `forward-args` nodes within RuboCop.
|
8
|
+
class ForwardArgsNode < Node
|
9
|
+
include CollectionNode
|
10
|
+
|
11
|
+
# Node wraps itself in an array to be compatible with other
|
12
|
+
# enumerable argument types.
|
13
|
+
def to_a
|
14
|
+
[self]
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
@@ -1,5 +1,6 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
+
# rubocop:disable Metrics/ModuleLength
|
3
4
|
module RuboCop
|
4
5
|
module AST
|
5
6
|
# Provides methods for traversing an AST.
|
@@ -18,15 +19,21 @@ module RuboCop
|
|
18
19
|
rational str sym regopt self lvar
|
19
20
|
ivar cvar gvar nth_ref back_ref cbase
|
20
21
|
arg restarg blockarg shadowarg
|
21
|
-
kwrestarg zsuper lambda redo retry
|
22
|
+
kwrestarg zsuper lambda redo retry
|
23
|
+
forward_args forwarded_args
|
24
|
+
match_var match_nil_pattern].freeze
|
22
25
|
ONE_CHILD_NODE = %i[splat kwsplat block_pass not break next
|
23
26
|
preexe postexe match_current_line defined?
|
24
|
-
arg_expr
|
27
|
+
arg_expr pin match_rest if_guard unless_guard
|
28
|
+
match_with_trailing_comma].freeze
|
25
29
|
MANY_CHILD_NODES = %i[dstr dsym xstr regexp array hash pair
|
26
30
|
mlhs masgn or_asgn and_asgn
|
27
31
|
undef alias args super yield or and
|
28
32
|
while_post until_post iflipflop eflipflop
|
29
|
-
match_with_lvasgn begin kwbegin return
|
33
|
+
match_with_lvasgn begin kwbegin return
|
34
|
+
in_match case_match in_pattern match_alt
|
35
|
+
match_as array_pattern array_pattern_with_tail
|
36
|
+
hash_pattern const_pattern].freeze
|
30
37
|
SECOND_CHILD_ONLY = %i[lvasgn ivasgn cvasgn gvasgn optarg kwarg
|
31
38
|
kwoptarg].freeze
|
32
39
|
|
@@ -181,3 +188,4 @@ module RuboCop
|
|
181
188
|
end
|
182
189
|
end
|
183
190
|
end
|
191
|
+
# rubocop:enable Metrics/ModuleLength
|
@@ -7,13 +7,13 @@ module RuboCop
|
|
7
7
|
class AutoGenerateConfig < Base
|
8
8
|
self.command_name = :auto_gen_config
|
9
9
|
|
10
|
-
PHASE_1 = 'Phase 1 of 2: run
|
10
|
+
PHASE_1 = 'Phase 1 of 2: run Layout/LineLength cop'
|
11
11
|
PHASE_2 = 'Phase 2 of 2: run all cops'
|
12
12
|
|
13
13
|
PHASE_1_OVERRIDDEN =
|
14
|
-
'(skipped because the default
|
14
|
+
'(skipped because the default Layout/LineLength:Max is overridden)'
|
15
15
|
PHASE_1_DISABLED =
|
16
|
-
'(skipped because
|
16
|
+
'(skipped because Layout/LineLength is disabled)'
|
17
17
|
|
18
18
|
def run
|
19
19
|
add_formatter
|
@@ -54,15 +54,15 @@ module RuboCop
|
|
54
54
|
end
|
55
55
|
|
56
56
|
def line_length_cop(config)
|
57
|
-
config.for_cop('
|
57
|
+
config.for_cop('Layout/LineLength')
|
58
58
|
end
|
59
59
|
|
60
|
-
# Do an initial run with only
|
61
|
-
# depend on
|
60
|
+
# Do an initial run with only Layout/LineLength so that cops that
|
61
|
+
# depend on Layout/LineLength:Max get the correct value for that
|
62
62
|
# parameter.
|
63
63
|
def run_line_length_cop
|
64
64
|
puts Rainbow(PHASE_1).yellow
|
65
|
-
@options[:only] = ['
|
65
|
+
@options[:only] = ['Layout/LineLength']
|
66
66
|
execute_runner
|
67
67
|
@options.delete(:only)
|
68
68
|
@config_store = ConfigStore.new
|
@@ -8,6 +8,13 @@ module RuboCop
|
|
8
8
|
class ShowCops < Base
|
9
9
|
self.command_name = :show_cops
|
10
10
|
|
11
|
+
def initialize(env)
|
12
|
+
super
|
13
|
+
|
14
|
+
# Load the configs so the require()s are done for custom cops
|
15
|
+
@config = @config_store.for(Dir.pwd)
|
16
|
+
end
|
17
|
+
|
11
18
|
def run
|
12
19
|
print_available_cops
|
13
20
|
end
|
@@ -15,8 +22,6 @@ module RuboCop
|
|
15
22
|
private
|
16
23
|
|
17
24
|
def print_available_cops
|
18
|
-
# Load the configs so the require()s are done for custom cops
|
19
|
-
@config_store.for(Dir.pwd)
|
20
25
|
registry = Cop::Cop.registry
|
21
26
|
show_all = @options[:show_cops].empty?
|
22
27
|
|
@@ -46,7 +51,9 @@ module RuboCop
|
|
46
51
|
|
47
52
|
def print_cop_details(cops)
|
48
53
|
cops.each do |cop|
|
49
|
-
|
54
|
+
if cop.new(@config).support_autocorrect?
|
55
|
+
puts '# Supports --auto-correct'
|
56
|
+
end
|
50
57
|
puts "#{cop.cop_name}:"
|
51
58
|
puts config_lines(cop)
|
52
59
|
puts
|
@@ -64,7 +71,7 @@ module RuboCop
|
|
64
71
|
end
|
65
72
|
|
66
73
|
def config_lines(cop)
|
67
|
-
cnf = @
|
74
|
+
cnf = @config.for_cop(cop)
|
68
75
|
cnf.to_yaml.lines.to_a.drop(1).map { |line| ' ' + line }
|
69
76
|
end
|
70
77
|
end
|