mtchavez/circleci

View on GitHub
.rubocop.yml

Summary

Maintainability
Test Coverage
require:
  - rubocop-performance
  - rubocop-rspec

AllCops:
  Exclude:
    - 'Gemfile'
    - '**/Gemfile'
    - 'Capfile'
    - '**/Capfile'
    - 'vendor/**/*'
    - 'env/vendor/**/*'
    - 'cookbooks/**/**'
  TargetRubyVersion: 2.6
  NewCops: enable

RSpec/FilePath:
  Exclude:
    - 'spec/**/**'

RSpec/NestedGroups:
  Max: 5

Style/Documentation:
  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/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: https://github.com/bbatsov/ruby-style-guide#safe-assignment-in-condition
  Enabled: true
  AllowSafeAssignment: 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

# Supports --auto-correct
Lint/Debugger:
  Description: Check for debugger calls.
  Enabled: true

# Supports --auto-correct
Lint/DeprecatedClassMethods:
  Description: Check for deprecated class method calls.
  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

Lint/EmptyInterpolation:
  Description: Checks for empty string interpolation.
  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

Security/Eval:
  Description: The use of eval represents a serious security risk.
  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: https://github.com/bbatsov/ruby-style-guide#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

# Supports --auto-correct
Lint/LiteralInInterpolation:
  Description: Avoid interpolating literals in strings
  Enabled: true
  AutoCorrect: false

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/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/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/RandOne:
  Description: Checks for `rand(1)` calls. Such calls always return `0` and most likely
    a mistake.
  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

# Supports --auto-correct
Lint/RedundantStringCoercion:
  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/UnreachableCode:
  Description: Unreachable code.
  Enabled: true

# Supports --auto-correct
Lint/UnusedBlockArgument:
  Description: Checks for unused block arguments.
  StyleGuide: https://github.com/bbatsov/ruby-style-guide#underscore-unused-vars
  Enabled: true
  IgnoreEmptyBlocks: true

# Supports --auto-correct
Lint/UnusedMethodArgument:
  Description: Checks for unused method arguments.
  StyleGuide: https://github.com/bbatsov/ruby-style-guide#underscore-unused-vars
  Enabled: true
  AllowUnusedKeywordArguments: false
  IgnoreEmptyMethods: 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/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

# Type 'Metrics' (9):
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/BlockLength:
  CountComments: false
  Max: 25
  Exclude:
    - 'Rakefile'
    - '**/*.rake'
    - 'spec/**/*.rb'
    - '*.gemspec'

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

Metrics/ClassLength:
  Description: Avoid classes longer than 100 lines of code.
  Enabled: true
  CountComments: false
  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
  Max: 6

Layout/LineLength:
  Description: Limit lines to 80 characters.
  StyleGuide: https://github.com/bbatsov/ruby-style-guide#80-character-limits
  Enabled: true
  Max: 200
  AllowHeredoc: true
  AllowURI: true
  URISchemes:
  - http
  - https

Metrics/MethodLength:
  Description: Avoid methods longer than 10 lines of code.
  StyleGuide: https://github.com/bbatsov/ruby-style-guide#short-methods
  Enabled: true
  CountComments: false
  Max: 30

Metrics/ModuleLength:
  Description: Avoid modules longer than 100 lines of code.
  Enabled: true
  CountComments: false
  Max: 300

Metrics/ParameterLists:
  Description: Avoid parameter lists longer than three or four parameters.
  StyleGuide: https://github.com/bbatsov/ruby-style-guide#too-many-params
  Enabled: true
  Max: 6
  CountKeywordArgs: true

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

# Type 'Performance' (21):
# Supports --auto-correct
Performance/CaseWhenSplat:
  Description: Place `when` conditions that use splat at the end of the list of `when`
    branches.
  Enabled: true

# Supports --auto-correct
Performance/Casecmp:
  Description: Use `casecmp` rather than `downcase ==`.
  Reference: https://github.com/JuanitoFatas/fast-ruby#stringcasecmp-vs-stringdowncase---code
  Enabled: true

# Supports --auto-correct
Performance/Count:
  Description: Use `count` instead of `select...size`, `reject...size`, `select...count`,
    `reject...count`, `select...length`, and `reject...length`.
  Enabled: true

# Supports --auto-correct
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/DoubleStartEndWith:
  Description: Use `str.{start,end}_with?(x, ..., y, ...)` instead of `str.{start,end}_with?(x,
    ...) || str.{start,end}_with?(y, ...)`.
  Enabled: true

# Supports --auto-correct
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
  Enabled: true

Performance/FixedSize:
  Description: Do not compute the size of statically sized objects except in constants
  Enabled: true

# Supports --auto-correct
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

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

# Supports --auto-correct
Performance/RedundantBlockCall:
  Description: Use `yield` instead of `block.call`.
  Reference: https://github.com/JuanitoFatas/fast-ruby#proccall-vs-yield-code
  Enabled: true

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

