.rubocop.yml
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