---
require:
  - rubocop-performance

AllCops:
  RubyInterpreters:
    - ruby
    - rake
  # Include common Ruby source files.
  Include:
    - '**/*.rb'
    - '**/*.arb'
    - '**/*.axlsx'
    - '**/*.builder'
    - '**/*.fcgi'
    - '**/*.gemfile'
    - '**/*.gemspec'
    - '**/*.god'
    - '**/*.jb'
    - '**/*.jbuilder'
    - '**/*.mspec'
    - '**/*.opal'
    - '**/*.pluginspec'
    - '**/*.podspec'
    - '**/*.rabl'
    - '**/*.rake'
    - '**/*.rbuild'
    - '**/*.rbw'
    - '**/*.rbx'
    - '**/*.ru'
    - '**/*.ruby'
    - '**/*.spec'
    - '**/*.thor'
    - '**/*.watchr'
    - '**/.irbrc'
    - '**/.pryrc'
    - '**/buildfile'
    - '**/Appraisals'
    - '**/Berksfile'
    - '**/Brewfile'
    - '**/Buildfile'
    - '**/Capfile'
    - '**/Cheffile'
    - '**/Dangerfile'
    - '**/Deliverfile'
    - '**/Fastfile'
    - '**/*Fastfile'
    - '**/Gemfile'
    - '**/Guardfile'
    - '**/Jarfile'
    - '**/Mavenfile'
    - '**/Podfile'
    - '**/Puppetfile'
    - '**/Rakefile'
    - '**/Snapfile'
    - '**/Thorfile'
    - '**/Vagabondfile'
    - '**/Vagrantfile'
  Exclude:
    - 'node_modules/**/*'
    - 'vendor/**/*'
    - '.git/**/*'
    - 'bin/bundle'
  DefaultFormatter: progress
  DisplayCopNames: true
  DisplayStyleGuide: false
  StyleGuideBaseURL: https://rubystyle.guide
  ExtraDetails: false
  StyleGuideCopsOnly: false
  EnabledByDefault: false
  DisabledByDefault: false
  UseCache: true
  MaxFilesInCache: 20000
  CacheRootDirectory: ~
  AllowSymlinksInCacheRootDirectory: false
  TargetRubyVersion: 2.6

Style/MixinUsage:
  Enabled: false
Lint/AmbiguousOperator:
  Description: Checks for ambiguous operators in the first argument of a method invocation
    without parentheses.
  StyleGuide: https://github.com/bbatsov/ruby-style-guide#parens-as-args
  Enabled: true
Lint/AmbiguousBlockAssociation:
  Enabled: false
Lint/AmbiguousRegexpLiteral:
  Description: Checks for ambiguous regexp literals in the first argument of a method
    invocation without parenthesis.
  Enabled: true
Lint/AssignmentInCondition:
  Description: Don't use assignment in conditions.
  StyleGuide: https://github.com/bbatsov/ruby-style-guide#safe-assignment-in-condition
  Enabled: true
Layout/BlockAlignment:
  Description: Align block ends correctly.
  Enabled: true
Lint/CircularArgumentReference:
  Description: Don't refer to the keyword argument in the default value.
  Enabled: true
Layout/ConditionPosition:
  Description: Checks for condition placed in a confusing position relative to the
    keyword.
  StyleGuide: https://github.com/bbatsov/ruby-style-guide#same-line-condition
  Enabled: true
Lint/Debugger:
  Description: Check for debugger calls.
  Enabled: true
Layout/DefEndAlignment:
  Description: Align ends corresponding to defs correctly.
  Enabled: true
Lint/DeprecatedClassMethods:
  Description: Check for deprecated class method calls.
  Enabled: true
Lint/DuplicateMethods:
  Description: Check for duplicate methods calls.
  Enabled: true
Lint/EachWithObjectArgument:
  Description: Check for immutable argument given to each_with_object.
  Enabled: true
Lint/ElseLayout:
  Description: Check for odd code arrangement in an else block.
  Enabled: true
Lint/EmptyEnsure:
  Description: Checks for empty ensure block.
  Enabled: true
Lint/EmptyInterpolation:
  Description: Checks for empty string interpolation.
  Enabled: true
Layout/EndAlignment:
  Description: Align ends correctly.
  Enabled: true
Lint/EndInMethod:
  Description: END blocks should not be placed inside method definitions.
  Enabled: true
Lint/EnsureReturn:
  Description: Do not use return in an ensure block.
  StyleGuide: https://github.com/bbatsov/ruby-style-guide#no-return-ensure
  Enabled: true
Lint/FormatParameterMismatch:
  Description: The number of parameters to format/sprint must match the fields.
  Enabled: true
Lint/HandleExceptions:
  Description: Don't suppress exception.
  StyleGuide: https://github.com/bbatsov/ruby-style-guide#dont-hide-exceptions
  Enabled: true
