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