# Supports --auto-correct
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

# Supports --auto-correct
Style/RedundantSortBy:
  Description: Use `sort` instead of `sort_by { |x| x }`.
  Enabled: true

# Supports --auto-correct
Performance/ReverseEach:
  Description: Use `reverse_each` instead of `reverse.each`.
  Reference: https://github.com/JuanitoFatas/fast-ruby#enumerablereverseeach-vs-enumerablereverse_each-code
  Enabled: true

# Supports --auto-correct
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

# Supports --auto-correct
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

# Supports --auto-correct
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
  Enabled: true

# Supports --auto-correct
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.
  Enabled: true

# Type 'Style' (184):
# Supports --auto-correct
Layout/AccessModifierIndentation:
  Description: Check indentation of private/protected visibility modifiers.
  StyleGuide: https://github.com/bbatsov/ruby-style-guide#indent-public-private-protected
  Enabled: true
  EnforcedStyle: indent
  SupportedStyles:
  - outdent
  - indent
  IndentationWidth:

# Supports --auto-correct
Layout/BlockAlignment:
  Description: Align block ends correctly.
  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

# Supports --auto-correct
Layout/DefEndAlignment:
  Description: Align ends corresponding to defs correctly.
  Enabled: true
  EnforcedStyleAlignWith: start_of_line
  AutoCorrect: false

# Supports --auto-correct
Layout/EndAlignment:
  Description: Align ends correctly.
  Enabled: true
  EnforcedStyleAlignWith: keyword
  AutoCorrect: false

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

# Supports --auto-correct
Style/Alias:
  Description: Use alias_method instead of alias.
  StyleGuide: https://github.com/bbatsov/ruby-style-guide#alias-method
  Enabled: true
  EnforcedStyle: prefer_alias
  SupportedStyles:
  - prefer_alias
  - prefer_alias_method

# Supports --auto-correct
Layout/ArrayAlignment:
  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

# Supports --auto-correct
Layout/HashAlignment:
  Description: Align the elements of a hash literal if they span more than one line.
  Enabled: true
  EnforcedHashRocketStyle: key
  EnforcedColonStyle: key
  EnforcedLastArgumentHashStyle: always_inspect
  SupportedLastArgumentHashStyles:
  - always_inspect
  - always_ignore
  - ignore_implicit
  - ignore_explicit

# Supports --auto-correct
Layout/ParameterAlignment:
  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
  EnforcedStyle: with_first_parameter
  SupportedStyles:
  - with_first_parameter
  - with_fixed_indentation

# Supports --auto-correct
Style/AndOr:
  Description: Use &&/|| instead of and/or.
  StyleGuide: https://github.com/bbatsov/ruby-style-guide#no-and-or-or
  Enabled: true
  EnforcedStyle: always
  SupportedStyles:
  - always
  - conditionals

# Supports --auto-correct
Style/ArrayJoin:
  Description: Use Array#join instead of Array#*.
  StyleGuide: https://github.com/bbatsov/ruby-style-guide#array-join
  Enabled: true

Style/AsciiComments:
  Description: Use only ascii symbols in comments.
  StyleGuide: https://github.com/bbatsov/ruby-style-guide#english-comments
  Enabled: true

Naming/AsciiIdentifiers:
  Description: Use only ascii symbols in identifiers.
  StyleGuide: https://github.com/bbatsov/ruby-style-guide#english-identifiers
  Enabled: true

# Supports --auto-correct
Style/Attr:
  Description: Checks for uses of Module#attr.
  StyleGuide: https://github.com/bbatsov/ruby-style-guide#attr
  Enabled: true

Style/AutoResourceCleanup:
  Description: Suggests the usage of an auto resource cleanup version of a method (if
    available).
  Enabled: false

# Supports --auto-correct
Style/BarePercentLiterals:
  Description: Checks if usage of %() or %Q() matches configuration.
  StyleGuide: https://github.com/bbatsov/ruby-style-guide#percent-q-shorthand
  Enabled: true
  EnforcedStyle: bare_percent
  SupportedStyles:
  - percent_q
  - bare_percent

Style/BeginBlock:
  Description: Avoid the use of BEGIN blocks.
  StyleGuide: https://github.com/bbatsov/ruby-style-guide#no-BEGIN-blocks
  Enabled: true

# Supports --auto-correct
Style/BlockComments:
  Description: Do not use block comments.
  StyleGuide: https://github.com/bbatsov/ruby-style-guide#no-block-comments
  Enabled: true

# Supports --auto-correct
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
  EnforcedStyle: line_count_based
  SupportedStyles:
  - line_count_based
  - semantic
  - braces_for_chaining
  ProceduralMethods:
  - benchmark
  - bm
  - bmbm
  - create
  - each_with_object
  - measure
  - new
  - realtime
  - tap
  - with_object
  FunctionalMethods:
  - let
  - let!
  - subject
  - watch
  IgnoredMethods:
  - lambda
  - proc
  - it