Lint/LiteralInInterpolation:
  Description: Checks for literals used in interpolation.
  Enabled: true
Lint/Loop:
  Description: Use Kernel#loop with break rather than begin/end/until or begin/end/while
    for post-loop tests.
  StyleGuide: https://github.com/bbatsov/ruby-style-guide#loop-with-break
  Enabled: true
Lint/NestedMethodDefinition:
  Description: Do not use nested method definitions.
  StyleGuide: https://github.com/bbatsov/ruby-style-guide#no-nested-methods
  Enabled: true
Lint/NonLocalExitFromIterator:
  Description: Do not use return in iterator to cause non-local exit.
  Enabled: true
Lint/ParenthesesAsGroupedExpression:
  Description: Checks for method calls with a space before the opening parenthesis.
  StyleGuide: https://github.com/bbatsov/ruby-style-guide#parens-no-spaces
  Enabled: true
Lint/RequireParentheses:
  Description: Use parentheses in the method call to avoid confusion about precedence.
  Enabled: true
Lint/RescueException:
  Description: Avoid rescuing the Exception class.
  StyleGuide: https://github.com/bbatsov/ruby-style-guide#no-blind-rescues
  Enabled: true
Lint/ShadowingOuterLocalVariable:
  Description: Do not use the same name as outer local variable for block arguments
    or block local variables.
  Enabled: true
Lint/StringConversionInInterpolation:
  Description: Checks for Object#to_s usage in string interpolation.
  StyleGuide: https://github.com/bbatsov/ruby-style-guide#no-to-s
  Enabled: true
Lint/UnderscorePrefixedVariableName:
  Description: Do not use prefix `_` for a variable that is used.
  Enabled: true
Lint/UnusedBlockArgument:
  Description: Checks for unused block arguments.
  StyleGuide: https://github.com/bbatsov/ruby-style-guide#underscore-unused-vars
  Enabled: true
Lint/UnusedMethodArgument:
  Description: Checks for unused method arguments.
  StyleGuide: https://github.com/bbatsov/ruby-style-guide#underscore-unused-vars
  Enabled: true
Lint/UnreachableCode:
  Description: Unreachable code.
  Enabled: true
Lint/UselessAccessModifier:
  Description: Checks for useless access modifiers.
  Enabled: true
Lint/UselessAssignment:
  Description: Checks for useless assignment to a local variable.
  StyleGuide: https://github.com/bbatsov/ruby-style-guide#underscore-unused-vars
  Enabled: true
Lint/UselessComparison:
  Description: Checks for comparison of something with itself.
  Enabled: true
Lint/UselessElseWithoutRescue:
  Description: Checks for useless `else` in `begin..end` without `rescue`.
  Enabled: true
Lint/UselessSetterCall:
  Description: Checks for useless setter call to a local variable.
  Enabled: true
Lint/Void:
  Description: Possible use of operator/literal/variable in void context.
  Enabled: true
Metrics/AbcSize:
  Description: A calculated magnitude based on number of assignments, branches, and
    conditions.
  Reference: http://c2.com/cgi/wiki?AbcMetric
  Enabled: true
  Max: 15
Metrics/BlockNesting:
  Description: Avoid excessive block nesting
  StyleGuide: https://github.com/bbatsov/ruby-style-guide#three-is-the-number-thou-shalt-count
  Enabled: true
  Max: 4
Metrics/ClassLength:
  Description: Avoid classes longer than 100 lines of code.
  Enabled: true
  Max: 100
Metrics/CyclomaticComplexity:
  Description: A complexity metric that is strongly correlated to the number of test
    cases needed to validate a method.
  Enabled: true
Metrics/LineLength:
  Description: Limit lines to 80 characters.
  StyleGuide: https://github.com/bbatsov/ruby-style-guide#80-character-limits
  Enabled: true
  Exclude:
    - "**/*.gemspec"
Metrics/MethodLength:
  Description: Avoid methods longer than 10 lines of code.
  StyleGuide: https://github.com/bbatsov/ruby-style-guide#short-methods
  Enabled: true
  Max: 10
Metrics/ModuleLength:
  Description: Avoid modules longer than 100 lines of code.
  Enabled: true
  Max: 100
Metrics/ParameterLists:
  Description: Avoid parameter lists longer than three or four parameters.
  StyleGuide: https://github.com/bbatsov/ruby-style-guide#too-many-params
  Enabled: false
Metrics/PerceivedComplexity:
  Description: A complexity metric geared towards measuring complexity for a human
    reader.
  Enabled: true
Metrics/BlockLength:
  Exclude:
  - Rakefile
  - "**/*.rake"
  - spec/**/*.rb
  - "**/*.gemspec"
