sul-dlss/argo

View on GitHub
.rubocop.yml

Summary

Maintainability
Test Coverage
require:
  - rubocop-capybara
  - rubocop-factory_bot
  - rubocop-performance
  - rubocop-rails
  - rubocop-rspec
  - rubocop-rspec_rails

inherit_from: .rubocop_todo.yml

AllCops:
  TargetRubyVersion: 3.3
  DisplayCopNames: true
  SuggestExtensions: false
  Exclude:
    - bin/**/*
    - config/application.rb
    - config/boot.rb
    - config/environment.rb
    - config/environments/*
    - config/initializers/*
    - config/puma.rb
    - coverage/**/*
    - db/**/*
    - log/**/*
    - node_modules/**/*
    - postgres-data/**/*
    - public/**/*
    - solr_conf/**/*
    - spec/fixtures/**/*
    - tmp/**/*
    - vendor/**/*

Rails:
  Enabled: true

Lint/DeprecatedOpenSSLConstant:
  Enabled: true

Lint/MissingSuper:
  Enabled: true
  Exclude:
    - "app/components/**/*"
    - "config/initializers/okcomputer.rb"

Metrics/BlockLength:
  Max: 27
  AllowedMethods:
    - "configure_blacklight"
    - "configure"
  Exclude:
    - "config/routes.rb"
    - "db/schema.rb"
    - "spec/**/*"
    - "lib/**/*.rake"
    - "app/jobs/create_virtual_objects_job.rb"
    - "app/services/forms_grouper.rb"
    - "app/services/notes_grouper.rb"

Metrics/ModuleLength:
  Exclude:
    - "lib/constants.rb"

Naming/PredicateName:
  ForbiddenPrefixes:
    - is_

RSpec/ContextWording:
  Enabled: true
  Prefixes:
    - when
    - with
    - without
    - for
    - if
    - as
    - "not as"
    - from

# We exclude system specs here because they have a lot of setup overhead, so
# testing a bunch of things in one go is more efficient.
RSpec/ExampleLength:
  Exclude:
    - "spec/system/**/*_spec.rb"
    - "spec/services/descriptions_grouper_spec.rb"
  Max: 43

RSpec/MultipleExpectations:
  Enabled: false

RSpec/MultipleMemoizedHelpers:
  Enabled: true
  Exclude:
    - "spec/jobs/set_catkeys_and_barcodes_job_spec.rb"

Rails/ActionControllerFlashBeforeRender:
  Enabled: false

# Put new cops here as they are added
Gemspec/DeprecatedAttributeAssignment: # new in 1.30
  Enabled: true
Gemspec/DevelopmentDependencies: # new in 1.44
  Enabled: true
Gemspec/RequireMFA: # new in 1.23
  Enabled: true
Layout/LineContinuationLeadingSpace: # new in 1.31
  Enabled: true
Layout/LineContinuationSpacing: # new in 1.31
  Enabled: true
Layout/LineEndStringConcatenationIndentation: # new in 1.18
  Enabled: true
Layout/SpaceBeforeBrackets: # new in 1.7
  Enabled: true
Lint/AmbiguousAssignment: # new in 1.7
  Enabled: true
Lint/AmbiguousOperatorPrecedence: # new in 1.21
  Enabled: true
Lint/AmbiguousRange: # new in 1.19
  Enabled: true
Lint/ConstantOverwrittenInRescue: # new in 1.31
  Enabled: true
Lint/DeprecatedConstants: # new in 1.8
  Enabled: true
Lint/DuplicateBranch: # new in 1.3
  Enabled: true
Lint/DuplicateMagicComment: # new in 1.37
  Enabled: true
Lint/DuplicateMatchPattern: # new in 1.50
  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/EmptyInPattern: # new in 1.16
  Enabled: true
Lint/IncompatibleIoSelectWithFiberScheduler: # new in 1.21
  Enabled: true
Lint/LambdaWithoutLiteralBlock: # new in 1.8
  Enabled: true
Lint/MixedCaseRange: # new in 1.53
  Enabled: true
Lint/NoReturnInBeginEndBlocks: # new in 1.2
  Enabled: true
