.rubocop.yml 18.4 KB
Newer Older
1 2 3
require:
  - rubocop-rspec
  - ./rubocop/rubocop
R
Robert Speicher 已提交
4

Z
Z.J. van de Weg 已提交
5 6
inherit_from: .rubocop_todo.yml

7 8 9 10 11 12 13 14 15 16 17 18 19
AllCops:
  TargetRubyVersion: 2.1
  # Cop names are not displayed in offense messages by default. Change behavior
  # by overriding DisplayCopNames, or by giving the -D/--display-cop-names
  # option.
  DisplayCopNames: true
  # Style guide URLs are not displayed in offense messages by default. Change
  # behavior by overriding DisplayStyleGuide, or by giving the
  # -S/--display-style-guide option.
  DisplayStyleGuide: false
  # Exclude some GitLab files
  Exclude:
    - 'vendor/**/*'
S
Sean McGivern 已提交
20 21
    - 'db/*'
    - 'db/fixtures/**/*'
22 23 24 25 26 27 28 29 30
    - 'tmp/**/*'
    - 'bin/**/*'
    - 'lib/backup/**/*'
    - 'lib/ci/backup/**/*'
    - 'lib/tasks/**/*'
    - 'lib/ci/migrate/**/*'
    - 'lib/email_validator.rb'
    - 'lib/gitlab/upgrader.rb'
    - 'lib/gitlab/seeder.rb'
31
    - 'generator_templates/**/*'
32 33 34 35 36


##################### Style ##################################

# Check indentation of private/protected visibility modifiers.
37
Style/AccessModifierIndentation:
38
  Enabled: true
39

40
# Use alias_method instead of alias.
41
Style/Alias:
42
  EnforcedStyle: prefer_alias_method
43
  Enabled: true
44

45
# Align the elements of an array literal if they span more than one line.
46
Style/AlignArray:
47
  Enabled: true
48

49
# Align the elements of a hash literal if they span more than one line.
50
Style/AlignHash:
51
  Enabled: true
52

53
# Use `Array#join` instead of `Array#*`.
54
Style/ArrayJoin:
55
  Enabled: true
56

57
# Use only ascii symbols in comments.
58
Style/AsciiComments:
59
  Enabled: true
60

61
# Use only ascii symbols in identifiers.
62
Style/AsciiIdentifiers:
63
  Enabled: true
64

65
# Checks for uses of Module#attr.
66
Style/Attr:
67
  Enabled: true
68

69
# Avoid the use of BEGIN blocks.
70
Style/BeginBlock:
D
Dmitriy Zaporozhets 已提交
71
  Enabled: true
72

73
# Do not use block comments.
74
Style/BlockComments:
75
  Enabled: true
76

77
# Put end statement of multiline block on its own line.
78
Style/BlockEndNewline:
79
  Enabled: true
80

81 82
# Avoid using {...} for multi-line blocks (multiline chaining is # always
# ugly). Prefer {...} over do...end for single-line blocks.
83
Style/BlockDelimiters:
84
  Enabled: true
85

86
# Indentation of when in a case/when/[else/]end.
87
Style/CaseIndentation:
88
  Enabled: true
89

90
# Checks for uses of character literals.
91
Style/CharacterLiteral:
D
Dmitriy Zaporozhets 已提交
92
  Enabled: true
93

94
# Use CamelCase for classes and modules.'
95
Style/ClassAndModuleCamelCase:
D
Dmitriy Zaporozhets 已提交
96
  Enabled: true
97

98
# Checks style of children classes and modules.
99 100 101
Style/ClassAndModuleChildren:
  Enabled: false

102
# Enforces consistent use of `Object#is_a?` or `Object#kind_of?`.
103 104 105
Style/ClassCheck:
  Enabled: false

106
# Use self when defining module/class methods.
107
Style/ClassMethods:
108
  Enabled: true
109

110
# Avoid the use of class variables.
111
Style/ClassVars:
D
Dmitriy Zaporozhets 已提交
112
  Enabled: true
113

114
# Indentation of comments.
115
Style/CommentIndentation:
116
  Enabled: true
117

118
# Constants should use SCREAMING_SNAKE_CASE.
119
Style/ConstantName:
120
  Enabled: true
121

122
# Use def with parentheses when there are arguments.
123
Style/DefWithParentheses:
124
  Enabled: true
