gonzedge/rambling-trie

View on GitHub
.rubocop.enabled.yml

Summary

Maintainability
Test Coverage
# These are all the cops that are enabled in the default configuration.
require:
  - rubocop-performance
  - rubocop-rake
  - rubocop-rspec

#################### Bundler ###############################

Bundler/DuplicatedGem:
  Description: 'Checks for duplicate gem entries in Gemfile.'
  Enabled: true
  Include:
    - '**/*.gemfile'
    - '**/Gemfile'
    - '**/gems.rb'

Bundler/InsecureProtocolSource:
  Description: >-
                 The source `:gemcutter`, `:rubygems` and `:rubyforge` are deprecated
                 because HTTP requests are insecure. Please change your source to
                 'https://rubygems.org' if possible, or 'http://rubygems.org' if not.
  Enabled: true
  Include:
    - '**/*.gemfile'
    - '**/Gemfile'
    - '**/gems.rb'

Bundler/OrderedGems:
  Description: >-
                 Gems within groups in the Gemfile should be alphabetically sorted.
  Enabled: true
  Include:
    - '**/*.gemfile'
    - '**/Gemfile'
    - '**/gems.rb'

#################### Gemspec ###############################

Gemspec/DuplicatedAssignment:
  Description: 'An attribute assignment method calls should be listed only once in a gemspec.'
  Enabled: true
  Include:
    - '**/*.gemspec'

Gemspec/OrderedDependencies:
  Description: >-
                 Dependencies in the gemspec should be alphabetically sorted.
  Enabled: true
  Include:
    - '**/*.gemspec'

Gemspec/RequiredRubyVersion:
  Description: 'Checks that `required_ruby_version` of gemspec and `TargetRubyVersion` of .rubocop.yml are equal.'
  Enabled: true
  Include:
    - '**/*.gemspec'

#################### Layout ###############################

Layout/AccessModifierIndentation:
  Description: Check indentation of private/protected visibility modifiers.
  StyleGuide: '#indent-public-private-protected'
  Enabled: true

Layout/ArrayAlignment:
  Description: >-
                 Align the elements of an array literal if they span more than
                 one line.
  StyleGuide: '#align-multiline-arrays'
  Enabled: true

Layout/HashAlignment:
  Description: >-
                 Align the elements of a hash literal if they span more than
                 one line.
  Enabled: true

Layout/ParameterAlignment:
  Description: >-
                 Align the parameters of a method call if they span more
                 than one line.
  StyleGuide: '#no-double-indent'
  Enabled: true

Layout/BlockEndNewline:
  Description: 'Put end statement of multiline block on its own line.'
  Enabled: true

Layout/CaseIndentation:
  Description: 'Indentation of when in a case/when/[else/]end.'
  StyleGuide: '#indent-when-to-case'
  Enabled: true

Layout/ClosingParenthesisIndentation:
  Description: 'Checks the indentation of hanging closing parentheses.'
  Enabled: true

Layout/CommentIndentation:
  Description: 'Indentation of comments.'
  Enabled: true

Layout/DotPosition:
  Description: 'Checks the position of the dot in multi-line method calls.'
  StyleGuide: '#consistent-multi-line-chains'
  Enabled: true

Layout/ElseAlignment:
  Description: 'Align elses and elsifs correctly.'
  Enabled: true

# Layout/EmptyComment:
#   Description: 'Checks empty comment.'
#   Enabled: true

Layout/EmptyLineAfterMagicComment:
  Description: 'Add an empty line after magic comments to separate them from code.'
  StyleGuide: '#separate-magic-comments-from-code'
  Enabled: true

Layout/EmptyLineBetweenDefs:
  Description: 'Use empty lines between defs.'
  StyleGuide: '#empty-lines-between-methods'
  Enabled: true

Layout/EmptyLines:
  Description: "Don't use several empty lines in a row."
  StyleGuide: '#two-or-more-empty-lines'
  Enabled: true

Layout/EmptyLinesAroundAccessModifier:
  Description: "Keep blank lines around access modifiers."
  StyleGuide: '#empty-lines-around-access-modifier'
  Enabled: true

Layout/EmptyLinesAroundArguments:
  Description: "Keeps track of empty lines around method arguments."
  Enabled: true

Layout/EmptyLinesAroundBeginBody:
  Description: "Keeps track of empty lines around begin-end bodies."
  StyleGuide: '#empty-lines-around-bodies'
  Enabled: true

Layout/EmptyLinesAroundBlockBody:
  Description: "Keeps track of empty lines around block bodies."
  StyleGuide: '#empty-lines-around-bodies'
  Enabled: true

Layout/EmptyLinesAroundClassBody:
  Description: "Keeps track of empty lines around class bodies."
  StyleGuide: '#empty-lines-around-bodies'
  Enabled: true

Layout/EmptyLinesAroundExceptionHandlingKeywords:
  Description: "Keeps track of empty lines around exception handling keywords."
  StyleGuide: '#empty-lines-around-bodies'
  Enabled: true

Layout/EmptyLinesAroundMethodBody:
  Description: "Keeps track of empty lines around method bodies."
  StyleGuide: '#empty-lines-around-bodies'
  Enabled: true

Layout/EmptyLinesAroundModuleBody:
  Description: "Keeps track of empty lines around module bodies."
  StyleGuide: '#empty-lines-around-bodies'
  Enabled: true

Layout/EndOfLine:
  Description: 'Use Unix-style line endings.'
  StyleGuide: '#crlf'
  Enabled: true

Layout/ExtraSpacing:
  Description: 'Do not use unnecessary spacing.'
  Enabled: true

Layout/FirstParameterIndentation:
  Description: 'Checks the indentation of the first parameter in a method call.'
  Enabled: true

Layout/FirstArrayElementIndentation:
  Description: >-
                 Checks the indentation of the first element in an array
                 literal.
  Enabled: true

Layout/AssignmentIndentation:
  Description: >-
                 Checks the indentation of the first line of the
                 right-hand-side of a multi-line assignment.
  Enabled: true

Layout/FirstHashElementIndentation:
  Description: 'Checks the indentation of the first key in a hash literal.'
  Enabled: true

Layout/HeredocIndentation:
  Description: 'This cops checks the indentation of the here document bodies.'
  StyleGuide: '#squiggly-heredocs'
  Enabled: true

Layout/IndentationConsistency:
  Description: 'Keep indentation straight.'
  StyleGuide: '#spaces-indentation'
  Enabled: true

Layout/IndentationWidth:
  Description: 'Use 2 spaces for indentation.'
  StyleGuide: '#spaces-indentation'
  Enabled: true

Layout/InitialIndentation:
  Description: >-
    Checks the indentation of the first non-blank non-comment line in a file.
  Enabled: true

Layout/LeadingCommentSpace:
  Description: 'Comments should start with a space.'
  StyleGuide: '#hash-space'
  Enabled: true

Layout/MultilineArrayBraceLayout:
  Description: >-
                 Checks that the closing brace in an array literal is
                 either on the same line as the last array element, or
                 a new line.
  Enabled: true

Layout/MultilineBlockLayout:
  Description: 'Ensures newlines after multiline block do statements.'
  Enabled: true

Layout/MultilineHashBraceLayout:
  Description: >-
                 Checks that the closing brace in a hash literal is
                 either on the same line as the last hash element, or
                 a new line.
  Enabled: true