Lint/NonAtomicFileOperation: # new in 1.31
  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/RedundantRegexpQuantifiers: # new in 1.53
  Enabled: true
Lint/RefinementImportMethods: # new in 1.27
  Enabled: true
Lint/RequireRangeParentheses: # new in 1.32
  Enabled: true
Lint/RequireRelativeSelfPath: # new in 1.22
  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
Lint/UselessRescue: # new in 1.43
  Enabled: true
Lint/UselessRuby2Keywords: # new in 1.23
  Enabled: true
Metrics/CollectionLiteralLength: # new in 1.47
  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/ArgumentsForwarding: # new in 1.1
  Enabled: true
Style/ArrayIntersect: # new in 1.40
  Enabled: false
Style/CollectionCompact: # new in 1.2
  Enabled: true
Style/ComparableClamp: # new in 1.44
  Enabled: true
Style/ConcatArrayLiterals: # new in 1.41
  Enabled: true
Style/DataInheritance: # new in 1.49
  Enabled: true
Style/DirEmpty: # new in 1.48
  Enabled: true
Style/DocumentDynamicEvalDefinition: # new in 1.1
  Enabled: true
Style/EmptyHeredoc: # new in 1.32
  Enabled: true
Style/EndlessMethod: # new in 1.8
  Enabled: true
Style/EnvHome: # new in 1.29
  Enabled: true
Style/ExactRegexpMatch: # new in 1.51
  Enabled: true
Style/FetchEnvVar: # new in 1.28
  Enabled: true
Style/FileEmpty: # new in 1.48
  Enabled: true
Style/FileRead: # new in 1.24
  Enabled: true
Style/FileWrite: # new in 1.24
  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/InPatternThen: # new in 1.16
  Enabled: true
Style/MagicCommentFormat: # new in 1.35
  Enabled: true
Style/MapCompactWithConditionalBlock: # new in 1.30
  Enabled: true
Style/MapToHash: # new in 1.24
  Enabled: true
Style/MapToSet: # new in 1.42
  Enabled: true
Style/MinMaxComparison: # new in 1.42
  Enabled: true
Style/MultilineInPatternThen: # new in 1.16
  Enabled: true
Style/NegatedIfElseCondition: # new in 1.2
  Enabled: true
Style/NestedFileDirname: # new in 1.26
  Enabled: true
Style/NilLambda: # new in 1.3
  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/OperatorMethodCall: # new in 1.37
  Enabled: true
Style/QuotedSymbols: # new in 1.16
  Enabled: true
Style/RedundantArgument: # new in 1.4
  Enabled: true
Style/RedundantArrayConstructor: # new in 1.52
  Enabled: true
Style/RedundantConstantBase: # new in 1.40
  Enabled: true
Style/RedundantCurrentDirectoryInPath: # new in 1.53
  Enabled: true
Style/RedundantDoubleSplatHashBraces: # new in 1.41
  Enabled: true
Style/RedundantEach: # new in 1.38
  Enabled: true
Style/RedundantFilterChain: # new in 1.52
  Enabled: true
Style/RedundantHeredocDelimiterQuotes: # new in 1.45
  Enabled: true
Style/RedundantInitialize: # new in 1.27
  Enabled: true
Style/RedundantLineContinuation: # new in 1.49
  Enabled: true
Style/RedundantRegexpArgument: # new in 1.53
  Enabled: true
Style/RedundantRegexpConstructor: # new in 1.52
  Enabled: true
Style/RedundantSelfAssignmentBranch: # new in 1.19
  Enabled: true
Style/RedundantStringEscape: # new in 1.37
  Enabled: true
Style/ReturnNilInPredicateMethodDefinition: # new in 1.53
  Enabled: true
Style/SelectByRegexp: # new in 1.22
  Enabled: true
Style/StringChars: # new in 1.12
  Enabled: true
Style/SwapValues: # new in 1.1
  Enabled: true
Style/YAMLFileRead: # new in 1.53
  Enabled: true
Performance/AncestorsInclude: # new in 1.7
  Enabled: true
Performance/BigDecimalWithNumericArgument: # new in 1.7
  Enabled: true
Performance/BlockGivenWithExplicitBlock: # new in 1.9
  Enabled: true