# Supports --auto-correct
Layout/BlockEndNewline:
  Description: Put end statement of multiline block on its own line.
  Enabled: true

Style/CaseEquality:
  Description: Avoid explicit use of the case equality operator(===).
  StyleGuide: https://github.com/bbatsov/ruby-style-guide#no-case-equality
  Enabled: true

# Supports --auto-correct
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
  EnforcedStyle: case
  SupportedStyles:
  - case
  - end
  IndentOneStep: false
  IndentationWidth:

# Supports --auto-correct
Style/CharacterLiteral:
  Description: Checks for uses of character literals.
  StyleGuide: https://github.com/bbatsov/ruby-style-guide#no-character-literals
  Enabled: true

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: true
  EnforcedStyle: nested
  SupportedStyles:
  - nested
  - compact

# Supports --auto-correct
Style/ClassCheck:
  Description: Enforces consistent use of `Object#is_a?` or `Object#kind_of?`.
  Enabled: true
  EnforcedStyle: is_a?
  SupportedStyles:
  - is_a?
  - kind_of?

# Supports --auto-correct
Style/ClassMethods:
  Description: Use self when defining module/class methods.
  StyleGuide: https://github.com/bbatsov/ruby-style-guide#def-self-class-methods
  Enabled: true

Style/ClassVars:
  Description: Avoid the use of class variables.
  StyleGuide: https://github.com/bbatsov/ruby-style-guide#no-class-vars
  Enabled: true

# Supports --auto-correct
Layout/ClosingParenthesisIndentation:
  Description: Checks the indentation of hanging closing parentheses.
  Enabled: true

# Supports --auto-correct
Style/CollectionMethods:
  Description: Preferred collection methods.
  StyleGuide: https://github.com/bbatsov/ruby-style-guide#map-find-select-reduce-size
  Enabled: false
  PreferredMethods:
    collect: map
    collect!: map!
    inject: reduce
    detect: find
    find_all: select

# Supports --auto-correct
Style/ColonMethodCall:
  Description: 'Do not use :: for method call.'
  StyleGuide: https://github.com/bbatsov/ruby-style-guide#double-colons
  Enabled: true

# Supports --auto-correct
Style/CommandLiteral:
  Description: Use `` or %x around command literals.
  StyleGuide: https://github.com/bbatsov/ruby-style-guide#percent-x
  Enabled: true
  EnforcedStyle: backticks
  SupportedStyles:
  - backticks
  - percent_x
  - mixed
  AllowInnerBackticks: false

# Supports --auto-correct
Style/CommentAnnotation:
  Description: Checks formatting of special comments (TODO, FIXME, OPTIMIZE, HACK, REVIEW).
  StyleGuide: https://github.com/bbatsov/ruby-style-guide#annotate-keywords
  Enabled: true
  Keywords:
  - TODO
  - FIXME
  - OPTIMIZE
  - HACK
  - REVIEW

# Supports --auto-correct
Layout/CommentIndentation:
  Description: Indentation of comments.
  Enabled: true

# Supports --auto-correct
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
  SingleLineConditionsOnly: true

Naming/ConstantName:
  Description: Constants should use SCREAMING_SNAKE_CASE.
  StyleGuide: https://github.com/bbatsov/ruby-style-guide#screaming-snake-case
  Enabled: true

# Supports --auto-correct
Style/Copyright:
  Description: Include a copyright notice in each file before any code.
  Enabled: false
  Notice: "^Copyright (\\(c\\) )?2[0-9]{3} .+"
  AutocorrectNotice: ''

# Supports --auto-correct
Style/DefWithParentheses:
  Description: Use def with parentheses when there are arguments.
  StyleGuide: https://github.com/bbatsov/ruby-style-guide#method-parens
  Enabled: true

# Supports --auto-correct
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
  EnforcedStyle: leading
  SupportedStyles:
  - leading
  - trailing

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

# Supports --auto-correct
Layout/ElseAlignment:
  Description: Align elses and elsifs correctly.
  Enabled: true

# Supports --auto-correct
Style/EmptyElse:
  Description: Avoid empty else-clauses.
  Enabled: true
  EnforcedStyle: both
  SupportedStyles:
  - empty
  - nil
  - both

# Supports --auto-correct
Layout/EmptyLineBetweenDefs:
  Description: Use empty lines between defs.
  StyleGuide: https://github.com/bbatsov/ruby-style-guide#empty-lines-between-methods
  Enabled: true
  AllowAdjacentOneLineDefs: false

# Supports --auto-correct
Layout/EmptyLines:
  Description: Don't use several empty lines in a row.
  Enabled: true

# Supports --auto-correct
Layout/EmptyLinesAroundAccessModifier:
  Description: Keep blank lines around access modifiers.
  Enabled: true

