35 Star 156 Fork 1

Gitee 极速下载/gitlabhq

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
此仓库是为了提升国内下载速度的镜像仓库,每日同步一次。 原始仓库: https://github.com/gitlabhq/gitlabhq
克隆/下载
.rubocop.yml 33.24 KB
一键复制 编辑 原始数据 按行查看 历史
GitLab Bot 提交于 2025-08-13 02:15 +08:00 . Add latest changes from gitlab-org/gitlab@master
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432
inherit_gem:
gitlab-styles:
- rubocop-default.yml
require:
- ./rubocop/rubocop
- rubocop-rspec
# Always load these cop even if disabled by default so RuboCop knows about rules in TODOs.
- rubocop/cop/internal_affairs
inherit_from:
<% unless ENV['REVEAL_RUBOCOP_TODO'] == '1' %>
<% Dir.glob('.rubocop_todo/**/*.yml').each do |rubocop_todo_yaml| %>
- '<%= rubocop_todo_yaml %>'
<% end %>
<% end %>
- ./rubocop/rubocop-migrations.yml
- ./rubocop/rubocop-usage-data.yml
- ./rubocop/rubocop-code_reuse.yml
<% Dir.glob('jh/rubocop/**/*.yml').each do |jh_rubocop_yaml| %>
- '<%= jh_rubocop_yaml %>'
<% end %>
inherit_mode:
merge:
- Include
- Exclude
- AllowedPatterns
AllCops:
# The oldest supported Ruby version.
TargetRubyVersion: 3.2
TargetRailsVersion: 7.0
DefaultFormatter: <%= ENV['CI'] == '1' ? 'clang' : 'progress' %>
Exclude:
- 'gems/**/*'
- 'qa/gems/**/*'
- 'vendor/**/*'
- 'node_modules/**/*'
- 'db/fixtures/**/*'
- 'tmp/**/*'
- 'bin/**/*'
- 'generator_templates/**/*'
- 'builds/**/*'
- 'file_hooks/**/*'
- 'workhorse/**/*'
- 'shared/packages/**/*'
- 'spec/support/*.git/**/*' # e.g. spec/support/gitlab-git-test.git
# projects_controller.rb is used for testing LLM response and is very sensitive to whitespaces.
- 'ee/spec/fixtures/llm/projects_controller.rb'
# Use absolute path to avoid orphan directories with changed workspace root.
CacheRootDirectory: <%= Dir.getwd %>/tmp
MaxFilesInCache: 1_000_000
NewCops: disable
SuggestExtensions: false
Rails:
Exclude:
# User defined excludes on top (department) level don't cancel default
# includes set by child cops. Directories below are not affected (tested
# manually). Watch https://github.com/rubocop/rubocop/issues/11148 to
# know when this comment can be removed.
- 'danger/**/*'
- 'tooling/danger/**/*'
- 'rubocop/**/*'
Rails/Date:
Exclude:
# See https://gitlab.com/gitlab-org/gitlab/-/issues/502580
- danger/database/Dangerfile
Rails/Pluck:
Exclude:
# See https://gitlab.com/gitlab-org/gitlab/-/issues/502580
- 'tooling/danger/**/*'
# See https://gitlab.com/gitlab-org/gitlab/-/merge_requests/94047#note_1179689274
AutoCorrect: false
# Disabled by default and enabled via `.rubocop/internal_affairs.yml`.
InternalAffairs:
Enabled: false
RSpec:
Language:
Includes:
Examples:
- run_permission_checks
- run_group_permission_checks
- it_should_email!
- it_should_not_email!
Metrics/ParameterLists:
Exclude:
# See https://gitlab.com/gitlab-org/gitlab/-/issues/356771
- 'app/components/**/*'
Cop/AvoidKeywordArgumentsInSidekiqWorkers:
Enabled: true
Include:
- 'app/workers/**/*'
- 'ee/app/workers/**/*'
Cop/StaticTranslationDefinition:
Enabled: true
Exclude:
- 'spec/**/*'
- 'ee/spec/**/*'
InternalAffairs/DeprecateCopHelper:
Enabled: true
Include:
- spec/rubocop/**/*.rb
Layout/LineLength:
AllowedPatterns: ['^RSpec\.describe\s.*\sdo']
Exclude:
- 'ee/spec/controllers/concerns/routable_actions_spec.rb'
- 'ee/spec/lib/gitlab/auth/group_saml/sso_enforcer_spec.rb'
Lint/Debugger:
DebuggerMethods:
PryShell:
binding.pry_shell
Lint/EmptyFile:
Exclude:
- 'db/seeds.rb'
- 'ee/db/embedding/seeds.rb'
- 'ee/db/geo/seeds.rb'
# This file has a lot of these, and how we name classes here is essential for how we
# implement migration versions
Naming/ClassAndModuleCamelCase:
Exclude:
- 'lib/gitlab/database/migration.rb'
# This cop checks whether some constant value isn't a
# mutable literal (e.g. array or hash).
Style/MutableConstant:
Exclude:
- 'db/migrate/**/*'
- 'db/post_migrate/**/*'
- 'ee/db/migrate/**/*'
- 'ee/db/post_migrate/**/*'
- 'ee/db/geo/migrate/**/*'
# TODO: Move this to gitlab-styles
Style/SafeNavigation:
Enabled: false
Style/AccessModifierDeclarations:
AllowModifiersOnSymbols: true
# Frozen String Literal
Style/FrozenStringLiteralComment:
Enabled: true
EnforcedStyle: always_true
Style/SpecialGlobalVars:
EnforcedStyle: use_builtin_english_names
Style/SignalException:
Exclude:
# Danger defines its own `fail` method
- '**/*/Dangerfile'
- 'tooling/danger/**/*.rb'
RSpec/SpecFilePathFormat:
Exclude:
- 'qa/**/*'
- 'spec/frontend/fixtures/*'
- 'ee/spec/frontend/fixtures/*'
- 'spec/requests/api/v3/*'
- 'spec/fixtures/**/*'
CustomTransform:
HTTPartyBasicAuth: httparty_basic_auth
RSpec/SpecFilePathSuffix:
Exclude:
- 'qa/**/*'
- 'spec/frontend/fixtures/*'
- 'ee/spec/frontend/fixtures/*'
- 'spec/requests/api/v3/*'
- 'spec/fixtures/**/*'
# Configuration parameters: AllowSubject.
RSpec/MultipleMemoizedHelpers:
Max: 25
AllowSubject: true
Capybara/TestidFinders:
Include:
- 'spec/features/**/*'
- 'ee/spec/features/**/*'
Naming/FileName:
ExpectMatchingDefinition: true
CheckDefinitionPathHierarchy: false
Exclude:
- '**/*/*.builder'
- 'ee/bin/*'
- 'config.ru'
- 'config/**/*'
- 'ee/config/**/*'
- 'jh/config/**/*'
- 'db/**/*'
- 'ee/db/**/*'
- 'ee/elastic/migrate/*'
- 'lib/tasks/**/*.rake'
- 'ee/lib/tasks/**/*.rake'
- 'lib/generators/**/*'
- 'ee/lib/generators/**/*'
- 'scripts/**/*'
- 'spec/**/*'
- 'tooling/bin/**/*'
- 'ee/spec/**/*'
- 'jh/spec/**/*'
- 'qa/bin/*'
- 'qa/spec/**/*'
- 'qa/qa/factories/**/*'
- 'qa/qa/ee/factories/**/*'
- 'qa/qa/specs/**/*'
- 'qa/tasks/**/*.rake'
- '**/*.ru'
IgnoreExecutableScripts: true
AllowedAcronyms:
- EE
- JSON
- LDAP
- SAML
- SSO
- IO
- HMAC
- QA
- ENV
- STL
- PDF
- SVG
- CTE
- DN
- RSA
- CI
- CD
- OAuth
- CSP
- CSV
- SCA
- SAN
- CIDR
- SPDX
- MR
- JWT
- HLL
- GPG
- OTP
- GID
- AR
- RSpec
- ECDSA
- ED25519
- GitLab
- JavaScript
- VSCode
- JetBrains
# default ones:
- CLI
- DSL
- ACL
- API
- ASCII
- CPU
- CSS
- DNS
- EOF
- GUID
- HTML
- HTTP
- HTTPS
- ID
- IP
- JSON
- LHS
- QPS
- RAM
- RHS
- RPC
- SLA
- SMTP
- SQL
- SSH
- TCP
- TLS
- TTL
- UDP
- UI
- UID
- UUID
- URI
- URL
- UTF8
- VM
- XML
- XMPP
- XSRF
- XSS
- GRPC
# Check for the use of before with let_it_be when using "add_role" methods
# e.g. add_guest, add_reporter, add_developer
RSpec/BeforeAllRoleAssignment:
Enabled: true
Rails/ApplicationRecord:
Enabled: true
Exclude:
# Models in database migrations should not subclass from ApplicationRecord
# as they need to be as decoupled from application code as possible
- db/**/*.rb
- lib/gitlab/background_migration/**/*.rb
- ee/lib/ee/gitlab/background_migration/**/*.rb
- lib/gitlab/database/**/*.rb
- spec/**/*.rb
- ee/db/**/*.rb
- ee/spec/**/*.rb
Rails/ActiveRecordCallbacksOrder:
Include:
- app/models/**/*.rb
- ee/app/models/**/*.rb
# We disable this since network latency isn't an issue and schema changes execute in a few milliseconds.
# See https://gitlab.com/gitlab-org/gitlab/-/merge_requests/136251#note_1638949892.
Rails/BulkChangeTable:
Enabled: false
Cop/DefaultScope:
Enabled: true
Rails/FindBy:
Enabled: true
Include:
- 'ee/app/**/*.rb'
- 'ee/lib/**/*.rb'
- 'spec/**/*.rb'
- 'ee/spec/**/*.rb'
Rails/InverseOf:
Include:
- app/models/**/*.rb
- ee/app/models/**/*.rb
Rails/MigrationTimestamp:
Enabled: true
Include:
- db/migrate/*.rb
- db/post_migrate/*.rb
- ee/db/geo/migrate/*.rb
- ee/db/geo/post_migrate/*.rb
# This is currently exiting with a rubocop exception error and should be
# resolved hopefully a future update
# An error occurred while Rails/UniqueValidationWithoutIndex cop was inspecting
# app/models/abuse_report.rb:15:2.
# To see the complete backtrace run rubocop -d.
Rails/UniqueValidationWithoutIndex:
Enabled: false
Rails/HelperInstanceVariable:
Include:
- app/helpers/**/*.rb
- ee/app/helpers/**/*.rb
Rails/MailerName:
Exclude:
# See for the context on why it's excluded https://gitlab.com/gitlab-org/gitlab/-/issues/239356#note_956419227
- 'app/mailers/notify.rb'
Rails/RakeEnvironment:
# Context on why it's disabled: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/93419#note_1048223982
Enabled: false
Rails/RenderInline:
Exclude:
- 'spec/**/*.rb'
- 'ee/spec/**/*.rb'
# See https://gitlab.com/gitlab-org/gitlab/-/merge_requests/94064#note_1157289970
Rails/SquishedSQLHeredocs:
Enabled: false
# See https://gitlab.com/gitlab-org/gitlab/-/merge_requests/96675#note_1094403693
Rails/WhereExists:
Enabled: false
# See https://gitlab.com/gitlab-org/gitlab/-/merge_requests/94061#note_1160343775
Rails/SkipsModelValidations:
Enabled: false
# See https://gitlab.com/gitlab-org/gitlab/-/issues/378105#note_1138487716
Rails/HasManyOrHasOneDependent:
Enabled: false
# See https://gitlab.com/gitlab-org/gitlab/-/merge_requests/94019#note_1139714728
Rails/CreateTableWithTimestamps:
Enabled: false
Rails/AvoidTimeComparison:
Enabled: true
# GitLab ###################################################################
Gitlab/ModuleWithInstanceVariables:
Enable: true
Exclude:
# We ignore Rails helpers right now because it's hard to workaround it
- app/helpers/**/*_helper.rb
- ee/app/helpers/**/*_helper.rb
# We ignore Rails mailers right now because it's hard to workaround it
- app/mailers/emails/**/*.rb
- ee/**/emails/**/*.rb
# We ignore spec helpers because it usually doesn't matter
- spec/support/**/*.rb
- features/steps/**/*.rb
Gitlab/ConstGetInheritFalse:
Enabled: true
Exclude:
- 'qa/bin/*'
Gitlab/ChangeTimezone:
Enabled: true
Exclude:
- config/initializers/time_zone.rb
Gitlab/HTTParty:
Enabled: true
Exclude:
- 'spec/**/*'
- 'ee/spec/**/*'
Gitlab/Json:
Enabled: true
Exclude:
- 'qa/**/*'
- 'scripts/**/*'
- 'lib/quality/**/*'
- 'tooling/danger/**/*'
Gitlab/AvoidUploadedFileFromParams:
Enabled: true
Exclude:
- 'lib/gitlab/middleware/multipart.rb'
- 'spec/**/*'
- 'ee/spec/**/*'
Gitlab/EventStoreSubscriber:
Enabled: true
Exclude:
- 'spec/**/*'
- 'ee/spec/**/*'
# See https://gitlab.com/gitlab-org/gitlab/-/issues/496562
Gitlab/Ai/OrderConstants:
Enabled: true
Include:
- 'ee/lib/ai/context/dependencies/config_files/constants.rb'
Gitlab/DocumentationLinks/HardcodedUrl:
Enabled: true
Exclude:
- danger/**/*
- ee/spec/**/*
- haml_lint/**/*
- keeps/**/*
- qa/**/*
- rubocop/**/*
- scripts/**/*
- spec/**/*
- tooling/**/*
Gitlab/DocumentationLinks/Link:
Enabled: true
GitlabSecurity/PublicSend:
Enabled: true
Exclude:
- 'config/**/*'
- 'db/**/*'
- 'features/**/*'
- 'lib/**/*.rake'
- 'qa/**/*'
- 'spec/**/*'
- 'ee/db/**/*'
- 'ee/lib/**/*.rake'
- 'ee/spec/**/*'
Gitlab/DeprecatedAuditEventService:
Enabled: true
Exclude:
- 'ee/app/services/ee/audit_event_service.rb'
- 'ee/app/services/ee/applications/create_service.rb'
- 'ee/app/services/audit_events/release_audit_event_service.rb'
- 'ee/app/services/ee/keys/create_service.rb'
- 'ee/app/services/ee/users/migrate_records_to_ghost_user_service.rb'
- 'ee/spec/features/admin/admin_audit_logs_spec.rb'
- 'ee/spec/controllers/groups/omniauth_callbacks_controller_spec.rb'
- 'ee/spec/services/audit_event_service_spec.rb'
- 'ee/lib/gitlab/auth/group_saml/membership_updater.rb'
- 'app/controllers/sessions_controller.rb'
- 'app/services/audit_event_service.rb'
- 'spec/services/audit_event_service_spec.rb'
Database/MultipleDatabases:
Enabled: true
Exclude:
- 'ee/db/**/*.rb'
- 'spec/migrations/**/*.rb'
- 'lib/tasks/gitlab/db.rake'
- 'ee/lib/ee/gitlab/background_migration/**/*.rb'
- 'spec/lib/gitlab/background_migration/**/*.rb'
- 'spec/lib/gitlab/database/**/*.rb'
- 'spec/tasks/gitlab/db_rake_spec.rb'
Migration/BatchMigrationsPostOnly:
Enabled: true
Include:
- 'db/migrate/*.rb'
- 'db/post_migrate/*.rb'
Migration/EnsureFactoryForTable:
Enabled: true
Include:
- 'db/migrate/*.rb'
Migration/UnfinishedDependencies:
Enabled: true
Include:
- 'db/migrate/*.rb'
- 'db/post_migrate/*.rb'
BackgroundMigration/FeatureCategory:
Enabled: true
Include:
- 'lib/gitlab/background_migration/*.rb'
BackgroundMigration/DictionaryFile:
Enabled: true
EnforcedSince: 20231018100907
Include:
- 'db/post_migrate/*.rb'
# See https://gitlab.com/gitlab-org/gitlab/-/issues/442751
Gitlab/AvoidCurrentOrganization:
Enabled: true
Exclude:
- 'app/controllers/**/*'
- 'ee/app/controllers/**/*'
- 'app/helpers/**/*'
- 'ee/app/helpers/**/*'
- 'app/views/**/*'
- 'ee/app/views/**/*'
- 'lib/api/**/*'
- 'ee/lib/api/**/*'
- 'app/graphql/**/*'
- 'ee/app/graphql/**/*'
- 'lib/gitlab/current_settings.rb'
- 'lib/gitlab/middleware/organizations/current.rb'
- 'spec/**/*'
- 'ee/spec/**/*'
Gitlab/DisallowCurrentOrganizationIdSafeNavigation:
Description: 'Use `Current.organization.id` instead of `Current.organization&.id`. `Current.organization` is expected to be assigned.'
Enabled: true
Include:
- 'app/**/*.rb'
- 'ee/app/**/*.rb'
- 'lib/**/*.rb'
- 'ee/lib/**/*.rb'
Exclude:
# Exclude the cop's own spec file to prevent self-reporting.
- 'spec/rubocop/cop/gitlab/disallow_current_organization_id_safe_navigation_spec.rb'
# See https://gitlab.com/groups/gitlab-org/-/epics/7374
Gitlab/AvoidGitlabInstanceChecks:
Enabled: true
Exclude:
- 'db/migrate/*.rb'
- 'db/post_migrate/*.rb'
- 'ee/db/fixtures/**/*'
Gitlab/EeOnlyClass:
Enabled: true
Include:
- 'ee/**/ee/**/*.rb'
Gitlab/RSpec/AvoidCreateDefaultOrganization:
Enabled: true
Include:
- 'spec/**/*.rb'
- 'ee/spec/**/*.rb'
# See https://gitlab.com/gitlab-org/gitlab/-/issues/373194
Gitlab/RSpec/AvoidSetup:
Enabled: true
Include:
- 'ee/spec/features/registrations/saas/**/*'
- 'ee/spec/features/gitlab_subscriptions/trials/creation_*'
- 'ee/spec/features/gitlab_subscriptions/trials/access_denied_spec.rb'
- 'ee/spec/features/gitlab_subscriptions/trials/duo_pro/**/*'
- 'ee/spec/features/gitlab_subscriptions/trials/duo_enterprise/**/*'
# WIP: See https://gitlab.com/gitlab-org/gitlab/-/issues/543719
Gitlab/RSpec/MisplacedEeSpecFile:
Enabled: true
Include:
- 'ee/spec/lib/**/*_spec.rb'
- 'ee/spec/components/**/*_spec.rb'
- 'ee/spec/controllers/**/*_spec.rb'
- 'ee/spec/experiments/**/*_spec.rb'
- 'ee/spec/finders/**/*_spec.rb'
- 'ee/spec/graphql/**/*_spec.rb'
- 'ee/spec/helpers/**/*_spec.rb'
- 'ee/spec/mailers/**/*_spec.rb'
- 'ee/spec/models/**/*_spec.rb'
- 'ee/spec/policies/**/*_spec.rb'
- 'ee/spec/presenters/**/*_spec.rb'
- 'ee/spec/serializers/**/*_spec.rb'
- 'ee/spec/services/**/*_spec.rb'
- 'ee/spec/validators/**/*_spec.rb'
- 'ee/spec/workers/**/*_spec.rb'
Exclude:
- 'ee/spec/**/ee/**/*_spec.rb'
- 'ee/spec/lib/remote_development/**/*_spec.rb'
RSpec/DuplicateSpecLocation:
Enabled: true
# https://docs.gitlab.com/ee/development/software_design.html#bounded-contexts
Gitlab/BoundedContexts:
Enabled: true
Exclude:
- '**/lib/api/**/*'
- 'ee/lib/ee/api/**/*'
- '**/app/assets/**/*'
- '**/app/channels/**/*'
- '**/app/components/**/*'
- '**/app/controllers/**/*'
- '**/app/helpers/**/*'
- '**/app/presenters/**/*'
- '**/app/serializers/**/*'
- '**/lib/tasks/**/*'
- '**/app/views/**/*'
- 'app/experiments/*_experiment.rb' # Experiments are short-lived. See https://gitlab.com/gitlab-org/gitlab/-/merge_requests/186484#note_2428354288
- 'ee/app/experiments/*_experiment.rb'
- 'ee/app/experiments/ee/application_experiment.rb'
Include:
- 'app/**/*'
- 'ee/app/**/*'
- 'lib/**/*'
- 'ee/lib/**/*'
Gitlab/HardDeleteCalls:
Enabled: true
Exclude:
- 'spec/**/*'
- 'ee/spec/**/*'
- 'ee/db/fixtures/**/*'
- 'lib/tasks/**/*.rake'
- 'ee/lib/tasks/**/*.rake'
- 'app/services/groups/destroy_service.rb'
- 'app/services/projects/destroy_service.rb'
- 'app/workers/group_destroy_worker.rb'
- 'app/workers/project_destroy_worker.rb'
- 'app/services/namespaces/groups/adjourned_deletion_service.rb'
- 'app/services/projects/adjourned_deletion_service.rb'
Gitlab/PolicyRuleBoolean:
Enabled: true
Include:
- 'app/policies/**/*'
- 'ee/app/policies/**/*'
Cop/InjectEnterpriseEditionModule:
Enabled: true
Exclude:
- 'spec/**/*'
- 'ee/spec/**/*'
Style/ReturnNil:
Enabled: true
Cop/ActiveRecordAssociationReload:
Enabled: true
Exclude:
- 'spec/**/*'
- 'ee/spec/**/*'
Cop/ActiveModelErrorsDirectManipulation:
Enabled: true
Gitlab/AvoidFeatureGet:
Enabled: true
Gitlab/FeatureFlagKeyDynamic:
Enabled: true
SafeAutoCorrect: false
RSpec/WebMockEnable:
Enabled: true
Include:
- 'spec/**/*.rb'
- 'ee/spec/**/*.rb'
Exclude:
- 'spec/support/webmock.rb'
Naming/PredicateName:
Enabled: true
Exclude:
- 'spec/**/*'
- 'ee/spec/**/*'
# See https://gitlab.com/gitlab-org/gitlab/-/merge_requests/93828#note_1050812797
Naming/RescuedExceptionsVariableName:
Enabled: false
RSpec/AvoidTestProf:
Include:
- 'spec/tasks/**/*.rb'
- 'ee/spec/tasks/**/*.rb'
- 'spec/migrations/**/*.rb'
- 'ee/spec/migrations/**/*.rb'
- 'spec/lib/gitlab/background_migration/**/*.rb'
- 'ee/spec/lib/gitlab/background_migration/**/*.rb'
- 'ee/spec/lib/ee/gitlab/background_migration/**/*.rb'
RSpec/AvoidConditionalStatements:
Enabled: true
Include:
- 'spec/features/**/*.rb'
- 'ee/spec/features/**/*.rb'
RSpec/FactoriesInMigrationSpecs:
Enabled: true
Include:
- 'spec/migrations/**/*.rb'
- 'ee/spec/migrations/**/*.rb'
- 'spec/lib/gitlab/background_migration/**/*.rb'
- 'spec/lib/ee/gitlab/background_migration/**/*.rb'
- 'ee/spec/lib/ee/gitlab/background_migration/**/*.rb'
RSpec/FeatureCategory:
Enabled: true
Exclude:
- 'qa/**/*.rb'
- 'gems/**/*.rb'
RSpec/FactoryBot/AvoidCreate:
Enabled: true
Include:
- 'spec/presenters/**/*.rb'
- 'spec/serializers/**/*.rb'
- 'spec/helpers/**/*.rb'
- 'spec/views/**/*.rb'
- 'spec/components/**/*.rb'
- 'spec/mailers/**/*.rb'
- 'spec/routes/directs/*.rb'
- 'spec/lib/sidebars/**/*.rb'
- 'ee/spec/presenters/**/*.rb'
- 'ee/spec/serializers/**/*.rb'
- 'ee/spec/helpers/**/*.rb'
- 'ee/spec/views/**/*.rb'
- 'ee/spec/components/**/*.rb'
- 'ee/spec/mailers/**/*.rb'
- 'ee/spec/routes/directs/*.rb'
- 'ee/spec/lib/sidebars/**/*.rb'
RSpec/BeforeAll:
Enabled: true
Include:
- 'spec/**/*.rb'
- 'ee/spec/**/*.rb'
# Conflict with RSpec/AvoidTestProf
Exclude:
- 'spec/tasks/**/*.rb'
- 'ee/spec/tasks/**/*.rb'
- 'spec/migrations/**/*.rb'
- 'ee/spec/migrations/**/*.rb'
- 'spec/lib/gitlab/background_migration/**/*.rb'
- 'ee/spec/lib/gitlab/background_migration/**/*.rb'
- 'ee/spec/lib/ee/gitlab/background_migration/**/*.rb'
- 'spec/lib/gitlab/database/**/*.rb'
RSpec/FactoryBot/StrategyInCallback:
Enabled: true
Include:
- 'spec/factories/**/*.rb'
- 'ee/spec/factories/**/*.rb'
Cop/IncludeSidekiqWorker:
Enabled: true
Exclude:
- 'spec/**/*'
- 'ee/spec/**/*'
Gitlab/Union:
Enabled: true
Exclude:
- 'spec/**/*'
- 'ee/spec/**/*'
API/Base:
Enabled: true
Include:
- 'lib/**/api/**/*.rb'
- 'ee/**/api/**/*.rb'
API/GrapeArrayMissingCoerce:
Enabled: true
Include:
- 'lib/**/api/**/*.rb'
- 'ee/**/api/**/*.rb'
API/ClassLevelAllowAccessWithScope:
Enabled: true
Include:
- 'lib/**/api/**/*.rb'
- 'ee/lib/**/api/**/*.rb'
Cop/SidekiqOptionsQueue:
Enabled: true
Exclude:
- 'spec/**/*.rb'
- 'ee/spec/**/*.rb'
Graphql/ResolverType:
Enabled: true
Exclude:
- 'app/graphql/resolvers/base_resolver.rb'
Include:
- 'app/graphql/resolvers/**/*'
- 'ee/app/graphql/resolvers/**/*'
Graphql/AuthorizeTypes:
Enabled: true
Include:
- 'app/graphql/types/**/*'
- 'ee/app/graphql/types/**/*'
Exclude:
- 'spec/**/*.rb'
- 'ee/spec/**/*.rb'
Graphql/IDType:
Enabled: true
Include:
- 'app/graphql/**/*'
- 'ee/app/graphql/**/*'
Graphql/JSONType:
Enabled: true
Include:
- 'app/graphql/**/*'
- 'ee/app/graphql/**/*'
Exclude:
- 'spec/**/*.rb'
- 'ee/spec/**/*.rb'
Graphql/OldTypes:
Enabled: true
Include:
- 'app/graphql/**/*'
- 'ee/app/graphql/**/*'
- 'spec/graphql/**/*'
- 'spec/requests/api/graphql/**/*'
- 'ee/spec/graphql/**/*'
- 'ee/spec/requests/api/graphql/**/*'
RSpec/EnvAssignment:
Enable: true
Include:
- 'spec/**/*.rb'
- 'ee/spec/**/*.rb'
Exclude:
- 'spec/**/fast_spec_helper.rb'
- 'ee/spec/**/fast_spec_helper.rb'
- 'spec/**/spec_helper.rb'
- 'ee/spec/**/spec_helper.rb'
RSpec/EnvMocking:
Enable: true
Include:
- 'spec/**/*.rb'
- 'ee/spec/**/*.rb'
Exclude:
- 'spec/**/fast_spec_helper.rb'
- 'ee/spec/**/fast_spec_helper.rb'
- 'spec/**/spec_helper.rb'
- 'ee/spec/**/spec_helper.rb'
RSpec/BeSuccessMatcher:
Enabled: true
Include:
- 'spec/controllers/**/*'
- 'ee/spec/controllers/**/*'
- 'spec/support/shared_examples/controllers/**/*'
- 'ee/spec/support/shared_examples/controllers/**/*'
- 'spec/support/controllers/**/*'
- 'ee/spec/support/controllers/**/*'
Scalability/FileUploads:
Enabled: true
Include:
- 'lib/api/**/*.rb'
- 'ee/lib/api/**/*.rb'
Graphql/Descriptions:
Enabled: true
AutoCorrect: true
Include:
- 'app/graphql/**/*'
- 'ee/app/graphql/**/*'
Graphql/EnumNames:
Enabled: true
Include:
- 'app/graphql/**/*'
- 'ee/app/graphql/**/*'
Graphql/EnumValues:
Enabled: true
Include:
- 'app/graphql/**/*'
- 'ee/app/graphql/**/*'
# Cops for upgrade to gitlab-styles 3.1.0
RSpec/ImplicitSubject:
Enabled: false
# Already covered by `RSpec::Configuration#on_potential_false_positives = :raise`.
# See https://gitlab.com/gitlab-org/gitlab/-/merge_requests/86429
RSpec/UnspecifiedException:
Enabled: false
RSpec/HaveGitlabHttpStatus:
Enabled: true
Exclude:
- 'spec/support/matchers/have_gitlab_http_status.rb'
Include:
- 'spec/**/*'
- 'ee/spec/**/*'
RSpec/ContextWording:
Prefixes:
- 'when'
- 'with'
- 'without'
- 'for'
- 'and'
- 'on'
- 'in'
- 'as'
- 'if'
Style/MultilineWhenThen:
Enabled: false
# We use EnforcedStyle of comparison here due to it being better
# performing code as seen in https://gitlab.com/gitlab-org/gitlab/-/merge_requests/36221#note_375659681
Style/NumericPredicate:
EnforcedStyle: comparison
Cop/BanCatchThrow:
Enabled: true
Performance/ReadlinesEach:
Enabled: true
Performance/ChainArrayAllocation:
Enabled: true
Include:
- 'lib/gitlab/import_export/**/*'
- 'ee/lib/gitlab/import_export/**/*'
- 'ee/lib/ee/gitlab/import_export/**/*'
Rails/TimeZone:
Enabled: true
EnforcedStyle: 'flexible'
Include:
- 'app/controllers/**/*'
- 'app/services/**/*'
- 'lib/**/*'
- 'spec/controllers/**/*'
- 'spec/services/**/*'
- 'spec/lib/**/*'
- 'ee/app/controllers/**/*'
- 'ee/app/services/**/*'
- 'ee/spec/controllers/**/*'
- 'ee/spec/services/**/*'
- 'app/models/**/*'
- 'spec/models/**/*'
- 'ee/app/models/**/*'
- 'ee/spec/models/**/*'
- 'app/workers/**/*'
- 'spec/workers/**/*'
- 'ee/app/workers/**/*'
- 'ee/spec/workers/**/*'
- 'ee/lib/**/*'
- 'ee/spec/lib/**/*'
- 'spec/features/**/*'
- 'ee/spec/features/**/*'
Rails/SaveBang:
Enabled: true
AllowImplicitReturn: false
AllowedReceivers:
- ActionDispatch::TestRequest
- Tempfile
Include:
- 'spec/**/*.rb'
- 'ee/spec/**/*.rb'
Exclude:
- spec/models/wiki_page/**/*
- spec/models/wiki_page_spec.rb
Cop/PutProjectRoutesUnderScope:
Include:
- 'config/routes/project.rb'
- 'ee/config/routes/project.rb'
Cop/PutGroupRoutesUnderScope:
Include:
- 'config/routes/group.rb'
- 'ee/config/routes/group.rb'
Mcp/UseApiService:
Enabled: true
Include:
- 'app/services/mcp/tools/*'
Migration/ComplexIndexesRequireName:
Exclude:
- !ruby/regexp /\Adb\/(post_)?migrate\/201.*\.rb\z/
- !ruby/regexp /\Adb\/(post_)?migrate\/20200[1-7].*\.rb\z/
Migration/ReferToIndexByName:
Exclude:
- !ruby/regexp /\Adb\/(post_)?migrate\/201.*\.rb\z/
- !ruby/regexp /\Adb\/(post_)?migrate\/20200[1-7].*\.rb\z/
- !ruby/regexp /\Aee\/db\/geo\/(post_)?migrate\/201.*\.rb\z/
Migration/PreventIndexCreation:
Exclude:
- !ruby/regexp /\Adb\/(post_)?migrate\/201.*\.rb\z/
- !ruby/regexp /\Adb\/(post_)?migrate\/2020.*\.rb\z/
- !ruby/regexp /\Adb\/(post_)?migrate\/20210[1-6].*\.rb\z/
Migration/SchemaAdditionMethodsNoPost:
Enabled: true
Include:
- db/post_migrate/*.rb
EnforcedSince: 20221024034228
Migration/AsyncPostMigrateOnly:
Enabled: true
Include:
- db/**/*.rb
EnforcedSince: 20240115115029
Gitlab/RailsLogger:
Exclude:
- 'spec/**/*.rb'
- 'ee/spec/**/*.rb'
RSpec/FactoryBot/InlineAssociation:
Include:
- 'spec/factories/**/*.rb'
- 'ee/spec/factories/**/*.rb'
# WIP: https://gitlab.com/gitlab-org/gitlab/-/issues/321982
Gitlab/NamespacedClass:
Exclude:
- 'config/**/*.rb'
- 'db/**/*.rb'
- 'ee/bin/**/*'
- 'ee/db/**/*.rb'
- 'ee/elastic/**/*.rb'
- 'scripts/**/*'
- 'spec/fixtures/migrations/**/*.rb'
- 'spec/migrations/**/*.rb'
- 'app/experiments/**/*_experiment.rb'
- 'ee/app/experiments/**/*_experiment.rb'
Lint/HashCompareByIdentity:
Enabled: true
Lint/RedundantSafeNavigation:
Enabled: true
Style/ClassEqualityComparison:
Enabled: true
# WIP See https://gitlab.com/gitlab-org/gitlab/-/issues/207950
Cop/UserAdmin:
Enabled: true
Exclude:
- 'app/controllers/admin/sessions_controller.rb'
- 'app/controllers/concerns/enforces_admin_authentication.rb'
- 'app/policies/base_policy.rb'
- 'lib/gitlab/auth/current_user_mode.rb'
- 'spec/**/*.rb'
- 'ee/spec/**/*.rb'
- 'qa/**/*.rb'
Style/InlineDisableAnnotation:
Enabled: true
# See https://gitlab.com/gitlab-org/gitlab/-/issues/327495
Style/RegexpLiteral:
Enabled: false
Style/RegexpLiteralMixedPreserve:
Enabled: true
SupportedStyles:
- slashes
- percent_r
- mixed
- mixed_preserve
EnforcedStyle: mixed_preserve
# See https://gitlab.com/gitlab-org/gitlab/-/merge_requests/94317#note_1139610896
Style/Lambda:
EnforcedStyle: literal
RSpec/TopLevelDescribePath:
Exclude:
- 'spec/fixtures/**/*.rb'
- 'ee/spec/fixtures/**/*.rb'
QA/SelectorUsage:
Enabled: true
Include:
- 'spec/**/*.rb'
- 'ee/spec/**/*.rb'
Exclude:
- 'spec/rubocop/**/*_spec.rb'
QA/FeatureFlags:
Enabled: true
Include:
- 'qa/qa/specs/features/**/*.rb'
Performance/ActiveRecordSubtransactions:
Exclude:
- 'spec/**/*.rb'
- 'ee/spec/**/*.rb'
Performance/ActiveRecordSubtransactionMethods:
Exclude:
- 'spec/**/*.rb'
- 'ee/spec/**/*.rb'
Migration/BatchedMigrationBaseClass:
Enabled: false
BackgroundMigration/AvoidSilentRescueExceptions:
Enabled: false
Migration/AvoidFinalizeBackgroundMigration:
Include:
- 'db/post_migrate/*.rb'
Style/ClassAndModuleChildren:
Enabled: true
Fips/OpenSSL:
Enabled: false
Gemfile/MissingFeatureCategory:
Enabled: true
Include:
- 'Gemfile'
Gemspec/AvoidExecutingGit:
Enabled: false
Lint/BinaryOperatorWithIdenticalOperands:
Exclude:
- '{,ee/,qa/,jh/}spec/**/*_{spec,shared_examples,shared_context}.rb'
Cop/SidekiqRedisCall:
Enabled: true
Exclude:
- '{,ee/,jh/}spec/**/*'
- 'lib/gitlab/database/migration_helpers.rb'
- 'lib/gitlab/sidekiq_migrate_jobs.rb'
- 'lib/gitlab/sidekiq_versioning.rb'
Cop/RedisQueueUsage:
Enabled: true
Exclude:
- '{,ee/,jh/}spec/**/*'
- 'config/initializers/sidekiq.rb'
- 'lib/gitlab/instrumentation/redis.rb'
- 'lib/gitlab/redis.rb'
- 'lib/system_check/app/redis_version_check.rb'
- 'lib/gitlab/mail_room.rb'
- 'lib/gitlab/sidekiq_sharding/scheduled_enq.rb'
- 'lib/gitlab/sidekiq_sharding/router.rb'
- 'app/workers/concerns/application_worker.rb'
- 'lib/gitlab/sidekiq_queue.rb'
Cop/SidekiqApiUsage:
Enabled: true
Exclude:
- '{,ee/,jh/}spec/**/*'
- 'db/post_migrate/**/*'
- 'lib/gitlab/sidekiq_middleware/**/*'
- 'lib/gitlab/background_migration/**/*'
- 'lib/api/sidekiq_metrics.rb'
- 'lib/gitlab/sidekiq_config.rb'
- 'lib/gitlab/sidekiq_queue.rb'
- 'config/initializers/sidekiq.rb'
- 'config/initializers/forbid_sidekiq_in_transactions.rb'
- 'lib/gitlab/sidekiq_sharding/scheduled_enq.rb'
- 'lib/gitlab/sidekiq_sharding/router.rb'
- 'lib/gitlab/redis/queues.rb'
- 'app/workers/concerns/application_worker.rb'
- 'config/initializers/active_job_shard_support.rb'
Cop/FeatureFlagUsage:
Include:
- 'lib/gitlab/redis/**/*.rb'
- 'lib/gitlab/patch/**/*.rb'
- 'lib/gitlab/instrumentation/**/*.rb'
Style/ArgumentsForwarding:
Enabled: true
UseAnonymousForwarding: false # Turn this on only after Ruby 3.2+ is required
Search/NamespacedClass:
Enabled: true
Exclude:
- 'config/**/*.rb'
- 'ee/config/**/*.rb'
- 'db/**/*.rb'
- 'ee/db/**/*.rb'
- 'ee/bin/**/*'
- 'ee/elastic/**/*.rb' # Advanced Search migrations issue: <>
- 'scripts/**/*'
- 'spec/migrations/**/*.rb'
- 'app/experiments/**/*_experiment.rb'
- 'ee/app/experiments/**/*_experiment.rb'
- 'lib/gitlab/background_migration/**/*.rb'
- 'ee/lib/ee/gitlab/background_migration/**/*.rb'
- 'lib/gitlab/instrumentation/**/*.rb'
- 'lib/gitlab/usage/metrics/instrumentations/**/*.rb'
- 'ee/lib/gitlab/usage/metrics/instrumentations/**/*.rb'
- 'lib/gitlab/sidekiq_middleware/pause_control/strategies/zoekt.rb'
- 'lib/tasks/**/*.rake'
- 'ee/lib/tasks/**/*.rake'
SidekiqLoadBalancing/WorkerDataConsistency:
Enabled: true
Include:
- 'app/workers/**/*'
- 'ee/app/workers/**/*'
Sidekiq/EnforceDatabaseHealthSignalDeferral:
Enabled: true
Include:
- 'app/workers/**/*'
- 'ee/app/workers/**/*'
Graphql/ResourceNotAvailableError:
Exclude:
# Definition of `raise_resource_not_available_error!`
- 'lib/gitlab/graphql/authorize/authorize_resource.rb'
RSpec/FactoryBot/LocalStaticAssignment:
Include:
- spec/factories/**/*.rb
- ee/spec/factories/**/*.rb
Rails/TransactionExitStatement:
Enabled: true
Search/AvoidCheckingFinishedOnInvalidMigrations:
Include:
- 'ee/**/*.rb'
# See https://gitlab.com/gitlab-org/gitlab/-/issues/407233
Cop/ExperimentsTestCoverage:
Enabled: true
Include:
- 'app/**/*'
- 'lib/**/*'
- 'ee/app/**/*'
- 'ee/lib/**/*'
RSpec/UselessDynamicDefinition:
Exclude:
- 'spec/factories/**/*'
- 'ee/spec/factories/**/*'
Database/AvoidUsingPluckWithoutLimit:
Enabled: true
Exclude:
- 'spec/**/*.rb'
- 'ee/spec/**/*.rb'
- 'qa/qa/specs/**/*.rb'
Database/AvoidUsingConnectionExecute:
Enabled: true
Include:
- '{,ee/}app/models/**/*'
- '{,ee/}lib/**/*'
Style/SymbolProc:
AllowedMethods:
- define_method
- mail
- respond_to
# See https://gitlab.com/gitlab-org/gitlab/-/issues/434151
- each_batch
- each_sub_batch
Style/HashSyntax:
EnforcedShorthandSyntax: either_consistent
Gitlab/LicenseAvailableUsage:
Enabled: true
Include:
- 'app/models/application_setting.rb'
- 'ee/app/models/ee/application_setting.rb'
- 'lib/gitlab/current_settings.rb'
Gitlab/TokenWithoutPrefix:
Enabled: true
Include:
- 'app/**/*'
- 'lib/**/*'
- 'ee/app/**/*'
- 'ee/lib/**/*'
Rake/TopLevelMethodDefinition:
Enabled: true
Include:
- '**/Rakefile'
- 'lib/tasks/**/*.rake'
- 'ee/lib/tasks/**/*.rake'
Rails/StrongParams:
Enabled: true
SafeAutoCorrect: false
Include:
- 'app/controllers/**/*'
- 'ee/app/controllers/**/*'
QA/FabricateUsage:
Include:
- 'qa/qa/specs/**/*_spec.rb'
Gitlab/NoFindInWorkers:
Enabled: true
Include:
- app/workers/**/*
- ee/app/workers/**/*
Tailwind/StringInterpolation:
Enabled: true
Include:
- '{,ee/,jh/}app/helpers/**/*.rb'
- '{,ee/,jh/}app/components/**/*.{haml,rb}'
- '{,ee/,jh/}app/views/**/*.haml'
Cop/ActiveRecordDependent:
Include:
- ee/app/models/**/*.rb
Gitlab/Rails/AttrEncrypted:
Enabled: true
SafeAutoCorrect: false
Include:
- '{,ee/,jh/}app/models/**/*.rb'
- 'db/migrate/*.rb'
- '{,ee/,jh/}/lib/(ee/)?gitlab/background_migration/*.rb'
Migration/PreventAddingAttrEncryptedColumns:
Enabled: true
Include:
- 'db/migrate/*.rb'
EnforcedSince: 20250311000000
Scalability/RandomCronSchedule:
Enabled: true
Include:
- 'config/initializers/1_settings.rb'
Migration/PreventFeatureFlagsUsage:
Enabled: true
EnforcedSince: 20250505000000
Rails/EnumSyntax:
Enabled: true
Include:
- 'app/models/**/*.rb'
- 'ee/app/models/**/*.rb'
- 'lib/**/*.rb'
- 'ee/lib/**/*.rb'
Database/AvoidScopeTo:
Enabled: true
Include:
- 'lib/gitlab/background_migration/**/*.rb'
RSpec/RedundantMetatagType:
Include:
- '{,ee/,jh/}spec/**/*_spec.rb'
RSpec/Dialect:
# This cop rule produces too many false positives.
# See https://gitlab.com/gitlab-org/gitlab/-/merge_requests/173889#note_2232088196
Enabled: false
Gitlab/UseParamKeyForConvertingClassName:
Enabled: true
Gitlab/NoHelpersInPresenters:
Enabled: true
Include:
- '{,ee/,jh/}app/presenters/**/*.rb'
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
Ruby
1
https://gitee.com/mirrors/gitlab.git
git@gitee.com:mirrors/gitlab.git
mirrors
gitlab
gitlabhq
master

搜索帮助