Performance/CollectionLiteralInLoop: # new in 1.8
  Enabled: true
Performance/ConcurrentMonotonicTime: # new in 1.12
  Enabled: true
Performance/ConstantRegexp: # new in 1.9
  Enabled: true
Performance/MapCompact: # new in 1.11
  Enabled: true
Performance/MapMethodChain: # new in 1.19
  Enabled: true
Performance/MethodObjectAsBlock: # new in 1.9
  Enabled: true
Performance/RedundantEqualityComparisonBlock: # new in 1.10
  Enabled: true
Performance/RedundantSortBlock: # new in 1.7
  Enabled: true
Performance/RedundantSplitRegexpArgument: # new in 1.10
  Enabled: true
Performance/RedundantStringChars: # new in 1.7
  Enabled: true
Performance/ReverseFirst: # new in 1.7
  Enabled: true
Performance/SortReverse: # new in 1.7
  Enabled: true
Performance/Squeeze: # new in 1.7
  Enabled: true
Performance/StringIdentifierArgument: # new in 1.13
  Enabled: true
Performance/StringInclude: # new in 1.7
  Enabled: true
Performance/Sum: # new in 1.8
  Enabled: true
Capybara/ClickLinkOrButtonStyle: # new in 2.19
  Enabled: true
  EnforcedStyle: strict
Capybara/MatchStyle: # new in 2.17
  Enabled: true
Capybara/NegationMatcher: # new in 2.14
  Enabled: true
Capybara/SpecificActions: # new in 2.14
  Enabled: true
Capybara/SpecificFinders: # new in 2.13
  Enabled: true
Capybara/SpecificMatcher: # new in 2.12
  Enabled: false
Capybara/RSpec/HaveSelector: # new in 2.19
  Enabled: true
Capybara/RSpec/PredicateMatcher: # new in 2.19
  Enabled: true
FactoryBot/AssociationStyle: # new in 2.23
  Enabled: true
FactoryBot/ConsistentParenthesesStyle: # new in 2.14
  Enabled: true
FactoryBot/FactoryAssociationWithStrategy: # new in 2.23
  Enabled: true
FactoryBot/FactoryNameStyle: # new in 2.16
  Enabled: true
FactoryBot/IdSequence: # new in <<next>>
  Enabled: true
FactoryBot/RedundantFactoryOption: # new in 2.23
  Enabled: true
FactoryBot/SyntaxMethods: # new in 2.7
  Enabled: true
RSpec/BeEmpty: # new in 2.20
  Enabled: true
RSpec/BeEq: # new in 2.9.0
  Enabled: true
RSpec/BeNil: # new in 2.9.0
  Enabled: true
RSpec/ChangeByZero: # new in 2.11
  Enabled: true
RSpec/ContainExactly: # new in 2.19
  Enabled: true
RSpec/DuplicatedMetadata: # new in 2.16
  Enabled: true
RSpec/EmptyMetadata: # new in 2.24
  Enabled: true
RSpec/Eq: # new in 2.24
  Enabled: true
RSpec/ExcessiveDocstringSpacing: # new in 2.5
  Enabled: true
RSpec/IdenticalEqualityAssertion: # new in 2.4
  Enabled: true
RSpec/IndexedLet: # new in 2.20
  Enabled: false
RSpec/MatchArray: # new in 2.19
  Enabled: true
RSpec/MetadataStyle: # new in 2.24
  Enabled: true
RSpec/NoExpectationExample: # new in 2.13
  Enabled: true
RSpec/PendingWithoutReason: # new in 2.16
  Enabled: true
RSpec/ReceiveMessages: # new in 2.23
  Enabled: true
RSpec/RedundantAround: # new in 2.19
  Enabled: true
RSpec/SkipBlockInsideExample: # new in 2.19
  Enabled: true
RSpec/SortMetadata: # new in 2.14
  Enabled: true
RSpec/SpecFilePathFormat: # new in 2.24
  Enabled: true
RSpec/SpecFilePathSuffix: # new in 2.24
  Enabled: true
RSpec/SubjectDeclaration: # new in 2.5
  Enabled: true