Layout/MultilineMethodCallBraceLayout:
  Description: >-
                 Checks that the closing brace in a method call is
                 either on the same line as the last method argument, or
                 a new line.
  Enabled: true

Layout/MultilineMethodCallIndentation:
  Description: >-
                 Checks indentation of method calls with the dot operator
                 that span more than one line.
  Enabled: true

Layout/MultilineMethodDefinitionBraceLayout:
  Description: >-
                 Checks that the closing brace in a method definition is
                 either on the same line as the last method parameter, or
                 a new line.
  Enabled: true

Layout/MultilineOperationIndentation:
  Description: >-
                 Checks indentation of binary operations that span more than
                 one line.
  Enabled: true

Layout/RescueEnsureAlignment:
  Description: 'Align rescues and ensures correctly.'
  Enabled: true

Layout/SpaceAfterColon:
  Description: 'Use spaces after colons.'
  StyleGuide: '#spaces-operators'
  Enabled: true

Layout/SpaceAfterComma:
  Description: 'Use spaces after commas.'
  StyleGuide: '#spaces-operators'
  Enabled: true

Layout/SpaceAfterMethodName:
  Description: >-
                 Do not put a space between a method name and the opening
                 parenthesis in a method definition.
  StyleGuide: '#parens-no-spaces'
  Enabled: true

Layout/SpaceAfterNot:
  Description: Tracks redundant space after the ! operator.
  StyleGuide: '#no-space-bang'
  Enabled: true

Layout/SpaceAfterSemicolon:
  Description: 'Use spaces after semicolons.'
  StyleGuide: '#spaces-operators'
  Enabled: true

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: '#spaces-around-equals'
  Enabled: true

Layout/SpaceAroundKeyword:
  Description: 'Use a space around keywords if appropriate.'
  Enabled: true

Layout/SpaceAroundOperators:
  Description: 'Use a single space around operators.'
  StyleGuide: '#spaces-operators'
  Enabled: true

Layout/SpaceBeforeBlockBraces:
  Description: >-
                 Checks that the left block brace has or doesn't have space
                 before it.
  Enabled: true

Layout/SpaceBeforeComma:
  Description: 'No spaces before commas.'
  Enabled: true

Layout/SpaceBeforeComment:
  Description: >-
                 Checks for missing space between code and a comment on the
                 same line.
  Enabled: true

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/SpaceBeforeSemicolon:
  Description: 'No spaces before semicolons.'
  Enabled: true

Layout/SpaceInLambdaLiteral:
  Description: 'Checks for spaces in lambda literals.'
  Enabled: true

Layout/SpaceInsideArrayLiteralBrackets:
  Description: 'Checks the spacing inside array literal brackets.'
  Enabled: true

Layout/SpaceInsideArrayPercentLiteral:
  Description: 'No unnecessary additional spaces between elements in %i/%w literals.'
  Enabled: true

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: true

Layout/SpaceInsideHashLiteralBraces:
  Description: "Use spaces inside hash literal braces - or don't."
  StyleGuide: '#spaces-operators'
  Enabled: true

Layout/SpaceInsideParens:
  Description: 'No spaces after ( or before ).'
  StyleGuide: '#spaces-braces'
  Enabled: true

Layout/SpaceInsidePercentLiteralDelimiters:
  Description: 'No unnecessary spaces inside delimiters of %i/%w/%x literals.'
  Enabled: true

Layout/SpaceInsideRangeLiteral:
  Description: 'No spaces inside range literals.'
  StyleGuide: '#no-space-inside-range-literals'
  Enabled: true

Layout/SpaceInsideReferenceBrackets:
  Description: 'Checks the spacing inside referential brackets.'
  Enabled: true

Layout/SpaceInsideStringInterpolation:
  Description: 'Checks for padding/surrounding spaces inside string interpolation.'
  StyleGuide: '#string-interpolation'
  Enabled: true

Layout/IndentationStyle:
  Description: 'No hard tabs.'
  StyleGuide: '#spaces-indentation'
  Enabled: true

Layout/TrailingEmptyLines:
  Description: 'Checks trailing blank lines and final newline.'
  StyleGuide: '#newline-eof'
  Enabled: true

Layout/TrailingWhitespace:
  Description: 'Avoid trailing whitespace.'
  StyleGuide: '#no-trailing-whitespace'
  Enabled: true

#################### Lint ##################################
### Warnings

Lint/AmbiguousBlockAssociation:
  Description: >-
                 Checks for ambiguous block association with method when param passed without
                 parentheses.
  StyleGuide: '#syntax'
  Enabled: true

Lint/AmbiguousOperator:
  Description: >-
                 Checks for ambiguous operators in the first argument of a
                 method invocation without parentheses.
  StyleGuide: '#method-invocation-parens'
  Enabled: true

Lint/AmbiguousRegexpLiteral:
  Description: >-
                 Checks for ambiguous regexp literals in the first argument of
                 a method invocation without parentheses.
  Enabled: true

Lint/AssignmentInCondition:
  Description: "Don't use assignment in conditions."
  StyleGuide: '#safe-assignment-in-condition'
  Enabled: true
#
# Lint/BigDecimalNew:
#   Description: '`BigDecimal.new()` is deprecated. Use `BigDecimal()` instead.'
#   Enabled: true

Layout/BlockAlignment:
  Description: 'Align block ends correctly.'
  Enabled: true

Lint/BooleanSymbol:
  Description: 'Check for `:true` and `:false` symbols.'
  Enabled: true

Lint/CircularArgumentReference:
  Description: "Default values in optional keyword arguments and optional ordinal arguments should not refer back to the name of the argument."
  Enabled: true

Layout/ConditionPosition:
  Description: >-
                 Checks for condition placed in a confusing position relative to
                 the keyword.
  StyleGuide: '#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/DuplicateCaseCondition:
  Description: 'Do not repeat values in case conditionals.'
  Enabled: true

Lint/DuplicateMethods:
  Description: 'Check for duplicate method definitions.'
  Enabled: true

Lint/DuplicateHashKey:
  Description: 'Check for duplicate keys in hash literals.'
  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
  AutoCorrect: false

Lint/EmptyExpression:
  Description: 'Checks for empty expressions.'
  Enabled: true

Lint/EmptyInterpolation:
  Description: 'Checks for empty string interpolation.'
  Enabled: true

Lint/EmptyWhen:
  Description: 'Checks for `when` branches with empty bodies.'
  Enabled: true

Layout/EndAlignment:
  Description: 'Align ends correctly.'
  Enabled: true

Lint/EnsureReturn:
  Description: 'Do not use return in an ensure block.'
  StyleGuide: '#no-return-ensure'
  Enabled: true

Lint/FloatOutOfRange:
  Description: >-
                 Catches floating-point literals too large or small for Ruby to
                 represent.
  Enabled: true

Lint/FormatParameterMismatch:
  Description: 'The number of parameters to format/sprint must match the fields.'
  Enabled: true

Lint/SuppressedException:
  Description: "Don't suppress exception."
  StyleGuide: '#dont-hide-exceptions'
  Enabled: true

Lint/ImplicitStringConcatenation:
  Description: >-
                 Checks for adjacent string literals on the same line, which
                 could better be represented as a single string literal.
  Enabled: true

Lint/IneffectiveAccessModifier:
  Description: >-
                 Checks for attempts to use `private` or `protected` to set
                 the visibility of a class method, which does not work.
  Enabled: true

Lint/InheritException:
  Description: 'Avoid inheriting from the `Exception` class.'
  Enabled: true