125

126
# Document classes and non-namespace modules.
127 128 129
Style/Documentation:
  Enabled: false

130
# Align elses and elsifs correctly.
131
Style/ElseAlignment:
132
  Enabled: true
133

134
# Use empty lines between defs.
135 136 137
Style/EmptyLineBetweenDefs:
  Enabled: false

138
# Don't use several empty lines in a row.
139
Style/EmptyLines:
140
  Enabled: true
141

142
# Keep blank lines around access modifiers.
143
Style/EmptyLinesAroundAccessModifier:
144
  Enabled: true
145

146
# Keeps track of empty lines around block bodies.
147 148 149
Style/EmptyLinesAroundBlockBody:
  Enabled: false

150
# Keeps track of empty lines around class bodies.
151 152 153
Style/EmptyLinesAroundClassBody:
  Enabled: false

154
# Keeps track of empty lines around module bodies.
155 156 157
Style/EmptyLinesAroundModuleBody:
  Enabled: false

158
# Keeps track of empty lines around method bodies.
159 160 161
Style/EmptyLinesAroundMethodBody:
  Enabled: false

162
# Avoid the use of END blocks.
163
Style/EndBlock:
164
  Enabled: true
165

166
# Use Unix-style line endings.
167
Style/EndOfLine:
168
  Enabled: true
169

170
# Favor the use of Fixnum#even? && Fixnum#odd?
171
Style/EvenOdd:
172
  Enabled: true
173

174
# Use snake_case for source file names.
175
Style/FileName:
176 177 178
  Enabled: true

# Checks for a line break before the first parameter in a multi-line method
179
# parameter definition.
180 181
Style/FirstMethodParameterLineBreak:
  Enabled: true
182

183
# Checks for flip flops.
184
Style/FlipFlop:
185
  Enabled: true
186

187
# Checks use of for or each in multiline loops.
188
Style/For:
G
Grzegorz Bizon 已提交
189
  Enabled: true
190

191
# Do not introduce global variables.
192
Style/GlobalVars:
193
  Enabled: true
194

195 196
# Prefer Ruby 1.9 hash syntax `{ a: 1, b: 2 }`
# over 1.8 syntax `{ :a => 1, :b => 2 }`.
197
Style/HashSyntax:
198
  Enabled: true
199

200
# Do not use if x; .... Use the ternary operator instead.
201
Style/IfWithSemicolon:
202
  Enabled: true
203

204 205 206
# Checks that conditional statements do not have an identical line at the
# end of each branch, which can validly be moved out of the conditional.
Style/IdenticalConditionalBranches:
207
  Enabled: true
208 209

# Checks the indentation of the first line of the right-hand-side of a
G
Gabriel Mazetto 已提交
210
# multi-line assignment.
211
Style/IndentAssignment:
212
  Enabled: true
213 214

# Keep indentation straight.
215
Style/IndentationConsistency:
216
  Enabled: true
217

218
# Use 2 spaces for indentation.
219
Style/IndentationWidth:
220
  Enabled: true
221

222
# Use Kernel#loop for infinite loops.
223
Style/InfiniteLoop:
224
  Enabled: true
225

226
# Use lambda.call(...) instead of lambda.(...).
227
Style/LambdaCall:
228
  Enabled: true
229

230
# Comments should start with a space.
231
Style/LeadingCommentSpace:
F
Felipe Artur 已提交
232
  Enabled: true
233

234
# Checks if the method definitions have or don't have parentheses.
235
Style/MethodDefParentheses:
236
  Enabled: true
237

238
# Use the configured style when naming methods.
239
Style/MethodName:
240
  Enabled: true
241

R
Robert Speicher 已提交
242 243 244 245 246 247
# Checks that the closing brace in an array literal is either on the same line
# as the last array element, or a new line.
Style/MultilineArrayBraceLayout:
  Enabled: false
  EnforcedStyle: symmetrical

248
# Avoid multi-line chains of blocks.
249
Style/MultilineBlockChain:
250
  Enabled: true
251

252
# Ensures newlines after multiline block do statements.
253
Style/MultilineBlockLayout:
254
  Enabled: true
255

R
Robert Speicher 已提交
256 257 258 259 260 261
# Checks that the closing brace in a hash literal is either on the same line as
# the last hash element, or a new line.
Style/MultilineHashBraceLayout:
  Enabled: false
  EnforcedStyle: symmetrical