Performance/Count:
  Description: Use `count` instead of `select...size`, `reject...size`, `select...count`,
    `reject...count`, `select...length`, and `reject...length`.
  Enabled: true
Performance/Detect:
  Description: Use `detect` instead of `select.first`, `find_all.first`, `select.last`,
    and `find_all.last`.
  Reference: https://github.com/JuanitoFatas/fast-ruby#enumerabledetect-vs-enumerableselectfirst-code
  Enabled: true
Performance/FlatMap:
  Description: Use `Enumerable#flat_map` instead of `Enumerable#map...Array#flatten(1)`
    or `Enumberable#collect..Array#flatten(1)`
  Reference: https://github.com/JuanitoFatas/fast-ruby#enumerablemaparrayflatten-vs-enumerableflat_map-code
  Enabled: true
  EnabledForFlattenWithoutParams: false
Performance/ReverseEach:
  Description: Use `reverse_each` instead of `reverse.each`.
  Reference: https://github.com/JuanitoFatas/fast-ruby#enumerablereverseeach-vs-enumerablereverse_each-code
  Enabled: true
Style/Sample:
  Description: Use `sample` instead of `shuffle.first`, `shuffle.last`, and `shuffle[Fixnum]`.
  Reference: https://github.com/JuanitoFatas/fast-ruby#arrayshufflefirst-vs-arraysample-code
  Enabled: true
Performance/Size:
  Description: Use `size` instead of `count` for counting the number of elements in
    `Array` and `Hash`.
  Reference: https://github.com/JuanitoFatas/fast-ruby#arraycount-vs-arraysize-code
  Enabled: true
Performance/StringReplacement:
  Description: Use `tr` instead of `gsub` when you are replacing the same number of
    characters. Use `delete` instead of `gsub` when you are deleting characters.
  Reference: https://github.com/JuanitoFatas/fast-ruby#stringgsub-vs-stringtr-code
  Enabled: true
Layout/AccessModifierIndentation:
  Description: Check indentation of private/protected visibility modifiers.
  StyleGuide: https://github.com/bbatsov/ruby-style-guide#indent-public-private-protected
  Enabled: false
Naming/AccessorMethodName:
  Description: Check the naming of accessor methods for get_/set_.
  Enabled: false
Style/Alias:
  Description: Use alias_method instead of alias.
  StyleGuide: https://github.com/bbatsov/ruby-style-guide#alias-method
  Enabled: false
Layout/AlignArray:
  Description: Align the elements of an array literal if they span more than one line.
  StyleGuide: https://github.com/bbatsov/ruby-style-guide#align-multiline-arrays
  Enabled: true
Layout/AlignHash:
  Description: Align the elements of a hash literal if they span more than one line.
  Enabled: true
Layout/AlignParameters:
  Description: Align the parameters of a method call if they span more than one line.
  StyleGuide: https://github.com/bbatsov/ruby-style-guide#no-double-indent
  Enabled: true
Style/AndOr:
  Description: Use &&/|| instead of and/or.
  StyleGuide: https://github.com/bbatsov/ruby-style-guide#no-and-or-or
  Enabled: true
Style/ArrayJoin:
  Description: Use Array#join instead of Array#*.
  StyleGuide: https://github.com/bbatsov/ruby-style-guide#array-join
  Enabled: false
Style/AsciiComments:
  Description: Use only ascii symbols in comments.
  StyleGuide: https://github.com/bbatsov/ruby-style-guide#english-comments
  Enabled: false
Naming/AsciiIdentifiers:
  Description: Use only ascii symbols in identifiers.
  StyleGuide: https://github.com/bbatsov/ruby-style-guide#english-identifiers
  Enabled: false
Style/Attr:
  Description: Checks for uses of Module#attr.
  StyleGuide: https://github.com/bbatsov/ruby-style-guide#attr
  Enabled: true
Style/BeginBlock:
  Description: Avoid the use of BEGIN blocks.
  StyleGuide: https://github.com/bbatsov/ruby-style-guide#no-BEGIN-blocks
  Enabled: true
Style/BarePercentLiterals:
  Description: Checks if usage of %() or %Q() matches configuration.
  StyleGuide: https://github.com/bbatsov/ruby-style-guide#percent-q-shorthand
  Enabled: true
Style/BlockComments:
  Description: Do not use block comments.
  StyleGuide: https://github.com/bbatsov/ruby-style-guide#no-block-comments
  Enabled: false
Layout/BlockEndNewline:
  Description: Put end statement of multiline block on its own line.
  Enabled: true
Style/BlockDelimiters:
  Description: Avoid using {...} for multi-line blocks (multiline chaining is always
    ugly). Prefer {...} over do...end for single-line blocks.
  StyleGuide: https://github.com/bbatsov/ruby-style-guide#single-line-blocks
  Enabled: true
Style/BracesAroundHashParameters:
  Description: Enforce braces style around hash parameters.
  Enabled: false