Lint/InterpolationCheck:
  Description: 'Raise warning for interpolation in single q strs'
  Enabled: true

Lint/LiteralAsCondition:
  Description: 'Checks of literals used in conditions.'
  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: '#loop-with-break'
  Enabled: true

Lint/MissingCopEnableDirective:
  Description: 'Checks for a `# rubocop:enable` after `# rubocop:disable`'
  Enabled: true

Lint/MultipleComparison:
  Description: "Use `&&` operator to compare multiple value."
  Enabled: true

Lint/NestedMethodDefinition:
  Description: 'Do not use nested method definitions.'
  StyleGuide: '#no-nested-methods'
  Enabled: true

Lint/NestedPercentLiteral:
  Description: 'Checks for nested percent literals.'
  Enabled: true

Lint/NextWithoutAccumulator:
  Description:  >-
                  Do not omit the accumulator when calling `next`
                  in a `reduce`/`inject` block.
  Enabled: true

Lint/NonLocalExitFromIterator:
  Description: 'Do not use return in iterator to cause non-local exit.'
  Enabled: true

# Lint/OrderedMagicComments:
#   Description: 'Checks the proper ordering of magic comments and whether a magic comment is not placed before a shebang.'
#   Enabled: true

Lint/ParenthesesAsGroupedExpression:
  Description: >-
                 Checks for method calls with a space before the opening
                 parenthesis.
  StyleGuide: '#parens-no-spaces'
  Enabled: true

Lint/PercentStringArray:
  Description: >-
                 Checks for unwanted commas and quotes in %w/%W literals.
  Enabled: true

Lint/PercentSymbolArray:
  Description: >-
                 Checks for unwanted commas and colons in %i/%I literals.
  Enabled: true

Lint/RandOne:
  Description: >-
                 Checks for `rand(1)` calls. Such calls always return `0`
                 and most likely a mistake.
  Enabled: true

Lint/RedundantWithIndex:
  Description: 'Checks for redundant `with_index`.'
  Enabled: true

Lint/RedundantWithObject:
  Description: 'Checks for redundant `with_object`.'
  Enabled: true

Lint/RegexpAsCondition:
  Description: >-
                 Do not use regexp literal as a condition.
                 The regexp literal matches `$_` implicitly.
  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: '#no-blind-rescues'
  Enabled: true

Lint/RescueType:
  Description: 'Avoid rescuing from non constants that could result in a `TypeError`.'
  Enabled: true

Lint/ReturnInVoidContext:
  Description: 'Checks for return in void context.'
  Enabled: true

Lint/SafeNavigationChain:
  Description: 'Do not chain ordinary method call after safe navigation operator.'
  Enabled: true

Lint/ScriptPermission:
  Description: 'Grant script file execute permission.'
  Enabled: true

Lint/ShadowedArgument:
  Description: 'Avoid reassigning arguments before they were used.'
  Enabled: true

Lint/ShadowedException:
  Description: >-
                  Avoid rescuing a higher level exception
                  before a lower level exception.
  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/RedundantStringCoercion:
  Description: 'Checks for Object#to_s usage in string interpolation.'
  StyleGuide: '#no-to-s'
  Enabled: true

Lint/UnderscorePrefixedVariableName:
  Description: 'Do not use prefix `_` for a variable that is used.'
  Enabled: true

Lint/UnifiedInteger:
  Description: 'Use Integer instead of Fixnum or Bignum'
  Enabled: true
#
# Lint/UnneededCopDisableDirective:
#   Description: >-
#                  Checks for rubocop:disable comments that can be removed.
#                  Note: this cop is not disabled when disabling all cops.
#                  It must be explicitly disabled.
#   Enabled: true
#
# Lint/UnneededCopEnableDirective:
#   Description: Checks for rubocop:enable comments that can be removed.
#
#   Enabled: true

Lint/RedundantRequireStatement:
  Description: 'Checks for unnecessary `require` statement.'
  Enabled: true

Lint/RedundantSplatExpansion:
  Description: 'Checks for splat unnecessarily being called on literals'
  Enabled: true

Lint/UnreachableCode:
  Description: 'Unreachable code.'
  Enabled: true

Lint/UnusedBlockArgument:
  Description: 'Checks for unused block arguments.'
  StyleGuide: '#underscore-unused-vars'
  Enabled: true

Lint/UnusedMethodArgument:
  Description: 'Checks for unused method arguments.'
  StyleGuide: '#underscore-unused-vars'
  Enabled: true

Lint/UriEscapeUnescape:
  Description: >-
                 `URI.escape` method is obsolete and should not be used. Instead, use
                 `CGI.escape`, `URI.encode_www_form` or `URI.encode_www_form_component`
                 depending on your specific use case.
                 Also `URI.unescape` method is obsolete and should not be used. Instead, use
                 `CGI.unescape`, `URI.decode_www_form` or `URI.decode_www_form_component`
                 depending on your specific use case.
  Enabled: true

Lint/UriRegexp:
  Description: 'Use `URI::DEFAULT_PARSER.make_regexp` instead of `URI.regexp`.'
  Enabled: true

Lint/UselessAccessModifier:
  Description: 'Checks for useless access modifiers.'
  Enabled: true
  ContextCreatingMethods: []
  MethodCreatingMethods: []

Lint/UselessAssignment:
  Description: 'Checks for useless assignment to a local variable.'
  StyleGuide: '#underscore-unused-vars'
  Enabled: true

Lint/BinaryOperatorWithIdenticalOperands:
  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 ###############################

Metrics/AbcSize:
  Description: >-
                 A calculated magnitude based on number of assignments,
                 branches, and conditions.
  Reference: 'http://c2.com/cgi/wiki?AbcMetric'
  Enabled: true

Metrics/BlockLength:
  Description: 'Avoid long blocks with many lines.'
  Enabled: true

Metrics/BlockNesting:
  Description: 'Avoid excessive block nesting'
  StyleGuide: '#three-is-the-number-thou-shalt-count'
  Enabled: true

Metrics/ClassLength:
  Description: 'Avoid classes longer than 100 lines of code.'
  Enabled: true

Metrics/CyclomaticComplexity:
  Description: >-
                 A complexity metric that is strongly correlated to the number
                 of test cases needed to validate a method.
  Enabled: true

Layout/LineLength:
  Description: 'Limit lines to 80 characters.'
  StyleGuide: '#80-character-limits'
  Enabled: true

Metrics/MethodLength:
  Description: 'Avoid methods longer than 10 lines of code.'
  StyleGuide: '#short-methods'
  Enabled: true

Metrics/ModuleLength:
  Description: 'Avoid modules longer than 100 lines of code.'
  Enabled: true

Metrics/ParameterLists:
  Description: 'Avoid parameter lists longer than three or four parameters.'
  StyleGuide: '#too-many-params'
  Enabled: true

Metrics/PerceivedComplexity:
  Description: >-
                 A complexity metric geared towards measuring complexity for a
                 human reader.
  Enabled: true

#################### Naming ##############################

Naming/AccessorMethodName:
  Description: Check the naming of accessor methods for get_/set_.
  StyleGuide: '#accessor_mutator_method_names'
  Enabled: true

Naming/AsciiIdentifiers:
  Description: 'Use only ascii symbols in identifiers.'
  StyleGuide: '#english-identifiers'
  Enabled: true

Naming/BinaryOperatorParameterName:
  Description: 'When defining binary operators, name the argument other.'
  StyleGuide: '#other-arg'
  Enabled: true

