mobi/telephone_number

View on GitHub
.rubocop.default.yml

Summary

Maintainability
Test Coverage
# These are all the cops that are enabled in the default configuration.

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

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

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

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

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

Style/AlignParameters:
  Description: >-
                 Align the parameters of a method call if they span more
                 than one line.
  StyleGuide: '#no-double-indent'
  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/AsciiIdentifiers:
  Description: 'Use only ascii symbols in identifiers.'
  StyleGuide: '#english-identifiers'
  Enabled: true

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

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

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

Style/BlockComments:
  Description: 'Do not use block comments.'
  StyleGuide: '#no-block-comments'
  Enabled: true

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

Style/BlockDelimiters:
  Description: >-
                Avoid using {...} for multi-line blocks (multiline chaining is
                always ugly).
                Prefer {...} over do...end for single-line blocks.
  StyleGuide: '#single-line-blocks'
  Enabled: true

Style/BracesAroundHashParameters:
  Description: 'Enforce braces style around hash parameters.'
  Enabled: true

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

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

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

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

Style/ClassAndModuleChildren:
  Description: 'Checks style of children classes and modules.'
  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/ClosingParenthesisIndentation:
  Description: 'Checks the indentation of hanging closing parentheses.'
  Enabled: true

Style/ColonMethodCall:
  Description: 'Do not use :: for method call.'
  StyleGuide: '#double-colons'
  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/CommentIndentation:
  Description: 'Indentation of comments.'
  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/ConstantName:
  Description: 'Constants should use SCREAMING_SNAKE_CASE.'
  StyleGuide: '#screaming-snake-case'
  Enabled: true

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

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

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

Style/DoubleNegation:
  Description: 'Checks for uses of double negation (!!).'
  StyleGuide: '#no-bang-bang'
  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/ElseAlignment:
  Description: 'Align elses and elsifs correctly.'
  Enabled: true

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

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

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

Style/EmptyLines:
  Description: "Don't use several empty lines in a row."
  Enabled: true

Style/EmptyLinesAroundAccessModifier:
  Description: "Keep blank lines around access modifiers."
  Enabled: true

Style/EmptyLinesAroundBlockBody:
  Description: "Keeps track of empty lines around block bodies."
  Enabled: true

Style/EmptyLinesAroundClassBody:
  Description: "Keeps track of empty lines around class bodies."
  Enabled: true

Style/EmptyLinesAroundModuleBody:
  Description: "Keeps track of empty lines around module bodies."
  Enabled: true

Style/EmptyLinesAroundMethodBody:
  Description: "Keeps track of empty lines around method bodies."
  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/EndBlock:
  Description: 'Avoid the use of END blocks.'
  StyleGuide: '#no-END-blocks'
  Enabled: true

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

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

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

Style/FileName:
  Description: 'Use snake_case for source file names.'
  StyleGuide: '#snake-case-files'
  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/InitialIndentation:
  Description: >-
    Checks the indentation of the first non-blank non-comment line in a file.
  Enabled: true

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

Style/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/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/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/IndentationConsistency:
  Description: 'Keep indentation straight.'
  Enabled: true

Style/IndentationWidth:
  Description: 'Use 2 spaces for indentation.'
  StyleGuide: '#spaces-indentation'
  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/IndentArray:
  Description: >-
                 Checks the indentation of the first element in an array
                 literal.
  Enabled: true

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

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

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

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

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

Style/LambdaCall:
  Description: 'Use lambda.call(...) instead of lambda.(...).'
  StyleGuide: '#proc-call'
  Enabled: true

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

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

Style/MethodCallWithoutArgsParentheses:
  Description: 'Do not use parentheses for method calls with no arguments.'
  StyleGuide: '#method-invocation-parens'
  Enabled: true

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

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

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

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

Style/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

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

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

Style/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

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

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

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

Style/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

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

Style/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

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

Style/MultilineTernaryOperator:
  Description: >-
                 Avoid multi-line ?: (the ternary operator);
                 use if/unless instead.
  StyleGuide: '#no-multiline-ternary'
  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/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: '#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/NumericLiterals:
  Description: >-
                 Add underscores to large numeric literals to improve their
                 readability.
  StyleGuide: '#underscores-in-numerics'
  Enabled: true

