nevir/rubocop-rspec

View on GitHub
.rubocop.yml

Summary

Maintainability
Test Coverage
inherit_from: .rubocop_todo.yml

require:
  - rubocop-performance
  - rubocop-rake
  - rubocop-rspec
  - rubocop/cop/internal_affairs

AllCops:
  DisplayCopNames: true
  TargetRubyVersion: 2.7
  NewCops: disable
  Exclude:
    - 'vendor/**/*'
    - 'spec/fixtures/**/*'
    - 'tmp/**/*'
    - 'spec/smoke_tests/**/*.rb'

Layout/HashAlignment:
  EnforcedHashRocketStyle:
    - key
    - table
  EnforcedColonStyle:
    - key
    - table

Layout/LineLength:
  Max: 80 # default: 120
  AllowedPatterns:
    - '^\s*# .*https?:\/\/.+\[.+\]\.?$' # Allow long asciidoc links

Layout/MultilineMethodCallIndentation:
  EnforcedStyle: indented

Layout/MultilineOperationIndentation:
  EnforcedStyle: indented

Lint/InterpolationCheck:
  Exclude:
    - spec/**/*.rb

# When the `edge-rubocop` build is red, and we decide to disable the cop,
# the rest of the builds become red if the cop has not yet been released.
# Instead of waiting for RuboCop releases to make `edge-rubocop` green,
# we prefer keeping disable directives here and there and check if they
# are still needed once in a while.
Lint/RedundantCopDisableDirective:
  Enabled: false

Lint/UselessAccessModifier:
  MethodCreatingMethods:
    - def_node_matcher
    - def_node_search

Metrics/BlockLength:
  Exclude:
    - rubocop-rspec.gemspec
    - Rakefile
    - '**/*.rake'

Naming/FileName:
  Exclude:
    - lib/rubocop-rspec.rb

Naming/InclusiveLanguage:
  Enabled: true
  CheckStrings: true
  FlaggedTerms:
    ' a offense':
      Suggestions:
        - an offense
    auto-correct:
      Suggestions:
        - autocorrect
    auto_correct:
      Suggestions:
        - autocorrect
    ' a violation':
      Suggestions:
        - an offense
    behaviour:
      Suggestions:
        - behavior
    offence:
      Suggestions:
        - offense
    'does not registers':
      Suggestions:
        - does not register
    violation:
      Suggestions:
        - offense
    'register no offense':
      Suggestions:
        - registers no offense

RSpec:
  Language:
    Expectations:
      - expect_correction
      - expect_no_offenses
      - expect_offense

RSpec/DescribeClass:
  Exclude:
    - spec/project/**/*.rb

RSpec/ExampleLength:
  CountAsOne:
    - heredoc
  Max: 11

RSpec/MultipleExpectations:
  Max: 2

RSpec/SpecFilePathFormat:
  Exclude:
    - spec/rubocop/cop/rspec/mixin/**/*.rb

# `expect_offense` does not use Kernel#format or String#%
Style/FormatStringToken:
  Exclude:
    - spec/rubocop/**/*.rb

Style/NumberedParameters:
  Enabled: true
  EnforcedStyle: disallow

Style/RequireOrder:
  Enabled: true

# Enable RuboCop's pending cops up to v1.63