# Supports --auto-correct
Layout/EmptyLinesAroundBlockBody:
  Description: Keeps track of empty lines around block bodies.
  Enabled: true
  EnforcedStyle: no_empty_lines
  SupportedStyles:
  - empty_lines
  - no_empty_lines

# Supports --auto-correct
Layout/EmptyLinesAroundClassBody:
  Description: Keeps track of empty lines around class bodies.
  Enabled: true
  EnforcedStyle: no_empty_lines
  SupportedStyles:
  - empty_lines
  - no_empty_lines

# Supports --auto-correct
Layout/EmptyLinesAroundMethodBody:
  Description: Keeps track of empty lines around method bodies.
  Enabled: true

# Supports --auto-correct
Layout/EmptyLinesAroundModuleBody:
  Description: Keeps track of empty lines around module bodies.
  Enabled: true
  EnforcedStyle: no_empty_lines
  SupportedStyles:
  - empty_lines
  - no_empty_lines

# Supports --auto-correct
Style/EmptyLiteral:
  Description: Prefer literals to Array.new/Hash.new/String.new.
  StyleGuide: https://github.com/bbatsov/ruby-style-guide#literal-array-hash
  Enabled: true

# Supports --auto-correct
Style/Encoding:
  Description: Use UTF-8 as the source file encoding.
  StyleGuide: https://github.com/bbatsov/ruby-style-guide#utf-8
  Enabled: false

Style/EndBlock:
  Description: Avoid the use of END blocks.
  StyleGuide: https://github.com/bbatsov/ruby-style-guide#no-END-blocks
  Enabled: true

Layout/EndOfLine:
  Description: Use Unix-style line endings.
  StyleGuide: https://github.com/bbatsov/ruby-style-guide#crlf
  Enabled: true

# Supports --auto-correct
Style/EvenOdd:
  Description: Favor the use of Fixnum#even? && Fixnum#odd?
  StyleGuide: https://github.com/bbatsov/ruby-style-guide#predicate-methods
  Enabled: true

# Supports --auto-correct
Layout/ExtraSpacing:
  Description: Do not use unnecessary spacing.
  Enabled: true
  AllowForAlignment: true
  ForceEqualSignAlignment: false

Naming/FileName:
  Description: Use snake_case for source file names.
  StyleGuide: https://github.com/bbatsov/ruby-style-guide#snake-case-files
  Enabled: true
  Exclude: []
  ExpectMatchingDefinition: false
  Regex:
  IgnoreExecutableScripts: true

# Supports --auto-correct
Layout/FirstArrayElementLineBreak:
  Description: Checks for a line break before the first element in a multi-line array.
  Enabled: false

# Supports --auto-correct
Layout/FirstHashElementLineBreak:
  Description: Checks for a line break before the first element in a multi-line hash.
  Enabled: false

# Supports --auto-correct
Layout/FirstMethodArgumentLineBreak:
  Description: Checks for a line break before the first argument in a multi-line method
    call.
  Enabled: false

# Supports --auto-correct
Layout/FirstMethodParameterLineBreak:
  Description: Checks for a line break before the first parameter in a multi-line method
    parameter definition.
  Enabled: false

# Supports --auto-correct
Layout/FirstParameterIndentation:
  Description: Checks the indentation of the first parameter in a method call.
  Enabled: true
  EnforcedStyle: consistent
  SupportedStyles:
  - consistent
  IndentationWidth:

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
  EnforcedStyle: each
  SupportedStyles:
  - for
  - each

Style/FormatString:
  Description: Enforce the use of Kernel#sprintf, Kernel#format or String#%.
  StyleGuide: https://github.com/bbatsov/ruby-style-guide#sprintf
  Enabled: true
  EnforcedStyle: format
  SupportedStyles:
  - format
  - sprintf
  - percent

# Supports --auto-correct
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
  EnforcedStyle: always
  SupportedStyles:
  - always

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
  AllowedVariables: []

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
  MinBodyLength: 1

# Supports --auto-correct
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
  EnforcedStyle: ruby19
  SupportedStyles:
  - ruby19
  - ruby19_no_mixed_keys
  - hash_rockets
  UseHashRocketsWithSymbolValues: false

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

# Supports --auto-correct
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

# Supports --auto-correct
Layout/FirstArrayElementIndentation:
  Description: Checks the indentation of the first element in an array literal.
  Enabled: true
  EnforcedStyle: special_inside_parentheses
  SupportedStyles:
  - special_inside_parentheses
  - consistent
  - align_brackets
  IndentationWidth:

# Supports --auto-correct
Layout/AssignmentIndentation:
  Description: Checks the indentation of the first line of the right-hand-side of a
    multi-line assignment.
  Enabled: true
  IndentationWidth:

# Supports --auto-correct
Layout/FirstHashElementIndentation:
  Description: Checks the indentation of the first key in a hash literal.
  Enabled: true
  EnforcedStyle: special_inside_parentheses
  SupportedStyles:
  - special_inside_parentheses
  - consistent
  - align_braces
  IndentationWidth:

