gitlab-styles 9.2.0 → 10.0.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 (37) hide show
  1. checksums.yaml +4 -4
  2. data/.gitlab-ci.yml +14 -2
  3. data/.rubocop.yml +2 -1
  4. data/.rubocop_todo.yml +12 -0
  5. data/.tests_mapping.yml +10 -0
  6. data/Gemfile +9 -4
  7. data/gitlab-styles.gemspec +7 -7
  8. data/lefthook.yml +11 -3
  9. data/lib/gitlab/styles/version.rb +1 -1
  10. data/lib/rubocop/cop/active_record_dependent.rb +0 -5
  11. data/lib/rubocop/cop/active_record_serialize.rb +0 -6
  12. data/lib/rubocop/cop/avoid_return_from_blocks.rb +4 -4
  13. data/lib/rubocop/cop/gem_fetcher.rb +1 -1
  14. data/lib/rubocop/cop/gitlab_security/deep_munge.rb +36 -0
  15. data/lib/rubocop/cop/gitlab_security/json_serialization.rb +133 -0
  16. data/lib/rubocop/cop/gitlab_security/public_send.rb +47 -0
  17. data/lib/rubocop/cop/gitlab_security/redirect_to_params_update.rb +38 -0
  18. data/lib/rubocop/cop/gitlab_security/send_file_params.rb +40 -0
  19. data/lib/rubocop/cop/gitlab_security/sql_injection.rb +41 -0
  20. data/lib/rubocop/cop/gitlab_security/system_command_injection.rb +38 -0
  21. data/lib/rubocop/cop/in_batches.rb +0 -2
  22. data/lib/rubocop/cop/line_break_after_guard_clauses.rb +3 -5
  23. data/lib/rubocop/cop/migration/update_large_table.rb +1 -0
  24. data/lib/rubocop/cop/polymorphic_associations.rb +0 -5
  25. data/lib/rubocop/cop/rails/include_url_helper.rb +0 -2
  26. data/lib/rubocop/cop/redirect_with_status.rb +44 -30
  27. data/rubocop-capybara.yml +8 -0
  28. data/rubocop-default.yml +1 -1
  29. data/rubocop-layout.yml +2 -2
  30. data/rubocop-lint.yml +130 -2
  31. data/rubocop-naming.yml +5 -0
  32. data/rubocop-rails.yml +25 -0
  33. data/rubocop-rspec.yml +0 -5
  34. data/rubocop-security.yml +19 -1
  35. data/rubocop-style.yml +18 -3
  36. metadata +38 -29
  37. data/lib/gitlab/styles/rubocop/model_helpers.rb +0 -19
@@ -1,7 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require_relative '../../../gitlab/styles/rubocop/model_helpers'
4
-
5
3
  module Rubocop
6
4
  module Cop
7
5
  module Rails
@@ -2,44 +2,58 @@
2
2
 
3
3
  module Rubocop
4
4
  module Cop
5
- # Prevents usage of 'redirect_to' in actions 'destroy' without specifying 'status'.
5
+ # Prevents usage of 'redirect_to' in actions 'destroy' and 'destroy_all'
6
+ # without specifying 'status'.
7
+ #
8
+ # @example
9
+ # # bad
10
+ #
11
+ # def destroy
12
+ # redirect_to root_path
13
+ # end
14
+ #
15
+ # def destroy_all
16
+ # redirect_to root_path, alert: 'Oh no!'
17
+ # end
18
+ #
19
+ # # good
20
+ #
21
+ # def destroy
22
+ # redirect_to root_path, status: 302
23
+ # end
24
+ #
25
+ # def destroy_all
26
+ # redirect_to root_path, alert: 'Oh no!', status: 302
27
+ # end
28
+ #
29
+ # def show
30
+ # redirect_to root_path
31
+ # end
32
+ #
6
33
  # See https://gitlab.com/gitlab-org/gitlab-ce/issues/31840
7
34
  class RedirectWithStatus < RuboCop::Cop::Base
8
- MSG = 'Do not use "redirect_to" without "status" in "destroy" action'
35
+ MSG = 'Do not use "redirect_to" without "status" in "%<name>s" action.'
9
36
 
10
- def on_def(node)
11
- return unless in_controller?(node)
12
- return unless destroy?(node) || destroy_all?(node)
37
+ RESTRICT_ON_SEND = %i[redirect_to].freeze
13
38
 
