projectblacklight/blacklight

View on GitHub
.rubocop.yml

Summary

Maintainability
Test Coverage
require:
  - rubocop-capybara
  - rubocop-rspec
  - rubocop-rails

inherit_from:
  - .rubocop_todo.yml

AllCops:
  DisplayCopNames: true
  TargetRubyVersion: 2.7
  TargetRailsVersion: 6.1
  Exclude:
  - "lib/generators/blacklight/templates/**/*"
  - "blacklight.gemspec"


Lint/UselessAssignment:
  Exclude:
    - app/presenters/blacklight/facet_item_pivot_presenter.rb # https://github.com/rubocop/rubocop/issues/11124


# engine_cart block includes conditional, not duplication
Bundler/DuplicatedGem:
  Exclude:
  - 'Gemfile'

# engine_cart block is following default Rails order
Bundler/OrderedGems:
  Exclude:
  - 'Gemfile'

Layout/IndentationConsistency:
  EnforcedStyle: normal

Metrics/BlockLength:
  Exclude:
    - "app/views/catalog/index.json.jbuilder"
    - "app/views/catalog/_document.atom.builder"
    - "lib/railties/blacklight.rake"
    - "tasks/blacklight.rake"
    - "spec/**/*"

Metrics/ClassLength:
  Exclude:
    - "lib/blacklight/configuration.rb"
    - "lib/blacklight/search_builder.rb"
    - "lib/blacklight/search_state.rb"
    - "lib/blacklight/search_state/filter_field.rb"

Layout/LineLength:
  Max: 200
  Exclude:
    - 'spec/**/*'

Metrics/ModuleLength:
  Exclude:
    - 'app/controllers/concerns/blacklight/catalog.rb'
    - 'lib/blacklight/solr/search_builder_behavior.rb'
    - 'lib/blacklight/solr/response/facets.rb'

Metrics/AbcSize:
  Exclude:
    - "lib/blacklight/search_state/filter_field.rb"

Naming/HeredocDelimiterNaming:
  Enabled: false

Naming/MethodParameterName:
  AllowedNames:
    - id
    - q
    - as
    - of
    - by

Naming/PredicateName:
  ForbiddenPrefixes:
    - is_

Rails:
  Enabled: true

Rails/ApplicationMailer:
  Enabled: false

# https://github.com/rubocop-hq/rubocop/issues/6439
Style/AccessModifierDeclarations:
  Enabled: false

Style/MissingRespondToMissing:
  Exclude:
  - 'lib/blacklight/nested_open_struct_with_hash_access.rb'

Style/StringLiterals:
  Enabled: false

Style/MethodDefParentheses:
  Enabled: false

Layout/EmptyLinesAroundAttributeAccessor:
  Enabled: true

Layout/SpaceAroundMethodCallOperator:
  Enabled: true

Lint/DeprecatedOpenSSLConstant:
  Enabled: true

Lint/MixedRegexpCaptureTypes:
  Enabled: true

Lint/RaiseException:
  Enabled: true

Lint/StructNewOverride:
  Enabled: true

Style/ExponentialNotation:
  Enabled: true

Style/HashEachMethods:
  Enabled: true
  Exclude:
    - 'spec/services/blacklight/search_service_spec.rb'

Style/HashTransformKeys:
  Enabled: true

Style/HashTransformValues:
  Enabled: true

Style/RedundantRegexpCharacterClass:
  Enabled: true

Style/RedundantRegexpEscape:
  Enabled: true

Style/SlicingWithRange:
  Enabled: true

Rails/ContentTag:
  Enabled: false

Gemspec/DeprecatedAttributeAssignment: # new in 1.10
  Enabled: true
Gemspec/RequireMFA: # new in 1.23
  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/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/EmptyInPattern: # new in 1.16
  Enabled: true
Lint/IncompatibleIoSelectWithFiberScheduler: # new in 1.21
  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/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/UselessRuby2Keywords: # new in 1.23
  Enabled: true
Security/IoMethods: # new in 1.22
  Enabled: true
Style/ArgumentsForwarding: # new in 1.1
  Enabled: true
  Exclude:
    # This cop includes some checks specific to Ruby 3.2
    - 'lib/blacklight/solr/response/group_response.rb'
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/InPatternThen: # new in 1.16
  Enabled: true
Style/MultilineInPatternThen: # new in 1.16
  Enabled: true
Style/NegatedIfElseCondition: # new in 1.2
  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/OpenStructUse: # new in 1.23
  Enabled: true
Style/QuotedSymbols: # new in 1.16
  Enabled: true
Style/RedundantArgument: # new in 1.4
  Enabled: true
Style/RedundantSelfAssignmentBranch: # new in 1.19
  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
RSpec/DescribeClass:
  Exclude:
    - 'spec/lib/tasks/blacklight_task_spec.rb'
    - 'spec/features/**/*'
    - 'spec/requests/**/*'
    - 'spec/routing/**/*'
    - 'spec/views/**/*'
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/Rails/AvoidSetupHook: # new in 2.4
  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/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/RedundantTravelBack: # new in 2.12
  Enabled: true
Rails/RenderInline: # new in 2.7
  Enabled: true
Rails/RenderPlainText: # new in 2.7
  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
Lint/RefinementImportMethods: # new in 1.27
  Enabled: true
Naming/BlockForwarding: # new in 1.24
  Enabled: true
Style/FileRead: # new in 1.24
  Enabled: true
Style/FileWrite: # new in 1.24
  Enabled: true
Style/MapToHash: # new in 1.24
  Enabled: true
Style/NestedFileDirname: # new in 1.26
  Enabled: true
Style/RedundantInitialize: # new in 1.27
  Enabled: true
RSpec/BeEq: # new in 2.9.0
  Enabled: true
RSpec/BeNil: # new in 2.9.0
  Enabled: true
RSpec/FactoryBot/SyntaxMethods: # new in 2.7
  Enabled: true
Rails/ActionControllerTestCase: # new in 2.14
  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/I18nLazyLookup: # new in 2.14
  Enabled: true
Rails/I18nLocaleTexts: # new in 2.14
  Enabled: true
Rails/MigrationClassName: # new in 2.14
  Enabled: true
Rails/RedundantPresenceValidationOnBelongsTo: # new in 2.13
  Enabled: true
Rails/RootJoinChain: # new in 2.13
  Enabled: true
Rails/TransactionExitStatement: # new in 2.14
  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
Security/CompoundHash: # new in 1.28
  Enabled: true
Style/EnvHome: # new in 1.29
  Enabled: true
Style/FetchEnvVar: # new in 1.28
  Enabled: true
Style/MapCompactWithConditionalBlock: # new in 1.30
  Enabled: true
Style/ObjectThen: # new in 1.28
  Enabled: true
RSpec/ChangeByZero: # new in 2.11.0
  Enabled: true
RSpec/VerifiedDoubleReference: # new in 2.10.0
  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