Naming/ClassAndModuleCamelCase:
  Description: 'Use CamelCase for classes and modules.'
  StyleGuide: '#camelcase-classes'
  Enabled: true

Naming/ConstantName:
  Description: 'Constants should use SCREAMING_SNAKE_CASE.'
  StyleGuide: '#screaming-snake-case'
  Enabled: true

Naming/FileName:
  Description: 'Use snake_case for source file names.'
  StyleGuide: '#snake-case-files'
  Enabled: true

Naming/HeredocDelimiterCase:
  Description: 'Use configured case for heredoc delimiters.'
  StyleGuide: '#heredoc-delimiters'
  Enabled: true

Naming/HeredocDelimiterNaming:
  Description: 'Use descriptive heredoc delimiters.'
  StyleGuide: '#heredoc-delimiters'
  Enabled: true

Naming/MethodName:
  Description: 'Use the configured style when naming methods.'
  StyleGuide: '#snake-case-symbols-methods-vars'
  Enabled: true

Naming/PredicateName:
  Description: 'Check the names of predicate methods.'
  StyleGuide: '#bool-methods-qmark'
  Enabled: true
#
# Naming/UncommunicativeBlockParamName:
#   Description: >-
#                 Checks for block parameter names that contain capital letters,
#                 end in numbers, or do not meet a minimal length.
#   Enabled: true
#
# Naming/UncommunicativeMethodParamName:
#   Description: >-
#                 Checks for method parameter names that contain capital letters,
#                 end in numbers, or do not meet a minimal length.
#   Enabled: true

Naming/VariableName:
  Description: 'Use the configured style when naming variables.'
  StyleGuide: '#snake-case-symbols-methods-vars'
  Enabled: true

Naming/VariableNumber:
  Description: 'Use the configured style when numbering variables.'
  Enabled: true

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

Performance/Caller:
  Description: >-
             Use `caller(n..n)` instead of `caller`.
  Enabled: true

Performance/CaseWhenSplat:
  Description: >-
                  Place `when` conditions that use splat at the end
                  of the list of `when` branches.
  Enabled: true

Performance/Casecmp:
  Description: >-
             Use `casecmp` rather than `downcase ==`, `upcase ==`, `== downcase`, or `== upcase`..
  Reference: 'https://github.com/JuanitoFatas/fast-ruby#stringcasecmp-vs-stringdowncase---code'
  Enabled: true

Performance/CompareWithBlock:
  Description: 'Use `sort_by(&:foo)` instead of `sort { |a, b| a.foo <=> b.foo }`.'
  Enabled: true

Performance/Count:
  Description: >-
                  Use `count` instead of `select...size`, `reject...size`,
                  `select...count`, `reject...count`, `select...length`,
                  and `reject...length`.
  # This cop has known compatibility issues with `ActiveRecord` and other
  # frameworks. ActiveRecord's `count` ignores the block that is passed to it.
  # For more information, see the documentation in the cop itself.
  # If you understand the known risk, you can disable `SafeAutoCorrect`.
  SafeAutoCorrect: true
  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'
  # This cop has known compatibility issues with `ActiveRecord` and other
  # frameworks. `ActiveRecord` does not implement a `detect` method and `find`
  # has its own meaning. Correcting `ActiveRecord` methods with this cop
  # should be considered unsafe.
  SafeAutoCorrect: true
  Enabled: true

Performance/DoubleStartEndWith:
  Description: >-
                  Use `str.{start,end}_with?(x, ..., y, ...)`
                  instead of `str.{start,end}_with?(x, ...) || str.{start,end}_with?(y, ...)`.
  Enabled: true

Performance/EndWith:
  Description: 'Use `end_with?` instead of a regex match anchored to the end of a string.'
  Reference: 'https://github.com/JuanitoFatas/fast-ruby#stringmatch-vs-stringstart_withstringend_with-code-start-code-end'
  # This will change to a new method call which isn't guaranteed to be on the
  # object. Switching these methods has to be done with knowledge of the types
  # of the variables which rubocop doesn't have.
  AutoCorrect: false
  Enabled: true

Performance/FixedSize:
  Description: 'Do not compute the size of statically sized objects except in constants'
  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
  # If enabled, this cop will warn about usages of
  # `flatten` being called without any parameters.
  # This can be dangerous since `flat_map` will only flatten 1 level, and
  # `flatten` without any parameters can flatten multiple levels.

Style/HashEachMethods:
  Description: >-
                 Use `Hash#each_key` and `Hash#each_value` instead of
                 `Hash#keys.each` and `Hash#values.each`.
  StyleGuide: '#hash-each'
  Enabled: true
  AutoCorrect: false

Performance/RangeInclude:
  Description: 'Use `Range#cover?` instead of `Range#include?`.'
  Reference: 'https://github.com/JuanitoFatas/fast-ruby#cover-vs-include-code'
  Enabled: true

Performance/RedundantBlockCall:
  Description: 'Use `yield` instead of `block.call`.'
  Reference: 'https://github.com/JuanitoFatas/fast-ruby#proccall-and-block-arguments-vs-yieldcode'
  Enabled: true

Performance/RedundantMatch:
  Description: >-
                  Use `=~` instead of `String#match` or `Regexp#match` in a context where the
                  returned `MatchData` is not needed.
  Enabled: true

Performance/RedundantMerge:
  Description: 'Use Hash#[]=, rather than Hash#merge! with a single key-value pair.'
  Reference: 'https://github.com/JuanitoFatas/fast-ruby#hashmerge-vs-hash-code'
  Enabled: true

Style/RedundantSortBy:
  Description: 'Use `sort` instead of `sort_by { |x| x }`.'
  Enabled: true