Style/CaseEquality:
  Description: Avoid explicit use of the case equality operator(===).
  StyleGuide: https://github.com/bbatsov/ruby-style-guide#no-case-equality
  Enabled: false
Layout/CaseIndentation:
  Description: Indentation of when in a case/when/[else/]end.
  StyleGuide: https://github.com/bbatsov/ruby-style-guide#indent-when-to-case
  Enabled: true
Style/CharacterLiteral:
  Description: Checks for uses of character literals.
  StyleGuide: https://github.com/bbatsov/ruby-style-guide#no-character-literals
  Enabled: false
Naming/ClassAndModuleCamelCase:
  Description: Use CamelCase for classes and modules.
  StyleGuide: https://github.com/bbatsov/ruby-style-guide#camelcase-classes
  Enabled: true
Style/ClassAndModuleChildren:
  Description: Checks style of children classes and modules.
  Enabled: false
Style/ClassCheck:
  Description: Enforces consistent use of `Object#is_a?` or `Object#kind_of?`.
  Enabled: true
Style/ClassMethods:
  Description: Use self when defining module/class methods.
  StyleGuide: https://github.com/bbatsov/ruby-style-guide#def-self-class-methods
  Enabled: false
Style/ClassVars:
  Description: Avoid the use of class variables.
  StyleGuide: https://github.com/bbatsov/ruby-style-guide#no-class-vars
  Enabled: false
Layout/ClosingParenthesisIndentation:
  Description: Checks the indentation of hanging closing parentheses.
  Enabled: false
Style/ColonMethodCall:
  Description: 'Do not use :: for method call.'
  StyleGuide: https://github.com/bbatsov/ruby-style-guide#double-colons
  Enabled: true
Style/CommandLiteral:
  Description: Use `` or %x around command literals.
  StyleGuide: https://github.com/bbatsov/ruby-style-guide#percent-x
  Enabled: false
Style/CommentAnnotation:
  Description: Checks formatting of annotation comments.
  StyleGuide: https://github.com/bbatsov/ruby-style-guide#annotate-keywords
  Enabled: false
Layout/CommentIndentation:
  Description: Indentation of comments.
  Enabled: false
Naming/ConstantName:
  Description: Constants should use SCREAMING_SNAKE_CASE.
  StyleGuide: https://github.com/bbatsov/ruby-style-guide#screaming-snake-case
  Enabled: true
Style/DefWithParentheses:
  Description: Use def with parentheses when there are arguments.
  StyleGuide: https://github.com/bbatsov/ruby-style-guide#method-parens
  Enabled: true
Style/Documentation:
  Description: Document classes and non-namespace modules.
  Enabled: false
Layout/DotPosition:
  Description: Checks the position of the dot in multi-line method calls.
  StyleGuide: https://github.com/bbatsov/ruby-style-guide#consistent-multi-line-chains
  Enabled: true
Style/DoubleNegation:
  Description: Checks for uses of double negation (!!).
  StyleGuide: https://github.com/bbatsov/ruby-style-guide#no-bang-bang
  Enabled: true
Style/EachWithObject:
  Description: Prefer `each_with_object` over `inject` or `reduce`.
  Enabled: false
Layout/ElseAlignment:
  Description: Align elses and elsifs correctly.
  Enabled: true
Style/EmptyElse:
  Description: Avoid empty else-clauses.
  Enabled: true
Layout/EmptyLineBetweenDefs:
  Description: Use empty lines between defs.
  StyleGuide: https://github.com/bbatsov/ruby-style-guide#empty-lines-between-methods
  Enabled: true
Layout/EmptyLines:
  Description: Don't use several empty lines in a row.
  Enabled: true
Layout/EmptyLinesAroundAccessModifier:
  Description: Keep blank lines around access modifiers.
  Enabled: false
Layout/EmptyLinesAroundBlockBody:
  Description: Keeps track of empty lines around block bodies.
  Enabled: false
Layout/EmptyLinesAroundClassBody:
  Description: Keeps track of empty lines around class bodies.
  Enabled: false
Layout/EmptyLinesAroundModuleBody:
  Description: Keeps track of empty lines around module bodies.
  Enabled: false
Layout/EmptyLinesAroundMethodBody:
  Description: Keeps track of empty lines around method bodies.
  Enabled: false
Style/EmptyLiteral:
  Description: Prefer literals to Array.new/Hash.new/String.new.
  StyleGuide: https://github.com/bbatsov/ruby-style-guide#literal-array-hash
  Enabled: false
Style/EndBlock:
  Description: Avoid the use of END blocks.
  StyleGuide: https://github.com/bbatsov/ruby-style-guide#no-END-blocks
  Enabled: false