262
# Do not use then for multi-line if/unless.
263
Style/MultilineIfThen:
264
  Enabled: true
265

R
Robert Speicher 已提交
266 267 268 269 270 271
# Checks that the closing brace in a method call is either on the same line as
# the last method argument, or a new line.
Style/MultilineMethodCallBraceLayout:
  Enabled: false
  EnforcedStyle: symmetrical

272 273 274 275 276
# Checks indentation of method calls with the dot operator that span more than
# one line.
Style/MultilineMethodCallIndentation:
  Enabled: false

277 278 279 280 281
# Checks that the closing brace in a method definition is symmetrical with
# respect to the opening brace and the method parameters.
Style/MultilineMethodDefinitionBraceLayout:
  Enabled: false

282
# Checks indentation of binary operations that span more than one line.
283 284 285
Style/MultilineOperationIndentation:
  Enabled: false

286
# Favor unless over if for negative conditions (or control flow or).
287
Style/NegatedIf:
288
  Enabled: true
289

290 291
# Avoid using nested modifiers.
Style/NestedModifier:
292
  Enabled: true
293 294

# Use one expression per branch in a ternary operator.
295
Style/NestedTernaryOperator:
296
  Enabled: true
297

298
# Prefer x.nil? to x == nil.
299
Style/NilComparison:
300
  Enabled: true
301

302
# Checks for redundant nil checks.
303
Style/NonNilCheck:
304
  Enabled: true
305

306
# Use ! instead of not.
307
Style/Not:
308
  Enabled: true
309

310
# Add underscores to large numeric literals to improve their readability.
311 312 313
Style/NumericLiterals:
  Enabled: false

314
# Favor the ternary operator(?:) over if/then/else/end constructs.
315
Style/OneLineConditional:
316
  Enabled: true
317

318
# When defining binary operators, name the argument other.
319
Style/OpMethod:
320
  Enabled: true
321

322
# Don't use parentheses around the condition of an if/unless/while.
323
Style/ParenthesesAroundCondition:
324
  Enabled: true
325

326 327
# Checks for parentheses that seem not to serve any purpose.
Style/RedundantParentheses:
328
  Enabled: true
329 330

# Don't use return where it's not required.
331
Style/RedundantReturn:
332
  Enabled: true
333

334
# Don't use semicolons to terminate expressions.
335
Style/Semicolon:
336
  Enabled: true
337

338
# Checks for proper usage of fail and raise.
339
Style/SignalException:
340 341
  EnforcedStyle: only_raise
  Enabled: true
342

343
# Use spaces after colons.
344
Style/SpaceAfterColon:
345
  Enabled: true
346

347
# Use spaces after commas.
348
Style/SpaceAfterComma:
349
  Enabled: true
350

351 352
# Do not put a space between a method name and the opening parenthesis in a
# method definition.
353
Style/SpaceAfterMethodName:
354
  Enabled: true
355

356
# Tracks redundant space after the ! operator.
357
Style/SpaceAfterNot:
358
  Enabled: true
359

360
# Use spaces after semicolons.
361
Style/SpaceAfterSemicolon:
362
  Enabled: true
363

364 365
# Use a space around keywords if appropriate.
Style/SpaceAroundKeyword:
366
  Enabled: true
367

368 369
# Use a single space around operators.
Style/SpaceAroundOperators:
G
Gabriel Mazetto 已提交
370
  Enabled: true
371

372 373
# No spaces before commas.
Style/SpaceBeforeComma:
374
  Enabled: true
375

376 377
# Checks for missing space between code and a comment on the same line.
Style/SpaceBeforeComment:
378
  Enabled: true
379

380 381
# No spaces before semicolons.
Style/SpaceBeforeSemicolon:
382
  Enabled: true
383

384
# Use spaces inside hash literal braces - or don't.
385
Style/SpaceInsideHashLiteralBraces:
386
  Enabled: true
387

388
# No spaces inside range literals.
389
Style/SpaceInsideRangeLiteral:
390
  Enabled: true
391

392 393
# Checks for padding/surrounding spaces inside string interpolation.
Style/SpaceInsideStringInterpolation:
394 395
  EnforcedStyle: no_space
  Enabled: true