14
- node.each_descendant(:send) do |def_node|
15
- next unless redirect_to?(def_node)
39
+ ACTIONS = %i[destroy destroy_all].to_set.freeze
16
40
 
17
- methods = []
41
+ # @!method redirect_to_with_status?(node)
42
+ def_node_matcher :redirect_to_with_status?, <<~PATTERN
43
+ (send nil? :redirect_to ...
44
+ (hash <(pair (sym :status) _) ...>)
45
+ )
46
+ PATTERN
18
47
 
19
- def_node.children.last.each_node(:pair) do |pair|
20
- methods << pair.children.first.children.first
21
- end
48
+ def on_send(node)
49
+ return if redirect_to_with_status?(node)
22
50
 
23
- add_offense(def_node.loc.selector) unless methods.include?(:status)
24
- end
25
- end
26
-
27
- private
28
-
29
- def in_controller?(node)
30
- node.location.expression.source_buffer.name.end_with?('_controller.rb')
31
- end
51
+ node.each_ancestor(:def) do |def_node|
52
+ next unless ACTIONS.include?(def_node.method_name)
32
53
 
33
- def destroy?(node)
34
- node.children.first == :destroy
35
- end
36
-
37
- def destroy_all?(node)
38
- node.children.first == :destroy_all
39
- end
40
-
41
- def redirect_to?(node)
42
- node.children[1] == :redirect_to
54
+ message = format(MSG, name: def_node.method_name)
55
+ add_offense(node.loc.selector, message: message)
56
+ end
43
57
  end
44
58
  end
45
59
  end
@@ -0,0 +1,8 @@
1
+ ---
2
+ require:
3
+ - ./lib/gitlab/styles/rubocop
4
+
5
+ # Checks if there is a more specific finder offered by Capybara.
6
+ # https://gitlab.com/gitlab-org/ruby/gems/gitlab-styles/-/merge_requests/131#note_1141024624
7
+ Capybara/SpecificFinders:
8
+ Enabled: false
data/rubocop-default.yml CHANGED
@@ -1,6 +1,5 @@
1
1
  ---
2
2
  require:
3
- - rubocop-gitlab-security
4
3
  - rubocop-performance
5
4
  - rubocop-rspec
6
5
  - rubocop-rails
@@ -10,6 +9,7 @@ require:
10
9
  inherit_from:
11
10
  - rubocop-all.yml
12
11
  - rubocop-bundler.yml
12
+ - rubocop-capybara.yml
13
13
  - rubocop-fips.yml
14
14
  - rubocop-gemspec.yml
15
15
  - rubocop-graphql.yml
data/rubocop-layout.yml CHANGED
@@ -54,9 +54,9 @@ Layout/DotPosition:
54
54
  Layout/ElseAlignment:
55
55
  Enabled: true
56
56
 
57
- # Add an empty line after magic comments to separate them from code.
57
+ # Checks for a newline after the final magic comment.
58
58
  Layout/EmptyLineAfterMagicComment:
59
- Enabled: false
59
+ Enabled: true
60
60
 
61
61
  # Use empty lines between defs.
62
62
  Layout/EmptyLineBetweenDefs:
data/rubocop-lint.yml CHANGED
@@ -1,4 +1,8 @@
1
1
  ---
2
+ # Checks for mistyped shorthand assignments.
3
+ Lint/AmbiguousAssignment:
4
+ Enabled: true
5
+
2
6
  # Checks for ambiguous block association with method when param passed without
3
7
  # parentheses.
4
8
  Lint/AmbiguousBlockAssociation:
@@ -9,6 +13,15 @@ Lint/AmbiguousBlockAssociation:
9
13
  Lint/AmbiguousOperator:
10
14
  Enabled: true
11
15
 
16
+ # Looks for expressions containing multiple binary operators where precedence
17
+ # is ambiguous due to lack of parentheses.
18
+ Lint/AmbiguousOperatorPrecedence:
19
+ Enabled: true
20
+
21
+ # Checks for ambiguous ranges.
22
+ Lint/AmbiguousRange:
23
+ Enabled: true
24
+
12
25
  # This cop checks for ambiguous regexp literals in the first argument of
13
26
  # a method invocation without parentheses.
14
27
  Lint/AmbiguousRegexpLiteral:
@@ -31,6 +44,10 @@ Lint/CircularArgumentReference:
31
44
  Lint/ConstantDefinitionInBlock: # (new in 0.91)
