require:
  - rubocop-rspec
  - rubocop-performance

AllCops:
  DisplayCopNames:    true
  DisplayStyleGuide:  true
  TargetRubyVersion:  2.5

Metrics/ClassLength:
  Max: 150

Metrics/MethodLength:
  Max: 15

Metrics/BlockLength:
  Enabled: false

Metrics/CyclomaticComplexity:
  Enabled: false

Metrics/PerceivedComplexity:
  Enabled: false

Naming/VariableNumber:
  Enabled: false

Naming/RescuedExceptionsVariableName:
  Enabled: false

Naming/InclusiveLanguage:
  Enabled: false

Naming/BlockForwarding:
  Enabled: true

Style/Documentation:
  Enabled: false

Style/DoubleNegation:
  Enabled: false

Style/EmptyCaseCondition:
  Enabled: false

Style/ParallelAssignment:
  Enabled: false

Style/RescueStandardError:
  Enabled: false

Style/HashEachMethods:
  Enabled: true

Style/HashTransformKeys:
  Enabled: true

Style/HashTransformValues:
  Enabled: true

Style/AccessorGrouping:
  Enabled: true

Style/ArrayCoercion:
  Enabled: true

Style/BisectedAttrAccessor:
  Enabled: true

Style/CaseLikeIf:
  Enabled: true

Style/ExponentialNotation:
  Enabled: true

Style/HashAsLastArrayItem:
  Enabled: true

Style/HashLikeCase:
  Enabled: true

Style/RedundantAssignment:
  Enabled: true

Style/RedundantFetchBlock:
  Enabled: true

Style/RedundantFileExtensionInRequire:
  Enabled: true

Style/RedundantRegexpCharacterClass:
  Enabled: true

Style/RedundantRegexpEscape:
  Enabled: true

Style/SlicingWithRange:
  Enabled: true

Style/ArgumentsForwarding:
  Enabled: true

Style/CollectionCompact:
  Enabled: true

Style/DocumentDynamicEvalDefinition:
  Enabled: true

Style/NegatedIfElseCondition:
  Enabled: true

Style/NilLambda:
  Enabled: true

Style/RedundantArgument:
  Enabled: true

Style/SwapValues:
  Enabled: true

Style/EndlessMethod:
  Enabled: true

Style/HashExcept:
  Enabled: true

Style/IfWithBooleanLiteralBranches:
  Enabled: true

Style/HashConversion:
  Enabled: true

Style/StringChars:
  Enabled: true

Style/InPatternThen:
  Enabled: true

Style/MultilineInPatternThen:
  Enabled: true

Style/QuotedSymbols:
  Enabled: true

Style/RedundantSelfAssignmentBranch:
  Enabled: true

Style/NumberedParameters:
  Enabled: true

Style/NumberedParametersLimit:
  Enabled: true

Style/SelectByRegexp:
  Enabled: true

Style/FileRead:
  Enabled: true

Style/FileWrite:
  Enabled: true

Style/MapToHash:
  Enabled: true

Style/OpenStructUse:
  Enabled: true

Style/NestedFileDirname:
  Enabled: true

Style/EnvHome:
  Enabled: true

Style/FetchEnvVar:
  Enabled: true

Style/ObjectThen:
  Enabled: true

Style/RedundantInitialize:
  Enabled: true

Layout/LineLength:
  Max: 150

Layout/EmptyLinesAroundAttributeAccessor:
  Enabled: true

Layout/SpaceAroundMethodCallOperator:
  Enabled: true

Layout/ClassStructure:
  Enabled: true
  Categories:
    module_inclusion:
      - include
      - prepend
      - extend
  ExpectedOrder:
      - module_inclusion
      - constants
      - public_class_methods
      - initializer
      - public_methods
      - protected_methods
      - private_methods

Layout/EmptyLineAfterGuardClause:
  Enabled: false

Layout/SpaceBeforeBrackets:
  Enabled: true

Layout/LineEndStringConcatenationIndentation:
  Enabled: true

Lint/NonDeterministicRequireOrder:
  Enabled: true