396 397 398

# Check for the usage of parentheses around stabby lambda arguments.
Style/StabbyLambdaParentheses:
399 400
  EnforcedStyle: require_parentheses
  Enabled: true
401 402

# Checks if uses of quotes match the configured preference.
403 404 405
Style/StringLiterals:
  Enabled: false

406 407
# Checks if configured preferred methods are used over non-preferred.
Style/StringMethods:
408 409 410
  PreferredMethods:
    intern: to_sym
  Enabled: true
411 412

# No hard tabs.
413
Style/Tab:
D
Dmitriy Zaporozhets 已提交
414
  Enabled: true
415

416
# Checks trailing blank lines and final newline.
417
Style/TrailingBlankLines:
418
  Enabled: true
419

420
# Checks for %W when interpolation is not needed.
421
Style/UnneededCapitalW:
422
  Enabled: true
423

424
# Checks for %q/%Q when single quotes or double quotes would do.
425 426 427
Style/UnneededPercentQ:
  Enabled: false

428
# Don't interpolate global, instance and class variables directly in strings.
429
Style/VariableInterpolation:
430
  Enabled: true
431

432
# Use the configured style when naming variables.
433
Style/VariableName:
434 435
  EnforcedStyle: snake_case
  Enabled: true
436

437
# Use when x then ... for one-line cases.
438
Style/WhenThen:
439
  Enabled: true
440

441
# Checks for redundant do after while or until.
442
Style/WhileUntilDo:
443
  Enabled: true
444

445
# Favor modifier while/until usage when you have a single-line body.
446
Style/WhileUntilModifier:
447
  Enabled: true
448

449
# Use %w or %W for arrays of words.
450 451 452 453 454
Style/WordArray:
  Enabled: false

#################### Metrics ################################

455 456
# A calculated magnitude based on number of assignments,
# branches, and conditions.
457
Metrics/AbcSize:
G
Grzegorz Bizon 已提交
458
  Enabled: true
459
  Max: 60
G
Grzegorz Bizon 已提交
460

461
# Avoid excessive block nesting.
462
Metrics/BlockNesting:
G
Grzegorz Bizon 已提交
463 464
  Enabled: true
  Max: 4
465

466
# Avoid classes longer than 100 lines of code.
467 468 469
Metrics/ClassLength:
  Enabled: false

470 471 472 473 474 475 476
# A complexity metric that is strongly correlated to the number
# of test cases needed to validate a method.
Metrics/CyclomaticComplexity:
  Enabled: true
  Max: 17

# Limit lines to 80 characters.
477 478 479
Metrics/LineLength:
  Enabled: false

480
# Avoid methods longer than 10 lines of code.
481 482 483
Metrics/MethodLength:
  Enabled: false

484
# Avoid modules longer than 100 lines of code.
485 486 487
Metrics/ModuleLength:
  Enabled: false

488 489 490 491 492 493 494 495
# Avoid parameter lists longer than three or four parameters.
Metrics/ParameterLists:
  Enabled: true
  Max: 8

# A complexity metric geared towards measuring complexity for a human reader.
Metrics/PerceivedComplexity:
  Enabled: true
V
Valery Sizov 已提交
496
  Max: 18
497 498


499 500
#################### Lint ################################

501 502
# Checks for ambiguous operators in the first argument of a method invocation
# without parentheses.
503
Lint/AmbiguousOperator:
504
  Enabled: true
505

506
# Align block ends correctly.
507
Lint/BlockAlignment:
508
  Enabled: true
509

510 511 512
# Default values in optional keyword arguments and optional ordinal arguments
# should not refer back to the name of the argument.
Lint/CircularArgumentReference:
513
  Enabled: true
514 515

# Checks for condition placed in a confusing position relative to the keyword.
516
Lint/ConditionPosition:
517
  Enabled: true
518

519
# Check for debugger calls.
520
Lint/Debugger:
521
  Enabled: true
522

523
# Align ends corresponding to defs correctly.
524
Lint/DefEndAlignment:
525
  Enabled: true
526

527
# Check for deprecated class method calls.
528
Lint/DeprecatedClassMethods:
529
  Enabled: true
530

531 532
# Check for immutable argument given to each_with_object.
Lint/EachWithObjectArgument:
533
  Enabled: true
534 535