32
45
  Enabled: true
33
46
 
47
+ # Checks for overwriting an exception with an exception result by use rescue =>.
48
+ Lint/ConstantOverwrittenInRescue:
49
+ Enabled: true
50
+
34
51
  # Check for debugger calls.
35
52
  Lint/Debugger:
36
53
  Enabled: true
@@ -39,17 +56,36 @@ Lint/Debugger:
39
56
  Lint/DeprecatedClassMethods:
40
57
  Enabled: true
41
58
 
59
+ # Checks for deprecated constants.
60
+ Lint/DeprecatedConstants:
61
+ Enabled: true
62
+
42
63
  # Algorithmic constants for OpenSSL::Cipher and OpenSSL::Digest deprecated since OpenSSL version 2.2.0.
43
64
  # Prefer passing a string instead.
44
65
  # https://docs.rubocop.org/rubocop/0.89/cops_lint.html#lintdeprecatedopensslconstant
45
66
  Lint/DeprecatedOpenSSLConstant:
46
67
  Enabled: true
47
68
 
69
+ # Checks that there are no repeated bodies within if/unless, case-when, case-in
70
+ # and rescue constructs.
71
+ Lint/DuplicateBranch:
72
+ Enabled: true
73
+ IgnoreLiteralBranches: true
74
+ IgnoreConstantBranches: true
75
+
48
76
  # Checks that there are no repeated conditions used in if 'elsif'.
49
77
  # https://docs.rubocop.org/rubocop/0.89/cops_lint.html#lintduplicateelsifcondition
50
78
  Lint/DuplicateElsifCondition:
51
79
  Enabled: true
52
80
 
81
+ # Checks for duplicated magic comments.
82
+ Lint/DuplicateMagicComment:
83
+ Enabled: true
84
+
85
+ # Checks for duplicate elements in Regexp character classes.
86
+ Lint/DuplicateRegexpCharacterClassElement:
87
+ Enabled: true
88
+
53
89
  Lint/DuplicateRequire: # (new in 0.90)
54
90
  Enabled: true
55
91
 
@@ -66,6 +102,17 @@ Lint/EachWithObjectArgument:
66
102
  Lint/ElseLayout:
67
103
  Enabled: true
68
104
 
105
+ # Checks for blocks without a body. Such empty blocks are typically an
106
+ # oversight or we should provide a comment be clearer what we’re aiming for.
107
+ Lint/EmptyBlock:
108
+ Enabled: true
109
+
110
+ # Checks for classes and metaclasses without a body. Such empty classes and
111
+ # metaclasses are typically an oversight or we should provide a comment to be
112
+ # clearer what we’re aiming for.
113
+ Lint/EmptyClass:
114
+ Enabled: true
115
+
69
116
  # Checks for the presence of if, elsif and unless branches without a body.
70
117
  # https://docs.rubocop.org/rubocop/0.89/cops_lint.html#lintemptyconditionalbody
71
118
  Lint/EmptyConditionalBody:
@@ -78,6 +125,10 @@ Lint/EmptyEnsure:
78
125
  Lint/EmptyFile: # (new in 0.90)
79
126
  Enabled: true
80
127
 
128
+ # Checks for the presence of in pattern branches without a body.
129
+ Lint/EmptyInPattern:
130
+ Enabled: true
131
+
81
132
  # Checks for the presence of `when` branches without a body.
82
133
  Lint/EmptyWhen:
83
134
  Enabled: true
@@ -111,11 +162,21 @@ Lint/IdentityComparison: # (new in 0.91)
111
162
  Lint/ImplicitStringConcatenation:
112
163
  Enabled: true
113
164
 
165
+ # This cop checks for IO.select that is incompatible with Fiber Scheduler since
166
+ # Ruby 3.0.
167
+ Lint/IncompatibleIoSelectWithFiberScheduler:
168
+ Enabled: true
169
+
114
170
  # Checks for attempts to use `private` or `protected` to set the visibility
115
171
  # of a class method, which does not work.
116
172
  Lint/IneffectiveAccessModifier:
117
173
  Enabled: false
118
174
 
175
+ # Checks uses of lambda without a literal block. It emulates the following
176
+ # warning in Ruby 3.0:
177
+ Lint/LambdaWithoutLiteralBlock:
178
+ Enabled: true
179
+
119
180
  # Checks of literals used in conditions.
120
181
  Lint/LiteralAsCondition:
121
182
  Enabled: true
@@ -147,11 +208,30 @@ Lint/NestedMethodDefinition:
147
208
  Lint/NextWithoutAccumulator:
148
209
  Enabled: true
149
210
 
211
+ # Checks for non-atomic file operation. And then replace it with a nearly
212
+ # equivalent and atomic method.
213
+ Lint/NonAtomicFileOperation:
214
+ Enabled: true
215
+
216
+ # Checks for the presence of a return inside a begin..end block in assignment
217
+ # contexts.
218
+ Lint/NoReturnInBeginEndBlocks:
219
+ Enabled: true
220
+
221
+ # Checks for uses of numbered parameter assignment.
222
+ # Reason: Ruby >= 3.0 causes an error so no need to enable it.
223
+ Lint/NumberedParameterAssignment:
224
+ Enabled: false
225
+
150
226
  # Looks for references of Regexp captures that are out of range and thus always returns nil.
151
227
  # https://docs.rubocop.org/rubocop/0.89/cops_lint.html#lintoutofrangeregexpref
152
228
  Lint/OutOfRangeRegexpRef:
153
229
  Enabled: true
154
230
 
231
+ # Checks for unintended or-assignment to a constant.
232
+ Lint/OrAssignmentToConstant:
233
+ Enabled: true
234
+
155
235
  # Checks for method calls with a space before the opening parenthesis.
156
236
  Lint/ParenthesesAsGroupedExpression:
157
237
  Enabled: true
@@ -165,6 +245,11 @@ Lint/RaiseException:
165
245
  Lint/RandOne:
166
246
  Enabled: true
167
247
 
248
+ # This cop checks for redundant sort method to Dir.glob and Dir[]. Sort globbed
249
+ # results by default in Ruby 3.0.
250
+ Lint/RedundantDirGlobSort:
251
+ Enabled: true
252
+
168
253
  # This cop checks for unneeded usages of splat expansion
169
254
  Lint/RedundantSplatExpansion:
170
255
  Enabled: false
@@ -173,10 +258,23 @@ Lint/RedundantSplatExpansion:
173
258
  Lint/RedundantStringCoercion:
174
259
  Enabled: true
175
260
 
261
+ # Checks if include or prepend is called in refine block.
262
+ Lint/RefinementImportMethods:
263
+ Enabled: true
264
+
176
265
  # Use parentheses in the method call to avoid confusion about precedence.
177
266
  Lint/RequireParentheses:
178
267
  Enabled: true
179
268
 
269
+ # Checks that a range literal is enclosed in parentheses when the end of the
270
+ # range is at a line break.
271
+ Lint/RequireRangeParentheses:
272
+ Enabled: true
273
+
274
+ # Checks for uses a file requiring itself with require_relative.
275
+ Lint/RequireRelativeSelfPath:
276
+ Enabled: true
277
+
180
278
  # Avoid rescuing the Exception class.
181
279
  Lint/RescueException:
182
280
  Enabled: true
@@ -207,6 +305,17 @@ Lint/StructNewOverride:
207
305
  Lint/SuppressedException:
208
306
  Enabled: false
209
307
 
308
+ # Checks for uses of literal strings converted to a symbol where a literal
309
+ # symbol could be used instead.
310
+ Lint/SymbolConversion:
311
+ Enabled: true
312
+ EnforcedStyle: strict
313
+
314
+ # Ensures that to_enum/enum_for, called for the current method, has correct
315
+ # arguments.
316
+ Lint/ToEnumArguments:
317
+ Enabled: true
318
+
210
319
  # Checks for top level return with arguments.
211
320
  # https://docs.rubocop.org/rubocop/0.89/cops_lint.html#linttoplevelreturnwithargument
212
321
  Lint/TopLevelReturnWithArgument:
@@ -215,10 +324,25 @@ Lint/TopLevelReturnWithArgument:
215
324
  Lint/TrailingCommaInAttributeDeclaration: # (new in 0.90)
216
325
  Enabled: true
217
326
 
327
+ # Checks for "triple quotes" (strings delimited by any odd number of quotes
328
+ # greater than 1).
329
+ Lint/TripleQuotes:
330
+ Enabled: true
331
+
218
332
  # Do not use prefix `_` for a variable that is used.
219
333
  Lint/UnderscorePrefixedVariableName:
220
334
  Enabled: true
221
335
 
