rubocop 0.67.2 → 0.68.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.
Files changed (119) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +1 -1
  3. data/config/default.yml +86 -233
  4. data/exe/rubocop +0 -12
  5. data/lib/rubocop.rb +13 -30
  6. data/lib/rubocop/ast/builder.rb +4 -0
  7. data/lib/rubocop/ast/node/alias_node.rb +24 -0
  8. data/lib/rubocop/ast/node/class_node.rb +31 -0
  9. data/lib/rubocop/ast/node/module_node.rb +24 -0
  10. data/lib/rubocop/ast/node/range_node.rb +7 -0
  11. data/lib/rubocop/ast/node/resbody_node.rb +12 -0
  12. data/lib/rubocop/ast/node/self_class_node.rb +24 -0
  13. data/lib/rubocop/cli.rb +40 -4
  14. data/lib/rubocop/config.rb +9 -7
  15. data/lib/rubocop/config_loader.rb +48 -7
  16. data/lib/rubocop/config_loader_resolver.rb +5 -4
  17. data/lib/rubocop/cop/commissioner.rb +24 -0
  18. data/lib/rubocop/cop/correctors/unused_arg_corrector.rb +18 -6
  19. data/lib/rubocop/cop/internal_affairs/node_destructuring.rb +12 -14
  20. data/lib/rubocop/cop/layout/access_modifier_indentation.rb +9 -20
  21. data/lib/rubocop/cop/layout/align_arguments.rb +93 -0
  22. data/lib/rubocop/cop/layout/align_parameters.rb +57 -33
  23. data/lib/rubocop/cop/layout/class_structure.rb +5 -5
  24. data/lib/rubocop/cop/layout/empty_lines_around_access_modifier.rb +6 -8
  25. data/lib/rubocop/cop/layout/empty_lines_around_class_body.rb +3 -6
  26. data/lib/rubocop/cop/layout/empty_lines_around_module_body.rb +1 -2
  27. data/lib/rubocop/cop/layout/first_method_argument_line_break.rb +1 -0
  28. data/lib/rubocop/cop/layout/heredoc_argument_closing_parenthesis.rb +292 -0
  29. data/lib/rubocop/cop/layout/{first_parameter_indentation.rb → indent_first_argument.rb} +11 -12
  30. data/lib/rubocop/cop/layout/{indent_array.rb → indent_first_array_element.rb} +2 -2
  31. data/lib/rubocop/cop/layout/{indent_hash.rb → indent_first_hash_element.rb} +2 -2
  32. data/lib/rubocop/cop/layout/indent_first_parameter.rb +96 -0
  33. data/lib/rubocop/cop/layout/indentation_width.rb +4 -16
  34. data/lib/rubocop/cop/layout/multiline_method_call_indentation.rb +2 -4
  35. data/lib/rubocop/cop/layout/space_in_lambda_literal.rb +1 -16
  36. data/lib/rubocop/cop/layout/space_inside_reference_brackets.rb +1 -2
  37. data/lib/rubocop/cop/lint/duplicate_methods.rb +6 -8
  38. data/lib/rubocop/cop/lint/format_parameter_mismatch.rb +4 -8
  39. data/lib/rubocop/cop/lint/heredoc_method_call_position.rb +157 -0
  40. data/lib/rubocop/cop/lint/inherit_exception.rb +3 -4
  41. data/lib/rubocop/cop/lint/literal_in_interpolation.rb +18 -1
  42. data/lib/rubocop/cop/lint/non_local_exit_from_iterator.rb +3 -5
  43. data/lib/rubocop/cop/lint/underscore_prefixed_variable_name.rb +25 -5
  44. data/lib/rubocop/cop/lint/useless_assignment.rb +2 -6
  45. data/lib/rubocop/cop/lint/useless_setter_call.rb +1 -2
  46. data/lib/rubocop/cop/message_annotator.rb +1 -0
  47. data/lib/rubocop/cop/metrics/line_length.rb +139 -28
  48. data/lib/rubocop/cop/metrics/perceived_complexity.rb +3 -4
  49. data/lib/rubocop/cop/mixin/check_line_breakable.rb +190 -0
  50. data/lib/rubocop/cop/mixin/{array_hash_indentation.rb → multiline_element_indentation.rb} +3 -2
  51. data/lib/rubocop/cop/mixin/too_many_lines.rb +3 -7
  52. data/lib/rubocop/cop/naming/rescued_exceptions_variable_name.rb +33 -4
  53. data/lib/rubocop/cop/rails/active_record_override.rb +23 -8
  54. data/lib/rubocop/cop/rails/delegate.rb +5 -8
  55. data/lib/rubocop/cop/rails/environment_comparison.rb +5 -3
  56. data/lib/rubocop/cop/rails/find_each.rb +1 -1
  57. data/lib/rubocop/cop/rails/redundant_allow_nil.rb +3 -3
  58. data/lib/rubocop/cop/rails/reflection_class_name.rb +1 -1
  59. data/lib/rubocop/cop/rails/skips_model_validations.rb +6 -7
  60. data/lib/rubocop/cop/rails/time_zone.rb +3 -10
  61. data/lib/rubocop/cop/rails/validation.rb +3 -0
  62. data/lib/rubocop/cop/registry.rb +3 -3
  63. data/lib/rubocop/cop/style/alias.rb +13 -7
  64. data/lib/rubocop/cop/style/block_delimiters.rb +20 -0
  65. data/lib/rubocop/cop/style/class_and_module_children.rb +19 -21
  66. data/lib/rubocop/cop/style/class_methods.rb +16 -24
  67. data/lib/rubocop/cop/style/conditional_assignment.rb +20 -49
  68. data/lib/rubocop/cop/style/documentation.rb +3 -7
  69. data/lib/rubocop/cop/style/format_string.rb +18 -21
  70. data/lib/rubocop/cop/style/hash_syntax.rb +1 -1
  71. data/lib/rubocop/cop/style/inverse_methods.rb +4 -0
  72. data/lib/rubocop/cop/style/lambda.rb +12 -8
  73. data/lib/rubocop/cop/style/mixin_grouping.rb +8 -10
  74. data/lib/rubocop/cop/style/module_function.rb +2 -3
  75. data/lib/rubocop/cop/style/next.rb +10 -14
  76. data/lib/rubocop/cop/style/one_line_conditional.rb +5 -3
  77. data/lib/rubocop/cop/style/optional_arguments.rb +1 -4
  78. data/lib/rubocop/cop/style/random_with_offset.rb +44 -47
  79. data/lib/rubocop/cop/style/redundant_return.rb +6 -14
  80. data/lib/rubocop/cop/style/redundant_sort_by.rb +1 -1
  81. data/lib/rubocop/cop/style/safe_navigation.rb +3 -0
  82. data/lib/rubocop/cop/style/struct_inheritance.rb +2 -3
  83. data/lib/rubocop/cop/style/symbol_proc.rb +20 -40
  84. data/lib/rubocop/cop/style/unless_else.rb +1 -2
  85. data/lib/rubocop/cop/style/yoda_condition.rb +8 -7
  86. data/lib/rubocop/cop/util.rb +2 -4
  87. data/lib/rubocop/file_finder.rb +5 -10
  88. data/lib/rubocop/formatter/disabled_config_formatter.rb +5 -0
  89. data/lib/rubocop/node_pattern.rb +304 -170
  90. data/lib/rubocop/options.rb +4 -1
  91. data/lib/rubocop/rspec/shared_contexts.rb +3 -0
  92. data/lib/rubocop/version.rb +1 -1
  93. data/lib/rubocop/yaml_duplication_checker.rb +1 -1
  94. metadata +26 -50
  95. data/lib/rubocop/cop/performance/caller.rb +0 -69
  96. data/lib/rubocop/cop/performance/case_when_splat.rb +0 -177
  97. data/lib/rubocop/cop/performance/casecmp.rb +0 -108
  98. data/lib/rubocop/cop/performance/chain_array_allocation.rb +0 -78
  99. data/lib/rubocop/cop/performance/compare_with_block.rb +0 -122
  100. data/lib/rubocop/cop/performance/count.rb +0 -102
  101. data/lib/rubocop/cop/performance/detect.rb +0 -110
  102. data/lib/rubocop/cop/performance/double_start_end_with.rb +0 -94
  103. data/lib/rubocop/cop/performance/end_with.rb +0 -56
  104. data/lib/rubocop/cop/performance/fixed_size.rb +0 -97
  105. data/lib/rubocop/cop/performance/flat_map.rb +0 -78
  106. data/lib/rubocop/cop/performance/inefficient_hash_search.rb +0 -99
  107. data/lib/rubocop/cop/performance/open_struct.rb +0 -46
  108. data/lib/rubocop/cop/performance/range_include.rb +0 -50
  109. data/lib/rubocop/cop/performance/redundant_block_call.rb +0 -93
  110. data/lib/rubocop/cop/performance/redundant_match.rb +0 -56
  111. data/lib/rubocop/cop/performance/redundant_merge.rb +0 -183
  112. data/lib/rubocop/cop/performance/regexp_match.rb +0 -265
  113. data/lib/rubocop/cop/performance/reverse_each.rb +0 -42
  114. data/lib/rubocop/cop/performance/size.rb +0 -77
  115. data/lib/rubocop/cop/performance/start_with.rb +0 -59
  116. data/lib/rubocop/cop/performance/string_replacement.rb +0 -173
  117. data/lib/rubocop/cop/performance/times_map.rb +0 -71
  118. data/lib/rubocop/cop/performance/unfreeze_string.rb +0 -50
  119. data/lib/rubocop/cop/performance/uri_default_parser.rb +0 -47
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 7d123a0a03d651949c17dc40f87190523d09a6b93f2d4cd437bd03f7ee6a9dfe
4
- data.tar.gz: 629000aadc6a11eb33823bc79c6774620030f1a9f552e3fc1e2c12a29e70680c
3
+ metadata.gz: 7dba5f457f541be403c090a1e65bb79ecec9cb44d20caf6468f7dea47dc14074
4
+ data.tar.gz: f50ff42c73bd17159540297bc823e0979f1fdd26e8ccf0add7f371f99b6b3669
5
5
  SHA512:
6
- metadata.gz: 8355767ccb1027444d5e60be243ddd88d47db33acbb90516f91313bf7319271ec5a487d6b95a724dfd8e2fcd005e222df6e140f77b111ab1ea994bbae2143b98
7
- data.tar.gz: 1663a537de7b348e4bbeed4e151376c381b8b67aea3a9cd0c49f098e55982f93b914a576f46b7e7a33fce89e2c8e4ec86ff426040054f08b9f9cd9a8ef69919b
6
+ metadata.gz: 6994e2accbbacb5dcd032aaff1fda0193165ed849ccb1483b52151066b3df1f9c4ce0c925caea2fd306b047a9d489da263ac3f9ff946a3c0298a2a276fde8f5f
7
+ data.tar.gz: b017c04fc55eeef70492a75495cf799a6a550bc8dd4f4e4802c68e16753d721f074b1d63439866d9c3535db2975f5763f2031d489fdf235aba4ee86f1428df8b
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.67.2', require: false
56
+ gem 'rubocop', '~> 0.68.0', require: false
57
57
  ```
58
58
 
59
59
  ## Quickstart
@@ -219,6 +219,34 @@ Layout/AccessModifierIndentation:
219
219
  # But it can be overridden by setting this parameter
220
220
  IndentationWidth: ~
221
221
 
222
+ Layout/AlignArguments:
223
+ Description: >-
224
+ Align the arguments of a method call if they span more
225
+ than one line.
226
+ StyleGuide: '#no-double-indent'
227
+ Enabled: true
228
+ VersionAdded: '0.68'
229
+ # Alignment of arguments in multi-line method calls.
230
+ #
231
+ # The `with_first_argument` style aligns the following lines along the same
232
+ # column as the first parameter.
233
+ #
234
+ # method_call(a,
235
+ # b)
236
+ #
237
+ # The `with_fixed_indentation` style aligns the following lines with one
238
+ # level of indentation relative to the start of the line with the method call.
239
+ #
240
+ # method_call(a,
241
+ # b)
242
+ EnforcedStyle: with_first_argument
243
+ SupportedStyles:
244
+ - with_first_argument
245
+ - with_fixed_indentation
246
+ # By default, the indentation width from Layout/IndentationWidth is used
247
+ # But it can be overridden by setting this parameter
248
+ IndentationWidth: ~
249
+
222
250
  Layout/AlignArray:
223
251
  Description: >-
224
252
  Align the elements of an array literal if they span more than
@@ -305,23 +333,24 @@ Layout/AlignHash:
305
333
 
306
334
  Layout/AlignParameters:
307
335
  Description: >-
308
- Align the parameters of a method call if they span more
336
+ Align the parameters of a method definition if they span more
309
337
  than one line.
310
338
  StyleGuide: '#no-double-indent'
311
339
  Enabled: true
312
340
  VersionAdded: '0.49'
341
+ VersionChanged: '0.68'
313
342
  # Alignment of parameters in multi-line method calls.
314
343
  #
315
344
  # The `with_first_parameter` style aligns the following lines along the same
316
345
  # column as the first parameter.
317
346
  #
318
- # method_call(a,
319
- # b)
347
+ # def method_foo(a,
348
+ # b)
320
349
  #
321
350
  # The `with_fixed_indentation` style aligns the following lines with one
322
351
  # level of indentation relative to the start of the line with the method call.
323
352
  #
324
- # method_call(a,
353
+ # def method_foo(a,
325
354
  # b)
326
355
  EnforcedStyle: with_first_parameter
327
356
  SupportedStyles:
@@ -616,11 +645,27 @@ Layout/FirstMethodParameterLineBreak:
616
645
  Enabled: false
617
646
  VersionAdded: '0.49'
618
647
 
619
- Layout/FirstParameterIndentation:
620
- Description: 'Checks the indentation of the first parameter in a method call.'
648
+ Layout/HeredocArgumentClosingParenthesis:
649
+ Description: >-
650
+ Checks for the placement of the closing parenthesis in a
651
+ method call that passes a HEREDOC string as an argument.
652
+ Enabled: false
653
+ VersionAdded: '0.68'
654
+
655
+ Layout/IndentAssignment:
656
+ Description: >-
657
+ Checks the indentation of the first line of the
658
+ right-hand-side of a multi-line assignment.
621
659
  Enabled: true
622
660
  VersionAdded: '0.49'
623
- VersionChanged: '0.56'
661
+ # By default, the indentation width from `Layout/IndentationWidth` is used
662
+ # But it can be overridden by setting this parameter
663
+ IndentationWidth: ~
664
+
665
+ Layout/IndentFirstArgument:
666
+ Description: 'Checks the indentation of the first argument in a method call.'
667
+ Enabled: true
668
+ VersionAdded: '0.68'
624
669
  EnforcedStyle: special_for_inner_method_call_in_parentheses
625
670
  SupportedStyles:
626
671
  # The first parameter should always be indented one step more than the
@@ -641,12 +686,12 @@ Layout/FirstParameterIndentation:
641
686
  # But it can be overridden by setting this parameter
642
687
  IndentationWidth: ~
643
688
 
644
- Layout/IndentArray:
689
+ Layout/IndentFirstArrayElement:
645
690
  Description: >-
646
691
  Checks the indentation of the first element in an array
647
692
  literal.
648
693
  Enabled: true
649
- VersionAdded: '0.49'
694
+ VersionAdded: '0.68'
650
695
  # The value `special_inside_parentheses` means that array literals with
651
696
  # brackets that have their opening bracket on the same line as a surrounding
652
697
  # opening round parenthesis, shall have their first element indented relative
@@ -667,20 +712,10 @@ Layout/IndentArray:
667
712
  # But it can be overridden by setting this parameter
668
713
  IndentationWidth: ~
669
714
 
670
- Layout/IndentAssignment:
671
- Description: >-
672
- Checks the indentation of the first line of the
673
- right-hand-side of a multi-line assignment.
674
- Enabled: true
675
- VersionAdded: '0.49'
676
- # By default, the indentation width from `Layout/IndentationWidth` is used
677
- # But it can be overridden by setting this parameter
678
- IndentationWidth: ~
679
-
680
- Layout/IndentHash:
715
+ Layout/IndentFirstHashElement:
681
716
  Description: 'Checks the indentation of the first key in a hash literal.'
682
717
  Enabled: true
683
- VersionAdded: '0.49'
718
+ VersionAdded: '0.68'
684
719
  # The value `special_inside_parentheses` means that hash literals with braces
685
720
  # that have their opening brace on the same line as a surrounding opening
686
721
  # round parenthesis, shall have their first key indented relative to the
@@ -701,6 +736,21 @@ Layout/IndentHash:
701
736
  # But it can be overridden by setting this parameter
702
737
  IndentationWidth: ~
703
738
 
739
+ Layout/IndentFirstParameter:
740
+ Description: >-
741
+ Checks the indentation of the first parameter in a
742
+ method definition.
743
+ Enabled: true
744
+ VersionAdded: '0.49'
745
+ VersionChanged: '0.68'
746
+ EnforcedStyle: special_for_inner_method_call_in_parentheses
747
+ SupportedStyles:
748
+ - consistent
749
+ - align_parentheses
750
+ # By default, the indentation width from `Layout/IndentationWidth` is used
751
+ # But it can be overridden by setting this parameter
752
+ IndentationWidth: ~
753
+
704
754
  Layout/IndentHeredoc:
705
755
  Description: 'This cop checks the indentation of the here document bodies.'
706
756
  StyleGuide: '#squiggly-heredocs'
@@ -1310,6 +1360,13 @@ Lint/HandleExceptions:
1310
1360
  Enabled: true
1311
1361
  VersionAdded: '0.9'
1312
1362
 
1363
+ Lint/HeredocMethodCallPosition:
1364
+ Description: >-
1365
+ Checks for the ordering of a method call where
1366
+ the receiver of the call is a HEREDOC.
1367
+ Enabled: false
1368
+ VersionAdded: '0.68'
1369
+
1313
1370
  Lint/ImplicitStringConcatenation:
1314
1371
  Description: >-
1315
1372
  Checks for adjacent string literals on the same line, which
@@ -1557,6 +1614,7 @@ Lint/UnderscorePrefixedVariableName:
1557
1614
  Description: 'Do not use prefix `_` for a variable that is used.'
1558
1615
  Enabled: true
1559
1616
  VersionAdded: '0.21'
1617
+ AllowKeywordBlockArguments: false
1560
1618
 
1561
1619
  Lint/UnifiedInteger:
1562
1620
  Description: 'Use Integer instead of Fixnum or Bignum'
@@ -1720,7 +1778,8 @@ Metrics/LineLength:
1720
1778
  StyleGuide: '#80-character-limits'
1721
1779
  Enabled: true
1722
1780
  VersionAdded: '0.25'
1723
- VersionChanged: '0.46'
1781
+ VersionChanged: '0.68'
1782
+ AutoCorrect: false
1724
1783
  Max: 80
1725
1784
  # To make it possible to copy or click on URIs in the code, we allow lines
1726
1785
  # containing a URI to be longer than Max.
@@ -1939,6 +1998,7 @@ Naming/RescuedExceptionsVariableName:
1939
1998
  Description: 'Use consistent rescued exceptions variables naming.'
1940
1999
  Enabled: true
1941
2000
  VersionAdded: '0.67'
2001
+ VersionChanged: '0.68'
1942
2002
  PreferredName: e
1943
2003
 
1944
2004
  Naming/UncommunicativeBlockParamName:
@@ -2000,216 +2060,6 @@ Naming/VariableNumber:
2000
2060
  - normalcase
2001
2061
  - non_integer
2002
2062
 
2003
- #################### Performance ###########################
2004
-
2005
- Performance/Caller:
2006
- Description: >-
2007
- Use `caller(n..n)` instead of `caller`.
2008
- Enabled: true
2009
- VersionAdded: '0.49'
2010
-
2011
- Performance/CaseWhenSplat:
2012
- Description: >-
2013
- Reordering `when` conditions with a splat to the end
2014
- of the `when` branches can improve performance.
2015
- Enabled: false
2016
- AutoCorrect: false
2017
- SafeAutoCorrect: false
2018
- VersionAdded: '0.34'
2019
- VersionChanged: '0.59'
2020
-
2021
- Performance/Casecmp:
2022
- Description: >-
2023
- Use `casecmp` rather than `downcase ==`, `upcase ==`, `== downcase`, or `== upcase`..
2024
- Reference: 'https://github.com/JuanitoFatas/fast-ruby#stringcasecmp-vs-stringdowncase---code'
2025
- Enabled: true
2026
- VersionAdded: '0.36'
2027
-
2028
- Performance/ChainArrayAllocation:
2029
- Description: >-
2030
- Instead of chaining array methods that allocate new arrays, mutate an
2031
- existing array.
2032
- Reference: 'https://twitter.com/schneems/status/1034123879978029057'
2033
- Enabled: false
2034
- VersionAdded: '0.59'
2035
-
2036
- Performance/CompareWithBlock:
2037
- Description: 'Use `sort_by(&:foo)` instead of `sort { |a, b| a.foo <=> b.foo }`.'
2038
- Enabled: true
2039
- VersionAdded: '0.46'
2040
-
2041
- Performance/Count:
2042
- Description: >-
2043
- Use `count` instead of `select...size`, `reject...size`,
2044
- `select...count`, `reject...count`, `select...length`,
2045
- and `reject...length`.
2046
- # This cop has known compatibility issues with `ActiveRecord` and other
2047
- # frameworks. ActiveRecord's `count` ignores the block that is passed to it.
2048
- # For more information, see the documentation in the cop itself.
2049
- # If you understand the known risk, you can disable `SafeMode`.
2050
- SafeMode: true
2051
- Enabled: true
2052
- VersionAdded: '0.31'
2053
- VersionChanged: '0.39'
2054
-
2055
- Performance/Detect:
2056
- Description: >-
2057
- Use `detect` instead of `select.first`, `find_all.first`,
2058
- `select.last`, and `find_all.last`.
2059
- Reference: 'https://github.com/JuanitoFatas/fast-ruby#enumerabledetect-vs-enumerableselectfirst-code'
2060
- # This cop has known compatibility issues with `ActiveRecord` and other
2061
- # frameworks. `ActiveRecord` does not implement a `detect` method and `find`
2062
- # has its own meaning. Correcting `ActiveRecord` methods with this cop
2063
- # should be considered unsafe.
2064
- SafeMode: true
2065
- Enabled: true
2066
- VersionAdded: '0.30'
2067
- VersionChanged: '0.39'
2068
-
2069
- Performance/DoubleStartEndWith:
2070
- Description: >-
2071
- Use `str.{start,end}_with?(x, ..., y, ...)`
2072
- instead of `str.{start,end}_with?(x, ...) || str.{start,end}_with?(y, ...)`.
2073
- Enabled: true
2074
- VersionAdded: '0.36'
2075
- VersionChanged: '0.48'
2076
- # Used to check for `starts_with?` and `ends_with?`.
2077
- # These methods are defined by `ActiveSupport`.
2078
- IncludeActiveSupportAliases: false
2079
-
2080
- Performance/EndWith:
2081
- Description: 'Use `end_with?` instead of a regex match anchored to the end of a string.'
2082
- Reference: 'https://github.com/JuanitoFatas/fast-ruby#stringmatch-vs-stringstart_withstringend_with-code-start-code-end'
2083
- # This will change to a new method call which isn't guaranteed to be on the
2084
- # object. Switching these methods has to be done with knowledge of the types
2085
- # of the variables which rubocop doesn't have.
2086
- SafeAutoCorrect: false
2087
- AutoCorrect: false
2088
- Enabled: true
2089
- VersionAdded: '0.36'
2090
- VersionChanged: '0.44'
2091
-
2092
- Performance/FixedSize:
2093
- Description: 'Do not compute the size of statically sized objects except in constants'
2094
- Enabled: true
2095
- VersionAdded: '0.35'
2096
-
2097
- Performance/FlatMap:
2098
- Description: >-
2099
- Use `Enumerable#flat_map`
2100
- instead of `Enumerable#map...Array#flatten(1)`
2101
- or `Enumberable#collect..Array#flatten(1)`
2102
- Reference: 'https://github.com/JuanitoFatas/fast-ruby#enumerablemaparrayflatten-vs-enumerableflat_map-code'
2103
- Enabled: true
2104
- VersionAdded: '0.30'
2105
- EnabledForFlattenWithoutParams: false
2106
- # If enabled, this cop will warn about usages of
2107
- # `flatten` being called without any parameters.
2108
- # This can be dangerous since `flat_map` will only flatten 1 level, and
2109
- # `flatten` without any parameters can flatten multiple levels.
2110
-
2111
- Performance/InefficientHashSearch:
2112
- Description: 'Use `key?` or `value?` instead of `keys.include?` or `values.include?`'
2113
- Reference: 'https://github.com/JuanitoFatas/fast-ruby#hashkey-instead-of-hashkeysinclude-code'
2114
- Enabled: true
2115
- VersionAdded: '0.56'
2116
- Safe: false
2117
-
2118
- Performance/OpenStruct:
2119
- Description: 'Use `Struct` instead of `OpenStruct`.'
2120
- Enabled: false
2121
- VersionAdded: '0.61'
2122
- Safe: false
2123
-
2124
- Performance/RangeInclude:
2125
- Description: 'Use `Range#cover?` instead of `Range#include?`.'
2126
- Reference: 'https://github.com/JuanitoFatas/fast-ruby#cover-vs-include-code'
2127
- Enabled: true
2128
- VersionAdded: '0.36'
2129
- Safe: false
2130
-
2131
- Performance/RedundantBlockCall:
2132
- Description: 'Use `yield` instead of `block.call`.'
2133
- Reference: 'https://github.com/JuanitoFatas/fast-ruby#proccall-and-block-arguments-vs-yieldcode'
2134
- Enabled: true
2135
- VersionAdded: '0.36'
2136
-
2137
- Performance/RedundantMatch:
2138
- Description: >-
2139
- Use `=~` instead of `String#match` or `Regexp#match` in a context where the
2140
- returned `MatchData` is not needed.
2141
- Enabled: true
2142
- VersionAdded: '0.36'
2143
-
2144
- Performance/RedundantMerge:
2145
- Description: 'Use Hash#[]=, rather than Hash#merge! with a single key-value pair.'
2146
- Reference: 'https://github.com/JuanitoFatas/fast-ruby#hashmerge-vs-hash-code'
2147
- Enabled: true
2148
- VersionAdded: '0.36'
2149
- # Max number of key-value pairs to consider an offense
2150
- MaxKeyValuePairs: 2
2151
-
2152
- Performance/RegexpMatch:
2153
- Description: >-
2154
- Use `match?` instead of `Regexp#match`, `String#match`, `Symbol#match`,
2155
- `Regexp#===`, or `=~` when `MatchData` is not used.
2156
- Reference: 'https://github.com/JuanitoFatas/fast-ruby#regexp-vs-stringmatch-vs-string-vs-stringmatch-code-'
2157
- Enabled: true
2158
- VersionAdded: '0.47'
2159
-
2160
- Performance/ReverseEach:
2161
- Description: 'Use `reverse_each` instead of `reverse.each`.'
2162
- Reference: 'https://github.com/JuanitoFatas/fast-ruby#enumerablereverseeach-vs-enumerablereverse_each-code'
2163
- Enabled: true
2164
- VersionAdded: '0.30'
2165
-
2166
- Performance/Size:
2167
- Description: >-
2168
- Use `size` instead of `count` for counting
2169
- the number of elements in `Array` and `Hash`.
2170
- Reference: 'https://github.com/JuanitoFatas/fast-ruby#arraylength-vs-arraysize-vs-arraycount-code'
2171
- Enabled: true
2172
- VersionAdded: '0.30'
2173
-
2174
- Performance/StartWith:
2175
- Description: 'Use `start_with?` instead of a regex match anchored to the beginning of a string.'
2176
- Reference: 'https://github.com/JuanitoFatas/fast-ruby#stringmatch-vs-stringstart_withstringend_with-code-start-code-end'
2177
- # This will change to a new method call which isn't guaranteed to be on the
2178
- # object. Switching these methods has to be done with knowledge of the types
2179
- # of the variables which rubocop doesn't have.
2180
- SafeAutoCorrect: false
2181
- AutoCorrect: false
2182
- Enabled: true
2183
- VersionAdded: '0.36'
2184
- VersionChanged: '0.44'
2185
-
2186
- Performance/StringReplacement:
2187
- Description: >-
2188
- Use `tr` instead of `gsub` when you are replacing the same
2189
- number of characters. Use `delete` instead of `gsub` when
2190
- you are deleting characters.
2191
- Reference: 'https://github.com/JuanitoFatas/fast-ruby#stringgsub-vs-stringtr-code'
2192
- Enabled: true
2193
- VersionAdded: '0.33'
2194
-
2195
- Performance/TimesMap:
2196
- Description: 'Checks for .times.map calls.'
2197
- AutoCorrect: false
2198
- Enabled: true
2199
- VersionAdded: '0.36'
2200
- VersionChanged: '0.50'
2201
- SafeAutoCorrect: false # see https://github.com/rubocop-hq/rubocop/issues/4658
2202
-
2203
- Performance/UnfreezeString:
2204
- Description: 'Use unary plus to get an unfrozen string literal.'
2205
- Enabled: true
2206
- VersionAdded: '0.50'
2207
-
2208
- Performance/UriDefaultParser:
2209
- Description: 'Use `URI::DEFAULT_PARSER` instead of `URI::Parser.new`.'
2210
- Enabled: true
2211
- VersionAdded: '0.50'
2212
-
2213
2063
  #################### Rails #################################