RSpec/VerifiedDoubleReference: # new in 2.10.0
  Enabled: true
RSpecRails/AvoidSetupHook: # new in 2.4
  Enabled: true
RSpecRails/HaveHttpStatus: # new in 2.12
  Enabled: true
RSpecRails/InferredSpecType: # new in 2.14
  Enabled: true
RSpecRails/MinitestAssertions: # new in 2.17
  Enabled: true
RSpecRails/NegationBeValid: # new in 2.23
  Enabled: true
RSpecRails/TravelAround: # new in 2.19
  Enabled: true
Rails/ActionControllerTestCase: # new in 2.14
  Enabled: true
Rails/ActionOrder: # new in 2.17
  Enabled: true
Rails/ActiveRecordCallbacksOrder: # new in 2.7
  Enabled: true
Rails/ActiveSupportOnLoad: # new in 2.16
  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/DangerousColumnNames: # new in 2.21
  Enabled: true
Rails/DeprecatedActiveModelErrorsMethods: # new in 2.14
  Enabled: true
Rails/DotSeparatedKeys: # new in 2.15
  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/FreezeTime: # new in 2.16
  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: false
Rails/IgnoredColumnsAssignment: # new in 2.17
  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/RedundantActiveRecordAllMethod: # new in 2.21
  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/ResponseParsedBody: # new in 2.18
  Enabled: true
Rails/RootJoinChain: # new in 2.13
  Enabled: true
Rails/RootPathnameMethods: # new in 2.16
  Enabled: true
Rails/RootPublicPath: # new in 2.15
  Enabled: true
Rails/ShortI18n: # new in 2.7
  Enabled: true
Rails/SquishedSQLHeredocs: # new in 2.8
  Enabled: true
Rails/StripHeredoc: # new in 2.15
  Enabled: true
Rails/ThreeStateBooleanColumn: # new in 2.19
  Enabled: true
Rails/TimeZoneAssignment: # new in 2.10
  Enabled: true
Rails/ToFormattedS: # new in 2.15
  Enabled: true
Rails/ToSWithArgument: # new in 2.16
  Enabled: true
Rails/TopLevelHashWithIndifferentAccess: # new in 2.16
  Enabled: true
Rails/TransactionExitStatement: # new in 2.14
  Enabled: true
Rails/UnusedIgnoredColumns: # new in 2.11
  Enabled: true
Rails/UnusedRenderContent: # new in 2.21
  Enabled: true
Rails/WhereEquals: # new in 2.9
  Enabled: true
Rails/WhereExists: # new in 2.7
  Enabled: true
Rails/WhereMissing: # new in 2.16
  Enabled: true
Rails/WhereNot: # new in 2.8
  Enabled: true
Rails/WhereNotWithMultipleConditions: # new in 2.17
  Enabled: true

Lint/ItWithoutArgumentsInBlock: # new in 1.59
  Enabled: true
Lint/LiteralAssignmentInCondition: # new in 1.58
  Enabled: true
Style/SingleLineDoEndBlock: # new in 1.57
  Enabled: true
Style/SuperWithArgsParentheses: # new in 1.58
  Enabled: true
Rails/EnvLocal: # new in 2.22
  Enabled: true
Capybara/RedundantWithinFind: # new in 2.20
  Enabled: true
FactoryBot/ExcessiveCreateList: # new in 2.25
  Enabled: true
RSpec/RedundantPredicateMatcher: # new in 2.26
  Enabled: true
RSpec/RemoveConst: # new in 2.26
  Enabled: true

RSpec/IsExpectedSpecify: # new in 2.27
  Enabled: true
RSpec/RepeatedSubjectCall: # new in 2.27
  Enabled: true
Style/MapIntoArray: # new in 1.63
  Enabled: true
Rails/WhereRange: # new in 2.25
  Enabled: true
RSpec/EmptyOutput: # new in 2.29
  Enabled: true
RSpec/UndescriptiveLiteralsDescription: # new in 2.29
  Enabled: true
Gemspec/AddRuntimeDependency: # new in 1.65
  Enabled: true
Style/SendWithLiteralMethodName: # new in 1.64
  Enabled: true
Style/SuperArguments: # new in 1.64
  Enabled: true