Style/NumericLiteralPrefix:
  Description: 'Use smallcase prefixes for numeric literals.'
  StyleGuide: '#numeric-literal-prefixes'
  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/OpMethod:
  Description: 'When defining binary operators, name the argument other.'
  StyleGuide: '#other-arg'
  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/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/PredicateName:
  Description: 'Check the names of predicate methods.'
  StyleGuide: '#bool-methods-qmark'
  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/RedundantBegin:
  Description: "Don't use begin blocks when they are not needed."
  StyleGuide: '#begin-implicit'
  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/RescueEnsureAlignment:
  Description: 'Align rescues and ensures correctly.'
  Enabled: true

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

Style/SafeNavigation:
  Description: >-
                  This cop transforms usages of a method call safeguarded by
                  a check for the existance 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/SpaceBeforeFirstArg:
  Description: >-
                 Checks that exactly one space is used between a method name
                 and the first argument for method calls without parentheses.
  Enabled: true

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

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

Style/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

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

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

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

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

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

Style/SpaceBeforeSemicolon:
  Description: 'No spaces before semicolons.'
  Enabled: true

Style/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

Style/SpaceAroundBlockParameters:
  Description: 'Checks the spacing inside and after block parameters pipes.'
  Enabled: true

Style/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

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

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

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

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

Style/SpaceInsideBrackets:
  Description: 'No spaces after [ or before ].'
  StyleGuide: '#no-spaces-braces'
  Enabled: true

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

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

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

Style/SpaceInsideStringInterpolation:
  Description: 'Checks for padding/surrounding spaces inside string interpolation.'
  StyleGuide: '#string-interpolation'
  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/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/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/Tab:
  Description: 'No hard tabs.'
  StyleGuide: '#spaces-indentation'
  Enabled: true

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

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

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

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

Style/TrailingWhitespace:
  Description: 'Avoid trailing whitespace.'
  StyleGuide: '#no-trailing-whitespace'
  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/UnneededCapitalW:
  Description: 'Checks for %W when interpolation is not needed.'
  Enabled: true

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

Style/UnneededPercentQ:
  Description: 'Checks for %q/%Q when single quotes or double quotes would do.'
  StyleGuide: '#percent-q'
  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/VariableInterpolation:
  Description: >-
                 Don't interpolate global, instance and class variables
                 directly in strings.
  StyleGuide: '#curlies-interpolate'
  Enabled: true

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

Style/VariableNumber:
  Description: 'Use the configured style when numbering variables.'
  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/ZeroLengthPredicate:
  Description: 'Use #empty? when testing for objects of length 0.'
  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/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/ModuleLength:
  Description: 'Avoid modules 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

Metrics/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/BlockLength:
  Description: 'Avoid long blocks with many lines.'
  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

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

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/BlockAlignment:
  Description: 'Align block ends correctly.'
  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

Lint/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

Lint/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/DuplicatedKey:
  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/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

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

Lint/EndInMethod:
  Description: 'END blocks should not be placed inside method definitions.'
  Enabled: true

Lint/EnsureReturn:
  Description: 'Do not use return in an ensure block.'
  StyleGuide: '#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/HandleExceptions:
  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/InvalidCharacterLiteral:
  Description: >-
                 Checks for invalid character literals with a non-escaped
                 whitespace character.
  Enabled: true

Lint/LiteralInCondition:
  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/MultipleCompare:
  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/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: '#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/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/SafeNavigationChain:
  Description: 'Do not chain ordinary method call after safe navigation operator.'
  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/StringConversionInInterpolation:
  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/UnneededDisable:
  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/UnneededSplatExpansion:
  Description: 'Checks for splat unnecessarily being called on literals'
  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/UnreachableCode:
  Description: 'Unreachable code.'
  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/UselessComparison:
  Description: 'Checks for comparison of something with itself.'
  Enabled: true

Lint/UselessElseWithoutRescue:
  Description: 'Checks for useless `else` in `begin..end` without `rescue`.'
  Enabled: true

Lint/UselessSetterCall:
  Description: 'Checks for useless setter call to a local variable.'
  Enabled: true

Lint/Void:
  Description: 'Possible use of operator/literal/variable in void context.'
  Enabled: true

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

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/CaseWhenSplat:
  Description: >-
                  Place `when` conditions that use splat at the end
                  of the list of `when` branches.
  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 `SafeMode`.
  SafeMode: 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.
  SafeMode: 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.

Performance/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/LstripRstrip:
  Description: 'Use `strip` instead of `lstrip.rstrip`.'
  Enabled: true

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-vs-yield-code'
  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

Performance/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