# Supports --auto-correct
Layout/IndentationConsistency:
  Description: Keep indentation straight.
  Enabled: true
  EnforcedStyle: normal
  SupportedStyles:
  - normal
  - rails

# Supports --auto-correct
Layout/IndentationWidth:
  Description: Use 2 spaces for indentation.
  StyleGuide: https://github.com/bbatsov/ruby-style-guide#spaces-indentation
  Enabled: true
  Width: 2

# Supports --auto-correct
Style/InfiniteLoop:
  Description: Use Kernel#loop for infinite loops.
  StyleGuide: https://github.com/bbatsov/ruby-style-guide#infinite-loop
  Enabled: true

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

Style/InlineComment:
  Description: Avoid inline comments.
  Enabled: false

# Supports --auto-correct
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

# Supports --auto-correct
Style/LambdaCall:
  Description: Use lambda.call(...) instead of lambda.(...).
  StyleGuide: https://github.com/bbatsov/ruby-style-guide#proc-call
  Enabled: true
  EnforcedStyle: call
  SupportedStyles:
  - call
  - braces

# Supports --auto-correct
Layout/LeadingCommentSpace:
  Description: Comments should start with a space.
  StyleGuide: https://github.com/bbatsov/ruby-style-guide#hash-space
  Enabled: true

# Supports --auto-correct
Style/LineEndConcatenation:
  Description: Use \ instead of + or << to concatenate two string literals at line end.
  Enabled: true

# Supports --auto-correct
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/MethodCalledOnDoEndBlock:
  Description: Avoid chaining a method call on a do...end block.
  StyleGuide: https://github.com/bbatsov/ruby-style-guide#single-line-blocks
  Enabled: false

# Supports --auto-correct
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
  EnforcedStyle: require_parentheses
  SupportedStyles:
  - require_parentheses
  - require_no_parentheses
  - require_no_parentheses_except_multiline

Naming/MethodName:
  Description: Use the configured style when naming methods.
  StyleGuide: https://github.com/bbatsov/ruby-style-guide#snake-case-symbols-methods-vars
  Enabled: true
  EnforcedStyle: snake_case
  SupportedStyles:
  - snake_case
  - camelCase

Style/MissingElse:
  Description: Require if/case expressions to have an else branches. If enabled, it
    is recommended that Style/UnlessElse and Style/EmptyElse be enabled. This will conflict
    with Style/EmptyElse if Style/EmptyElse is configured to style "both"
  Enabled: false
  EnforcedStyle: both
  SupportedStyles:
  - if
  - case
  - both

Style/ModuleFunction:
  Description: Checks for usage of `extend self` in modules.
  StyleGuide: https://github.com/bbatsov/ruby-style-guide#module-function
  Enabled: true

# Supports --auto-correct
Layout/MultilineArrayBraceLayout:
  Description: Checks that the closing brace in an array literal is symmetrical with
    respect to the opening brace and the array elements.
  Enabled: false

# Supports --auto-correct
Layout/MultilineAssignmentLayout:
  Description: Check for a newline after the assignment operator in multi-line assignments.
  StyleGuide: https://github.com/bbatsov/ruby-style-guide#indent-conditional-assignment
  Enabled: false
  SupportedTypes:
  - block
  - case
  - class
  - if
  - kwbegin
  - module
  EnforcedStyle: new_line
  SupportedStyles:
  - same_line
  - new_line

Style/MultilineBlockChain:
  Description: Avoid multi-line chains of blocks.
  StyleGuide: https://github.com/bbatsov/ruby-style-guide#single-line-blocks
  Enabled: true

# Supports --auto-correct
Layout/MultilineBlockLayout:
  Description: Ensures newlines after multiline block do statements.
  Enabled: true

# Supports --auto-correct
Style/MultilineIfThen:
  Description: Do not use then for multi-line if/unless.
  StyleGuide: https://github.com/bbatsov/ruby-style-guide#no-then
  Enabled: true

# Supports --auto-correct
Layout/MultilineMethodCallIndentation:
  Description: Checks indentation of method calls with the dot operator that span more
    than one line.
  Enabled: true
  EnforcedStyle: aligned
  SupportedStyles:
  - aligned
  - indented
  IndentationWidth:

# Supports --auto-correct
Layout/MultilineOperationIndentation:
  Description: Checks indentation of binary operations that span more than one line.
  Enabled: true
  EnforcedStyle: aligned
  SupportedStyles:
  - aligned
  - indented
  IndentationWidth:

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

# Supports --auto-correct
Style/MutableConstant:
  Description: Do not assign mutable objects to constants.
  Enabled: true

# Supports --auto-correct
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

# Supports --auto-correct
Style/NegatedWhile:
  Description: Favor until over while for negative conditions.
  StyleGuide: https://github.com/bbatsov/ruby-style-guide#until-for-negatives
  Enabled: true

