.rubocop.yml
inherit_from: .rubocop_todo.yml
require:
- rubocop-rails
- rubocop-rspec
- rubocop-sorbet
AllCops:
Exclude:
# Exclude vendor to make this work on travis
- vendor/**/*
- 'db/migrate/*'
- 'db/schema.rb'
- config/*
- config/initializers/*
- config/environments/*
- config/deploy/*
- config.ru
- bin/*
- db/scrapers/repos/**/*
- default_files/*/*/*
- spec/lib/morph/test_scrapers/*/*/*
- lib/morph/limit_output.rb
- app/helpers/bootstrap_flash_helper.rb
Sorbet/FalseSigil:
Exclude:
# Views are picked up in rubocop by haml-lint
- app/views/**/*
Sorbet/TrueSigil:
Enabled: true
Exclude:
- app/admin/*
- spec/**/*
- sync.ru
# Views are picked up in rubocop by haml-lint
- app/views/**/*
Sorbet/StrictSigil:
Enabled: true
Exclude:
- app/admin/*
- spec/**/*
- sync.ru
# Views are picked up in rubocop by haml-lint
- app/views/**/*
- sorbet/tapioca/require.rb
# This conflicts with the type checking that sorbet does
Lint/SafeNavigationConsistency:
Enabled: false
# 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
# TODO: Disabling temporarily
Style/StderrPuts:
Enabled: false
# Disable a bunch of metrics to do with code complexity. These as are all
# a bit hard-nosed. Maybe after we've done a pass with Code Climate we
# can revisit these
Metrics/AbcSize:
Enabled: false
# We need to turn this off so that we can put sorbet sigs on accessors
Style/AccessorGrouping:
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
# In our case we seem to be not using array so there's too many false positives
# So, just easier to disable I think
Style/SlicingWithRange:
Enabled: false
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
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/RefinementImportMethods: # new in 1.27
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/CompoundHash: # new in 1.28
Enabled: true
Security/IoMethods: # new in 1.22
Enabled: true
Style/FetchEnvVar: # new in 1.28
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/NestedFileDirname: # new in 1.26
Enabled: true
Style/NumberedParameters: # new in 1.22
Enabled: true
Style/NumberedParametersLimit: # new in 1.22
Enabled: true
Style/ObjectThen: # new in 1.28
Enabled: true
Style/OpenStructUse: # new in 1.23
Enabled: true
Style/QuotedSymbols: # new in 1.16
Enabled: true
Style/RedundantInitialize: # new in 1.27
Enabled: true
Style/RedundantSelfAssignmentBranch: # new in 1.19
Enabled: true
Style/SelectByRegexp: # new in 1.22
Enabled: true
Rails/ActionControllerTestCase: # new in 2.14
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/DeprecatedActiveModelErrorsMethods: # new in 2.14
Enabled: true
Rails/DuplicateAssociation: # new in 2.14
Enabled: true
Rails/DuplicateScope: # new in 2.14
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/I18nLazyLookup: # new in 2.14
Enabled: true
Rails/I18nLocaleAssignment: # new in 2.11
Enabled: true
Rails/I18nLocaleTexts: # new in 2.14
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/MigrationClassName: # new in 2.14
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/TransactionExitStatement: # new in 2.14
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/BeEq: # new in 2.9.0
Enabled: true
RSpec/BeNil: # new in 2.9.0
Enabled: true
RSpec/ExcessiveDocstringSpacing: # new in 2.5
Enabled: true
RSpec/IdenticalEqualityAssertion: # new in 2.4
Enabled: true
RSpec/SubjectDeclaration: # new in 2.5
Enabled: true
RSpec/VerifiedDoubleReference: # new in 2.10.0
Enabled: true
RSpec/FactoryBot/SyntaxMethods: # new in 2.7
Enabled: true
RSpec/Rails/AvoidSetupHook: # new in 2.4
Enabled: true
Gemspec/DeprecatedAttributeAssignment: # new in 1.30
Enabled: true
Layout/LineContinuationLeadingSpace: # new in 1.31
Enabled: true
Layout/LineContinuationSpacing: # new in 1.31
Enabled: true
Lint/ConstantOverwrittenInRescue: # new in 1.31
Enabled: true
Lint/NonAtomicFileOperation: # new in 1.31
Enabled: true
Lint/RequireRangeParentheses: # new in 1.32
Enabled: true
Style/EmptyHeredoc: # new in 1.32
Enabled: true
Style/EnvHome: # new in 1.29
Enabled: true
Style/MapCompactWithConditionalBlock: # new in 1.30
Enabled: true
Rails/DotSeparatedKeys: # new in 2.15
Enabled: true
Rails/RootPublicPath: # new in 2.15
Enabled: true
Rails/StripHeredoc: # new in 2.15
Enabled: true
Rails/ToFormattedS: # new in 2.15
Enabled: true
RSpec/ChangeByZero: # new in 2.11.0
Enabled: true
RSpec/Capybara/SpecificMatcher: # new in 2.12
Enabled: true
RSpec/Rails/HaveHttpStatus: # new in 2.12
Enabled: true
Style/MagicCommentFormat: # new in 1.35
Enabled: true