Performance/RegexpMatch:
  Description: >-
                  Use `match?` instead of `Regexp#match`, `String#match`, `Symbol#match`,
                  `Regexp#===`, or `=~` when `MatchData` is not used.
  Enabled: true

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[Integer]`.
  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#arraylength-vs-arraysize-vs-arraycount-code'
  Enabled: true

Performance/StartWith:
  Description: 'Use `start_with?` instead of a regex match anchored to the beginning of a string.'
  Reference: 'https://github.com/JuanitoFatas/fast-ruby#stringmatch-vs-stringstart_withstringend_with-code-start-code-end'
  # This will change to a new method call which isn't guaranteed to be on the
  # object. Switching these methods has to be done with knowledge of the types
  # of the variables which rubocop doesn't have.
  AutoCorrect: false
  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

Performance/TimesMap:
  Description: 'Checks for .times.map calls.'
  AutoCorrect: false
  Enabled: true

Performance/UnfreezeString:
  Description: 'Use unary plus to get an unfrozen string literal.'
  Enabled: true

Performance/UriDefaultParser:
  Description: 'Use `URI::DEFAULT_PARSER` instead of `URI::Parser.new`.'
  Enabled: true

#################### Security ##############################

Security/Eval:
  Description: 'The use of eval represents a serious security risk.'
  Enabled: true

Security/JSONLoad:
  Description: >-
                 Prefer usage of `JSON.parse` over `JSON.load` due to potential
                 security issues. See reference for more information.
  Reference: 'http://ruby-doc.org/stdlib-2.3.0/libdoc/json/rdoc/JSON.html#method-i-load'
  Enabled: true
  # Autocorrect here will change to a method that may cause crashes depending
  # on the value of the argument.
  AutoCorrect: false

Security/MarshalLoad:
  Description: >-
                 Avoid using of `Marshal.load` or `Marshal.restore` due to potential
                 security issues. See reference for more information.
  Reference: 'http://ruby-doc.org/core-2.3.3/Marshal.html#module-Marshal-label-Security+considerations'
  Enabled: true

# Security/Open:
#   Description: 'The use of Kernel#open represents a serious security risk.'
#   Enabled: true

Security/YAMLLoad:
  Description: >-
                 Prefer usage of `YAML.safe_load` over `YAML.load` due to potential
                 security issues. See reference for more information.
  Reference: 'https://ruby-doc.org/stdlib-2.3.3/libdoc/yaml/rdoc/YAML.html#module-YAML-label-Security'
  Enabled: true

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

Style/Alias:
  Description: 'Use alias instead of alias_method.'
  StyleGuide: '#alias-method'
  Enabled: true

Style/AndOr:
  Description: 'Use &&/|| instead of and/or.'
  StyleGuide: '#no-and-or-or'
  Enabled: true

Style/ArrayJoin:
  Description: 'Use Array#join instead of Array#*.'
  StyleGuide: '#array-join'
  Enabled: true

Style/AsciiComments:
  Description: 'Use only ascii symbols in comments.'
  StyleGuide: '#english-comments'
  Enabled: true

Style/Attr:
  Description: 'Checks for uses of Module#attr.'
  StyleGuide: '#attr'
  Enabled: true

Style/BarePercentLiterals:
  Description: 'Checks if usage of %() or %Q() matches configuration.'
  StyleGuide: '#percent-q-shorthand'
  Enabled: true

Style/BeginBlock:
  Description: 'Avoid the use of BEGIN blocks.'
  StyleGuide: '#no-BEGIN-blocks'
  Enabled: true

Style/BlockComments:
  Description: 'Do not use block comments.'
  StyleGuide: '#no-block-comments'
  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: '#single-line-blocks'
  Enabled: true

Style/CaseEquality:
  Description: 'Avoid explicit use of the case equality operator(===).'
  StyleGuide: '#no-case-equality'
  Enabled: true

Style/CharacterLiteral:
  Description: 'Checks for uses of character literals.'
  StyleGuide: '#no-character-literals'
  Enabled: true

Style/ClassAndModuleChildren:
  Description: 'Checks style of children classes and modules.'
  StyleGuide: '#namespace-definition'
  # Moving from compact to nested children requires knowledge of whether the
  # outer parent is a module or a class. Moving from nested to compact requires
  # verification that the outer parent is defined elsewhere. Rubocop does not
  # have the knowledge to perform either operation safely and thus requires
  # manual oversight.
  AutoCorrect: false
  Enabled: true

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: '#def-self-class-methods'
  Enabled: true

Style/ClassVars:
  Description: 'Avoid the use of class variables.'
  StyleGuide: '#no-class-vars'
  Enabled: true

Style/ColonMethodCall:
  Description: 'Do not use :: for method call.'
  StyleGuide: '#double-colons'
  Enabled: true

Style/ColonMethodDefinition:
  Description: 'Do not use :: for defining class methods.'
  StyleGuide: '#colon-method-definition'
  Enabled: true

Style/CommandLiteral:
  Description: 'Use `` or %x around command literals.'
  StyleGuide: '#percent-x'
  Enabled: true

Style/CommentAnnotation:
  Description: >-
                 Checks formatting of special comments
                 (TODO, FIXME, OPTIMIZE, HACK, REVIEW).
  StyleGuide: '#annotate-keywords'
  Enabled: true

Style/CommentedKeyword:
  Description: 'Do not place comments on the same line as certain keywords.'
  Enabled: true

Style/ConditionalAssignment:
  Description: >-
                 Use the return value of `if` and `case` statements for
                 assignment to a variable and variable comparison instead
                 of assigning that variable inside of each branch.
  Enabled: true

Style/DateTime:
  Description: 'Use Date or Time over DateTime.'
  StyleGuide: '#date--time'
  Enabled: true

Style/DefWithParentheses:
  Description: 'Use def with parentheses when there are arguments.'
  StyleGuide: '#method-parens'
  Enabled: true

Style/Dir:
  Description: >-
                 Use the `__dir__` method to retrieve the canonicalized
                 absolute path to the current file.
  Enabled: true

Style/Documentation:
  Description: 'Document classes and non-namespace modules.'
  Enabled: true

Style/EachForSimpleLoop:
  Description: >-
                 Use `Integer#times` for a simple loop which iterates a fixed
                 number of times.
  Enabled: true

Style/EachWithObject:
  Description: 'Prefer `each_with_object` over `inject` or `reduce`.'
  Enabled: true

Style/EmptyBlockParameter:
  Description: 'Omit pipes for empty block parameters.'
  Enabled: true

Style/EmptyCaseCondition:
  Description: 'Avoid empty condition in case statements.'
  Enabled: true

Style/EmptyElse:
  Description: 'Avoid empty else-clauses.'
  Enabled: true

Style/EmptyLambdaParameter:
  Description: 'Omit parens for empty lambda parameters.'
  Enabled: true

Style/EmptyLiteral:
  Description: 'Prefer literals to Array.new/Hash.new/String.new.'
  StyleGuide: '#literal-array-hash'
  Enabled: true

Style/EmptyMethod:
  Description: 'Checks the formatting of empty method definitions.'
  StyleGuide: '#no-single-line-methods'
  Enabled: true

Style/Encoding:
  Description: 'Use UTF-8 as the source file encoding.'
  StyleGuide: '#utf-8'
  Enabled: true

Style/EndBlock:
  Description: 'Avoid the use of END blocks.'
  StyleGuide: '#no-END-blocks'
  Enabled: true

Style/EvalWithLocation:
  Description: 'Pass `__FILE__` and `__LINE__` to `eval` method, as they are used by backtraces.'
  Enabled: true

Style/EvenOdd:
  Description: 'Favor the use of Integer#even? && Integer#odd?'
  StyleGuide: '#predicate-methods'
  Enabled: true

# Style/ExpandPathArguments:
#   Description: "Use `expand_path(__dir__)` instead of `expand_path('..', __FILE__)`."
#   Enabled: true

Lint/FlipFlop:
  Description: 'Checks for flip flops'
  StyleGuide: '#no-flip-flops'
  Enabled: true

Style/For:
  Description: 'Checks use of for or each in multiline loops.'
  StyleGuide: '#no-for-loops'
  Enabled: true

Style/FormatString:
  Description: 'Enforce the use of Kernel#sprintf, Kernel#format or String#%.'
  StyleGuide: '#sprintf'
  Enabled: true

Style/FormatStringToken:
  Description: 'Use a consistent style for format string tokens.'
  Enabled: true

Style/FrozenStringLiteralComment:
  Description: >-
                 Add the frozen_string_literal comment to the top of files
                 to help transition from Ruby 2.3.0 to Ruby 3.0.
  Enabled: true

Style/GlobalVars:
  Description: 'Do not introduce global variables.'
  StyleGuide: '#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: '#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: '#hash-literals'
  Enabled: true

Style/IdenticalConditionalBranches:
  Description: >-
                 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.
  Enabled: true

Style/IfInsideElse:
  Description: 'Finds if nodes inside else, which can be converted to elsif.'
  Enabled: true

Style/IfUnlessModifier:
  Description: >-
                 Favor modifier if/unless usage when you have a
                 single-line body.
  StyleGuide: '#if-as-a-modifier'
  Enabled: true

