rubocop 1.6.0 → 1.9.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (109) hide show
  1. checksums.yaml +4 -4
  2. data/LICENSE.txt +1 -1
  3. data/README.md +3 -2
  4. data/config/default.yml +142 -19
  5. data/lib/rubocop.rb +15 -1
  6. data/lib/rubocop/cli/command/auto_genenerate_config.rb +5 -4
  7. data/lib/rubocop/comment_config.rb +6 -6
  8. data/lib/rubocop/config.rb +10 -7
  9. data/lib/rubocop/config_loader.rb +11 -14
  10. data/lib/rubocop/config_loader_resolver.rb +21 -4
  11. data/lib/rubocop/config_obsoletion.rb +5 -3
  12. data/lib/rubocop/config_obsoletion/extracted_cop.rb +6 -6
  13. data/lib/rubocop/config_store.rb +12 -1
  14. data/lib/rubocop/cop/base.rb +1 -1
  15. data/lib/rubocop/cop/gemspec/required_ruby_version.rb +3 -2
  16. data/lib/rubocop/cop/generator.rb +1 -3
  17. data/lib/rubocop/cop/internal_affairs.rb +6 -1
  18. data/lib/rubocop/cop/internal_affairs/empty_line_between_expect_offense_and_correction.rb +68 -0
  19. data/lib/rubocop/cop/internal_affairs/example_description.rb +89 -0
  20. data/lib/rubocop/cop/internal_affairs/redundant_described_class_as_subject.rb +61 -0
  21. data/lib/rubocop/cop/internal_affairs/redundant_let_rubocop_config_new.rb +64 -0
  22. data/lib/rubocop/cop/internal_affairs/style_detected_api_use.rb +145 -0
  23. data/lib/rubocop/cop/layout/class_structure.rb +7 -2
  24. data/lib/rubocop/cop/layout/empty_line_between_defs.rb +19 -3
  25. data/lib/rubocop/cop/layout/heredoc_argument_closing_parenthesis.rb +14 -0
  26. data/lib/rubocop/cop/layout/multiline_operation_indentation.rb +2 -2
  27. data/lib/rubocop/cop/layout/rescue_ensure_alignment.rb +3 -10
  28. data/lib/rubocop/cop/layout/space_around_equals_in_parameter_default.rb +1 -0
  29. data/lib/rubocop/cop/layout/space_before_block_braces.rb +2 -0
  30. data/lib/rubocop/cop/layout/space_before_brackets.rb +62 -0
  31. data/lib/rubocop/cop/layout/space_inside_block_braces.rb +13 -10
  32. data/lib/rubocop/cop/layout/space_inside_hash_literal_braces.rb +2 -2
  33. data/lib/rubocop/cop/lint/ambiguous_assignment.rb +59 -0
  34. data/lib/rubocop/cop/lint/binary_operator_with_identical_operands.rb +7 -2
  35. data/lib/rubocop/cop/lint/deprecated_constants.rb +75 -0
  36. data/lib/rubocop/cop/lint/duplicate_branch.rb +64 -2
  37. data/lib/rubocop/cop/lint/lambda_without_literal_block.rb +44 -0
  38. data/lib/rubocop/cop/lint/non_deterministic_require_order.rb +10 -6
  39. data/lib/rubocop/cop/lint/number_conversion.rb +41 -6
  40. data/lib/rubocop/cop/lint/numbered_parameter_assignment.rb +47 -0
  41. data/lib/rubocop/cop/lint/or_assignment_to_constant.rb +39 -0
  42. data/lib/rubocop/cop/lint/redundant_cop_disable_directive.rb +2 -1
  43. data/lib/rubocop/cop/lint/redundant_dir_glob_sort.rb +50 -0
  44. data/lib/rubocop/cop/lint/redundant_splat_expansion.rb +50 -17
  45. data/lib/rubocop/cop/lint/shadowed_exception.rb +1 -11
  46. data/lib/rubocop/cop/lint/symbol_conversion.rb +102 -0
  47. data/lib/rubocop/cop/lint/triple_quotes.rb +71 -0
  48. data/lib/rubocop/cop/lint/unreachable_loop.rb +17 -0
  49. data/lib/rubocop/cop/metrics/utils/code_length_calculator.rb +1 -1
  50. data/lib/rubocop/cop/mixin/allowed_identifiers.rb +18 -0
  51. data/lib/rubocop/cop/mixin/check_line_breakable.rb +5 -0
  52. data/lib/rubocop/cop/mixin/comments_help.rb +1 -11
  53. data/lib/rubocop/cop/mixin/first_element_line_break.rb +1 -1
  54. data/lib/rubocop/cop/mixin/uncommunicative_name.rb +5 -1
  55. data/lib/rubocop/cop/naming/memoized_instance_variable_name.rb +59 -5
  56. data/lib/rubocop/cop/naming/rescued_exceptions_variable_name.rb +38 -5
  57. data/lib/rubocop/cop/naming/variable_name.rb +2 -0
  58. data/lib/rubocop/cop/naming/variable_number.rb +2 -9
  59. data/lib/rubocop/cop/registry.rb +10 -0
  60. data/lib/rubocop/cop/severity.rb +3 -3
  61. data/lib/rubocop/cop/style/access_modifier_declarations.rb +3 -1
  62. data/lib/rubocop/cop/style/ascii_comments.rb +1 -1
  63. data/lib/rubocop/cop/style/collection_methods.rb +14 -1
  64. data/lib/rubocop/cop/style/commented_keyword.rb +22 -5
  65. data/lib/rubocop/cop/style/disable_cops_within_source_code_directive.rb +49 -9
  66. data/lib/rubocop/cop/style/empty_literal.rb +6 -2
  67. data/lib/rubocop/cop/style/endless_method.rb +102 -0
  68. data/lib/rubocop/cop/style/eval_with_location.rb +63 -34
  69. data/lib/rubocop/cop/style/explicit_block_argument.rb +10 -0
  70. data/lib/rubocop/cop/style/float_division.rb +3 -0
  71. data/lib/rubocop/cop/style/for.rb +2 -0
  72. data/lib/rubocop/cop/style/format_string_token.rb +18 -2
  73. data/lib/rubocop/cop/style/hash_except.rb +95 -0
  74. data/lib/rubocop/cop/style/hash_like_case.rb +2 -1
  75. data/lib/rubocop/cop/style/if_inside_else.rb +22 -10
  76. data/lib/rubocop/cop/style/if_with_boolean_literal_branches.rb +96 -0
  77. data/lib/rubocop/cop/style/keyword_parameters_order.rb +12 -2
  78. data/lib/rubocop/cop/style/lambda_call.rb +2 -1
  79. data/lib/rubocop/cop/style/method_call_with_args_parentheses.rb +7 -0
  80. data/lib/rubocop/cop/style/method_call_with_args_parentheses/omit_parentheses.rb +16 -6
  81. data/lib/rubocop/cop/style/method_def_parentheses.rb +7 -0
  82. data/lib/rubocop/cop/style/multiline_method_signature.rb +26 -1
  83. data/lib/rubocop/cop/style/multiline_when_then.rb +3 -1
  84. data/lib/rubocop/cop/style/mutable_constant.rb +13 -3
  85. data/lib/rubocop/cop/style/nested_parenthesized_calls.rb +4 -0
  86. data/lib/rubocop/cop/style/nil_comparison.rb +1 -0
  87. data/lib/rubocop/cop/style/non_nil_check.rb +23 -13
  88. data/lib/rubocop/cop/style/raise_args.rb +5 -2
  89. data/lib/rubocop/cop/style/redundant_argument.rb +7 -1
  90. data/lib/rubocop/cop/style/redundant_freeze.rb +8 -4
  91. data/lib/rubocop/cop/style/redundant_return.rb +1 -1
  92. data/lib/rubocop/cop/style/single_line_methods.rb +34 -2
  93. data/lib/rubocop/cop/style/sole_nested_conditional.rb +29 -5
  94. data/lib/rubocop/cop/style/string_concatenation.rb +1 -1
  95. data/lib/rubocop/cop/style/symbol_proc.rb +5 -4
  96. data/lib/rubocop/cop/style/ternary_parentheses.rb +1 -1
  97. data/lib/rubocop/cop/style/while_until_modifier.rb +2 -4
  98. data/lib/rubocop/cop/util.rb +3 -1
  99. data/lib/rubocop/formatter/git_hub_actions_formatter.rb +1 -0
  100. data/lib/rubocop/magic_comment.rb +30 -1
  101. data/lib/rubocop/options.rb +10 -10
  102. data/lib/rubocop/rspec/cop_helper.rb +0 -4
  103. data/lib/rubocop/rspec/expect_offense.rb +37 -22
  104. data/lib/rubocop/runner.rb +17 -1
  105. data/lib/rubocop/target_finder.rb +4 -2
  106. data/lib/rubocop/target_ruby.rb +47 -11
  107. data/lib/rubocop/util.rb +16 -0
  108. data/lib/rubocop/version.rb +8 -2
  109. metadata +26 -7
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: ae0bcfc68121984fb71e933b1a00aa8d418d99dd4005cce76e986d6c387c0e50
4
- data.tar.gz: '0465797f84ca499f634aac95e745a4192bb62d68f5d935b4a7e21b925893b131'
3
+ metadata.gz: ec2d9f7ba4857375232c4e42ea44accdb38b2873c83315f3029a546e315622e0
4
+ data.tar.gz: 01df5c9957cca7c79cf8cab073c1bae675d684761561835d6d93f554f3743905
5
5
  SHA512:
6
- metadata.gz: eb0e28d3926209e380aed52e134801e3e206cf9ca1bace01e133223ddfe37507a888a70b629cefb7711951eaffd089078daa0a7065cf0730ccfd79febe80f1ff
7
- data.tar.gz: 17fcb97b537f9529a5bb484d85f5873f1745905712472586550f463cf689465f12aaa291efcf9371babc17b8ca7e5b2d5a99d7f6a46c800fdb3dba8dca58989e
6
+ metadata.gz: 55a5a8deae643b6d76dc5220c7136a7c5413ecb93ca85ec61dcd3aa9ff0adb3c1ab356ec81f72273771ab3125317fc105bfcaf0c7e1e1ae07f6295c7fa33c26e
7
+ data.tar.gz: 642d925df9f18c6c42b532eb0193965c6a85a93bd9339523757882eb6e9029052161a32bbc4421e454a210fe2ab5318ae64459dc4a9d792ee0cb5e4b259568ff
@@ -1,4 +1,4 @@
1
- Copyright (c) 2012-20 Bozhidar Batsov
1
+ Copyright (c) 2012-21 Bozhidar Batsov
2
2
 
3
3
  Permission is hereby granted, free of charge, to any person obtaining
4
4
  a copy of this software and associated documentation files (the
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.6', require: false
54
+ gem 'rubocop', '~> 1.9', require: false
55
55
  ```
56
56
 
57
57
  See [versioning](https://docs.rubocop.org/rubocop/1.0/versioning.html) for further details.
@@ -109,6 +109,7 @@ Here's a list of RuboCop's core developers:
109
109
  * [Maxim Krizhanovski](https://github.com/darhazer)
110
110
  * [Benjamin Quorning](https://github.com/bquorning)
111
111
  * [Marc-André Lafortune](https://github.com/marcandre)
112
+ * [Daniel Vandersluis](https://github.com/dvandersluis)
112
113
 
113
114
  See the [team page](https://docs.rubocop.org/rubocop/about/team.html) for more details.
114
115
 
@@ -241,5 +242,5 @@ RuboCop's changelog is available [here](CHANGELOG.md).
241
242
 
242
243
  ## Copyright
243
244
 
244
- Copyright (c) 2012-2020 Bozhidar Batsov. See [LICENSE.txt](LICENSE.txt) for
245
+ Copyright (c) 2012-2021 Bozhidar Batsov. See [LICENSE.txt](LICENSE.txt) for
245
246
  further details.
@@ -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 file, Gemfile or gems.rb file, RuboCop will try to determine
136
- # the desired version of Ruby by inspecting the .ruby-version file first,
137
- # followed by the Gemfile.lock or gems.locked file. (Although the Ruby version
138
- # is specified in the Gemfile or gems.rb file, RuboCop reads the final value
139
- # from the lock file.) If the Ruby version is still unresolved, RuboCop will
140
- # use the oldest officially supported Ruby version (currently Ruby 2.4).
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
@@ -473,7 +474,7 @@ Layout/EmptyLineBetweenDefs:
473
474
  StyleGuide: '#empty-lines-between-methods'
474
475
  Enabled: true
475
476
  VersionAdded: '0.49'
476
- VersionChanged: '1.4'
477
+ VersionChanged: '1.7'
477
478
  EmptyLineBetweenMethodDefs: true
478
479
  EmptyLineBetweenClassDefs: true
479
480
  EmptyLineBetweenModuleDefs: true
@@ -1192,6 +1193,12 @@ Layout/SpaceBeforeBlockBraces:
1192
1193
  - no_space
1193
1194
  VersionChanged: '0.52'
1194
1195
 
1196
+ Layout/SpaceBeforeBrackets:
1197
+ Description: 'Checks for receiver with a space before the opening brackets.'
1198
+ StyleGuide: '#space-in-brackets-access'
1199
+ Enabled: pending
1200
+ VersionAdded: '1.7'
1201
+
1195
1202
  Layout/SpaceBeforeComma:
1196
1203
  Description: 'No spaces before commas.'
1197
1204
  Enabled: true
@@ -1354,6 +1361,11 @@ Layout/TrailingWhitespace:
1354
1361
  #################### Lint ##################################
1355
1362
  ### Warnings
1356
1363
 
1364
+ Lint/AmbiguousAssignment:
1365
+ Description: 'Checks for mistyped shorthand assignments.'
1366
+ Enabled: pending
1367
+ VersionAdded: '1.7'
1368
+
1357
1369
  Lint/AmbiguousBlockAssociation:
1358
1370
  Description: >-
1359
1371
  Checks for ambiguous block association with method when param passed without
@@ -1396,6 +1408,7 @@ Lint/BinaryOperatorWithIdenticalOperands:
1396
1408
  Enabled: true
1397
1409
  Safe: false
1398
1410
  VersionAdded: '0.89'
1411
+ VersionChanged: '1.7'
1399
1412
 
1400
1413
  Lint/BooleanSymbol:
1401
1414
  Description: 'Check for `:true` and `:false` symbols.'
@@ -1456,6 +1469,34 @@ Lint/DeprecatedClassMethods:
1456
1469
  Enabled: true
1457
1470
  VersionAdded: '0.19'
1458
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
+
1459
1500
  Lint/DeprecatedOpenSSLConstant:
1460
1501
  Description: "Don't use algorithm constants for `OpenSSL::Cipher` and `OpenSSL::Digest`."
1461
1502
  Enabled: true
@@ -1472,6 +1513,9 @@ Lint/DuplicateBranch:
1472
1513
  Description: Checks that there are no repeated bodies within `if/unless`, `case-when` and `rescue` constructs.
1473
1514
  Enabled: pending
1474
1515
  VersionAdded: '1.3'
1516
+ VersionChanged: '1.7'
1517
+ IgnoreLiteralBranches: false
1518
+ IgnoreConstantBranches: false
1475
1519
 
1476
1520
  Lint/DuplicateCaseCondition:
1477
1521
  Description: 'Do not repeat values in case conditionals.'
@@ -1658,6 +1702,11 @@ Lint/InterpolationCheck:
1658
1702
  VersionAdded: '0.50'
1659
1703
  VersionChanged: '0.87'
1660
1704
 
1705
+ Lint/LambdaWithoutLiteralBlock:
1706
+ Description: 'Checks uses of lambda without a literal block.'
1707
+ Enabled: pending
1708
+ VersionAdded: '1.8'
1709
+
1661
1710
  Lint/LiteralAsCondition:
1662
1711
  Description: 'Checks of literals used in conditions.'
1663
1712
  Enabled: true
@@ -1757,6 +1806,17 @@ Lint/NumberConversion:
1757
1806
  - Time
1758
1807
  - DateTime
1759
1808
 
1809
+ Lint/NumberedParameterAssignment:
1810
+ Description: 'Checks for uses of numbered parameter assignment.'
1811
+ Enabled: pending
1812
+ VersionAdded: '1.9'
1813
+
1814
+ Lint/OrAssignmentToConstant:
1815
+ Description: 'Checks unintended or-assignment to constant.'
1816
+ Enabled: pending
1817
+ Safe: false
1818
+ VersionAdded: '1.9'
1819
+
1760
1820
  Lint/OrderedMagicComments:
1761
1821
  Description: 'Checks the proper ordering of magic comments and whether a magic comment is not placed before a shebang.'
1762
1822
  Enabled: true
@@ -1820,6 +1880,11 @@ Lint/RedundantCopEnableDirective:
1820
1880
  Enabled: true
1821
1881
  VersionAdded: '0.76'
1822
1882
 
1883
+ Lint/RedundantDirGlobSort:
1884
+ Description: 'Checks for redundant `sort` method to `Dir.glob` and `Dir[]`.'
1885
+ Enabled: pending
1886
+ VersionAdded: '1.8'
1887
+
1823
1888
  Lint/RedundantRequireStatement:
1824
1889
  Description: 'Checks for unnecessary `require` statement.'
1825
1890
  Enabled: true
@@ -1842,6 +1907,8 @@ Lint/RedundantSplatExpansion:
1842
1907
  Description: 'Checks for splat unnecessarily being called on literals.'
1843
1908
  Enabled: true
1844
1909
  VersionAdded: '0.76'
1910
+ VersionChanged: '1.7'
1911
+ AllowPercentLiteralArrayArgument: true
1845
1912
 
1846
1913
  Lint/RedundantStringCoercion:
1847
1914
  Description: 'Checks for Object#to_s usage in string interpolation.'
@@ -1976,12 +2043,16 @@ Lint/SuppressedException:
1976
2043
  VersionAdded: '0.9'
1977
2044
  VersionChanged: '0.81'
1978
2045
 
2046
+ Lint/SymbolConversion:
2047
+ Description: 'Checks for unnecessary symbol conversions.'
2048
+ Enabled: pending
2049
+ VersionAdded: '1.9'
2050
+
1979
2051
  Lint/Syntax:
1980
- Description: 'Checks syntax error.'
2052
+ Description: 'Checks for syntax errors.'
1981
2053
  Enabled: true
1982
2054
  VersionAdded: '0.9'
1983
2055
 
1984
-
1985
2056
  Lint/ToEnumArguments:
1986
2057
  Description: 'This cop ensures that `to_enum`/`enum_for`, called for the current method, has correct arguments.'
1987
2058
  Enabled: pending
@@ -2002,6 +2073,11 @@ Lint/TrailingCommaInAttributeDeclaration:
2002
2073
  Enabled: true
2003
2074
  VersionAdded: '0.90'
2004
2075
 
2076
+ Lint/TripleQuotes:
2077
+ Description: 'Checks for useless triple quote constructs.'
2078
+ Enabled: pending
2079
+ VersionAdded: '1.9'
2080
+
2005
2081
  Lint/UnderscorePrefixedVariableName:
2006
2082
  Description: 'Do not use prefix `_` for a variable that is used.'
2007
2083
  Enabled: true
@@ -2045,6 +2121,11 @@ Lint/UnreachableLoop:
2045
2121
  Description: 'This cop checks for loops that will have at most one iteration.'
2046
2122
  Enabled: true
2047
2123
  VersionAdded: '0.89'
2124
+ VersionChanged: '1.7'
2125
+ IgnoredPatterns:
2126
+ # RSpec uses `times` in its message expectations
2127
+ # eg. `exactly(2).times`
2128
+ - !ruby/regexp /(exactly|at_least|at_most)\(\d+\)\.times/
2048
2129
 
2049
2130
  Lint/UnusedBlockArgument:
2050
2131
  Description: 'Checks for unused block arguments.'
@@ -2479,10 +2560,12 @@ Naming/VariableName:
2479
2560
  StyleGuide: '#snake-case-symbols-methods-vars'
2480
2561
  Enabled: true
2481
2562
  VersionAdded: '0.50'
2563
+ VersionChanged: '1.8'
2482
2564
  EnforcedStyle: snake_case
2483
2565
  SupportedStyles:
2484
2566
  - snake_case
2485
2567
  - camelCase
2568
+ AllowedIdentifiers: []
2486
2569
 
2487
2570
  Naming/VariableNumber:
2488
2571
  Description: 'Use the configured style when numbering symbols, methods and variables.'
@@ -2626,7 +2709,8 @@ Style/AsciiComments:
2626
2709
  Enabled: true
2627
2710
  VersionAdded: '0.9'
2628
2711
  VersionChanged: '0.52'
2629
- AllowedChars: []
2712
+ AllowedChars:
2713
+ - ©
2630
2714
 
2631
2715
  Style/Attr:
2632
2716
  Description: 'Checks for uses of Module#attr.'
@@ -2895,7 +2979,7 @@ Style/CollectionMethods:
2895
2979
  StyleGuide: '#map-find-select-reduce-include-size'
2896
2980
  Enabled: false
2897
2981
  VersionAdded: '0.9'
2898
- VersionChanged: '0.27'
2982
+ VersionChanged: '1.7'
2899
2983
  Safe: false
2900
2984
  # Mapping from undesired method to desired method
2901
2985
  # e.g. to use `detect` over `find`:
@@ -2910,6 +2994,11 @@ Style/CollectionMethods:
2910
2994
  detect: 'find'
2911
2995
  find_all: 'select'
2912
2996
  member?: 'include?'
2997
+ # Methods in this array accept a final symbol as an implicit block
2998
+ # eg. `inject(:+)`
2999
+ MethodsAcceptingSymbol:
3000
+ - inject
3001
+ - reduce
2913
3002
 
2914
3003
  Style/ColonMethodCall:
2915
3004
  Description: 'Do not use :: for method call.'
@@ -2969,6 +3058,7 @@ Style/CommentedKeyword:
2969
3058
  Description: 'Do not place comments on the same line as certain keywords.'
2970
3059
  Enabled: true
2971
3060
  VersionAdded: '0.51'
3061
+ VersionChanged: '1.7'
2972
3062
 
2973
3063
  Style/ConditionalAssignment:
2974
3064
  Description: >-
@@ -3051,6 +3141,8 @@ Style/DisableCopsWithinSourceCodeDirective:
3051
3141
  Forbids disabling/enabling cops within source code.
3052
3142
  Enabled: false
3053
3143
  VersionAdded: '0.82'
3144
+ VersionChanged: '1.9'
3145
+ AllowedCops: []
3054
3146
 
3055
3147
  Style/DocumentDynamicEvalDefinition:
3056
3148
  Description: >-
@@ -3168,6 +3260,17 @@ Style/EndBlock:
3168
3260
  VersionAdded: '0.9'
3169
3261
  VersionChanged: '0.81'
3170
3262
 
3263
+ Style/EndlessMethod:
3264
+ Description: 'Avoid the use of multi-lined endless method definitions.'
3265
+ StyleGuide: '#endless-methods'
3266
+ Enabled: pending
3267
+ VersionAdded: '1.8'
3268
+ EnforcedStyle: allow_single_line
3269
+ SupportedStyles:
3270
+ - allow_single_line
3271
+ - allow_always
3272
+ - disallow
3273
+
3171
3274
  Style/EvalWithLocation:
3172
3275
  Description: 'Pass `__FILE__` and `__LINE__` to `eval` method, as they are used by backtraces.'
3173
3276
  Enabled: true
@@ -3191,9 +3294,8 @@ Style/ExplicitBlockArgument:
3191
3294
  that just passes its arguments to another block.
3192
3295
  StyleGuide: '#block-argument'
3193
3296
  Enabled: true
3194
- # May change the yielding arity.
3195
- Safe: false
3196
3297
  VersionAdded: '0.89'
3298
+ VersionChanged: '1.8'
3197
3299
 
3198
3300
  Style/ExponentialNotation:
3199
3301
  Description: 'When using exponential notation, favor a mantissa between 1 (inclusive) and 10 (exclusive).'
@@ -3212,7 +3314,8 @@ Style/FloatDivision:
3212
3314
  Reference: 'https://blog.rubystyle.guide/ruby/2019/06/21/float-division.html'
3213
3315
  Enabled: true
3214
3316
  VersionAdded: '0.72'
3215
- VersionChanged: '1.6'
3317
+ VersionChanged: '1.9'
3318
+ Safe: false
3216
3319
  EnforcedStyle: single_coerce
3217
3320
  SupportedStyles:
3218
3321
  - left_coerce
@@ -3260,6 +3363,7 @@ Style/FormatStringToken:
3260
3363
  MaxUnannotatedPlaceholdersAllowed: 1
3261
3364
  VersionAdded: '0.49'
3262
3365
  VersionChanged: '1.0'
3366
+ IgnoredMethods: []
3263
3367
 
3264
3368
  Style/FrozenStringLiteralComment:
3265
3369
  Description: >-
@@ -3328,6 +3432,13 @@ Style/HashEachMethods:
3328
3432
  VersionAdded: '0.80'
3329
3433
  Safe: false
3330
3434
 
3435
+ Style/HashExcept:
3436
+ Description: >-
3437
+ Checks for usages of `Hash#reject`, `Hash#select`, and `Hash#filter` methods
3438
+ that can be replaced with `Hash#except` method.
3439
+ Enabled: pending
3440
+ VersionAdded: '1.7'
3441
+
3331
3442
  Style/HashLikeCase:
3332
3443
  Description: >-
3333
3444
  Checks for places where `case-when` represents a simple 1:1
@@ -3406,6 +3517,11 @@ Style/IfUnlessModifierOfIfUnless:
3406
3517
  VersionAdded: '0.39'
3407
3518
  VersionChanged: '0.87'
3408
3519
 
3520
+ Style/IfWithBooleanLiteralBranches:
3521
+ Description: 'Checks for redundant `if` with boolean literal branches.'
3522
+ Enabled: pending
3523
+ VersionAdded: '1.9'
3524
+
3409
3525
  Style/IfWithSemicolon:
3410
3526
  Description: 'Do not use if x; .... Use the ternary operator instead.'
3411
3527
  StyleGuide: '#no-semicolon-ifs'
@@ -3482,6 +3598,7 @@ Style/KeywordParametersOrder:
3482
3598
  StyleGuide: '#keyword-parameters-order'
3483
3599
  Enabled: true
3484
3600
  VersionAdded: '0.90'
3601
+ VersionChanged: '1.7'
3485
3602
 
3486
3603
  Style/Lambda:
3487
3604
  Description: 'Use the new lambda literal syntax for single-line blocks.'
@@ -3520,7 +3637,7 @@ Style/MethodCallWithArgsParentheses:
3520
3637
  StyleGuide: '#method-invocation-parens'
3521
3638
  Enabled: false
3522
3639
  VersionAdded: '0.47'
3523
- VersionChanged: '0.61'
3640
+ VersionChanged: '1.7'
3524
3641
  IgnoreMacros: true
3525
3642
  IgnoredMethods: []
3526
3643
  IgnoredPatterns: []
@@ -3554,7 +3671,7 @@ Style/MethodDefParentheses:
3554
3671
  StyleGuide: '#method-parens'
3555
3672
  Enabled: true
3556
3673
  VersionAdded: '0.16'
3557
- VersionChanged: '0.35'
3674
+ VersionChanged: '1.7'
3558
3675
  EnforcedStyle: require_parentheses
3559
3676
  SupportedStyles:
3560
3677
  - require_parentheses
@@ -3660,6 +3777,7 @@ Style/MultilineMethodSignature:
3660
3777
  Description: 'Avoid multi-line method signatures.'
3661
3778
  Enabled: false
3662
3779
  VersionAdded: '0.59'
3780
+ VersionChanged: '1.7'
3663
3781
 
3664
3782
  Style/MultilineTernaryOperator:
3665
3783
  Description: >-
@@ -3688,7 +3806,8 @@ Style/MutableConstant:
3688
3806
  Description: 'Do not assign mutable objects to constants.'
3689
3807
  Enabled: true
3690
3808
  VersionAdded: '0.34'
3691
- VersionChanged: '0.65'
3809
+ VersionChanged: '1.8'
3810
+ SafeAutoCorrect: false
3692
3811
  EnforcedStyle: literals
3693
3812
  SupportedStyles:
3694
3813
  # literals: freeze literals assigned to constants
@@ -4026,12 +4145,16 @@ Style/RedundantArgument:
4026
4145
  Enabled: pending
4027
4146
  Safe: false
4028
4147
  VersionAdded: '1.4'
4029
- VersionChanged: '1.6'
4148
+ VersionChanged: '1.7'
4030
4149
  Methods:
4031
4150
  # Array#join
4032
4151
  join: ''
4033
4152
  # String#split
4034
4153
  split: ' '
4154
+ # String#chomp
4155
+ chomp: "\n"
4156
+ # String#chomp!
4157
+ chomp!: "\n"
4035
4158
 
4036
4159
  Style/RedundantAssignment:
4037
4160
  Description: 'Checks for redundant assignment before returning.'
@@ -4288,7 +4411,7 @@ Style/SingleLineMethods:
4288
4411
  StyleGuide: '#no-single-line-methods'
4289
4412
  Enabled: true
4290
4413
  VersionAdded: '0.9'
4291
- VersionChanged: '0.19'
4414
+ VersionChanged: '1.8'
4292
4415
  AllowIfMethodIsEmpty: true
4293
4416
 
4294
4417
  Style/SlicingWithRange:
@@ -7,7 +7,7 @@ require 'rainbow'
7
7
  require 'set'
8
8
  require 'forwardable'
9
9
  require 'regexp_parser'
10
- require 'unicode/display_width/no_string_ext'
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'
@@ -28,6 +28,7 @@ require_relative 'rubocop/name_similarity'
28
28
  require_relative 'rubocop/string_interpreter'
29
29
  require_relative 'rubocop/error'
30
30
  require_relative 'rubocop/warning'
31
+ require_relative 'rubocop/util'
31
32
 
32
33
  require_relative 'rubocop/cop/util'
33
34
  require_relative 'rubocop/cop/offense'
@@ -60,6 +61,7 @@ require_relative 'rubocop/cop/mixin/annotation_comment'
60
61
  require_relative 'rubocop/cop/mixin/array_min_size'
61
62
  require_relative 'rubocop/cop/mixin/array_syntax'
62
63
  require_relative 'rubocop/cop/mixin/alignment'
64
+ require_relative 'rubocop/cop/mixin/allowed_identifiers'
63
65
  require_relative 'rubocop/cop/mixin/allowed_methods'
64
66
  require_relative 'rubocop/cop/mixin/auto_corrector'
65
67
  require_relative 'rubocop/cop/mixin/check_assignment'
@@ -230,6 +232,7 @@ require_relative 'rubocop/cop/layout/space_around_keyword'
230
232
  require_relative 'rubocop/cop/layout/space_around_method_call_operator'
231
233
  require_relative 'rubocop/cop/layout/space_around_operators'
232
234
  require_relative 'rubocop/cop/layout/space_before_block_braces'
235
+ require_relative 'rubocop/cop/layout/space_before_brackets'
233
236
  require_relative 'rubocop/cop/layout/space_before_comma'
234
237
  require_relative 'rubocop/cop/layout/space_before_comment'
235
238
  require_relative 'rubocop/cop/layout/space_before_first_arg'
@@ -247,6 +250,7 @@ require_relative 'rubocop/cop/layout/space_inside_string_interpolation'
247
250
  require_relative 'rubocop/cop/layout/trailing_empty_lines'
248
251
  require_relative 'rubocop/cop/layout/trailing_whitespace'
249
252
 
253
+ require_relative 'rubocop/cop/lint/ambiguous_assignment'
250
254
  require_relative 'rubocop/cop/lint/ambiguous_block_association'
251
255
  require_relative 'rubocop/cop/lint/ambiguous_operator'
252
256
  require_relative 'rubocop/cop/lint/ambiguous_regexp_literal'
@@ -259,6 +263,7 @@ require_relative 'rubocop/cop/lint/constant_definition_in_block'
259
263
  require_relative 'rubocop/cop/lint/constant_resolution'
260
264
  require_relative 'rubocop/cop/lint/debugger'
261
265
  require_relative 'rubocop/cop/lint/deprecated_class_methods'
266
+ require_relative 'rubocop/cop/lint/deprecated_constants'
262
267
  require_relative 'rubocop/cop/lint/deprecated_open_ssl_constant'
263
268
  require_relative 'rubocop/cop/lint/disjunctive_assignment_in_constructor'
264
269
  require_relative 'rubocop/cop/lint/duplicate_branch'
@@ -292,6 +297,7 @@ require_relative 'rubocop/cop/lint/implicit_string_concatenation'
292
297
  require_relative 'rubocop/cop/lint/inherit_exception'
293
298
  require_relative 'rubocop/cop/lint/ineffective_access_modifier'
294
299
  require_relative 'rubocop/cop/lint/interpolation_check'
300
+ require_relative 'rubocop/cop/lint/lambda_without_literal_block'
295
301
  require_relative 'rubocop/cop/lint/literal_as_condition'
296
302
  require_relative 'rubocop/cop/lint/literal_in_interpolation'
297
303
  require_relative 'rubocop/cop/lint/loop'
@@ -306,6 +312,8 @@ require_relative 'rubocop/cop/lint/no_return_in_begin_end_blocks'
306
312
  require_relative 'rubocop/cop/lint/non_deterministic_require_order'
307
313
  require_relative 'rubocop/cop/lint/non_local_exit_from_iterator'
308
314
  require_relative 'rubocop/cop/lint/number_conversion'
315
+ require_relative 'rubocop/cop/lint/numbered_parameter_assignment'
316
+ require_relative 'rubocop/cop/lint/or_assignment_to_constant'
309
317
  require_relative 'rubocop/cop/lint/ordered_magic_comments'
310
318
  require_relative 'rubocop/cop/lint/out_of_range_regexp_ref'
311
319
  require_relative 'rubocop/cop/lint/parentheses_as_grouped_expression'
@@ -315,6 +323,7 @@ require_relative 'rubocop/cop/lint/raise_exception'
315
323
  require_relative 'rubocop/cop/lint/rand_one'
316
324
  require_relative 'rubocop/cop/lint/redundant_cop_disable_directive'
317
325
  require_relative 'rubocop/cop/lint/redundant_cop_enable_directive'
326
+ require_relative 'rubocop/cop/lint/redundant_dir_glob_sort'
318
327
  require_relative 'rubocop/cop/lint/redundant_require_statement'
319
328
  require_relative 'rubocop/cop/lint/redundant_safe_navigation'
320
329
  require_relative 'rubocop/cop/lint/redundant_splat_expansion'
@@ -337,11 +346,13 @@ require_relative 'rubocop/cop/lint/shadowed_exception'
337
346
  require_relative 'rubocop/cop/lint/shadowing_outer_local_variable'
338
347
  require_relative 'rubocop/cop/lint/struct_new_override'
339
348
  require_relative 'rubocop/cop/lint/suppressed_exception'
349
+ require_relative 'rubocop/cop/lint/symbol_conversion'
340
350
  require_relative 'rubocop/cop/lint/syntax'
341
351
  require_relative 'rubocop/cop/lint/to_enum_arguments'
342
352
  require_relative 'rubocop/cop/lint/to_json'
343
353
  require_relative 'rubocop/cop/lint/top_level_return_with_argument'
344
354
  require_relative 'rubocop/cop/lint/trailing_comma_in_attribute_declaration'
355
+ require_relative 'rubocop/cop/lint/triple_quotes'
345
356
  require_relative 'rubocop/cop/lint/underscore_prefixed_variable_name'
346
357
  require_relative 'rubocop/cop/lint/unexpected_block_arity'
347
358
  require_relative 'rubocop/cop/lint/unified_integer'
@@ -443,6 +454,7 @@ require_relative 'rubocop/cop/style/empty_else'
443
454
  require_relative 'rubocop/cop/style/empty_lambda_parameter'
444
455
  require_relative 'rubocop/cop/style/empty_literal'
445
456
  require_relative 'rubocop/cop/style/empty_method'
457
+ require_relative 'rubocop/cop/style/endless_method'
446
458
  require_relative 'rubocop/cop/style/encoding'
447
459
  require_relative 'rubocop/cop/style/end_block'
448
460
  require_relative 'rubocop/cop/style/eval_with_location'
@@ -460,6 +472,7 @@ require_relative 'rubocop/cop/style/global_vars'
460
472
  require_relative 'rubocop/cop/style/guard_clause'
461
473
  require_relative 'rubocop/cop/style/hash_as_last_array_item'
462
474
  require_relative 'rubocop/cop/style/hash_each_methods'
475
+ require_relative 'rubocop/cop/style/hash_except'
463
476
  require_relative 'rubocop/cop/style/hash_like_case'
464
477
  require_relative 'rubocop/cop/style/hash_syntax'
465
478
  require_relative 'rubocop/cop/style/hash_transform_keys'
@@ -468,6 +481,7 @@ require_relative 'rubocop/cop/style/identical_conditional_branches'
468
481
  require_relative 'rubocop/cop/style/if_inside_else'
469
482
  require_relative 'rubocop/cop/style/if_unless_modifier'
470
483
  require_relative 'rubocop/cop/style/if_unless_modifier_of_if_unless'
484
+ require_relative 'rubocop/cop/style/if_with_boolean_literal_branches'
471
485
  require_relative 'rubocop/cop/style/if_with_semicolon'
472
486
  require_relative 'rubocop/cop/style/implicit_runtime_error'
473
487
  require_relative 'rubocop/cop/style/infinite_loop'