openaustralia/morph

View on GitHub
.rubocop.yml

Summary

Maintainability
Test Coverage
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