Layout/EndOfLine:
  Description: Use Unix-style line endings.
  StyleGuide: https://github.com/bbatsov/ruby-style-guide#crlf
  Enabled: false
Style/EvenOdd:
  Description: Favor the use of Fixnum#even? && Fixnum#odd?
  StyleGuide: https://github.com/bbatsov/ruby-style-guide#predicate-methods
  Enabled: true
Layout/ExtraSpacing:
  Description: Do not use unnecessary spacing.
  Enabled: true
Naming/FileName:
  Description: Use snake_case for source file names.
  StyleGuide: https://github.com/bbatsov/ruby-style-guide#snake-case-files
  Enabled: false
Layout/InitialIndentation:
  Description: Checks the indentation of the first non-blank non-comment line in a
    file.
  Enabled: false
Layout/IndentFirstArgument:
  Description: Checks the indentation of the first parameter in a method call.
  Enabled: false
Lint/FlipFlop:
  Description: Checks for flip flops
  StyleGuide: https://github.com/bbatsov/ruby-style-guide#no-flip-flops
  Enabled: true
Style/For:
  Description: Checks use of for or each in multiline loops.
  StyleGuide: https://github.com/bbatsov/ruby-style-guide#no-for-loops
  Enabled: true
Style/FormatString:
  Description: Enforce the use of Kernel#sprintf, Kernel#format or String#%.
  StyleGuide: https://github.com/bbatsov/ruby-style-guide#sprintf
  Enabled: false
Style/GlobalVars:
  Description: Do not introduce global variables.
  StyleGuide: https://github.com/bbatsov/ruby-style-guide#instance-vars
  Reference: http://www.zenspider.com/Languages/Ruby/QuickRef.html
  Enabled: true
Style/GuardClause:
  Description: Check for conditionals that can be replaced with guard clauses
  StyleGuide: https://github.com/bbatsov/ruby-style-guide#no-nested-conditionals
  Enabled: true
Style/HashSyntax:
  Description: 'Prefer Ruby 1.9 hash syntax { a: 1, b: 2 } over 1.8 syntax { :a =>
    1, :b => 2 }.'
  StyleGuide: https://github.com/bbatsov/ruby-style-guide#hash-literals
  Enabled: true
Style/IfUnlessModifier:
  Description: Favor modifier if/unless usage when you have a single-line body.
  StyleGuide: https://github.com/bbatsov/ruby-style-guide#if-as-a-modifier
  Enabled: true
Style/IfWithSemicolon:
  Description: Do not use if x; .... Use the ternary operator instead.
  StyleGuide: https://github.com/bbatsov/ruby-style-guide#no-semicolon-ifs
  Enabled: true
Layout/IndentationConsistency:
  Description: Keep indentation straight.
  Enabled: false
Layout/IndentationWidth:
  Description: Use 2 spaces for indentation.
  StyleGuide: https://github.com/bbatsov/ruby-style-guide#spaces-indentation
  Enabled: true
Layout/IndentFirstArrayElement:
  Description: Checks the indentation of the first element in an array literal.
  Enabled: false
Layout/IndentFirstHashElement:
  Description: Checks the indentation of the first key in a hash literal.
  Enabled: false
Style/InfiniteLoop:
  Description: Use Kernel#loop for infinite loops.
  StyleGuide: https://github.com/bbatsov/ruby-style-guide#infinite-loop
  Enabled: true
Style/Lambda:
  Description: Use the new lambda literal syntax for single-line blocks.
  StyleGuide: https://github.com/bbatsov/ruby-style-guide#lambda-multi-line
  Enabled: true
Style/LambdaCall:
  Description: Use lambda.call(...) instead of lambda.(...).
  StyleGuide: https://github.com/bbatsov/ruby-style-guide#proc-call
  Enabled: false
Layout/LeadingCommentSpace:
  Description: Comments should start with a space.
  StyleGuide: https://github.com/bbatsov/ruby-style-guide#hash-space
  Enabled: true
Style/LineEndConcatenation:
  Description: Use \ instead of + or << to concatenate two string literals at line
    end.
  Enabled: true
Style/MethodCallWithoutArgsParentheses:
  Description: Do not use parentheses for method calls with no arguments.
  StyleGuide: https://github.com/bbatsov/ruby-style-guide#no-args-no-parens
  Enabled: true
Style/MethodDefParentheses:
  Description: Checks if the method definitions have or don't have parentheses.
  StyleGuide: https://github.com/bbatsov/ruby-style-guide#method-parens
  Enabled: true
Naming/MethodName:
  Description: Use the configured style when naming methods.
  StyleGuide: https://github.com/bbatsov/ruby-style-guide#snake-case-symbols-methods-vars
  Enabled: false
Style/ModuleFunction:
  Description: Checks for usage of `extend self` in modules.
  StyleGuide: https://github.com/bbatsov/ruby-style-guide#module-function
  Enabled: true