336
+ # Checks for a block that is known to need more positional block arguments than
337
+ # are given.
338
+ Lint/UnexpectedBlockArity:
339
+ Enabled: true
340
+
341
+ # Looks for reduce or inject blocks where the value returned (implicitly or
342
+ # explicitly) does not include the accumulator.
343
+ Lint/UnmodifiedReduceAccumulator:
344
+ Enabled: true
345
+
222
346
  # This cop checks for using Fixnum or Bignum constant
223
347
  Lint/UnifiedInteger:
224
348
  Enabled: true
@@ -234,11 +358,11 @@ Lint/UnreachableLoop:
234
358
 
235
359
  # This cop checks for unused block arguments.
236
360
  Lint/UnusedBlockArgument:
237
- Enabled: false
361
+ Enabled: true
238
362
 
239
363
  # This cop checks for unused method arguments.
240
364
  Lint/UnusedMethodArgument:
241
- Enabled: false
365
+ Enabled: true
242
366
 
243
367
  # Checks for useless access modifiers.
244
368
  Lint/UselessAccessModifier:
@@ -263,6 +387,10 @@ Lint/UselessSetterCall:
263
387
  Lint/UselessTimes: # (new in 0.91)
264
388
  Enabled: true
265
389
 
390
+ # Looks for ruby2_keywords calls for methods that do not need it.
391
+ Lint/UselessRuby2Keywords:
392
+ Enabled: true
393
+
266
394
  # Possible use of operator/literal/variable in void context.
267
395
  Lint/Void:
268
396
  Enabled: true
data/rubocop-naming.yml CHANGED
@@ -27,6 +27,11 @@ Naming/FileName:
27
27
  Naming/MemoizedInstanceVariableName:
28
28
  Enabled: false
29
29
 
30
+ # Recommends the use of inclusive language instead of problematic terms.
31
+ Naming/InclusiveLanguage:
32
+ Enabled: true
33
+ CheckStrings: true
34
+
30
35
  # Use the configured style when naming methods.
31
36
  Naming/MethodName:
32
37
  Enabled: true
data/rubocop-rails.yml CHANGED
@@ -3,6 +3,31 @@ require:
3
3
  - rubocop-rails
4
4
  - ./lib/gitlab/styles/rubocop
5
5
 
6
+ # Cop that prevents the use of `dependent: ...` in ActiveRecord models.
7
+ Cop/ActiveRecordDependent:
8
+ Enabled: true
9
+ Include:
10
+ - app/models/**/*.rb
11
+
12
+ # Cop that prevents the use of `serialize` in ActiveRecord models.
13
+ Cop/ActiveRecordSerialize:
14
+ Enabled: true
15
+ Include:
16
+ - app/models/**/*.rb
17
+
18
+ # Cop that prevents the use of polymorphic associations.
19
+ Cop/PolymorphicAssociations:
20
+ Enabled: true
21
+ Include:
22
+ - app/models/**/*.rb
23
+
24
+ # Prevents usage of 'redirect_to' in actions 'destroy' and 'destroy_all'
25
+ # without specifying 'status'.
26
+ Cop/RedirectWithStatus:
27
+ Enabled: true
28
+ Include:
29
+ - app/controllers/**/*.rb
30
+
6
31
  # Enables Rails cops.
7
32
  Rails:
8
33
  Enabled: true
data/rubocop-rspec.yml CHANGED
@@ -14,11 +14,6 @@ RSpec/BeEql:
14
14
  RSpec/BeforeAfterAll:
15
15
  Enabled: false
16
16
 
17
- # Checks if there is a more specific finder offered by Capybara.
18
- # https://gitlab.com/gitlab-org/ruby/gems/gitlab-styles/-/merge_requests/131#note_1141024624
19
- RSpec/Capybara/SpecificFinders:
20
- Enabled: false
21
-
22
17
  # Enforces consistent use of be_a or be_kind_of.
23
18
  # https://gitlab.com/gitlab-org/ruby/gems/gitlab-styles/-/merge_requests/131#note_1141022718
24
19
  RSpec/ClassCheck:
data/rubocop-security.yml CHANGED
@@ -1,6 +1,11 @@
1
1
  ---
2
2
  require:
3
- - rubocop-gitlab-security
3
+ - ./lib/gitlab/styles/rubocop
4
+
5
+ # Checks for implementations of the hash method which combine values using
6
+ # custom logic instead of delegating to Array#hash.
7
+ Security/CompoundHash:
8
+ Enabled: true
4
9
 