# Supports --auto-correct
Style/NestedModifier:
  Description: Avoid using nested modifiers.
  StyleGuide: https://github.com/bbatsov/ruby-style-guide#no-nested-modifiers
  Enabled: true

Style/NestedParenthesizedCalls:
  Description: Parenthesize method calls which are nested inside the argument list of
    another parenthesized method call.
  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

# Supports --auto-correct
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
  EnforcedStyle: skip_modifier_ifs
  MinBodyLength: 3
  SupportedStyles:
  - skip_modifier_ifs
  - always

# Supports --auto-correct
Style/NilComparison:
  Description: Prefer x.nil? to x == nil.
  StyleGuide: https://github.com/bbatsov/ruby-style-guide#predicate-methods
  Enabled: true

# Supports --auto-correct
Style/NonNilCheck:
  Description: Checks for redundant nil checks.
  StyleGuide: https://github.com/bbatsov/ruby-style-guide#no-non-nil-checks
  Enabled: true
  IncludeSemanticChanges: false

# Supports --auto-correct
Style/Not:
  Description: Use ! instead of not.
  StyleGuide: https://github.com/bbatsov/ruby-style-guide#bang-not-not
  Enabled: true

# Supports --auto-correct
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
  MinDigits: 7

Style/OneLineConditional:
  Description: Favor the ternary operator(?:) over if/then/else/end constructs.
  StyleGuide: https://github.com/bbatsov/ruby-style-guide#ternary-operator
  Enabled: true

Style/OptionHash:
  Description: Don't use option hashes when you can use keyword arguments.
  Enabled: false
  SuspiciousParamNames:
  - options
  - opts
  - args
  - params
  - parameters

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

# Supports --auto-correct
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: https://github.com/bbatsov/ruby-style-guide#parallel-assignment
  Enabled: true

# Supports --auto-correct
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
  AllowSafeAssignment: true

# Supports --auto-correct
Style/PercentLiteralDelimiters:
  Description: Use `%`-literal delimiters consistently
  StyleGuide: https://github.com/bbatsov/ruby-style-guide#percent-literal-braces
  Enabled: true
  PreferredDelimiters:
    "%": "[]"
    "%i": "[]"
    "%q": "[]"
    "%Q": "[]"
    "%r": "{}"
    "%s": "[]"
    "%w": "[]"
    "%W": "[]"
    "%x": "[]"

# Supports --auto-correct
Style/PercentQLiterals:
  Description: Checks if uses of %Q/%q match the configured preference.
  Enabled: true
  EnforcedStyle: lower_case_q
  SupportedStyles:
  - lower_case_q
  - upper_case_q

# Supports --auto-correct
Style/PerlBackrefs:
  Description: Avoid Perl-style regex back references.
  StyleGuide: https://github.com/bbatsov/ruby-style-guide#no-perl-regexp-last-matchers
  Enabled: true

Naming/PredicateName:
  Description: Check the names of predicate methods.
  StyleGuide: https://github.com/bbatsov/ruby-style-guide#bool-methods-qmark
  Enabled: true
  NamePrefix:
  - is_
  - has_
  - have_
  ForbiddenPrefixes:
  - is_
  - has_
  - have_
  AllowedMethods:
  - is_a?

# Supports --auto-correct
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: true
  EnforcedStyle: exploded
  SupportedStyles:
  - compact
  - exploded

# Supports --auto-correct
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

# Supports --auto-correct
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

# Supports --auto-correct
Style/RedundantFreeze:
  Description: Checks usages of Object#freeze on immutable objects.
  Enabled: false

# Supports --auto-correct
Style/RedundantParentheses:
  Description: Checks for parentheses that seem not to serve any purpose.
  Enabled: true

# Supports --auto-correct
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
  AllowMultipleReturnValues: false

# Supports --auto-correct
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

# Supports --auto-correct
Style/RegexpLiteral:
  Description: Use / or %r around regular expressions.
  StyleGuide: https://github.com/bbatsov/ruby-style-guide#percent-r
  Enabled: true
  EnforcedStyle: slashes
  SupportedStyles:
  - slashes
  - percent_r
  - mixed
  AllowInnerSlashes: false

# Supports --auto-correct
Layout/RescueEnsureAlignment:
  Description: Align rescues and ensures correctly.
  Enabled: true

# Supports --auto-correct
Style/RescueModifier:
  Description: Avoid using rescue in its modifier form.
  StyleGuide: https://github.com/bbatsov/ruby-style-guide#no-rescue-modifiers
  Enabled: true

# Supports --auto-correct
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

# Supports --auto-correct
Style/Semicolon:
  Description: Don't use semicolons to terminate expressions.
  StyleGuide: https://github.com/bbatsov/ruby-style-guide#no-semicolon
  Enabled: true
  AllowAsExpressionSeparator: false

Style/Send:
  Description: Prefer `Object#__send__` or `Object#public_send` to `send`, as `send`
    may overlap with existing methods.
  StyleGuide: https://github.com/bbatsov/ruby-style-guide#prefer-public-send
  Enabled: false