Style/IfUnlessModifierOfIfUnless:
  Description: >-
                 Avoid modifier if/unless usage on conditionals.
  Enabled: true

Style/IfWithSemicolon:
  Description: 'Do not use if x; .... Use the ternary operator instead.'
  StyleGuide: '#no-semicolon-ifs'
  Enabled: true

Style/InfiniteLoop:
  Description: 'Use Kernel#loop for infinite loops.'
  StyleGuide: '#infinite-loop'
  Enabled: true

Style/InverseMethods:
  Description: >-
                 Use the inverse method instead of `!.method`
                 if an inverse method is defined.
  Enabled: true

Style/Lambda:
  Description: 'Use the new lambda literal syntax for single-line blocks.'
  StyleGuide: '#lambda-multi-line'
  Enabled: true

Style/LambdaCall:
  Description: 'Use lambda.call(...) instead of lambda.(...).'
  StyleGuide: '#proc-call'
  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: '#method-invocation-parens'
  Enabled: true

Style/MethodDefParentheses:
  Description: >-
                 Checks if the method definitions have or don't have
                 parentheses.
  StyleGuide: '#method-parens'
  Enabled: true

Lint/MissingSuper:
  Description: 'Avoid using `method_missing`.'
  StyleGuide: '#no-method-missing'
  Enabled: true

Style/MissingRespondToMissing:
  Description: 'Avoid using `method_missing`.'
  StyleGuide: '#no-method-missing'
  Enabled: true

Style/MinMax:
  Description: >-
                 Use `Enumerable#minmax` instead of `Enumerable#min`
                 and `Enumerable#max` in conjunction.'
  Enabled: true

Style/MixinGrouping:
  Description: 'Checks for grouping of mixins in `class` and `module` bodies.'
  StyleGuide: '#mixin-grouping'
  Enabled: true

Style/MixinUsage:
  Description: 'Checks that `include`, `extend` and `prepend` exists at the top level.'
  Enabled: true

Style/ModuleFunction:
  Description: 'Checks for usage of `extend self` in modules.'
  StyleGuide: '#module-function'
  Enabled: true

Style/MultilineBlockChain:
  Description: 'Avoid multi-line chains of blocks.'
  StyleGuide: '#single-line-blocks'
  Enabled: true

Style/MultilineIfModifier:
  Description: 'Only use if/unless modifiers on single line statements.'
  StyleGuide: '#no-multiline-if-modifiers'
  Enabled: true

Style/MultilineIfThen:
  Description: 'Do not use then for multi-line if/unless.'
  StyleGuide: '#no-then'
  Enabled: true

Style/MultilineMemoization:
  Description: 'Wrap multiline memoizations in a `begin` and `end` block.'
  Enabled: true

Style/MultilineTernaryOperator:
  Description: >-
                 Avoid multi-line ?: (the ternary operator);
                 use if/unless instead.
  StyleGuide: '#no-multiline-ternary'
  Enabled: true

Style/MultipleComparison:
  Description: >-
                 Avoid comparing a variable with multiple items in a conditional,
                 use Array#include? instead.
  Enabled: true

Style/MutableConstant:
  Description: 'Do not assign mutable objects to constants.'
  Enabled: true

Style/NegatedIf:
  Description: >-
                 Favor unless over if for negative conditions
                 (or control flow or).
  StyleGuide: '#unless-for-negatives'
  Enabled: true

Style/NegatedWhile:
  Description: 'Favor until over while for negative conditions.'
  StyleGuide: '#until-for-negatives'
  Enabled: true

Style/NestedModifier:
  Description: 'Avoid using nested modifiers.'
  StyleGuide: '#no-nested-modifiers'
  Enabled: true

Style/NestedTernaryOperator:
  Description: 'Use one expression per branch in a ternary operator.'
  StyleGuide: '#no-nested-ternary'
  Enabled: true

Style/Next:
  Description: 'Use `next` to skip iteration instead of a condition at the end.'
  StyleGuide: '#no-nested-conditionals'
  Enabled: true

Style/NilComparison:
  Description: 'Prefer x.nil? to x == nil.'
  StyleGuide: '#predicate-methods'
  Enabled: true

Style/NonNilCheck:
  Description: 'Checks for redundant nil checks.'
  StyleGuide: '#no-non-nil-checks'
  Enabled: true

Style/Not:
  Description: 'Use ! instead of not.'
  StyleGuide: '#bang-not-not'
  Enabled: true

Style/NumericLiteralPrefix:
  Description: 'Use smallcase prefixes for numeric literals.'
  StyleGuide: '#numeric-literal-prefixes'
  Enabled: true

Style/NumericLiterals:
  Description: >-
                 Add underscores to large numeric literals to improve their
                 readability.
  StyleGuide: '#underscores-in-numerics'
  Enabled: true

Style/NumericPredicate:
  Description: >-
                 Checks for the use of predicate- or comparison methods for
                 numeric comparisons.
  StyleGuide: '#predicate-methods'
  # This will change to a new method call which isn't guaranteed to be on the
  # object. Switching these methods has to be done with knowledge of the types
  # of the variables which rubocop doesn't have.
  AutoCorrect: false
  Enabled: true

Style/OneLineConditional:
  Description: >-
                 Favor the ternary operator(?:) over
                 if/then/else/end constructs.
  StyleGuide: '#ternary-operator'
  Enabled: true

Style/OptionalArguments:
  Description: >-
                 Checks for optional arguments that do not appear at the end
                 of the argument list
  StyleGuide: '#optional-arguments'
  Enabled: true

Style/OrAssignment:
  Description: 'Recommend usage of double pipe equals (||=) where applicable.'
  StyleGuide: '#double-pipe-for-uninit'
  Enabled: true

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.
  StyleGuide: '#parallel-assignment'
  Enabled: true

Style/ParenthesesAroundCondition:
  Description: >-
                 Don't use parentheses around the condition of an
                 if/unless/while.
  StyleGuide: '#no-parens-around-condition'
  Enabled: true

Style/PercentLiteralDelimiters:
  Description: 'Use `%`-literal delimiters consistently'
  StyleGuide: '#percent-literal-braces'
  Enabled: true

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: '#no-perl-regexp-last-matchers'
  Enabled: true

Style/PreferredHashMethods:
  Description: 'Checks use of `has_key?` and `has_value?` Hash methods.'
  StyleGuide: '#hash-key'
  Enabled: true

Style/Proc:
  Description: 'Use proc instead of Proc.new.'
  StyleGuide: '#proc'
  Enabled: true

Style/RaiseArgs:
  Description: 'Checks the arguments passed to raise/fail.'
  StyleGuide: '#exception-class-messages'
  Enabled: true

Style/RandomWithOffset:
  Description: >-
                 Prefer to use ranges when generating random numbers instead of
                 integers with offsets.
  StyleGuide: '#random-numbers'
  Enabled: true

Style/RedundantBegin:
  Description: "Don't use begin blocks when they are not needed."
  StyleGuide: '#begin-implicit'
  Enabled: true

Style/RedundantConditional:
  Description: "Don't return true/false from a conditional."
  Enabled: true

Style/RedundantException:
  Description: "Checks for an obsolete RuntimeException argument in raise/fail."
  StyleGuide: '#no-explicit-runtimeerror'
  Enabled: true

Style/RedundantFreeze:
  Description: "Checks usages of Object#freeze on immutable objects."
  Enabled: true