Gemspec/DeprecatedAttributeAssignment: {Enabled: true}
Gemspec/DevelopmentDependencies: {Enabled: true}
Gemspec/RequireMFA: {Enabled: true}
Layout/LineContinuationLeadingSpace: {Enabled: true}
Layout/LineContinuationSpacing: {Enabled: true}
Layout/LineEndStringConcatenationIndentation: {Enabled: true}
Layout/SpaceBeforeBrackets: {Enabled: true}
Lint/AmbiguousAssignment: {Enabled: true}
Lint/AmbiguousOperatorPrecedence: {Enabled: true}
Lint/AmbiguousRange: {Enabled: true}
Lint/ConstantOverwrittenInRescue: {Enabled: true}
Lint/DeprecatedConstants: {Enabled: true}
Lint/DuplicateBranch: {Enabled: true}
Lint/DuplicateMagicComment: {Enabled: true}
Lint/DuplicateMatchPattern: {Enabled: true}
Lint/DuplicateRegexpCharacterClassElement: {Enabled: true}
Lint/EmptyBlock: {Enabled: true}
Lint/EmptyClass: {Enabled: true}
Lint/EmptyInPattern: {Enabled: true}
Lint/IncompatibleIoSelectWithFiberScheduler: {Enabled: true}
Lint/ItWithoutArgumentsInBlock: {Enabled: true}
Lint/LambdaWithoutLiteralBlock: {Enabled: true}
Lint/LiteralAssignmentInCondition: {Enabled: true}
Lint/MixedCaseRange: {Enabled: true}
Lint/NonAtomicFileOperation: {Enabled: true}
Lint/NoReturnInBeginEndBlocks: {Enabled: true}
Lint/NumberedParameterAssignment: {Enabled: true}
Lint/OrAssignmentToConstant: {Enabled: true}
Lint/RedundantDirGlobSort: {Enabled: true}
Lint/RedundantRegexpQuantifiers: {Enabled: true}
Lint/RefinementImportMethods: {Enabled: true}
Lint/RequireRangeParentheses: {Enabled: true}
Lint/RequireRelativeSelfPath: {Enabled: true}
Lint/SymbolConversion: {Enabled: true}
Lint/ToEnumArguments: {Enabled: true}
Lint/TripleQuotes: {Enabled: true}
Lint/UnexpectedBlockArity: {Enabled: true}
Lint/UnmodifiedReduceAccumulator: {Enabled: true}
Lint/UselessRescue: {Enabled: true}
Lint/UselessRuby2Keywords: {Enabled: true}
Metrics/CollectionLiteralLength: {Enabled: true}
Naming/BlockForwarding: {Enabled: true}
Performance/AncestorsInclude: {Enabled: true}
Performance/BigDecimalWithNumericArgument: {Enabled: true}
Performance/BlockGivenWithExplicitBlock: {Enabled: true}
Performance/CollectionLiteralInLoop: {Enabled: true}
Performance/ConcurrentMonotonicTime: {Enabled: true}
Performance/ConstantRegexp: {Enabled: true}
Performance/MapCompact: {Enabled: true}
Performance/MapMethodChain: {Enabled: true}
Performance/MethodObjectAsBlock: {Enabled: true}
Performance/RedundantEqualityComparisonBlock: {Enabled: true}
Performance/RedundantSortBlock: {Enabled: true}
Performance/RedundantSplitRegexpArgument: {Enabled: true}
Performance/RedundantStringChars: {Enabled: true}
Performance/ReverseFirst: {Enabled: true}
Performance/SortReverse: {Enabled: true}
Performance/Squeeze: {Enabled: true}
Performance/StringIdentifierArgument: {Enabled: true}
Performance/StringInclude: {Enabled: true}
Performance/Sum: {Enabled: true}
Security/CompoundHash: {Enabled: true}
Security/IoMethods: {Enabled: true}
Style/ArgumentsForwarding: {Enabled: true}
Style/ArrayIntersect: {Enabled: true}
Style/CollectionCompact: {Enabled: true}
Style/ComparableClamp: {Enabled: true}
Style/ConcatArrayLiterals: {Enabled: true}
Style/DataInheritance: {Enabled: true}
Style/DirEmpty: {Enabled: true}
Style/DocumentDynamicEvalDefinition: {Enabled: true}
Style/EmptyHeredoc: {Enabled: true}
Style/EndlessMethod: {Enabled: true}
Style/EnvHome: {Enabled: true}
Style/ExactRegexpMatch: {Enabled: true}
Style/FetchEnvVar: {Enabled: true}
Style/FileEmpty: {Enabled: true}
Style/FileRead: {Enabled: true}
Style/FileWrite: {Enabled: true}
Style/HashConversion: {Enabled: true}
Style/HashExcept: {Enabled: true}
Style/IfWithBooleanLiteralBranches: {Enabled: true}
Style/InPatternThen: {Enabled: true}
Style/MagicCommentFormat: {Enabled: true}
Style/MapCompactWithConditionalBlock: {Enabled: true}
Style/MapIntoArray: {Enabled: true}
Style/MapToHash: {Enabled: true}
Style/MapToSet: {Enabled: true}
Style/MinMaxComparison: {Enabled: true}
Style/MultilineInPatternThen: {Enabled: true}
Style/NegatedIfElseCondition: {Enabled: true}
Style/NestedFileDirname: {Enabled: true}
Style/NilLambda: {Enabled: true}
Style/NumberedParametersLimit: {Enabled: true}
Style/ObjectThen: {Enabled: true}
Style/OpenStructUse: {Enabled: true}
Style/OperatorMethodCall: {Enabled: true}
Style/QuotedSymbols: {Enabled: true}
Style/RedundantArgument: {Enabled: true}
Style/RedundantArrayConstructor: {Enabled: true}
Style/RedundantConstantBase: {Enabled: true}
Style/RedundantCurrentDirectoryInPath: {Enabled: true}
Style/RedundantDoubleSplatHashBraces: {Enabled: true}
Style/RedundantEach: {Enabled: true}
Style/RedundantFilterChain: {Enabled: true}
Style/RedundantHeredocDelimiterQuotes: {Enabled: true}
Style/RedundantInitialize: {Enabled: true}
Style/RedundantLineContinuation: {Enabled: true}
Style/RedundantRegexpArgument: {Enabled: true}
Style/RedundantRegexpConstructor: {Enabled: true}
Style/RedundantSelfAssignmentBranch: {Enabled: true}
Style/RedundantStringEscape: {Enabled: true}
Style/ReturnNilInPredicateMethodDefinition: {Enabled: true}
Style/SelectByRegexp: {Enabled: true}
Style/SingleLineDoEndBlock: {Enabled: true}
Style/StringChars: {Enabled: true}
Style/SuperWithArgsParentheses: {Enabled: true}
Style/SwapValues: {Enabled: true}
Style/YAMLFileRead: {Enabled: true}

# Enable our own pending cops.
#
RSpec/StringAsInstanceDoubleConstant:
  Enabled: true