canvas-lms/.rubocop.yml

283 lines
6.0 KiB
YAML

require:
- rubocop-rspec
# this odd relative path is so that rubocop works when run without "bundle
# exec", such as from most editors/IDEs.
- ./gems/rubocop-canvas/lib/rubocop_canvas
AllCops:
TargetRubyVersion: 2.3
# our style changes: disabling style rules we aren't interested in
Layout/AlignParameters:
Enabled: false
Layout/ElseAlignment:
Enabled: false
Layout/EmptyLines:
Enabled: false
Layout/EmptyLinesAroundAccessModifier:
Enabled: false
Layout/EmptyLinesAroundArguments:
Enabled: false
Layout/EmptyLinesAroundBlockBody:
Enabled: false
Layout/EmptyLinesAroundClassBody:
Enabled: false
Layout/EmptyLinesAroundMethodBody:
Enabled: false
Layout/EmptyLinesAroundModuleBody:
Enabled: false
Layout/IndentHash:
Enabled: false
Layout/IndentationConsistency:
Enabled: false
Layout/IndentationWidth:
Enabled: false
Layout/MultilineOperationIndentation:
Enabled: false
Layout/SpaceAfterColon:
Enabled: false
Layout/SpaceAfterComma:
Enabled: false
Layout/SpaceAroundEqualsInParameterDefault:
Enabled: false
Layout/SpaceAroundOperators:
Enabled: false
Layout/SpaceBeforeBlockBraces:
Enabled: false
Layout/SpaceBeforeFirstArg:
Enabled: false
Layout/SpaceInLambdaLiteral:
Enabled: false
Layout/SpaceInsideArrayLiteralBrackets:
Enabled: false
Layout/SpaceInsideBlockBraces:
Enabled: false
Layout/SpaceInsideHashLiteralBraces:
Enabled: false
Layout/SpaceInsideReferenceBrackets:
Enabled: false
Layout/TrailingBlankLines:
Enabled: false
Layout/TrailingWhitespace:
Enabled: false
Style/FormatStringToken:
Enabled: false
Style/StringLiterals:
Enabled: false
Style/SignalException:
Enabled: false
Style/NumericLiterals:
Enabled: false
Style/BracesAroundHashParameters:
Enabled: false
Style/PercentLiteralDelimiters:
Enabled: false
Style/Documentation:
Enabled: false
Style/ClassAndModuleChildren:
Enabled: false
Style/RegexpLiteral:
Enabled: false
Style/GuardClause:
Enabled: false
Style/RedundantSelf:
Enabled: false
Style/IfUnlessModifier:
Enabled: false
Style/WordArray:
Enabled: false
Style/PercentQLiterals:
Enabled: false
Style/DoubleNegation:
Enabled: false
Style/TrailingCommaInArguments:
Enabled: false
Style/TrailingCommaInLiteral:
Enabled: false
Style/MethodCallWithoutArgsParentheses:
Enabled: false
Style/MethodCallWithArgsParentheses:
Enabled: false
Layout/DotPosition:
Enabled: true
EnforcedStyle: trailing
Layout/AlignHash:
Enabled: false
Layout/AlignParameters:
Enabled: false
Style/Lambda:
Enabled: false
Style/WhileUntilModifier:
Enabled: false
Style/ParallelAssignment:
Enabled: false
Style/ZeroLengthPredicate:
Enabled: false
Style/NumericPredicate:
Enabled: false
Naming/VariableNumber:
Enabled: false
Style/Dir:
Enabled: false
Style/ReturnNil:
Enabled: false
Style/StderrPuts:
Enabled: false
Style/DateTime:
Enabled: false
Style/SymbolArray:
Enabled: false
# We may want to enable this when we start working toward Ruby 3
Style/FrozenStringLiteralComment:
Enabled: false
Style/AsciiComments:
Enabled: false
Style/BlockDelimiters:
Enabled: true
Exclude:
- spec/**/*_spec.rb
- spec/shared_examples/**/*.rb
# RSpec cops we don't care about
RSpec/MessageSpies:
Enabled: false
RSpec/HookArgument:
Enabled: false
RSpec/VerifiedDoubles:
Enabled: false
RSpec/NamedSubject:
Enabled: false
RSpec/NotToNot:
Enabled: false
# RSpec cops we care extra about
RSpec/EmptyExampleGroup:
Severity: error
RSpec/RepeatedDescription:
Severity: error
RSpec/ExpectChange:
Enabled: false
# this isn't good for us because of how we pin dependencies
Bundler/OrderedGems:
Enabled: false
Gemspec/OrderedDependencies:
Enabled: false
Gemspec/RequiredRubyVersion:
Enabled: false
# Rails style changes
Migration/ModelBehavior:
Enabled: false
Rails:
Enabled: true
Rails/TimeZone:
Enabled: false
# accessors are often defined in terms of read_attribute
Rails/ReadWriteAttribute:
Enabled: false
# we never bothered creating an ApplicationRecord
Rails/ApplicationRecord:
Enabled: false
Rails/HasManyOrHasOneDependent:
Enabled: false
# It whines about update_all too much, which we use a lot specifically to
# bypass validations and any other AR-ness
Rails/SkipsModelValidations:
Enabled: false
# Lint changes
Lint/AmbiguousRegexpLiteral:
Severity: convention
Lint/AmbiguousBlockAssociation:
Exclude:
- spec/**/*
Lint/UselessAssignment:
Severity: convention
Lint/Debugger:
Severity: error
Lint/EndAlignment:
EnforcedStyleAlignWith: variable
Severity: convention
# Performance changes
Performance/Detect:
Severity: warning
Performance/TimesMap:
Exclude:
- spec/**/*
# these need better configuration than the default:
Style/AndOr:
EnforcedStyle: conditionals
Style/RescueModifier:
Severity: warning
Layout/MultilineMethodCallIndentation:
EnforcedStyle: indented
Layout/IndentArray:
EnforcedStyle: consistent
# these don't make sense pre-Rails 4
Rails/FindBy:
Enabled: false
Rails/ActionFilter:
Enabled: false
# these are invalid pre-Rails 5
Rails/HttpPositionalArguments:
Enabled: false
# these are invalid pre-Ruby 2.4
Performance/RegexpMatch:
Enabled: false
# Things we may want to tighten down later
Metrics/AbcSize:
Enabled: false
Metrics/LineLength:
Max: 160
Metrics/MethodLength:
Max: 100
Metrics/ClassLength:
Enabled: false
Metrics/ModuleLength:
Enabled: false
Metrics/BlockLength:
Max: 50
Exclude:
- gems/*/spec/**/*.rb
- gems/plugins/*/spec_canvas/**/*.rb
- spec/**/*.rb
- pact/spec/**/*_spec.rb
Metrics/CyclomaticComplexity:
Max: 28
Metrics/PerceivedComplexity:
Max: 28
RSpec/InstanceVariable:
Enabled: false
RSpec/ExampleWording:
Enabled: false
RSpec/ContextWording:
Enabled: false
RSpec/ExampleLength:
Max: 48
RSpec/NestedGroups:
Max: 5
RSpec/DescribedClass:
Enabled: false
RSpec/DescribeClass:
Enabled: false
Style/HashSyntax:
Enabled: false
RSpec/MultipleExpectations:
Enabled: false
RSpec/ScatteredSetup:
Enabled: false
Style/RescueStandardError:
Enabled: false
Specs/EnsureSpecExtension:
Enabled: true
Exclude:
- spec/shared_examples/**/*