# Check for odd code arrangement in an else block.
536
Lint/ElseLayout:
537
  Enabled: true
538

539
# Checks for empty ensure block.
540
Lint/EmptyEnsure:
541
  Enabled: true
542

543
# Align ends correctly.
544
Lint/EndAlignment:
545
  Enabled: true
546

547
# END blocks should not be placed inside method definitions.
548
Lint/EndInMethod:
549
  Enabled: true
550

551
# Do not use return in an ensure block.
552
Lint/EnsureReturn:
553
  Enabled: true
554

555
# The use of eval represents a serious security risk.
556
Lint/Eval:
557
  Enabled: true
558

559 560
# Catches floating-point literals too large or small for Ruby to represent.
Lint/FloatOutOfRange:
561
  Enabled: true
562 563 564

# The number of parameters to format/sprint must match the fields.
Lint/FormatParameterMismatch:
565
  Enabled: true
566 567 568 569

# Checks for adjacent string literals on the same line, which could better be
# represented as a single string literal.
Lint/ImplicitStringConcatenation:
570
  Enabled: true
571 572 573

# Checks for invalid character literals with a non-escaped whitespace
# character.
574
Lint/InvalidCharacterLiteral:
575
  Enabled: true
576

577
# Checks of literals used in conditions.
578
Lint/LiteralInCondition:
579
  Enabled: true
580

581
# Checks for literals used in interpolation.
582
Lint/LiteralInInterpolation:
583
  Enabled: true
584

585 586
# Do not use nested method definitions.
Lint/NestedMethodDefinition:
587
  Enabled: true
588 589 590

# Do not omit the accumulator when calling `next` in a `reduce`/`inject` block.
Lint/NextWithoutAccumulator:
591
  Enabled: true
592 593

# Checks for method calls with a space before the opening parenthesis.
594
Lint/ParenthesesAsGroupedExpression:
595
  Enabled: true
596

597 598 599
# Checks for `rand(1)` calls. Such calls always return `0` and most likely
# a mistake.
Lint/RandOne:
600
  Enabled: true
601 602

# Use parentheses in the method call to avoid confusion about precedence.
603
Lint/RequireParentheses:
604
  Enabled: true
605

606
# Avoid rescuing the Exception class.
607
Lint/RescueException:
608
  Enabled: true
609

C
Connor Shea 已提交
610 611
# Checks for the order which exceptions are rescued to avoid rescueing a less specific exception before a more specific exception.
Lint/ShadowedException:
612 613
  Enabled: false

614
# Do not use prefix `_` for a variable that is used.
615
Lint/UnderscorePrefixedVariableName:
616
  Enabled: true
617

618 619 620 621 622 623 624
# Checks for rubocop:disable comments that can be removed.
# Note: this cop is not disabled when disabling all cops.
# It must be explicitly disabled.
Lint/UnneededDisable:
  Enabled: false

# Unreachable code.
625
Lint/UnreachableCode:
626
  Enabled: true
627

628
# Checks for useless assignment to a local variable.
629
Lint/UselessAssignment:
630
  Enabled: true
631

632
# Checks for comparison of something with itself.
633
Lint/UselessComparison:
634
  Enabled: true
635

636
# Checks for useless `else` in `begin..end` without `rescue`.
637
Lint/UselessElseWithoutRescue:
638
  Enabled: true
639

640
# Checks for useless setter call to a local variable.
641
Lint/UselessSetterCall:
642
  Enabled: true
643

644
# Possible use of operator/literal/variable in void context.
645
Lint/Void:
646
  Enabled: true
647

648 649 650 651 652

##################### Performance ############################

# Use `casecmp` rather than `downcase ==`.
Performance/Casecmp:
653
  Enabled: true
654 655 656 657

# Use `str.{start,end}_with?(x, ..., y, ...)` instead of
# `str.{start,end}_with?(x, ...) || str.{start,end}_with?(y, ...)`.
Performance/DoubleStartEndWith:
658
  Enabled: true
659 660 661

# Use `strip` instead of `lstrip.rstrip`.
Performance/LstripRstrip:
C
Connor Shea 已提交
662
  Enabled: true
663 664 665

# Use `Range#cover?` instead of `Range#include?`.
Performance/RangeInclude:
666
  Enabled: true
667 668 669

# Use `sort` instead of `sort_by { |x| x }`.
Performance/RedundantSortBy:
670
  Enabled: true
