inherit_gem: gitlab-styles: - rubocop-default.yml inherit_from: .rubocop_todo.yml require: - ./rubocop/rubocop - rubocop-rspec inherit_mode: merge: - Include AllCops: TargetRubyVersion: 2.6 TargetRailsVersion: 5.0 Exclude: - 'vendor/**/*' - 'node_modules/**/*' - 'db/fixtures/**/*' - 'db/schema.rb' - 'ee/db/geo/schema.rb' - 'tmp/**/*' - 'bin/**/*' - 'generator_templates/**/*' - 'builds/**/*' - 'plugins/**/*' - 'file_hooks/**/*' CacheRootDirectory: tmp Cop/AvoidKeywordArgumentsInSidekiqWorkers: Enabled: true Include: - 'app/workers/**/*' - 'ee/app/workers/**/*' Cop/StaticTranslationDefinition: Enabled: true Exclude: - 'spec/**/*' - 'ee/spec/**/*' # This cop checks whether some constant value isn't a # mutable literal (e.g. array or hash). Style/MutableConstant: Enabled: true 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 # Frozen String Literal Style/FrozenStringLiteralComment: Enabled: true Exclude: - 'config.ru' - 'Dangerfile' - 'Gemfile' - 'Rakefile' - 'app/views/**/*' - 'config/**/*' - 'danger/**/*' - 'db/**/*' - 'ee/db/**/*' - 'ee/lib/tasks/**/*' - 'lib/tasks/**/*' - 'qa/**/*' - 'rubocop/**/*' - 'scripts/**/*' RSpec/FilePath: Exclude: - 'qa/**/*' - 'spec/frontend/fixtures/*' - 'ee/spec/frontend/fixtures/*' - 'spec/requests/api/v3/*' Naming/FileName: ExpectMatchingDefinition: true Exclude: - 'db/**/*' - 'ee/db/**/*' - 'spec/**/*' - 'features/**/*' - 'ee/spec/**/*' - 'qa/spec/**/*' - 'qa/qa/specs/**/*' - 'qa/bin/*' - 'ee/bin/*' - 'config/**/*' - 'ee/config/**/*' - 'lib/generators/**/*' - 'locale/unfound_translations.rb' - 'ee/locale/unfound_translations.rb' - 'ee/lib/generators/**/*' - 'qa/qa/scenario/test/integration/ldap_no_tls.rb' - 'qa/qa/scenario/test/integration/ldap_tls.rb' IgnoreExecutableScripts: true AllowedAcronyms: - EE - JSON - LDAP - SAML - SSO - IO - HMAC - QA - ENV - STL - PDF - SVG - CTE - DN - RSA - CI - CD - OAuth # 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 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/FindBy: Enabled: true Include: - 'ee/app/**/*.rb' - 'ee/lib/**/*.rb' - 'spec/**/*.rb' - 'ee/spec/**/*.rb' # 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: - 'db/**/*' - 'qa/**/*' - 'scripts/**/*' - 'lib/rspec_flaky/**/*' - 'lib/quality/**/*' GitlabSecurity/PublicSend: Enabled: true Exclude: - 'config/**/*' - 'db/**/*' - 'features/**/*' - 'lib/**/*.rake' - 'qa/**/*' - 'spec/**/*' - 'ee/db/**/*' - 'ee/lib/**/*.rake' - 'ee/spec/**/*' Gitlab/DuplicateSpecLocation: Exclude: - ee/spec/lib/gitlab/gl_repository_spec.rb - ee/spec/services/merge_requests/refresh_service_spec.rb - ee/spec/services/ee/merge_requests/refresh_service_spec.rb Cop/InjectEnterpriseEditionModule: Enabled: true Exclude: - 'spec/**/*' - 'ee/spec/**/*' Style/ReturnNil: Enabled: true # It isn't always safe to replace `=~` with `.match?`, especially when there are # nil values on the left hand side Performance/RegexpMatch: Enabled: false ActiveRecordAssociationReload: Enabled: true Exclude: - 'spec/**/*' - 'ee/spec/**/*' Naming/PredicateName: Enabled: true Exclude: - 'spec/**/*' - 'ee/spec/**/*' 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' Cop/IncludeSidekiqWorker: Enabled: true Exclude: - 'spec/**/*' - 'ee/spec/**/*' Gitlab/Union: Enabled: true Exclude: - 'spec/**/*' - 'ee/spec/**/*' Cop/SidekiqOptionsQueue: Enabled: true Exclude: - 'spec/**/*.rb' - 'ee/spec/**/*.rb' Graphql/AuthorizeTypes: Enabled: true Exclude: - 'spec/**/*.rb' - 'ee/spec/**/*.rb' 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/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 Include: - 'app/graphql/**/*' - 'ee/app/graphql/**/*' RSpec/AnyInstanceOf: Enabled: false # Cops for upgrade to gitlab-styles 3.1.0 RSpec/ImplicitSubject: Enabled: false # WIP See https://gitlab.com/gitlab-org/gitlab/-/issues/211580 RSpec/LeakyConstantDeclaration: Enabled: true Exclude: - 'spec/db/schema_spec.rb' - 'spec/graphql/gitlab_schema_spec.rb' - 'spec/helpers/visibility_level_helper_spec.rb' - 'spec/initializers/secret_token_spec.rb' - 'spec/lib/declarative_policy_spec.rb' - 'spec/lib/feature_spec.rb' - 'spec/lib/gitlab/background_migration/migrate_issue_trackers_sensitive_data_spec.rb' - 'spec/lib/gitlab/ci/build/credentials/factory_spec.rb' - 'spec/lib/gitlab/ci/config/entry/retry_spec.rb' - 'spec/lib/gitlab/cluster/mixins/puma_cluster_spec.rb' - 'spec/lib/gitlab/cluster/mixins/unicorn_http_server_spec.rb' - 'spec/lib/gitlab/config/entry/factory_spec.rb' - 'spec/lib/gitlab/config/entry/simplifiable_spec.rb' - 'spec/lib/gitlab/database/migration_helpers_spec.rb' - 'spec/lib/gitlab/database/obsolete_ignored_columns_spec.rb' - 'spec/lib/gitlab/database/with_lock_retries_spec.rb' - 'spec/lib/gitlab/git/diff_collection_spec.rb' - 'spec/lib/gitlab/graphql/pagination/keyset/connection_spec.rb' - 'spec/lib/gitlab/health_checks/master_check_spec.rb' - 'spec/lib/gitlab/import_export/attribute_configuration_spec.rb' - 'spec/lib/gitlab/import_export/import_test_coverage_spec.rb' - 'spec/lib/gitlab/import_export/project/relation_factory_spec.rb' - 'spec/lib/gitlab/jira_import/issues_importer_spec.rb' - 'spec/lib/gitlab/no_cache_headers_spec.rb' - 'spec/lib/gitlab/path_regex_spec.rb' - 'spec/lib/gitlab/quick_actions/dsl_spec.rb' - 'spec/lib/gitlab/sidekiq_middleware/client_metrics_spec.rb' - 'spec/lib/gitlab/sidekiq_middleware/server_metrics_spec.rb' - 'spec/lib/gitlab/sidekiq_middleware_spec.rb' - 'spec/lib/gitlab/view/presenter/factory_spec.rb' - 'spec/lib/marginalia_spec.rb' - 'spec/lib/omni_auth/strategies/jwt_spec.rb' - 'spec/lib/system_check/simple_executor_spec.rb' - 'spec/lib/system_check_spec.rb' - 'spec/mailers/notify_spec.rb' - 'spec/migrations/20191125114345_add_admin_mode_protected_path_spec.rb' - 'spec/migrations/encrypt_plaintext_attributes_on_application_settings_spec.rb' - 'spec/models/clusters/cluster_spec.rb' - 'spec/models/concerns/batch_destroy_dependent_associations_spec.rb' - 'spec/models/concerns/blocks_json_serialization_spec.rb' - 'spec/models/concerns/bulk_insert_safe_spec.rb' - 'spec/models/concerns/bulk_insertable_associations_spec.rb' - 'spec/models/concerns/mentionable_spec.rb' - 'spec/models/concerns/reactive_caching_spec.rb' - 'spec/models/concerns/triggerable_hooks_spec.rb' - 'spec/models/repository_spec.rb' - 'spec/models/tree_spec.rb' - 'spec/policies/merge_request_policy_spec.rb' - 'spec/requests/api/graphql/tasks/task_completion_status_spec.rb' - 'spec/requests/api/statistics_spec.rb' - 'spec/rubocop/cop/rspec/env_assignment_spec.rb' - 'spec/serializers/commit_entity_spec.rb' - 'spec/services/ci/retry_build_service_spec.rb' - 'spec/services/clusters/applications/check_installation_progress_service_spec.rb' - 'spec/services/clusters/applications/check_uninstall_progress_service_spec.rb' - 'spec/services/clusters/applications/check_upgrade_progress_service_spec.rb' - 'spec/services/clusters/applications/ingress_modsecurity_usage_service_spec.rb' - 'spec/services/issues/resolve_discussions_spec.rb' - 'spec/services/metrics/dashboard/clone_dashboard_service_spec.rb' - 'spec/support/shared_contexts/spam_constants.rb' - 'spec/support/shared_examples/quick_actions/issuable/issuable_quick_actions_shared_examples.rb' - 'spec/support_specs/helpers/active_record/query_recorder_spec.rb' - 'spec/support_specs/matchers/exceed_query_limit_helpers_spec.rb' - 'spec/uploaders/content_type_whitelist_spec.rb' - 'spec/uploaders/records_uploads_spec.rb' RSpec/EmptyLineAfterHook: Enabled: false RSpec/HooksBeforeExamples: Enabled: false RSpec/EmptyLineAfterExample: Enabled: false RSpec/Be: Enabled: false RSpec/DescribedClass: Enabled: false RSpec/SharedExamples: Enabled: false RSpec/EmptyLineAfterExampleGroup: Enabled: false RSpec/ReceiveNever: Enabled: false RSpec/MissingExampleGroupArgument: Enabled: false RSpec/UnspecifiedException: Enabled: false RSpec/HaveGitlabHttpStatus: Enabled: true Exclude: - 'spec/support/matchers/have_gitlab_http_status.rb' Include: - 'spec/**/*' - 'ee/spec/**/*' Style/MultilineWhenThen: Enabled: false Style/FloatDivision: Enabled: false 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/**/*'