Lint/DeprecatedOpenSSLConstant:
  Enabled: true

Lint/DuplicateElsifCondition:
  Enabled: true

Lint/MixedRegexpCaptureTypes:
  Enabled: true

Lint/RaiseException:
  Enabled: true

Lint/StructNewOverride:
  Enabled: true

Lint/DuplicateBranch:
  Enabled: true

Lint/DuplicateRegexpCharacterClassElement:
  Enabled: true

Lint/EmptyBlock:
  Enabled: true

Lint/EmptyClass:
  Enabled: true

Lint/NoReturnInBeginEndBlocks:
  Enabled: true

Lint/ToEnumArguments:
  Enabled: true

Lint/UnexpectedBlockArity:
  Enabled: true

Lint/AmbiguousAssignment:
  Enabled: true

Lint/DeprecatedConstants:
  Enabled: true

Lint/LambdaWithoutLiteralBlock:
  Enabled: true

Lint/RedundantDirGlobSort:
  Enabled: true

Lint/UnmodifiedReduceAccumulator:
  Enabled: true

Lint/NumberedParameterAssignment:
  Enabled: true

Lint/OrAssignmentToConstant:
  Enabled: true

Lint/SymbolConversion:
  Enabled: true

Lint/TripleQuotes:
  Enabled: true

Lint/EmptyInPattern:
  Enabled: true

Lint/AmbiguousRange:
  Enabled: true

Lint/AmbiguousOperatorPrecedence:
  Enabled: true

Lint/IncompatibleIoSelectWithFiberScheduler:
  Enabled: true

Lint/RequireRelativeSelfPath:
  Enabled: true

Lint/UselessRuby2Keywords:
  Enabled: true

Lint/RefinementImportMethods:
  Enabled: true

Gemspec/DateAssignment:
  Enabled: true

Gemspec/RequireMFA:
  Enabled: false

Security/IoMethods:
  Enabled: true

Security/CompoundHash:
  Enabled: true

Performance/AncestorsInclude:
  Enabled: true

Performance/BigDecimalWithNumericArgument:
  Enabled: true

Performance/RedundantSortBlock:
  Enabled: true

Performance/RedundantStringChars:
  Enabled: true

Performance/ReverseFirst:
  Enabled: true

Performance/SortReverse:
  Enabled: true

Performance/Squeeze:
  Enabled: true

Performance/StringInclude:
  Enabled: true

Performance/BlockGivenWithExplicitBlock:
  Enabled: true

Performance/CollectionLiteralInLoop:
  Enabled: true

Performance/ConstantRegexp:
  Enabled: true

Performance/MethodObjectAsBlock:
  Enabled: false

Performance/Sum:
  Enabled: true

Performance/RedundantEqualityComparisonBlock:
  Enabled: true

Performance/RedundantSplitRegexpArgument:
  Enabled: true

Performance/MapCompact:
  Enabled: true

Performance/ConcurrentMonotonicTime:
  Enabled: true

Performance/StringIdentifierArgument:
  Enabled: true

RSpec/ExampleLength:
  Enabled: false

RSpec/NestedGroups:
  Enabled: false

RSpec/MultipleExpectations:
  Enabled: false

RSpec/MessageChain:
  Enabled: false

RSpec/ContextWording:
  Enabled: false

RSpec/AnyInstance:
  Enabled: false

RSpec/MessageSpies:
  Enabled: false

RSpec/MultipleDescribes:
  Enabled: false

RSpec/MultipleMemoizedHelpers:
  Enabled: false

RSpec/StubbedMock:
  Enabled: false

RSpec/IdenticalEqualityAssertion:
  Enabled: true

RSpec/Rails/AvoidSetupHook:
  Enabled: true

RSpec/ExcessiveDocstringSpacing:
  Enabled: true

RSpec/SubjectDeclaration:
  Enabled: true

RSpec/FactoryBot/SyntaxMethods:
  Enabled: true

RSpec/BeEq:
  Enabled: true

RSpec/BeNil:
  Enabled: true

RSpec/VerifiedDoubleReference:
  Enabled: false