2214
2064
 
2215
2065
  # By default, the rails cops are not run. Override in project or home
@@ -2624,8 +2474,9 @@ Rails/TimeZone:
2624
2474
  StyleGuide: 'https://github.com/rubocop-hq/rails-style-guide#time'
2625
2475
  Reference: 'http://danilenko.org/2012/7/6/rails_timezones'
2626
2476
  Enabled: true
2477
+ Safe: false
2627
2478
  VersionAdded: '0.30'
2628
- VersionChanged: '0.33'
2479
+ VersionChanged: '0.68'
2629
2480
  # The value `strict` means that `Time` should be used with `zone`.
2630
2481
  # The value `flexible` allows usage of `in_time_zone` instead of `zone`.
2631
2482
  EnforcedStyle: flexible
@@ -2819,6 +2670,8 @@ Style/BlockDelimiters:
2819
2670
  # return value is being chained with another method (in which case braces
2820
2671
  # are enforced).
2821
2672
  - braces_for_chaining
2673
+ # The `always_braces` style always enforces braces.
2674
+ - always_braces
2822
2675
  ProceduralMethods:
2823
2676
  # Methods that are known to be procedural in nature but look functional from
2824
2677
  # their usage, e.g.
@@ -9,18 +9,6 @@ require 'benchmark'
9
9
  cli = RuboCop::CLI.new
10
10
  result = 0
11
11
 
12
- if defined?(Bundler)
13
- gemfile_lock = Bundler.read_file(Bundler.default_lockfile)
14
- parser = Bundler::LockfileParser.new(gemfile_lock)
15
-
16
- unless parser.dependencies['rubocop-performance']
17
- warn Rainbow(<<-MESSAGE.strip_indent).yellow.to_s
18
- [Warn] Performance Cops will be removed from RuboCop 0.68. Use rubocop-performance gem instead.
19
- https://github.com/rubocop-hq/rubocop/tree/master/manual/migrate_performance_cops.md
20
- MESSAGE
21
- end
22
- end
23
-
24
12
  time = Benchmark.realtime do
25
13
  result = cli.run
26
14
  end