Style/MultilineBlockChain:
  Description: Avoid multi-line chains of blocks.
  StyleGuide: https://github.com/bbatsov/ruby-style-guide#single-line-blocks
  Enabled: false
Layout/MultilineBlockLayout:
  Description: Ensures newlines after multiline block do statements.
  Enabled: true
Style/MultilineIfThen:
  Description: Do not use then for multi-line if/unless.
  StyleGuide: https://github.com/bbatsov/ruby-style-guide#no-then
  Enabled: true
Layout/MultilineOperationIndentation:
  Description: Checks indentation of binary operations that span more than one line.
  Enabled: false
Style/MultilineTernaryOperator:
  Description: 'Avoid multi-line ?: (the ternary operator); use if/unless instead.'
  StyleGuide: https://github.com/bbatsov/ruby-style-guide#no-multiline-ternary
  Enabled: true
Style/NegatedIf:
  Description: Favor unless over if for negative conditions (or control flow or).
  StyleGuide: https://github.com/bbatsov/ruby-style-guide#unless-for-negatives
  Enabled: true
Style/NegatedWhile:
  Description: Favor until over while for negative conditions.
  StyleGuide: https://github.com/bbatsov/ruby-style-guide#until-for-negatives
  Enabled: true
Style/NestedTernaryOperator:
  Description: Use one expression per branch in a ternary operator.
  StyleGuide: https://github.com/bbatsov/ruby-style-guide#no-nested-ternary
  Enabled: true
Style/Next:
  Description: Use `next` to skip iteration instead of a condition at the end.
  StyleGuide: https://github.com/bbatsov/ruby-style-guide#no-nested-conditionals
  Enabled: true
Style/NilComparison:
  Description: Prefer x.nil? to x == nil.
  StyleGuide: https://github.com/bbatsov/ruby-style-guide#predicate-methods
  Enabled: true
Style/NonNilCheck:
  Description: Checks for redundant nil checks.
  StyleGuide: https://github.com/bbatsov/ruby-style-guide#no-non-nil-checks
  Enabled: true
Style/Not:
  Description: Use ! instead of not.
  StyleGuide: https://github.com/bbatsov/ruby-style-guide#bang-not-not
  Enabled: true
Style/NumericLiterals:
  Description: Add underscores to large numeric literals to improve their readability.
  StyleGuide: https://github.com/bbatsov/ruby-style-guide#underscores-in-numerics
  Enabled: true
Style/OneLineConditional:
  Description: Favor the ternary operator(?:) over if/then/else/end constructs.
  StyleGuide: https://github.com/bbatsov/ruby-style-guide#ternary-operator
  Enabled: false
Style/OptionalArguments:
  Description: Checks for optional arguments that do not appear at the end of the
    argument list
  StyleGuide: https://github.com/bbatsov/ruby-style-guide#optional-arguments
  Enabled: false
Style/ParallelAssignment:
  Description: Check for simple usages of parallel assignment. It will only warn when
    the number of variables matches on both sides of the assignment. This also provides
    performance benefits
  StyleGuide: https://github.com/bbatsov/ruby-style-guide#parallel-assignment
  Enabled: false
Style/ParenthesesAroundCondition:
  Description: Don't use parentheses around the condition of an if/unless/while.
  StyleGuide: https://github.com/bbatsov/ruby-style-guide#no-parens-if
  Enabled: true
Style/PercentLiteralDelimiters:
  Description: Use `%`-literal delimiters consistently
  StyleGuide: https://github.com/bbatsov/ruby-style-guide#percent-literal-braces
  Enabled: true
  PreferredDelimiters:
    default: "()"
    "%i": "()"
    "%I": "()"
    "%r": "{}"
    "%w": "()"
    "%W": "()"
Style/PercentQLiterals:
  Description: Checks if uses of %Q/%q match the configured preference.
  Enabled: true
Style/PerlBackrefs:
  Description: Avoid Perl-style regex back references.
  StyleGuide: https://github.com/bbatsov/ruby-style-guide#no-perl-regexp-last-matchers
  Enabled: false
Naming/PredicateName:
  Description: Check the names of predicate methods.
  StyleGuide: https://github.com/bbatsov/ruby-style-guide#bool-methods-qmark
  Enabled: true
Style/Proc:
  Description: Use proc instead of Proc.new.
  StyleGuide: https://github.com/bbatsov/ruby-style-guide#proc
  Enabled: true
Style/RaiseArgs:
  Description: Checks the arguments passed to raise/fail.
  StyleGuide: https://github.com/bbatsov/ruby-style-guide#exception-class-messages
  Enabled: false
Style/RedundantBegin:
  Description: Don't use begin blocks when they are not needed.
  StyleGuide: https://github.com/bbatsov/ruby-style-guide#begin-implicit
  Enabled: true