# Supports --auto-correct
Style/SignalException:
  Description: Checks for proper usage of fail and raise.
  StyleGuide: https://github.com/bbatsov/ruby-style-guide#fail-method
  Enabled: true
  EnforcedStyle: semantic
  SupportedStyles:
  - only_raise
  - only_fail
  - semantic

Style/SingleLineBlockParams:
  Description: Enforces the names of some block params.
  StyleGuide: https://github.com/bbatsov/ruby-style-guide#reduce-blocks
  Enabled: true
  Methods:
  - reduce:
    - a
    - e
  - inject:
    - a
    - e

# Supports --auto-correct
Style/SingleLineMethods:
  Description: Avoid single-line methods.
  StyleGuide: https://github.com/bbatsov/ruby-style-guide#no-single-line-methods
  Enabled: true
  AllowIfMethodIsEmpty: true

# Supports --auto-correct
Layout/SpaceAfterColon:
  Description: Use spaces after colons.
  StyleGuide: https://github.com/bbatsov/ruby-style-guide#spaces-operators
  Enabled: true

# Supports --auto-correct
Layout/SpaceAfterComma:
  Description: Use spaces after commas.
  StyleGuide: https://github.com/bbatsov/ruby-style-guide#spaces-operators
  Enabled: true

# Supports --auto-correct
Layout/SpaceAroundKeyword:
  Description: Use spaces after if/elsif/unless/while/until/case/when.
  Enabled: true

# Supports --auto-correct
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

# Supports --auto-correct
Layout/SpaceAfterNot:
  Description: Tracks redundant space after the ! operator.
  StyleGuide: https://github.com/bbatsov/ruby-style-guide#no-space-bang
  Enabled: true

# Supports --auto-correct
Layout/SpaceAfterSemicolon:
  Description: Use spaces after semicolons.
  StyleGuide: https://github.com/bbatsov/ruby-style-guide#spaces-operators
  Enabled: true

# Supports --auto-correct
Layout/SpaceAroundBlockParameters:
  Description: Checks the spacing inside and after block parameters pipes.
  Enabled: true
  EnforcedStyleInsidePipes: no_space

# Supports --auto-correct
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
  EnforcedStyle: space

# Supports --auto-correct
Layout/SpaceAroundOperators:
  Description: Use a single space around operators.
  StyleGuide: https://github.com/bbatsov/ruby-style-guide#spaces-operators
  Enabled: true
  AllowForAlignment: true

# Supports --auto-correct
Layout/SpaceBeforeBlockBraces:
  Description: Checks that the left block brace has or doesn't have space before it.
  Enabled: true
  EnforcedStyle: space
  SupportedStyles:
  - space
  - no_space

# Supports --auto-correct
Layout/SpaceBeforeComma:
  Description: No spaces before commas.
  Enabled: true

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

# Supports --auto-correct
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
  AllowForAlignment: true

# Supports --auto-correct
Layout/SpaceBeforeSemicolon:
  Description: No spaces before semicolons.
  Enabled: true

# Supports --auto-correct
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
  EnforcedStyle: space
  SupportedStyles:
  - space
  - no_space
  EnforcedStyleForEmptyBraces: no_space
  SpaceBeforeBlockParameters: true

# Supports --auto-correct
Layout/SpaceInsideHashLiteralBraces:
  Description: Use spaces inside hash literal braces - or don't.
  StyleGuide: https://github.com/bbatsov/ruby-style-guide#spaces-operators
  Enabled: true
  EnforcedStyle: space
  EnforcedStyleForEmptyBraces: no_space
  SupportedStyles:
  - space
  - no_space

# Supports --auto-correct
Layout/SpaceInsideParens:
  Description: No spaces after ( or before ).
  StyleGuide: https://github.com/bbatsov/ruby-style-guide#no-spaces-braces
  Enabled: true

# Supports --auto-correct
Layout/SpaceInsideRangeLiteral:
  Description: No spaces inside range literals.
  StyleGuide: https://github.com/bbatsov/ruby-style-guide#no-space-inside-range-literals
  Enabled: true

# Supports --auto-correct
Layout/SpaceInsideStringInterpolation:
  Description: Checks for padding/surrounding spaces inside string interpolation.
  StyleGuide: https://github.com/bbatsov/ruby-style-guide#string-interpolation
  Enabled: true
  EnforcedStyle: no_space
  SupportedStyles:
  - space
  - no_space

# Supports --auto-correct
Style/SpecialGlobalVars:
  Description: Avoid Perl-style global variables.
  StyleGuide: https://github.com/bbatsov/ruby-style-guide#no-cryptic-perlisms
  Enabled: true
  EnforcedStyle: use_english_names
  SupportedStyles:
  - use_perl_names
  - use_english_names

