rubocop 0.75.0 → 0.76.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 +53 -54
- data/lib/rubocop.rb +10 -9
- data/lib/rubocop/ast/builder.rb +1 -0
- data/lib/rubocop/ast/node.rb +4 -0
- data/lib/rubocop/ast/node/return_node.rb +24 -0
- data/lib/rubocop/cli.rb +7 -4
- data/lib/rubocop/comment_config.rb +2 -2
- data/lib/rubocop/config.rb +7 -0
- data/lib/rubocop/config_loader.rb +1 -1
- data/lib/rubocop/config_loader_resolver.rb +2 -1
- data/lib/rubocop/config_obsoletion.rb +9 -0
- data/lib/rubocop/config_validator.rb +24 -15
- data/lib/rubocop/cop/commissioner.rb +15 -7
- data/lib/rubocop/cop/cop.rb +10 -6
- data/lib/rubocop/cop/corrector.rb +8 -7
- data/lib/rubocop/cop/correctors/percent_literal_corrector.rb +1 -1
- data/lib/rubocop/cop/generator/configuration_injector.rb +1 -1
- data/lib/rubocop/cop/layout/align_hash.rb +6 -2
- data/lib/rubocop/cop/layout/comment_indentation.rb +10 -13
- data/lib/rubocop/cop/layout/empty_comment.rb +7 -16
- data/lib/rubocop/cop/layout/empty_line_after_guard_clause.rb +22 -7
- data/lib/rubocop/cop/layout/empty_line_after_magic_comment.rb +2 -2
- data/lib/rubocop/cop/layout/empty_lines_around_class_body.rb +2 -2
- data/lib/rubocop/cop/layout/end_of_line.rb +8 -3
- data/lib/rubocop/cop/layout/indent_assignment.rb +2 -1
- data/lib/rubocop/cop/layout/indent_first_argument.rb +9 -7
- data/lib/rubocop/cop/layout/indent_first_hash_element.rb +1 -1
- data/lib/rubocop/cop/layout/multiline_assignment_layout.rb +1 -1
- data/lib/rubocop/cop/layout/rescue_ensure_alignment.rb +2 -0
- data/lib/rubocop/cop/layout/space_in_lambda_literal.rb +9 -7
- data/lib/rubocop/cop/layout/space_inside_array_literal_brackets.rb +7 -4
- data/lib/rubocop/cop/layout/space_inside_parens.rb +6 -6
- data/lib/rubocop/cop/layout/trailing_whitespace.rb +18 -2
- data/lib/rubocop/cop/lint/erb_new_arguments.rb +9 -8
- data/lib/rubocop/cop/lint/missing_cop_enable_directive.rb +2 -2
- data/lib/rubocop/cop/lint/{unneeded_cop_disable_directive.rb → redundant_cop_disable_directive.rb} +23 -23
- data/lib/rubocop/cop/lint/{unneeded_cop_enable_directive.rb → redundant_cop_enable_directive.rb} +6 -8
- data/lib/rubocop/cop/lint/{unneeded_require_statement.rb → redundant_require_statement.rb} +1 -1
- data/lib/rubocop/cop/lint/{unneeded_splat_expansion.rb → redundant_splat_expansion.rb} +5 -5
- data/lib/rubocop/cop/lint/safe_navigation_chain.rb +5 -6
- data/lib/rubocop/cop/lint/unused_block_argument.rb +22 -6
- data/lib/rubocop/cop/lint/unused_method_argument.rb +23 -5
- data/lib/rubocop/cop/lint/void.rb +7 -26
- data/lib/rubocop/cop/metrics/abc_size.rb +1 -1
- data/lib/rubocop/cop/metrics/line_length.rb +1 -4
- data/lib/rubocop/cop/metrics/utils/abc_size_calculator.rb +23 -6
- data/lib/rubocop/cop/mixin/method_complexity.rb +2 -1
- data/lib/rubocop/cop/mixin/statement_modifier.rb +5 -2
- data/lib/rubocop/cop/mixin/trailing_comma.rb +8 -6
- data/lib/rubocop/cop/naming/file_name.rb +12 -5
- data/lib/rubocop/cop/registry.rb +1 -1
- data/lib/rubocop/cop/style/attr.rb +2 -2
- data/lib/rubocop/cop/style/braces_around_hash_parameters.rb +6 -6
- data/lib/rubocop/cop/style/comment_annotation.rb +5 -5
- data/lib/rubocop/cop/style/copyright.rb +11 -7
- data/lib/rubocop/cop/style/documentation_method.rb +44 -0
- data/lib/rubocop/cop/style/double_cop_disable_directive.rb +2 -2
- data/lib/rubocop/cop/style/empty_case_condition.rb +2 -2
- data/lib/rubocop/cop/style/empty_literal.rb +2 -2
- data/lib/rubocop/cop/style/empty_method.rb +5 -5
- data/lib/rubocop/cop/style/expand_path_arguments.rb +1 -1
- data/lib/rubocop/cop/style/format_string.rb +10 -7
- data/lib/rubocop/cop/style/format_string_token.rb +15 -34
- data/lib/rubocop/cop/style/frozen_string_literal_comment.rb +10 -0
- data/lib/rubocop/cop/style/hash_syntax.rb +2 -2
- data/lib/rubocop/cop/style/if_unless_modifier.rb +9 -2
- data/lib/rubocop/cop/style/infinite_loop.rb +4 -3
- data/lib/rubocop/cop/style/inverse_methods.rb +19 -13
- data/lib/rubocop/cop/style/line_end_concatenation.rb +14 -10
- data/lib/rubocop/cop/style/method_call_with_args_parentheses.rb +20 -20
- data/lib/rubocop/cop/style/method_def_parentheses.rb +17 -9
- data/lib/rubocop/cop/style/multiline_when_then.rb +1 -1
- data/lib/rubocop/cop/style/nested_modifier.rb +4 -2
- data/lib/rubocop/cop/style/non_nil_check.rb +21 -9
- data/lib/rubocop/cop/style/{unneeded_capital_w.rb → redundant_capital_w.rb} +1 -1
- data/lib/rubocop/cop/style/{unneeded_condition.rb → redundant_condition.rb} +3 -3
- data/lib/rubocop/cop/style/{unneeded_interpolation.rb → redundant_interpolation.rb} +1 -1
- data/lib/rubocop/cop/style/{unneeded_percent_q.rb → redundant_percent_q.rb} +1 -1
- data/lib/rubocop/cop/style/redundant_return.rb +37 -21
- data/lib/rubocop/cop/style/{unneeded_sort.rb → redundant_sort.rb} +4 -4
- data/lib/rubocop/cop/style/safe_navigation.rb +19 -8
- data/lib/rubocop/cop/style/semicolon.rb +13 -2
- data/lib/rubocop/cop/style/special_global_vars.rb +5 -7
- data/lib/rubocop/cop/util.rb +1 -1
- data/lib/rubocop/cop/utils/format_string.rb +10 -18
- data/lib/rubocop/cop/variable_force.rb +7 -5
- data/lib/rubocop/formatter/clang_style_formatter.rb +8 -3
- data/lib/rubocop/formatter/emacs_style_formatter.rb +22 -12
- data/lib/rubocop/formatter/file_list_formatter.rb +1 -1
- data/lib/rubocop/formatter/formatter_set.rb +16 -16
- data/lib/rubocop/formatter/pacman_formatter.rb +3 -3
- data/lib/rubocop/formatter/simple_text_formatter.rb +7 -3
- data/lib/rubocop/formatter/tap_formatter.rb +8 -3
- data/lib/rubocop/node_pattern.rb +3 -1
- data/lib/rubocop/options.rb +16 -22
- data/lib/rubocop/result_cache.rb +1 -1
- data/lib/rubocop/runner.rb +32 -27
- data/lib/rubocop/target_finder.rb +12 -6
- data/lib/rubocop/version.rb +1 -1
- metadata +12 -11
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: bd5622915d19930481b80ac553a18b3500306bca922491f83290451a3cd267c9
|
4
|
+
data.tar.gz: 73002e0e186887f12add4e88154bf2510280d531ecd66f73b9eb57fb842d7f2a
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 7a866f9130e0388351acd83aee37bf7a15f1e64c94c51a3d58f3c439b90cbffb5a173837b48aae3ba86ab8005bbe73e6b088c905000910c4cf523395c8887b39
|
7
|
+
data.tar.gz: e8c2655aa3c419850da067790d456ed96c67bb43eee41d4cd9389185dbb9965329f405a2146949062daf57cd15a8e0d375b00df4df09fbc03fd06d9369f213ce
|
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.76.0', require: false
|
57
57
|
```
|
58
58
|
|
59
59
|
## Quickstart
|
data/config/default.yml
CHANGED
@@ -1512,6 +1512,29 @@ Lint/RandOne:
|
|
1512
1512
|
Enabled: true
|
1513
1513
|
VersionAdded: '0.36'
|
1514
1514
|
|
1515
|
+
Lint/RedundantCopDisableDirective:
|
1516
|
+
Description: >-
|
1517
|
+
Checks for rubocop:disable comments that can be removed.
|
1518
|
+
Note: this cop is not disabled when disabling all cops.
|
1519
|
+
It must be explicitly disabled.
|
1520
|
+
Enabled: true
|
1521
|
+
VersionAdded: '0.76'
|
1522
|
+
|
1523
|
+
Lint/RedundantCopEnableDirective:
|
1524
|
+
Description: Checks for rubocop:enable comments that can be removed.
|
1525
|
+
Enabled: true
|
1526
|
+
VersionAdded: '0.76'
|
1527
|
+
|
1528
|
+
Lint/RedundantRequireStatement:
|
1529
|
+
Description: 'Checks for unnecessary `require` statement.'
|
1530
|
+
Enabled: true
|
1531
|
+
VersionAdded: '0.76'
|
1532
|
+
|
1533
|
+
Lint/RedundantSplatExpansion:
|
1534
|
+
Description: 'Checks for splat unnecessarily being called on literals.'
|
1535
|
+
Enabled: true
|
1536
|
+
VersionChanged: '0.76'
|
1537
|
+
|
1515
1538
|
Lint/RedundantWithIndex:
|
1516
1539
|
Description: 'Checks for redundant `with_index`.'
|
1517
1540
|
Enabled: true
|
@@ -1645,30 +1668,6 @@ Lint/UnifiedInteger:
|
|
1645
1668
|
Enabled: true
|
1646
1669
|
VersionAdded: '0.43'
|
1647
1670
|
|
1648
|
-
Lint/UnneededCopDisableDirective:
|
1649
|
-
Description: >-
|
1650
|
-
Checks for rubocop:disable comments that can be removed.
|
1651
|
-
Note: this cop is not disabled when disabling all cops.
|
1652
|
-
It must be explicitly disabled.
|
1653
|
-
Enabled: true
|
1654
|
-
VersionAdded: '0.53'
|
1655
|
-
|
1656
|
-
Lint/UnneededCopEnableDirective:
|
1657
|
-
Description: Checks for rubocop:enable comments that can be removed.
|
1658
|
-
Enabled: true
|
1659
|
-
VersionAdded: '0.53'
|
1660
|
-
|
1661
|
-
Lint/UnneededRequireStatement:
|
1662
|
-
Description: 'Checks for unnecessary `require` statement.'
|
1663
|
-
Enabled: true
|
1664
|
-
VersionAdded: '0.51'
|
1665
|
-
|
1666
|
-
Lint/UnneededSplatExpansion:
|
1667
|
-
Description: 'Checks for splat unnecessarily being called on literals.'
|
1668
|
-
Enabled: true
|
1669
|
-
VersionAdded: '0.43'
|
1670
|
-
VersionChanged: '0.74'
|
1671
|
-
|
1672
1671
|
Lint/UnreachableCode:
|
1673
1672
|
Description: 'Unreachable code.'
|
1674
1673
|
Enabled: true
|
@@ -1815,7 +1814,7 @@ Metrics/LineLength:
|
|
1815
1814
|
- https
|
1816
1815
|
# The IgnoreCopDirectives option causes the LineLength rule to ignore cop
|
1817
1816
|
# directives like '# rubocop: enable ...' when calculating a line's length.
|
1818
|
-
IgnoreCopDirectives:
|
1817
|
+
IgnoreCopDirectives: true
|
1819
1818
|
# The IgnoredPatterns option is a list of !ruby/regexp and/or string
|
1820
1819
|
# elements. Strings will be converted to Regexp objects. A line that matches
|
1821
1820
|
# any regular expression listed in this option will be ignored by LineLength.
|
@@ -2076,6 +2075,7 @@ Naming/UncommunicativeMethodParamName:
|
|
2076
2075
|
- at
|
2077
2076
|
- ip
|
2078
2077
|
- db
|
2078
|
+
- os
|
2079
2079
|
# Blacklisted names that will register an offense
|
2080
2080
|
ForbiddenNames: []
|
2081
2081
|
|
@@ -3402,6 +3402,16 @@ Style/RedundantBegin:
|
|
3402
3402
|
VersionAdded: '0.10'
|
3403
3403
|
VersionChanged: '0.21'
|
3404
3404
|
|
3405
|
+
Style/RedundantCapitalW:
|
3406
|
+
Description: 'Checks for %W when interpolation is not needed.'
|
3407
|
+
Enabled: true
|
3408
|
+
VersionAdded: '0.76'
|
3409
|
+
|
3410
|
+
Style/RedundantCondition:
|
3411
|
+
Description: 'Checks for unnecessary conditional expressions.'
|
3412
|
+
Enabled: true
|
3413
|
+
VersionAdded: '0.76'
|
3414
|
+
|
3405
3415
|
Style/RedundantConditional:
|
3406
3416
|
Description: "Don't return true/false from a conditional."
|
3407
3417
|
Enabled: true
|
@@ -3420,11 +3430,22 @@ Style/RedundantFreeze:
|
|
3420
3430
|
VersionAdded: '0.34'
|
3421
3431
|
VersionChanged: '0.66'
|
3422
3432
|
|
3433
|
+
Style/RedundantInterpolation:
|
3434
|
+
Description: 'Checks for strings that are just an interpolated expression.'
|
3435
|
+
Enabled: true
|
3436
|
+
VersionAdded: '0.76'
|
3437
|
+
|
3423
3438
|
Style/RedundantParentheses:
|
3424
3439
|
Description: "Checks for parentheses that seem not to serve any purpose."
|
3425
3440
|
Enabled: true
|
3426
3441
|
VersionAdded: '0.36'
|
3427
3442
|
|
3443
|
+
Style/RedundantPercentQ:
|
3444
|
+
Description: 'Checks for %q/%Q when single quotes or double quotes would do.'
|
3445
|
+
StyleGuide: '#percent-q'
|
3446
|
+
Enabled: true
|
3447
|
+
VersionAdded: '0.76'
|
3448
|
+
|
3428
3449
|
Style/RedundantReturn:
|
3429
3450
|
Description: "Don't use return where it's not required."
|
3430
3451
|
StyleGuide: '#no-explicit-return'
|
@@ -3441,6 +3462,13 @@ Style/RedundantSelf:
|
|
3441
3462
|
VersionAdded: '0.10'
|
3442
3463
|
VersionChanged: '0.13'
|
3443
3464
|
|
3465
|
+
Style/RedundantSort:
|
3466
|
+
Description: >-
|
3467
|
+
Use `min` instead of `sort.first`,
|
3468
|
+
`max_by` instead of `sort_by...last`, etc.
|
3469
|
+
Enabled: true
|
3470
|
+
VersionAdded: '0.76'
|
3471
|
+
|
3444
3472
|
Style/RedundantSortBy:
|
3445
3473
|
Description: 'Use `sort` instead of `sort_by { |x| x }`.'
|
3446
3474
|
Enabled: true
|
@@ -3828,35 +3856,6 @@ Style/UnlessElse:
|
|
3828
3856
|
Enabled: true
|
3829
3857
|
VersionAdded: '0.9'
|
3830
3858
|
|
3831
|
-
Style/UnneededCapitalW:
|
3832
|
-
Description: 'Checks for %W when interpolation is not needed.'
|
3833
|
-
Enabled: true
|
3834
|
-
VersionAdded: '0.21'
|
3835
|
-
VersionChanged: '0.24'
|
3836
|
-
|
3837
|
-
Style/UnneededCondition:
|
3838
|
-
Description: 'Checks for unnecessary conditional expressions.'
|
3839
|
-
Enabled: true
|
3840
|
-
VersionAdded: '0.57'
|
3841
|
-
|
3842
|
-
Style/UnneededInterpolation:
|
3843
|
-
Description: 'Checks for strings that are just an interpolated expression.'
|
3844
|
-
Enabled: true
|
3845
|
-
VersionAdded: '0.36'
|
3846
|
-
|
3847
|
-
Style/UnneededPercentQ:
|
3848
|
-
Description: 'Checks for %q/%Q when single quotes or double quotes would do.'
|
3849
|
-
StyleGuide: '#percent-q'
|
3850
|
-
Enabled: true
|
3851
|
-
VersionAdded: '0.24'
|
3852
|
-
|
3853
|
-
Style/UnneededSort:
|
3854
|
-
Description: >-
|
3855
|
-
Use `min` instead of `sort.first`,
|
3856
|
-
`max_by` instead of `sort_by...last`, etc.
|
3857
|
-
Enabled: true
|
3858
|
-
VersionAdded: '0.55'
|
3859
|
-
|
3860
3859
|
Style/UnpackFirst:
|
3861
3860
|
Description: >-
|
3862
3861
|
Checks for accessing the first element of `String#unpack`
|
data/lib/rubocop.rb
CHANGED
@@ -55,6 +55,7 @@ require_relative 'rubocop/ast/node/range_node'
|
|
55
55
|
require_relative 'rubocop/ast/node/regexp_node'
|
56
56
|
require_relative 'rubocop/ast/node/resbody_node'
|
57
57
|
require_relative 'rubocop/ast/node/retry_node'
|
58
|
+
require_relative 'rubocop/ast/node/return_node'
|
58
59
|
require_relative 'rubocop/ast/node/self_class_node'
|
59
60
|
require_relative 'rubocop/ast/node/send_node'
|
60
61
|
require_relative 'rubocop/ast/node/str_node'
|
@@ -321,6 +322,10 @@ require_relative 'rubocop/cop/lint/parentheses_as_grouped_expression'
|
|
321
322
|
require_relative 'rubocop/cop/lint/percent_string_array'
|
322
323
|
require_relative 'rubocop/cop/lint/percent_symbol_array'
|
323
324
|
require_relative 'rubocop/cop/lint/rand_one'
|
325
|
+
require_relative 'rubocop/cop/lint/redundant_cop_disable_directive'
|
326
|
+
require_relative 'rubocop/cop/lint/redundant_cop_enable_directive'
|
327
|
+
require_relative 'rubocop/cop/lint/redundant_require_statement'
|
328
|
+
require_relative 'rubocop/cop/lint/redundant_splat_expansion'
|
324
329
|
require_relative 'rubocop/cop/lint/redundant_with_index'
|
325
330
|
require_relative 'rubocop/cop/lint/redundant_with_object'
|
326
331
|
require_relative 'rubocop/cop/lint/regexp_as_condition'
|
@@ -341,10 +346,6 @@ require_relative 'rubocop/cop/lint/syntax'
|
|
341
346
|
require_relative 'rubocop/cop/lint/to_json'
|
342
347
|
require_relative 'rubocop/cop/lint/underscore_prefixed_variable_name'
|
343
348
|
require_relative 'rubocop/cop/lint/unified_integer'
|
344
|
-
require_relative 'rubocop/cop/lint/unneeded_cop_disable_directive'
|
345
|
-
require_relative 'rubocop/cop/lint/unneeded_cop_enable_directive'
|
346
|
-
require_relative 'rubocop/cop/lint/unneeded_require_statement'
|
347
|
-
require_relative 'rubocop/cop/lint/unneeded_splat_expansion'
|
348
349
|
require_relative 'rubocop/cop/lint/unreachable_code'
|
349
350
|
require_relative 'rubocop/cop/lint/unused_block_argument'
|
350
351
|
require_relative 'rubocop/cop/lint/unused_method_argument'
|
@@ -502,12 +503,17 @@ require_relative 'rubocop/cop/style/proc'
|
|
502
503
|
require_relative 'rubocop/cop/style/raise_args'
|
503
504
|
require_relative 'rubocop/cop/style/random_with_offset'
|
504
505
|
require_relative 'rubocop/cop/style/redundant_begin'
|
506
|
+
require_relative 'rubocop/cop/style/redundant_capital_w'
|
507
|
+
require_relative 'rubocop/cop/style/redundant_condition'
|
505
508
|
require_relative 'rubocop/cop/style/redundant_conditional'
|
506
509
|
require_relative 'rubocop/cop/style/redundant_exception'
|
507
510
|
require_relative 'rubocop/cop/style/redundant_freeze'
|
511
|
+
require_relative 'rubocop/cop/style/redundant_interpolation'
|
508
512
|
require_relative 'rubocop/cop/style/redundant_parentheses'
|
513
|
+
require_relative 'rubocop/cop/style/redundant_percent_q'
|
509
514
|
require_relative 'rubocop/cop/style/redundant_return'
|
510
515
|
require_relative 'rubocop/cop/style/redundant_self'
|
516
|
+
require_relative 'rubocop/cop/style/redundant_sort'
|
511
517
|
require_relative 'rubocop/cop/style/redundant_sort_by'
|
512
518
|
require_relative 'rubocop/cop/style/regexp_literal'
|
513
519
|
require_relative 'rubocop/cop/style/rescue_modifier'
|
@@ -544,11 +550,6 @@ require_relative 'rubocop/cop/style/trailing_method_end_statement'
|
|
544
550
|
require_relative 'rubocop/cop/style/trailing_underscore_variable'
|
545
551
|
require_relative 'rubocop/cop/style/trivial_accessors'
|
546
552
|
require_relative 'rubocop/cop/style/unless_else'
|
547
|
-
require_relative 'rubocop/cop/style/unneeded_capital_w'
|
548
|
-
require_relative 'rubocop/cop/style/unneeded_condition'
|
549
|
-
require_relative 'rubocop/cop/style/unneeded_interpolation'
|
550
|
-
require_relative 'rubocop/cop/style/unneeded_percent_q'
|
551
|
-
require_relative 'rubocop/cop/style/unneeded_sort'
|
552
553
|
require_relative 'rubocop/cop/style/unpack_first'
|
553
554
|
require_relative 'rubocop/cop/style/variable_interpolation'
|
554
555
|
require_relative 'rubocop/cop/style/when_then'
|
data/lib/rubocop/ast/builder.rb
CHANGED
data/lib/rubocop/ast/node.rb
CHANGED
@@ -0,0 +1,24 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module RuboCop
|
4
|
+
module AST
|
5
|
+
# A node extension for `return` nodes. This will be used in place of a
|
6
|
+
# plain node when the builder constructs the AST, making its methods
|
7
|
+
# available to all `return` nodes within RuboCop.
|
8
|
+
class ReturnNode < Node
|
9
|
+
include MethodDispatchNode
|
10
|
+
include ParameterizedNode
|
11
|
+
|
12
|
+
# Returns the arguments of the `return`.
|
13
|
+
#
|
14
|
+
# @return [Array] The arguments of the `return`.
|
15
|
+
def arguments
|
16
|
+
if node_parts.one? && node_parts.first.begin_type?
|
17
|
+
node_parts.first.children
|
18
|
+
else
|
19
|
+
node_parts
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
data/lib/rubocop/cli.rb
CHANGED
@@ -83,18 +83,21 @@ module RuboCop
|
|
83
83
|
|
84
84
|
def maybe_run_line_length_cop(paths)
|
85
85
|
if !line_length_enabled?(@config_store.for(Dir.pwd))
|
86
|
-
|
87
|
-
''
|
86
|
+
skip_line_length_cop(PHASE_1_DISABLED)
|
88
87
|
elsif !same_max_line_length?(
|
89
88
|
@config_store.for(Dir.pwd), ConfigLoader.default_configuration
|
90
89
|
)
|
91
|
-
|
92
|
-
''
|
90
|
+
skip_line_length_cop(PHASE_1_OVERRIDDEN)
|
93
91
|
else
|
94
92
|
run_line_length_cop_auto_gen_config(paths)
|
95
93
|
end
|
96
94
|
end
|
97
95
|
|
96
|
+
def skip_line_length_cop(reason)
|
97
|
+
puts Rainbow("#{PHASE_1} #{reason}").yellow
|
98
|
+
''
|
99
|
+
end
|
100
|
+
|
98
101
|
def line_length_enabled?(config)
|
99
102
|
line_length_cop(config)['Enabled']
|
100
103
|
end
|
@@ -4,7 +4,7 @@ module RuboCop
|
|
4
4
|
# This class parses the special `rubocop:disable` comments in a source
|
5
5
|
# and provides a way to check if each cop is enabled at arbitrary line.
|
6
6
|
class CommentConfig
|
7
|
-
|
7
|
+
REDUNDANT_DISABLE = 'Lint/RedundantCopDisableDirective'
|
8
8
|
|
9
9
|
COP_NAME_PATTERN = '([A-Z]\w+/)?(?:[A-Z]\w+)'
|
10
10
|
COP_NAMES_PATTERN = "(?:#{COP_NAME_PATTERN} , )*#{COP_NAME_PATTERN}"
|
@@ -152,7 +152,7 @@ module RuboCop
|
|
152
152
|
end
|
153
153
|
|
154
154
|
def all_cop_names
|
155
|
-
@all_cop_names ||= Cop::Cop.registry.names - [
|
155
|
+
@all_cop_names ||= Cop::Cop.registry.names - [REDUNDANT_DISABLE]
|
156
156
|
end
|
157
157
|
|
158
158
|
def comment_only_line?(line_number)
|
data/lib/rubocop/config.rb
CHANGED
@@ -53,6 +53,13 @@ module RuboCop
|
|
53
53
|
@signature ||= Digest::SHA1.hexdigest(to_s)
|
54
54
|
end
|
55
55
|
|
56
|
+
# True if this is a config file that is shipped with RuboCop
|
57
|
+
def internal?
|
58
|
+
base_config_path = File.expand_path(File.join(ConfigLoader::RUBOCOP_HOME,
|
59
|
+
'config'))
|
60
|
+
File.expand_path(loaded_path).start_with?(base_config_path)
|
61
|
+
end
|
62
|
+
|
56
63
|
def make_excludes_absolute
|
57
64
|
each_key do |key|
|
58
65
|
@validator.validate_section_presence(key)
|
@@ -46,7 +46,7 @@ module RuboCop
|
|
46
46
|
|
47
47
|
add_missing_namespaces(path, hash)
|
48
48
|
|
49
|
-
resolver.resolve_inheritance_from_gems(hash
|
49
|
+
resolver.resolve_inheritance_from_gems(hash)
|
50
50
|
resolver.resolve_inheritance(path, hash, file, debug?)
|
51
51
|
|
52
52
|
hash.delete('inherit_from')
|
@@ -35,7 +35,8 @@ module RuboCop
|
|
35
35
|
end
|
36
36
|
end
|
37
37
|
|
38
|
-
def resolve_inheritance_from_gems(hash
|
38
|
+
def resolve_inheritance_from_gems(hash)
|
39
|
+
gems = hash.delete('inherit_gem')
|
39
40
|
(gems || {}).each_pair do |gem_name, config_path|
|
40
41
|
if gem_name == 'rubocop'
|
41
42
|
raise ArgumentError,
|
@@ -4,10 +4,19 @@ module RuboCop
|
|
4
4
|
# This class handles obsolete configuration.
|
5
5
|
class ConfigObsoletion
|
6
6
|
RENAMED_COPS = {
|
7
|
+
'Lint/UnneededCopDisableDirective' => 'Lint/RedundantCopDisableDirective',
|
8
|
+
'Lint/UnneededCopEnableDirective' => 'Lint/RedundantCopEnableDirective',
|
9
|
+
'Lint/UnneededRequireStatement' => 'Lint/RedundantRequireStatement',
|
10
|
+
'Lint/UnneededSplatExpansion' => 'Lint/RedundantSplatExpansion',
|
7
11
|
'Style/SingleSpaceBeforeFirstArg' => 'Layout/SpaceBeforeFirstArg',
|
8
12
|
'Style/MethodCallParentheses' => 'Style/MethodCallWithoutArgsParentheses',
|
9
13
|
'Style/DeprecatedHashMethods' => 'Style/PreferredHashMethods',
|
10
14
|
'Style/OpMethod' => 'Naming/BinaryOperatorParameterName',
|
15
|
+
'Style/UnneededCapitalW' => 'Style/RedundantCapitalW',
|
16
|
+
'Style/UnneededCondition' => 'Style/RedundantCondition',
|
17
|
+
'Style/UnneededInterpolation' => 'Style/RedundantInterpolation',
|
18
|
+
'Style/UnneededPercentQ' => 'Style/RedundantPercentQ',
|
19
|
+
'Style/UnneededSort' => 'Style/RedundantSort',
|
11
20
|
'Layout/FirstParameterIndentation' => 'Layout/IndentFirstArgument',
|
12
21
|
'Layout/IndentArray' => 'Layout/IndentFirstArrayElement',
|
13
22
|
'Layout/IndentHash' => 'Layout/IndentFirstHashElement'
|
@@ -10,8 +10,9 @@ module RuboCop
|
|
10
10
|
|
11
11
|
COMMON_PARAMS = %w[Exclude Include Severity inherit_mode
|
12
12
|
AutoCorrect StyleGuide Details].freeze
|
13
|
-
INTERNAL_PARAMS = %w[Description StyleGuide
|
14
|
-
VersionChanged
|
13
|
+
INTERNAL_PARAMS = %w[Description StyleGuide
|
14
|
+
VersionAdded VersionChanged VersionRemoved
|
15
|
+
Reference Safe SafeAutoCorrect].freeze
|
15
16
|
|
16
17
|
# 2.3 is the oldest officially supported Ruby version.
|
17
18
|
DEFAULT_RUBY_VERSION = 2.3
|
@@ -32,10 +33,7 @@ module RuboCop
|
|
32
33
|
|
33
34
|
def validate
|
34
35
|
# Don't validate RuboCop's own files. Avoids infinite recursion.
|
35
|
-
|
36
|
-
'config'))
|
37
|
-
return if File.expand_path(@config.loaded_path)
|
38
|
-
.start_with?(base_config_path)
|
36
|
+
return if @config.internal?
|
39
37
|
|
40
38
|
valid_cop_names, invalid_cop_names = @config.keys.partition do |key|
|
41
39
|
ConfigLoader.default_configuration.key?(key)
|
@@ -128,21 +126,32 @@ module RuboCop
|
|
128
126
|
def validate_parameter_names(valid_cop_names)
|
129
127
|
valid_cop_names.each do |name|
|
130
128
|
validate_section_presence(name)
|
131
|
-
|
129
|
+
each_invalid_parameter(name) do |param, supported_params|
|
130
|
+
# FIXME: Remove .to_s, which works around a JRuby bug:
|
131
|
+
# https://github.com/jruby/jruby/issues/5935
|
132
|
+
warn Rainbow(<<~MESSAGE).yellow.to_s
|
133
|
+
Warning: #{name} does not support #{param} parameter.
|
132
134
|
|
133
|
-
|
134
|
-
next if COMMON_PARAMS.include?(param) || default_config.key?(param)
|
135
|
+
Supported parameters are:
|
135
136
|
|
136
|
-
|
137
|
-
|
138
|
-
"Supported parameters are:\n\n" \
|
139
|
-
" - #{(default_config.keys - INTERNAL_PARAMS).join("\n - ")}\n"
|
140
|
-
|
141
|
-
warn Rainbow(message).yellow.to_s
|
137
|
+
- #{supported_params.join("\n - ")}
|
138
|
+
MESSAGE
|
142
139
|
end
|
143
140
|
end
|
144
141
|
end
|
145
142
|
|
143
|
+
def each_invalid_parameter(cop_name)
|
144
|
+
default_config = ConfigLoader.default_configuration[cop_name]
|
145
|
+
|
146
|
+
@config[cop_name].each_key do |param|
|
147
|
+
next if COMMON_PARAMS.include?(param) || default_config.key?(param)
|
148
|
+
|
149
|
+
supported_params = default_config.keys - INTERNAL_PARAMS
|
150
|
+
|
151
|
+
yield param, supported_params
|
152
|
+
end
|
153
|
+
end
|
154
|
+
|
146
155
|
def validate_enforced_styles(valid_cop_names)
|
147
156
|
valid_cop_names.each do |name|
|
148
157
|
styles = @config[name].select { |key, _| key.start_with?('Enforced') }
|