671 672 673 674

# Use `start_with?` instead of a regex match anchored to the beginning of a
# string.
Performance/StartWith:
675
  Enabled: true
C
Connor Shea 已提交
676

677 678 679 680
# Use `tr` instead of `gsub` when you are replacing the same number of
# characters. Use `delete` instead of `gsub` when you are deleting
# characters.
Performance/StringReplacement:
C
Connor Shea 已提交
681
  Enabled: true
682 683 684

# Checks for `.times.map` calls.
Performance/TimesMap:
685
  Enabled: true
686 687


688 689
##################### Rails ##################################

690 691 692 693 694
# Enables Rails cops.
Rails:
  Enabled: true

# Enforces consistent use of action filter methods.
695
Rails/ActionFilter:
696
  Enabled: true
697
  EnforcedStyle: action
698

699 700
# Checks the correct usage of date aware methods, such as `Date.today`,
# `Date.current`, etc.
G
Gabriel Mazetto 已提交
701 702 703
Rails/Date:
  Enabled: false

704 705
# Prefer delegate method for delegations.
Rails/Delegate:
706 707
  Enabled: false

708 709
# Prefer `find_by` over `where.first`.
Rails/FindBy:
710
  Enabled: true
711 712 713

# Prefer `all.find_each` over `all.find`.
Rails/FindEach:
714
  Enabled: true
715

716
# Prefer has_many :through to has_and_belongs_to_many.
717
Rails/HasAndBelongsToMany:
718
  Enabled: true
719

720
# Checks for calls to puts, print, etc.
721
Rails/Output:
722
  Enabled: true
723

724 725
# Checks for incorrect grammar when using methods like `3.day.ago`.
Rails/PluralizationGrammar:
726
  Enabled: true
727 728

# Checks for `read_attribute(:attr)` and `write_attribute(:attr, val)`.
729 730 731
Rails/ReadWriteAttribute:
  Enabled: false

732
# Checks the arguments of ActiveRecord scopes.
733
Rails/ScopeArgs:
734
  Enabled: true
735

R
Robert Speicher 已提交
736 737
##################### RSpec ##################################

738
# Check that instances are not being stubbed globally.
R
Robert Speicher 已提交
739 740 741
RSpec/AnyInstance:
  Enabled: false

742 743
# Check that the first argument to the top level describe is the tested class or
# module.
R
Robert Speicher 已提交
744 745 746
RSpec/DescribeClass:
  Enabled: false

747
# Use `described_class` for tested class / module.
R
Robert Speicher 已提交
748 749 750
RSpec/DescribeMethod:
  Enabled: false

751 752
# Checks that the second argument to top level describe is the tested method
# name.
R
Robert Speicher 已提交
753 754 755
RSpec/DescribedClass:
  Enabled: false

756
# Checks for long example.
R
Robert Speicher 已提交
757 758 759 760
RSpec/ExampleLength:
  Enabled: false
  Max: 5

761
# Do not use should when describing your tests.
R
Robert Speicher 已提交
762 763 764 765 766 767 768 769
RSpec/ExampleWording:
  Enabled: false
  CustomTransform:
    be: is
    have: has
    not: does not
  IgnoredWords: []

770
# Checks the file and folder naming of the spec file.
R
Robert Speicher 已提交
771 772 773 774 775 776
RSpec/FilePath:
  Enabled: false
  CustomTransform:
    RuboCop: rubocop
    RSpec: rspec

777
# Checks if there are focused specs.
R
Robert Speicher 已提交
778 779 780
RSpec/Focus:
  Enabled: true

781
# Checks for the usage of instance variables.
R
Robert Speicher 已提交
782 783 784
RSpec/InstanceVariable:
  Enabled: false

785
# Checks for multiple top-level describes.
R
Robert Speicher 已提交
786 787 788
RSpec/MultipleDescribes:
  Enabled: false

789
# Enforces the usage of the same method on all negative message expectations.
R
Robert Speicher 已提交
790 791
RSpec/NotToNot:
  EnforcedStyle: not_to
792
  Enabled: true
R
Robert Speicher 已提交
793

794
# Prefer using verifying doubles over normal doubles.
R
Robert Speicher 已提交
795 796
RSpec/VerifiedDoubles:
  Enabled: false