# Supports --auto-correct
Style/StabbyLambdaParentheses:
  Description: Check for the usage of parentheses around stabby lambda arguments.
  StyleGuide: https://github.com/bbatsov/ruby-style-guide#stabby-lambda-with-args
  Enabled: true
  EnforcedStyle: require_parentheses
  SupportedStyles:
  - require_parentheses
  - require_no_parentheses

# Supports --auto-correct
Style/StringLiterals:
  Description: Checks if uses of quotes match the configured preference.
  StyleGuide: https://github.com/bbatsov/ruby-style-guide#consistent-string-literals
  Enabled: true
  EnforcedStyle: single_quotes
  SupportedStyles:
  - single_quotes
  - double_quotes
  ConsistentQuotesInMultiline: false

# Supports --auto-correct
Style/StringLiteralsInInterpolation:
  Description: Checks if uses of quotes inside expressions in interpolated strings match
    the configured preference.
  Enabled: true
  EnforcedStyle: single_quotes
  SupportedStyles:
  - single_quotes
  - double_quotes

# Supports --auto-correct
Style/StringMethods:
  Description: Checks if configured preferred methods are used over non-preferred.
  Enabled: false
  PreferredMethods:
    intern: to_sym

Style/StructInheritance:
  Description: Checks for inheritance from Struct.new.
  StyleGuide: https://github.com/bbatsov/ruby-style-guide#no-extend-struct-new
  Enabled: true

# Supports --auto-correct
Style/SymbolArray:
  Description: Use %i or %I for arrays of symbols.
  StyleGuide: https://github.com/bbatsov/ruby-style-guide#percent-i
  Enabled: false
  EnforcedStyle: percent
  SupportedStyles:
  - percent
  - brackets

# Supports --auto-correct
Style/SymbolLiteral:
  Description: Use plain symbols instead of string symbols when possible.
  Enabled: true

# Supports --auto-correct
Style/SymbolProc:
  Description: Use symbols as procs instead of blocks when possible.
  Enabled: true
  IgnoredMethods:
  - respond_to

# Supports --auto-correct
Layout/TrailingEmptyLines:
  Description: Checks trailing blank lines and final newline.
  StyleGuide: https://github.com/bbatsov/ruby-style-guide#newline-eof
  Enabled: true
  EnforcedStyle: final_newline
  SupportedStyles:
  - final_newline
  - final_blank_line

# Supports --auto-correct
Style/TrailingCommaInArguments:
  Description: Checks for trailing comma in argument lists.
  StyleGuide: https://github.com/bbatsov/ruby-style-guide#no-trailing-array-commas
  Enabled: true
  EnforcedStyleForMultiline: no_comma

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

# Supports --auto-correct
Layout/TrailingWhitespace:
  Description: Avoid trailing whitespace.
  StyleGuide: https://github.com/bbatsov/ruby-style-guide#no-trailing-whitespace
  Enabled: true

# Supports --auto-correct
Style/TrivialAccessors:
  Description: Prefer attr_* methods to trivial readers/writers.
  StyleGuide: https://github.com/bbatsov/ruby-style-guide#attr_family
  Enabled: true
  ExactNameMatch: true
  AllowPredicates: false
  AllowDSLWriters: false
  IgnoreClassMethods: false
  AllowedMethods:
  - to_ary
  - to_a
  - to_c
  - to_enum
  - to_h
  - to_hash
  - to_i
  - to_int
  - to_io
  - to_open
  - to_path
  - to_proc
  - to_r
  - to_regexp
  - to_str
  - to_s
  - to_sym

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

# Supports --auto-correct
Style/RedundantCapitalW:
  Description: Checks for %W when interpolation is not needed.
  Enabled: true

# Supports --auto-correct
Style/RedundantInterpolation:
  Description: Checks for strings that are just an interpolated expression.
  Enabled: true

# Supports --auto-correct
Style/RedundantPercentQ:
  Description: Checks for %q/%Q when single quotes or double quotes would do.
  StyleGuide: https://github.com/bbatsov/ruby-style-guide#percent-q
  Enabled: true

# Supports --auto-correct
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
  EnforcedStyle: snake_case
  SupportedStyles:
  - snake_case
  - camelCase

# Supports --auto-correct
Style/WhenThen:
  Description: Use when x then ... for one-line cases.
  StyleGuide: https://github.com/bbatsov/ruby-style-guide#one-line-cases
  Enabled: true

# Supports --auto-correct
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

# Supports --auto-correct
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

# Supports --auto-correct
Style/WordArray:
  Description: Use %w or %W for arrays of words.
  StyleGuide: https://github.com/bbatsov/ruby-style-guide#percent-w
  Enabled: true
  EnforcedStyle: percent
  SupportedStyles:
  - percent
  - brackets

RSpec/FactoryBot/CreateList:
  Include:
    - spec/factories.rb
    - spec/factories/**/*.rb
    - features/support/factories/**/*.rb

RSpec/MultipleMemoizedHelpers:
  Max: 10