rubocop 0.67.2 → 0.68.0

Sign up to get free protection for your applications and to get access to all the features.
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