Style/RedundantException:
  Description: Checks for an obsolete RuntimeException argument in raise/fail.
  StyleGuide: https://github.com/bbatsov/ruby-style-guide#no-explicit-runtimeerror
  Enabled: true
Style/RedundantReturn:
  Description: Don't use return where it's not required.
  StyleGuide: https://github.com/bbatsov/ruby-style-guide#no-explicit-return
  Enabled: true
Style/RedundantSelf:
  Description: Don't use self where it's not needed.
  StyleGuide: https://github.com/bbatsov/ruby-style-guide#no-self-unless-required
  Enabled: true
Style/RegexpLiteral:
  Description: Use / or %r around regular expressions.
  StyleGuide: https://github.com/bbatsov/ruby-style-guide#percent-r
  Enabled: false
Layout/RescueEnsureAlignment:
  Description: Align rescues and ensures correctly.
  Enabled: false
Style/RescueModifier:
  Description: Avoid using rescue in its modifier form.
  StyleGuide: https://github.com/bbatsov/ruby-style-guide#no-rescue-modifiers
  Enabled: false
Style/SelfAssignment:
  Description: Checks for places where self-assignment shorthand should have been
    used.
  StyleGuide: https://github.com/bbatsov/ruby-style-guide#self-assignment
  Enabled: true
Style/Semicolon:
  Description: Don't use semicolons to terminate expressions.
  StyleGuide: https://github.com/bbatsov/ruby-style-guide#no-semicolon
  Enabled: true
Style/SignalException:
  Description: Checks for proper usage of fail and raise.
  StyleGuide: https://github.com/bbatsov/ruby-style-guide#fail-method
  Enabled: true
Style/SingleLineBlockParams:
  Description: Enforces the names of some block params.
  StyleGuide: https://github.com/bbatsov/ruby-style-guide#reduce-blocks
  Enabled: true
Style/SingleLineMethods:
  Description: Avoid single-line methods.
  StyleGuide: https://github.com/bbatsov/ruby-style-guide#no-single-line-methods
  Enabled: false
Layout/SpaceBeforeFirstArg:
  Description: Checks that exactly one space is used between a method name and the
    first argument for method calls without parentheses.
  Enabled: true
Layout/SpaceAfterColon:
  Description: Use spaces after colons.
  StyleGuide: https://github.com/bbatsov/ruby-style-guide#spaces-operators
  Enabled: true
Layout/SpaceAfterComma:
  Description: Use spaces after commas.
  StyleGuide: https://github.com/bbatsov/ruby-style-guide#spaces-operators
  Enabled: true
Layout/SpaceAroundKeyword:
  Description: Use spaces around keywords.
  Enabled: true
Layout/SpaceAfterMethodName:
  Description: Do not put a space between a method name and the opening parenthesis
    in a method definition.
  StyleGuide: https://github.com/bbatsov/ruby-style-guide#parens-no-spaces
  Enabled: true
Layout/SpaceAfterNot:
  Description: Tracks redundant space after the ! operator.
  StyleGuide: https://github.com/bbatsov/ruby-style-guide#no-space-bang
  Enabled: false
Layout/SpaceAfterSemicolon:
  Description: Use spaces after semicolons.
  StyleGuide: https://github.com/bbatsov/ruby-style-guide#spaces-operators
  Enabled: true
Layout/SpaceBeforeBlockBraces:
  Description: Checks that the left block brace has or doesn't have space before it.
  Enabled: false
Layout/SpaceBeforeComma:
  Description: No spaces before commas.
  Enabled: false
Layout/SpaceBeforeComment:
  Description: Checks for missing space between code and a comment on the same line.
  Enabled: false
Layout/SpaceBeforeSemicolon:
  Description: No spaces before semicolons.
  Enabled: false
Layout/SpaceInsideBlockBraces:
  Description: Checks that block braces have or don't have surrounding space. For
    blocks taking parameters, checks that the left brace has or doesn't have trailing
    space.
  Enabled: false
Layout/SpaceAroundBlockParameters:
  Description: Checks the spacing inside and after block parameters pipes.
  Enabled: true
Layout/SpaceAroundEqualsInParameterDefault:
  Description: Checks that the equals signs in parameter default assignments have
    or don't have surrounding space depending on configuration.
  StyleGuide: https://github.com/bbatsov/ruby-style-guide#spaces-around-equals
  Enabled: true
Layout/SpaceAroundOperators:
  Description: Use a single space around operators.
  StyleGuide: https://github.com/bbatsov/ruby-style-guide#spaces-operators
  Enabled: true
Layout/SpaceInsideHashLiteralBraces:
  Description: Use spaces inside hash literal braces - or don't.
  StyleGuide: https://github.com/bbatsov/ruby-style-guide#spaces-operators
  Enabled: true
