.rubocop.yml
require:
- rubocop-rails
- rubocop-rspec
AllCops:
Exclude:
- db/schema.rb
- bin/*
- vendor/**/*
- db/migrate/*.rb
- config/spring.rb
- config/puma.rb
- config/routes.rb
- config/environment.rb
- config/boot.rb
- config/application.rb
- config/environments/*.rb
- config/initializers/*.rb
# Disabling warnings about line length because it's so common through
# the codebase currently. It would be good to fix as it would make things
# easier to read but it would take a bit of time to do.
# TODO: Enable this again
Layout/LineLength:
Enabled: false
# We prefer double quotes here and it we're making liberal use of multi-line
# strings so it makes sense to enforce those to be consistent oo
Style/StringLiterals:
EnforcedStyle: double_quotes
ConsistentQuotesInMultiline: true
# This one I disagree with. Putting seperators in large numbers makes sense
# in some circumstances but in others (an example id in a database table)
# it's just nonsensical. Also, I think this one might also be a bit US centric.
Style/NumericLiterals:
Enabled: false
# For Rails it feels a little overkill to have to write a description for
# each class because so much is naming conventions. So, disabling this
Style/Documentation:
Enabled: false
# There are a few places where we used names like division_senate_2009_12_30_8
# and that convention is reasonable in this case
Naming/VariableNumber:
Enabled: false
Style/FormatStringToken:
EnforcedStyle: template
# Would be good to structure the Gemfile a bit more and order it nicely
# TODO: Enable this
Bundler/OrderedGems:
Exclude:
- 'Gemfile'
# TODO: Get rid of this as soon as we can
RSpec/MultipleExpectations:
Enabled: false
# TODO: Enable this when we can
RSpec/MultipleMemoizedHelpers:
Enabled: false
# TODO: Enable this when we can because it will some tests easier to read
RSpec/NestedGroups:
Enabled: false
# This is a sign of a not very nice code smell. It's non-trivial to fix
# as it probably involves a bit of refactoring of the code under test
# TODO: Fix this
RSpec/SubjectStub:
Enabled: false
# TODO: Fix this
Rails/HasAndBelongsToMany:
Enabled: false
# Disable a bunch of metrics to do with code complexity. These as are all
# a bit hard-nosed.
Metrics/AbcSize:
Enabled: false
Metrics/BlockLength:
Enabled: false
Metrics/ClassLength:
Enabled: false
Metrics/CyclomaticComplexity:
Enabled: false
Metrics/MethodLength:
Enabled: false
Metrics/ModuleLength:
Enabled: false
Metrics/ParameterLists:
Enabled: false
Metrics/PerceivedComplexity:
Enabled: false
RSpec/ExampleLength:
Enabled: false
Gemspec/DateAssignment: # (new in 1.10)
Enabled: true
Layout/SpaceBeforeBrackets: # (new in 1.7)
Enabled: true
Lint/AmbiguousAssignment: # (new in 1.7)
Enabled: true
Lint/DeprecatedConstants: # (new in 1.8)
Enabled: true
Lint/DuplicateBranch: # (new in 1.3)
Enabled: true
Lint/DuplicateRegexpCharacterClassElement: # (new in 1.1)
Enabled: true
Lint/EmptyBlock: # (new in 1.1)
Enabled: true
Lint/EmptyClass: # (new in 1.3)
Enabled: true
Lint/LambdaWithoutLiteralBlock: # (new in 1.8)
Enabled: true
Lint/NoReturnInBeginEndBlocks: # (new in 1.2)
Enabled: true
Lint/NumberedParameterAssignment: # (new in 1.9)
Enabled: true
Lint/OrAssignmentToConstant: # (new in 1.9)
Enabled: true
Lint/RedundantDirGlobSort: # (new in 1.8)
Enabled: true
Lint/SymbolConversion: # (new in 1.9)
Enabled: true
Lint/ToEnumArguments: # (new in 1.1)
Enabled: true
Lint/TripleQuotes: # (new in 1.9)
Enabled: true
Lint/UnexpectedBlockArity: # (new in 1.5)
Enabled: true
Lint/UnmodifiedReduceAccumulator: # (new in 1.1)
Enabled: true
Style/ArgumentsForwarding: # (new in 1.1)
Enabled: true
Style/CollectionCompact: # (new in 1.2)
Enabled: true
Style/DocumentDynamicEvalDefinition: # (new in 1.1)
Enabled: true
Style/EndlessMethod: # (new in 1.8)
Enabled: true
Style/HashConversion: # (new in 1.10)
Enabled: true
Style/HashExcept: # (new in 1.7)
Enabled: true
Style/IfWithBooleanLiteralBranches: # (new in 1.9)
Enabled: true
Style/NegatedIfElseCondition: # (new in 1.2)
Enabled: true
Style/NilLambda: # (new in 1.3)
Enabled: true
Style/RedundantArgument: # (new in 1.4)
Enabled: true
Style/StringChars: # (new in 1.12)
Enabled: true
Style/SwapValues: # (new in 1.1)
Enabled: true
RSpec/IdenticalEqualityAssertion: # (new in 2.4)
Enabled: true
RSpec/Rails/AvoidSetupHook: # (new in 2.4)
Enabled: true
Gemspec/RequireMFA: # new in 1.23
Enabled: true
Layout/LineEndStringConcatenationIndentation: # new in 1.18
Enabled: true
Lint/AmbiguousOperatorPrecedence: # new in 1.21
Enabled: true
Lint/AmbiguousRange: # new in 1.19
Enabled: true
Lint/EmptyInPattern: # new in 1.16
Enabled: true
Lint/IncompatibleIoSelectWithFiberScheduler: # new in 1.21
Enabled: true
Lint/RequireRelativeSelfPath: # new in 1.22
Enabled: true
Lint/UselessRuby2Keywords: # new in 1.23
Enabled: true
Naming/BlockForwarding: # new in 1.24
Enabled: true
Security/IoMethods: # new in 1.22
Enabled: true
Style/FileRead: # new in 1.24
Enabled: true
Style/FileWrite: # new in 1.24
Enabled: true
Style/InPatternThen: # new in 1.16
Enabled: true
Style/MapToHash: # new in 1.24
Enabled: true
Style/MultilineInPatternThen: # new in 1.16
Enabled: true
Style/NumberedParameters: # new in 1.22
Enabled: true
Style/NumberedParametersLimit: # new in 1.22
Enabled: true
Style/OpenStructUse: # new in 1.23
Enabled: true
Style/QuotedSymbols: # new in 1.16
Enabled: true
Style/RedundantSelfAssignmentBranch: # new in 1.19
Enabled: true
Style/SelectByRegexp: # new in 1.22
Enabled: true
Rails/ActiveRecordCallbacksOrder: # new in 2.7
Enabled: true
Rails/AddColumnIndex: # new in 2.11
Enabled: true
Rails/AfterCommitOverride: # new in 2.8
Enabled: true
Rails/AttributeDefaultBlockValue: # new in 2.9
Enabled: true
Rails/CompactBlank: # new in 2.13
Enabled: true
Rails/DurationArithmetic: # new in 2.13
Enabled: true
Rails/EagerEvaluationLogMessage: # new in 2.11
Enabled: true
Rails/ExpandedDateRange: # new in 2.11
Enabled: true
Rails/FindById: # new in 2.7
Enabled: true
Rails/I18nLocaleAssignment: # new in 2.11
Enabled: true
Rails/Inquiry: # new in 2.7
Enabled: true
Rails/MailerName: # new in 2.7
Enabled: true
Rails/MatchRoute: # new in 2.7
Enabled: true
Rails/NegateInclude: # new in 2.7
Enabled: true
Rails/Pluck: # new in 2.7
Enabled: true
Rails/PluckInWhere: # new in 2.7
Enabled: true
Rails/RedundantPresenceValidationOnBelongsTo: # new in 2.13
Enabled: true
Rails/RedundantTravelBack: # new in 2.12
Enabled: true
Rails/RenderInline: # new in 2.7
Enabled: true
Rails/RenderPlainText: # new in 2.7
Enabled: true
Rails/RootJoinChain: # new in 2.13
Enabled: true
Rails/ShortI18n: # new in 2.7
Enabled: true
Rails/SquishedSQLHeredocs: # new in 2.8
Enabled: true
Rails/TimeZoneAssignment: # new in 2.10
Enabled: true
Rails/UnusedIgnoredColumns: # new in 2.11
Enabled: true
Rails/WhereEquals: # new in 2.9
Enabled: true
Rails/WhereExists: # new in 2.7
Enabled: true
Rails/WhereNot: # new in 2.8
Enabled: true
RSpec/ExcessiveDocstringSpacing: # new in 2.5
Enabled: true
RSpec/SubjectDeclaration: # new in 2.5
Enabled: true
RSpec/FactoryBot/SyntaxMethods: # new in 2.7
Enabled: true