Style/RedundantParentheses:
  Description: "Checks for parentheses that seem not to serve any purpose."
  Enabled: true

Style/RedundantReturn:
  Description: "Don't use return where it's not required."
  StyleGuide: '#no-explicit-return'
  Enabled: true

Style/RedundantSelf:
  Description: "Don't use self where it's not needed."
  StyleGuide: '#no-self-unless-required'
  Enabled: true

Style/RegexpLiteral:
  Description: 'Use / or %r around regular expressions.'
  StyleGuide: '#percent-r'
  Enabled: true

Style/RescueModifier:
  Description: 'Avoid using rescue in its modifier form.'
  StyleGuide: '#no-rescue-modifiers'
  Enabled: true

Style/RescueStandardError:
  Description: 'Avoid rescuing without specifying an error class.'
  Enabled: true

Style/SafeNavigation:
  Description: >-
                  This cop transforms usages of a method call safeguarded by
                  a check for the existence of the object to
                  safe navigation (`&.`).
  Enabled: true

Style/SelfAssignment:
  Description: >-
                 Checks for places where self-assignment shorthand should have
                 been used.
  StyleGuide: '#self-assignment'
  Enabled: true

Style/Semicolon:
  Description: "Don't use semicolons to terminate expressions."
  StyleGuide: '#no-semicolon'
  Enabled: true

Style/SignalException:
  Description: 'Checks for proper usage of fail and raise.'
  StyleGuide: '#prefer-raise-over-fail'
  Enabled: true

Style/SingleLineMethods:
  Description: 'Avoid single-line methods.'
  StyleGuide: '#no-single-line-methods'
  Enabled: true

Style/SpecialGlobalVars:
  Description: 'Avoid Perl-style global variables.'
  StyleGuide: '#no-cryptic-perlisms'
  Enabled: true

Style/StabbyLambdaParentheses:
  Description: 'Check for the usage of parentheses around stabby lambda arguments.'
  StyleGuide: '#stabby-lambda-with-args'
  Enabled: true

Style/StderrPuts:
  Description: 'Use `warn` instead of `$stderr.puts`.'
  StyleGuide: '#warn'
  Enabled: true

Style/StringLiterals:
  Description: 'Checks if uses of quotes match the configured preference.'
  StyleGuide: '#consistent-string-literals'
  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: '#no-extend-struct-new'
  Enabled: true

Style/SymbolArray:
  Description: 'Use %i or %I for arrays of symbols.'
  StyleGuide: '#percent-i'
  Enabled: true

Style/SymbolLiteral:
  Description: 'Use plain symbols instead of string symbols when possible.'
  Enabled: true

Style/SymbolProc:
  Description: 'Use symbols as procs instead of blocks when possible.'
  Enabled: true

Style/TernaryParentheses:
  Description: 'Checks for use of parentheses around ternary conditions.'
  Enabled: true

# Style/TrailingBodyOnClass:
#   Description: 'Class body goes below class statement.'
#   Enabled: true

Style/TrailingBodyOnMethodDefinition:
  Description: 'Method body goes below definition.'
  Enabled: true

# Style/TrailingBodyOnModule:
#   Description: 'Module body goes below module statement.'
#   Enabled: true

Style/TrailingCommaInArguments:
  Description: 'Checks for trailing comma in argument lists.'
  StyleGuide: '#no-trailing-params-comma'
  Enabled: true

# Style/TrailingCommaInArrayLiteral:
#   Description: 'Checks for trailing comma in array literals.'
#   StyleGuide: '#no-trailing-array-commas'
#   Enabled: true

# Style/TrailingCommaInHashLiteral:
#   Description: 'Checks for trailing comma in hash literals.'
#   Enabled: true

Style/TrailingMethodEndStatement:
  Description: 'Checks for trailing end statement on line of method body.'
  Enabled: true

Style/TrailingUnderscoreVariable:
  Description: >-
                 Checks for the usage of unneeded trailing underscores at the
                 end of parallel variable assignment.
  AllowNamedUnderscoreVariables: true
  Enabled: true

Style/TrivialAccessors:
  Description: 'Prefer attr_* methods to trivial readers/writers.'
  StyleGuide: '#attr_family'
  Enabled: true

Style/UnlessElse:
  Description: >-
                 Do not use unless with else. Rewrite these with the positive
                 case first.
  StyleGuide: '#no-else-with-unless'
  Enabled: true

Style/RedundantCapitalW:
  Description: 'Checks for %W when interpolation is not needed.'
  Enabled: true

Style/RedundantInterpolation:
  Description: 'Checks for strings that are just an interpolated expression.'
  Enabled: true

Style/RedundantPercentQ:
  Description: 'Checks for %q/%Q when single quotes or double quotes would do.'
  StyleGuide: '#percent-q'
  Enabled: true

Style/VariableInterpolation:
  Description: >-
                 Don't interpolate global, instance and class variables
                 directly in strings.
  StyleGuide: '#curlies-interpolate'
  Enabled: true

Style/WhenThen:
  Description: 'Use when x then ... for one-line cases.'
  StyleGuide: '#one-line-cases'
  Enabled: true

Style/WhileUntilDo:
  Description: 'Checks for redundant do after while or until.'
  StyleGuide: '#no-multiline-while-do'
  Enabled: true

Style/WhileUntilModifier:
  Description: >-
                 Favor modifier while/until usage when you have a
                 single-line body.
  StyleGuide: '#while-as-a-modifier'
  Enabled: true

Style/WordArray:
  Description: 'Use %w or %W for arrays of words.'
  StyleGuide: '#percent-w'
  Enabled: true

Style/YodaCondition:
  Description: 'Do not use literals as the first operand of a comparison.'
  Reference: 'https://en.wikipedia.org/wiki/Yoda_conditions'
  Enabled: true

Style/ZeroLengthPredicate:
  Description: 'Use #empty? when testing for objects of length 0.'
  Enabled: true

Gemspec/DeprecatedAttributeAssignment: # new in 1.30
  Enabled: true
Gemspec/DevelopmentDependencies: # new in 1.44
  Enabled: true
Gemspec/RequireMFA: # new in 1.23
  Enabled: true
Layout/LineContinuationLeadingSpace: # new in 1.31
  Enabled: true
Layout/LineContinuationSpacing: # new in 1.31
  Enabled: true
Layout/LineEndStringConcatenationIndentation: # new in 1.18
  Enabled: true
Layout/SpaceBeforeBrackets: # new in 1.7
  Enabled: true
Lint/AmbiguousAssignment: # new in 1.7
  Enabled: true
Lint/AmbiguousOperatorPrecedence: # new in 1.21
  Enabled: true
Lint/AmbiguousRange: # new in 1.19
  Enabled: true
Lint/ConstantOverwrittenInRescue: # new in 1.31
  Enabled: true
Lint/DeprecatedConstants: # new in 1.8
  Enabled: true
Lint/DuplicateBranch: # new in 1.3
  Enabled: true
Lint/DuplicateMagicComment: # new in 1.37
  Enabled: true
Lint/DuplicateMatchPattern: # new in 1.50
  Enabled: true
Lint/DuplicateRegexpCharacterClassElement: # new in 1.1
  Enabled: true
Lint/EmptyBlock: # new in 1.1
  Enabled: true
Lint/EmptyClass: # new in 1.3
  Enabled: true
Lint/EmptyInPattern: # new in 1.16
  Enabled: true
Lint/IncompatibleIoSelectWithFiberScheduler: # new in 1.21
  Enabled: true