5
10
  # This cop checks for the use of JSON class methods which have potential
6
11
  # security issues.
@@ -16,17 +21,23 @@ Security/IoMethods:
16
21
  Enabled: true
17
22
 
18
23
  GitlabSecurity/DeepMunge:
24
+ Description: Checks for disabling the deep munge security control.
19
25
  Enabled: true
26
+ StyleGuide: https://www.rubydoc.info/gems/gitlab-styles/RuboCop/Cop/GitlabSecurity/DeepMunge
20
27
  Exclude:
21
28
  - 'lib/**/*.rake'
22
29
  - 'spec/**/*'
23
30
 
24
31
  # To be enabled by https://gitlab.com/gitlab-org/gitlab-ce/merge_requests/13610
25
32
  GitlabSecurity/JsonSerialization:
33
+ Description: Checks for `to_json` / `as_json` without allowing via `only`.
26
34
  Enabled: false
35
+ StyleGuide: https://www.rubydoc.info/gems/gitlab-styles/RuboCop/Cop/GitlabSecurity/JsonSerialization
27
36
 
28
37
  GitlabSecurity/PublicSend:
38
+ Description: Checks for the use of `public_send`, `send`, and `__send__` methods.
29
39
  Enabled: true
40
+ StyleGuide: https://www.rubydoc.info/gems/gitlab-styles/RuboCop/Cop/GitlabSecurity/PublicSend
30
41
  Exclude:
31
42
  - 'config/**/*'
32
43
  - 'db/**/*'
@@ -35,19 +46,26 @@ GitlabSecurity/PublicSend:
35
46
  - 'qa/**/*'
36
47
  - 'spec/**/*'
37
48
 
49
+ GitlabSecurity/SendFileParams:
50
+ Description: Check for passing of params hash to send_file()
51
+ Enabled: true
52
+
38
53
  GitlabSecurity/RedirectToParamsUpdate:
54
+ Description: Check for use of redirect_to(params.update())
39
55
  Enabled: true
40
56
  Exclude:
41
57
  - 'lib/**/*.rake'
42
58
  - 'spec/**/*'
43
59
 
44
60
  GitlabSecurity/SqlInjection:
61
+ Description: Check for SQL Injection in where()
45
62
  Enabled: true
46
63
  Exclude:
47
64
  - 'lib/**/*.rake'
48
65
  - 'spec/**/*'
49
66
 
50
67
  GitlabSecurity/SystemCommandInjection:
68
+ Description: Check for Command Injection in System()
51
69
  Enabled: true
52
70
  Exclude:
53
71
  - 'lib/**/*.rake'
data/rubocop-style.yml CHANGED
@@ -18,10 +18,14 @@ Style/AndOr:
18
18
  Enabled: true
19
19
  EnforcedStyle: always
20
20
 
21
- # Enforces the use of Array() instead of explicit Array check or [*var]
22
- # https://docs.rubocop.org/rubocop/0.89/cops_style.html#stylearraycoercion
21
+ # This cop enforces the use of Array() instead of explicit Array check or [*var]
22
+ # It must remain disabled because of safety concern on Array().
23
+ # A false positive may occur depending on how the argument is handled by Array()
24
+ # (which can be different than just wrapping the argument in an array)
25
+ # As of Rubocop 1.0, this cop has been disabled by default.
26
+ # https://docs.rubocop.org/rubocop/1.44/cops_style.html#safety-3
23
27
  Style/ArrayCoercion:
24
- Enabled: true
28
+ Enabled: false
25
29
 
26
30
  # Use `Array#join` instead of `Array#*`.
27
31
  Style/ArrayJoin:
@@ -289,6 +293,17 @@ Style/NonNilCheck:
289
293
  Style/Not:
290
294
  Enabled: true
291
295
 
296
+ # Checks for numbered parameters. It can either restrict the use of numbered
297
+ # parameters to single-lined blocks, or disallow completely numbered
298
+ # parameters.
299
+ Style/NumberedParameters:
300
+ EnforcedStyle: disallow
301
+ Enabled: true
302
+
303
+ # Detects use of an excessive amount of numbered parameters in a single block.
304
+ Style/NumberedParametersLimit:
305
+ Enabled: false
306
+
292
307
  # Add underscores to large numeric literals to improve their readability.
293
308
  Style/NumericLiterals:
294
309
  Enabled: false