Layout/SpaceInsideParens:
  Description: No spaces after ( or before ).
  StyleGuide: https://github.com/bbatsov/ruby-style-guide#no-spaces-braces
  Enabled: true
Layout/SpaceInsideRangeLiteral:
  Description: No spaces inside range literals.
  StyleGuide: https://github.com/bbatsov/ruby-style-guide#no-space-inside-range-literals
  Enabled: true
Layout/SpaceInsideStringInterpolation:
  Description: Checks for padding/surrounding spaces inside string interpolation.
  StyleGuide: https://github.com/bbatsov/ruby-style-guide#string-interpolation
  Enabled: false
Style/SpecialGlobalVars:
  Description: Avoid Perl-style global variables.
  StyleGuide: https://github.com/bbatsov/ruby-style-guide#no-cryptic-perlisms
  Enabled: false
Style/StringLiterals:
  Description: Checks if uses of quotes match the configured preference.
  StyleGuide: https://github.com/bbatsov/ruby-style-guide#consistent-string-literals
  EnforcedStyle: double_quotes
  Enabled: true
Style/StringLiteralsInInterpolation:
  Description: Checks if uses of quotes inside expressions in interpolated strings
    match the configured preference.
  Enabled: true
Style/StructInheritance:
  Description: Checks for inheritance from Struct.new.
  StyleGuide: https://github.com/bbatsov/ruby-style-guide#no-extend-struct-new
  Enabled: false
Style/SymbolLiteral:
  Description: Use plain symbols instead of string symbols when possible.
  Enabled: false
Style/SymbolProc:
  Description: Use symbols as procs instead of blocks when possible.
  Enabled: false
Layout/Tab:
  Description: No hard tabs.
  StyleGuide: https://github.com/bbatsov/ruby-style-guide#spaces-indentation
  Enabled: false
Layout/TrailingBlankLines:
  Description: Checks trailing blank lines and final newline.
  StyleGuide: https://github.com/bbatsov/ruby-style-guide#newline-eof
  Enabled: false
Style/TrailingCommaInArguments:
  Description: Checks for trailing comma in parameter lists.
  StyleGuide: https://github.com/bbatsov/ruby-style-guide#no-trailing-params-comma
  Enabled: false
Layout/TrailingWhitespace:
  Description: Avoid trailing whitespace.
  StyleGuide: https://github.com/bbatsov/ruby-style-guide#no-trailing-whitespace
  Enabled: false
Style/TrivialAccessors:
  Description: Prefer attr_* methods to trivial readers/writers.
  StyleGuide: https://github.com/bbatsov/ruby-style-guide#attr_family
  Enabled: false
Style/UnlessElse:
  Description: Do not use unless with else. Rewrite these with the positive case first.
  StyleGuide: https://github.com/bbatsov/ruby-style-guide#no-else-with-unless
  Enabled: true
Style/UnneededCapitalW:
  Description: Checks for %W when interpolation is not needed.
  Enabled: false
Style/UnneededPercentQ:
  Description: Checks for %q/%Q when single quotes or double quotes would do.
  StyleGuide: https://github.com/bbatsov/ruby-style-guide#percent-q
  Enabled: false
Style/TrailingUnderscoreVariable:
  Description: Checks for the usage of unneeded trailing underscores at the end of
    parallel variable assignment.
  Enabled: false
Style/VariableInterpolation:
  Description: Don't interpolate global, instance and class variables directly in
    strings.
  StyleGuide: https://github.com/bbatsov/ruby-style-guide#curlies-interpolate
  Enabled: true
Naming/VariableName:
  Description: Use the configured style when naming variables.
  StyleGuide: https://github.com/bbatsov/ruby-style-guide#snake-case-symbols-methods-vars
  Enabled: true
Style/WhenThen:
  Description: Use when x then ... for one-line cases.
  StyleGuide: https://github.com/bbatsov/ruby-style-guide#one-line-cases
  Enabled: true
Style/WhileUntilDo:
  Description: Checks for redundant do after while or until.
  StyleGuide: https://github.com/bbatsov/ruby-style-guide#no-multiline-while-do
  Enabled: true
Style/WhileUntilModifier:
  Description: Favor modifier while/until usage when you have a single-line body.
  StyleGuide: https://github.com/bbatsov/ruby-style-guide#while-as-a-modifier
  Enabled: true
Style/MutableConstant:
  Enabled: true
Style/FrozenStringLiteralComment:
  Enabled: true
Style/WordArray:
  Description: Use %w or %W for arrays of words.
  StyleGuide: https://github.com/bbatsov/ruby-style-guide#percent-w
  Enabled: true
Style/EmptyMethod:
  Enabled: false
Security/Eval:
  Description: The use of eval represents a serious security risk.
  Enabled: true
Gemspec/RequiredRubyVersion:
  Enabled: false