Lint/LambdaWithoutLiteralBlock: # new in 1.8
  Enabled: true
Lint/NoReturnInBeginEndBlocks: # new in 1.2
  Enabled: true
Lint/NonAtomicFileOperation: # new in 1.31
  Enabled: true
Lint/NumberedParameterAssignment: # new in 1.9
  Enabled: true
Lint/OrAssignmentToConstant: # new in 1.9
  Enabled: true
Lint/RedundantDirGlobSort: # new in 1.8
  Enabled: true
Lint/RefinementImportMethods: # new in 1.27
  Enabled: true
Lint/RequireRangeParentheses: # new in 1.32
  Enabled: true
Lint/RequireRelativeSelfPath: # new in 1.22
  Enabled: true
Lint/SymbolConversion: # new in 1.9
  Enabled: true
Lint/ToEnumArguments: # new in 1.1
  Enabled: true
Lint/TripleQuotes: # new in 1.9
  Enabled: true
Lint/UnexpectedBlockArity: # new in 1.5
  Enabled: true
Lint/UnmodifiedReduceAccumulator: # new in 1.1
  Enabled: true
Lint/UselessRescue: # new in 1.43
  Enabled: true
Lint/UselessRuby2Keywords: # new in 1.23
  Enabled: true
Metrics/CollectionLiteralLength: # new in 1.47
  Enabled: true
Naming/BlockForwarding: # new in 1.24
  Enabled: true
Security/CompoundHash: # new in 1.28
  Enabled: true
Security/IoMethods: # new in 1.22
  Enabled: true
Style/ArgumentsForwarding: # new in 1.1
  Enabled: true
Style/ArrayIntersect: # new in 1.40
  Enabled: true
Style/CollectionCompact: # new in 1.2
  Enabled: true
Style/ComparableClamp: # new in 1.44
  Enabled: true
Style/DataInheritance: # new in 1.49
  Enabled: true
Style/DirEmpty: # new in 1.48
  Enabled: true
Style/DocumentDynamicEvalDefinition: # new in 1.1
  Enabled: true
Style/EmptyHeredoc: # new in 1.32
  Enabled: true
Style/EndlessMethod: # new in 1.8
  Enabled: true
Style/EnvHome: # new in 1.29
  Enabled: true
Style/ExactRegexpMatch: # new in 1.51
  Enabled: true
Style/FetchEnvVar: # new in 1.28
  Enabled: true
Style/FileEmpty: # new in 1.48
  Enabled: true
Style/FileRead: # new in 1.24
  Enabled: true
Style/FileWrite: # new in 1.24
  Enabled: true
Style/HashConversion: # new in 1.10
  Enabled: true
Style/HashExcept: # new in 1.7
  Enabled: true
Style/IfWithBooleanLiteralBranches: # new in 1.9
  Enabled: true
Style/InPatternThen: # new in 1.16
  Enabled: true
Style/MagicCommentFormat: # new in 1.35
  Enabled: true
Style/MapCompactWithConditionalBlock: # new in 1.30
  Enabled: true
Style/MapToHash: # new in 1.24
  Enabled: true
Style/MapToSet: # new in 1.42
  Enabled: true
Style/MinMaxComparison: # new in 1.42
  Enabled: true
Style/MultilineInPatternThen: # new in 1.16
  Enabled: true
Style/NegatedIfElseCondition: # new in 1.2
  Enabled: true
Style/NestedFileDirname: # new in 1.26
  Enabled: true
Style/NilLambda: # new in 1.3
  Enabled: true
Style/NumberedParameters: # new in 1.22
  Enabled: true
Style/NumberedParametersLimit: # new in 1.22
  Enabled: true
Style/ObjectThen: # new in 1.28
  Enabled: true
Style/OpenStructUse: # new in 1.23
  Enabled: true
Style/OperatorMethodCall: # new in 1.37
  Enabled: true
Style/QuotedSymbols: # new in 1.16
  Enabled: true
Style/RedundantArgument: # new in 1.4
  Enabled: true
Style/RedundantConstantBase: # new in 1.40
  Enabled: true
Style/RedundantDoubleSplatHashBraces: # new in 1.41
  Enabled: true
Style/RedundantEach: # new in 1.38
  Enabled: true
Style/RedundantHeredocDelimiterQuotes: # new in 1.45
  Enabled: true
Style/RedundantInitialize: # new in 1.27
  Enabled: true
Style/RedundantLineContinuation: # new in 1.49
  Enabled: true
Style/RedundantSelfAssignmentBranch: # new in 1.19
  Enabled: true
Style/RedundantStringEscape: # new in 1.37
  Enabled: true
Style/SelectByRegexp: # new in 1.22
  Enabled: true
Style/StringChars: # new in 1.12
  Enabled: true
Style/SwapValues: # new in 1.1
  Enabled: true
Performance/AncestorsInclude: # new in 1.7
  Enabled: true
Performance/BigDecimalWithNumericArgument: # new in 1.7
  Enabled: true
Performance/BlockGivenWithExplicitBlock: # new in 1.9
  Enabled: true
Performance/CollectionLiteralInLoop: # new in 1.8
  Enabled: true
Performance/ConcurrentMonotonicTime: # new in 1.12
  Enabled: true
Performance/ConstantRegexp: # new in 1.9
  Enabled: true
Performance/MapCompact: # new in 1.11
  Enabled: true
Performance/MethodObjectAsBlock: # new in 1.9
  Enabled: true
Performance/RedundantEqualityComparisonBlock: # new in 1.10
  Enabled: true
Performance/RedundantSortBlock: # new in 1.7
  Enabled: true
Performance/RedundantSplitRegexpArgument: # new in 1.10
  Enabled: true
Performance/RedundantStringChars: # new in 1.7
  Enabled: true
Performance/ReverseFirst: # new in 1.7
  Enabled: true
Performance/SortReverse: # new in 1.7
  Enabled: true
Performance/Squeeze: # new in 1.7
  Enabled: true
Performance/StringIdentifierArgument: # new in 1.13
  Enabled: true
Performance/StringInclude: # new in 1.7
  Enabled: true
Performance/Sum: # new in 1.8
  Enabled: true
RSpec/BeEmpty: # new in 2.20
  Enabled: true
RSpec/BeEq: # new in 2.9.0
  Enabled: true
RSpec/BeNil: # new in 2.9.0
  Enabled: true
RSpec/ChangeByZero: # new in 2.11
  Enabled: true
RSpec/ContainExactly: # new in 2.19
  Enabled: true
RSpec/DuplicatedMetadata: # new in 2.16
  Enabled: true
RSpec/ExcessiveDocstringSpacing: # new in 2.5
  Enabled: true
RSpec/IdenticalEqualityAssertion: # new in 2.4
  Enabled: true
RSpec/IndexedLet: # new in 2.20
  Enabled: true
RSpec/MatchArray: # new in 2.19
  Enabled: true
RSpec/NoExpectationExample: # new in 2.13
  Enabled: true
RSpec/PendingWithoutReason: # new in 2.16
  Enabled: true
RSpec/RedundantAround: # new in 2.19
  Enabled: true
RSpec/SkipBlockInsideExample: # new in 2.19
  Enabled: true
RSpec/SortMetadata: # new in 2.14
  Enabled: true
RSpec/SubjectDeclaration: # new in 2.5
  Enabled: true
RSpec/VerifiedDoubleReference: # new in 2.10.0
  Enabled: true