Performance/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#arraycount-vs-arraysize-code'
  Enabled: true

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

#################### Rails #################################

Rails/ActionFilter:
  Description: 'Enforces consistent use of action filter methods.'
  Enabled: true

Rails/Date:
  Description: >-
                  Checks the correct usage of date aware methods,
                  such as Date.today, Date.current etc.
  Enabled: true

Rails/Delegate:
  Description: 'Prefer delegate method for delegations.'
  Enabled: true

Rails/DelegateAllowBlank:
  Description: 'Do not use allow_blank as an option to delegate.'
  Enabled: true

Rails/DynamicFindBy:
  Description: 'Use `find_by` instead of dynamic `find_by_*`.'
  StyleGuide: 'https://github.com/bbatsov/rails-style-guide#find_by'
  Enabled: true

Rails/EnumUniqueness:
  Description: 'Avoid duplicate integers in hash-syntax `enum` declaration.'
  Enabled: true

Rails/Exit:
  Description: >-
                  Favor `fail`, `break`, `return`, etc. over `exit` in
                  application or library code outside of Rake files to avoid
                  exits during unit testing or running in production.
  Enabled: true

Rails/FilePath:
  Description: 'Use `Rails.root.join` for file path joining.'
  Enabled: true

Rails/FindBy:
  Description: 'Prefer find_by over where.first.'
  StyleGuide: 'https://github.com/bbatsov/rails-style-guide#find_by'
  Enabled: true

Rails/FindEach:
  Description: 'Prefer all.find_each over all.find.'
  StyleGuide: 'https://github.com/bbatsov/rails-style-guide#find-each'
  Enabled: true

Rails/HasAndBelongsToMany:
  Description: 'Prefer has_many :through to has_and_belongs_to_many.'
  StyleGuide: 'https://github.com/bbatsov/rails-style-guide#has-many-through'
  Enabled: true

Rails/HttpPositionalArguments:
  Description: 'Use keyword arguments instead of positional arguments in http method calls.'
  Enabled: true
  Include:
    - 'spec/**/*'
    - 'test/**/*'

Rails/NotNullColumn:
  Description: 'Do not add a NOT NULL column without a default value'
  Enabled: true

Rails/Output:
  Description: 'Checks for calls to puts, print, etc.'
  Enabled: true

Rails/OutputSafety:
  Description: 'The use of `html_safe` or `raw` may be a security risk.'
  Enabled: true

Rails/PluralizationGrammar:
  Description: 'Checks for incorrect grammar when using methods like `3.day.ago`.'
  Enabled: true

Rails/ReadWriteAttribute:
  Description: >-
                 Checks for read_attribute(:attr) and
                 write_attribute(:attr, val).
  StyleGuide: 'https://github.com/bbatsov/rails-style-guide#read-attribute'
  Enabled: true

Rails/RequestReferer:
  Description: 'Use consistent syntax for request.referer.'
  Enabled: true

Rails/ReversibleMigration:
  Description: 'Checks whether the change method of the migration file is reversible.'
  StyleGuide: 'https://github.com/bbatsov/rails-style-guide#reversible-migration'
  Reference: 'http://api.rubyonrails.org/classes/ActiveRecord/Migration/CommandRecorder.html'
  Enabled: true

Rails/SafeNavigation:
  Description: "Use Ruby's safe navigation operator (`&.`) instead of `try!`"
  Enabled: true

Rails/ScopeArgs:
  Description: 'Checks the arguments of ActiveRecord scopes.'
  Enabled: true

Rails/TimeZone:
  Description: 'Checks the correct usage of time zone aware methods.'
  StyleGuide: 'https://github.com/bbatsov/rails-style-guide#time'
  Reference: 'http://danilenko.org/2012/7/6/rails_timezones'
  Enabled: true

Rails/UniqBeforePluck:
  Description: 'Prefer the use of uniq or distinct before pluck.'
  Enabled: true

Rails/SkipsModelValidations:
  Description: >-
                 Use methods that skips model validations with caution.
                 See reference for more information.
  Reference: 'http://guides.rubyonrails.org/active_record_validations.html#skipping-validations'
  Enabled: true

Rails/Validation:
  Description: 'Use validates :attribute, hash of validations.'
  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/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

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

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

Bundler/OrderedGems:
  Description: >-
                 Sort alphabetically gems appearing within a contiguous set
                 of lines in the Gemfile
  Enabled: true
  Include:
    - '**/Gemfile'
    - '**/gems.rb'