diff --git a/.rubocop.yml b/.rubocop.yml
index 13448a918b87870c1a9bdb17b8669d9c4b283c4d..bcdc8251033c7e1e5330fcf10ae89c619e540136 100644
--- a/.rubocop.yml
+++ b/.rubocop.yml
@@ -7,9 +7,11 @@ require:
   - rubocop-rspec
 
 inherit_from:
+  - .rubocop_manual_todo.yml
   - .rubocop_todo.yml
   - ./rubocop/rubocop-migrations.yml
   - ./rubocop/rubocop-usage-data.yml
+  - ./rubocop/rubocop-code_reuse.yml
 
 inherit_mode:
   merge:
diff --git a/.rubocop_manual_todo.yml b/.rubocop_manual_todo.yml
new file mode 100644
index 0000000000000000000000000000000000000000..a236073c0895087c0ed0bb773f170a9143f42489
--- /dev/null
+++ b/.rubocop_manual_todo.yml
@@ -0,0 +1,755 @@
+FactoryBot/InlineAssociation:
+  Exclude:
+    - 'ee/spec/factories/analytics/cycle_analytics/group_stages.rb'
+    - 'ee/spec/factories/geo/event_log.rb'
+    - 'ee/spec/factories/groups.rb'
+    - 'ee/spec/factories/merge_request_blocks.rb'
+    - 'ee/spec/factories/vulnerabilities/feedback.rb'
+    - 'spec/factories/atlassian_identities.rb'
+    - 'spec/factories/design_management/design_at_version.rb'
+    - 'spec/factories/design_management/designs.rb'
+    - 'spec/factories/design_management/versions.rb'
+    - 'spec/factories/events.rb'
+    - 'spec/factories/git_wiki_commit_details.rb'
+    - 'spec/factories/gitaly/commit.rb'
+    - 'spec/factories/go_module_commits.rb'
+    - 'spec/factories/go_module_versions.rb'
+    - 'spec/factories/go_modules.rb'
+    - 'spec/factories/group_group_links.rb'
+    - 'spec/factories/import_export_uploads.rb'
+    - 'spec/factories/merge_requests.rb'
+    - 'spec/factories/notes.rb'
+    - 'spec/factories/packages.rb'
+    - 'spec/factories/packages/package_file.rb'
+    - 'spec/factories/sent_notifications.rb'
+    - 'spec/factories/uploads.rb'
+    - 'spec/factories/wiki_pages.rb'
+
+Graphql/IDType:
+  Exclude:
+    - 'ee/app/graphql/ee/mutations/issues/update.rb'
+    - 'ee/app/graphql/mutations/iterations/update.rb'
+    - 'ee/app/graphql/resolvers/iterations_resolver.rb'
+    - 'app/graphql/mutations/boards/issues/issue_move_list.rb'
+    - 'app/graphql/mutations/issues/update.rb'
+    - 'app/graphql/mutations/metrics/dashboard/annotations/delete.rb'
+    - 'app/graphql/mutations/snippets/destroy.rb'
+    - 'app/graphql/mutations/snippets/mark_as_spam.rb'
+    - 'app/graphql/mutations/snippets/update.rb'
+    - 'app/graphql/resolvers/design_management/design_at_version_resolver.rb'
+    - 'app/graphql/resolvers/design_management/design_resolver.rb'
+    - 'app/graphql/resolvers/design_management/designs_resolver.rb'
+    - 'app/graphql/resolvers/design_management/version/design_at_version_resolver.rb'
+    - 'app/graphql/resolvers/design_management/version_in_collection_resolver.rb'
+    - 'app/graphql/resolvers/design_management/version_resolver.rb'
+    - 'app/graphql/resolvers/design_management/versions_resolver.rb'
+    - 'app/graphql/resolvers/error_tracking/sentry_detailed_error_resolver.rb'
+    - 'app/graphql/resolvers/error_tracking/sentry_error_stack_trace_resolver.rb'
+    - 'app/graphql/resolvers/snippets_resolver.rb'
+    - 'app/graphql/resolvers/user_merge_requests_resolver.rb'
+
+Rails/SaveBang:
+  Exclude:
+    - 'ee/spec/controllers/projects/merge_requests_controller_spec.rb'
+    - 'ee/spec/controllers/subscriptions_controller_spec.rb'
+    - 'ee/spec/frontend/fixtures/analytics.rb'
+    - 'ee/spec/graphql/resolvers/vulnerabilities_resolver_spec.rb'
+    - 'ee/spec/initializers/fog_google_https_private_urls_spec.rb'
+    - 'ee/spec/lib/analytics/merge_request_metrics_calculator_spec.rb'
+    - 'ee/spec/lib/ee/gitlab/auth/ldap/sync/group_spec.rb'
+    - 'ee/spec/lib/ee/gitlab/checks/push_rules/commit_check_spec.rb'
+    - 'ee/spec/lib/ee/gitlab/ci/pipeline/quota/activity_spec.rb'
+    - 'ee/spec/lib/gitlab/auth/ldap/access_spec.rb'
+    - 'ee/spec/lib/gitlab/auth/o_auth/user_spec.rb'
+    - 'ee/spec/lib/gitlab/auth/saml/user_spec.rb'
+    - 'ee/spec/lib/gitlab/background_migration/fix_orphan_promoted_issues_spec.rb'
+    - 'ee/spec/lib/gitlab/elastic/search_results_spec.rb'
+    - 'ee/spec/lib/gitlab/email/handler/ee/service_desk_handler_spec.rb'
+    - 'ee/spec/lib/gitlab/geo_spec.rb'
+    - 'ee/spec/lib/gitlab/git_access_spec.rb'
+    - 'ee/spec/lib/gitlab/import_export/group/relation_factory_spec.rb'
+    - 'ee/spec/lib/gitlab/mirror_spec.rb'
+    - 'ee/spec/mailers/notify_spec.rb'
+    - 'ee/spec/migrations/fix_any_approver_rule_for_projects_spec.rb'
+    - 'ee/spec/migrations/geo/migrate_ci_job_artifacts_to_separate_registry_spec.rb'
+    - 'ee/spec/migrations/geo/migrate_lfs_objects_to_separate_registry_spec.rb'
+    - 'ee/spec/migrations/schedule_merge_request_any_approval_rule_migration_spec.rb'
+    - 'ee/spec/migrations/schedule_project_any_approval_rule_migration_spec.rb'
+    - 'ee/spec/models/application_setting_spec.rb'
+    - 'ee/spec/models/approval_merge_request_rule_spec.rb'
+    - 'ee/spec/models/approval_project_rule_spec.rb'
+    - 'ee/spec/models/burndown_spec.rb'
+    - 'ee/spec/models/ci/pipeline_spec.rb'
+    - 'ee/spec/models/ci/subscriptions/project_spec.rb'
+    - 'ee/spec/models/ee/appearance_spec.rb'
+    - 'ee/spec/models/ee/ci/job_artifact_spec.rb'
+    - 'ee/spec/models/ee/protected_branch_spec.rb'
+    - 'ee/spec/models/ee/protected_ref_access_spec.rb'
+    - 'ee/spec/models/ee/protected_ref_spec.rb'
+    - 'ee/spec/models/elasticsearch_indexed_namespace_spec.rb'
+    - 'ee/spec/models/environment_spec.rb'
+    - 'ee/spec/models/epic_spec.rb'
+    - 'ee/spec/models/geo/project_registry_spec.rb'
+    - 'ee/spec/models/geo_node_spec.rb'
+    - 'ee/spec/models/geo_node_status_spec.rb'
+    - 'ee/spec/models/gitlab_subscription_spec.rb'
+    - 'ee/spec/models/group_spec.rb'
+    - 'ee/spec/models/issue_spec.rb'
+    - 'ee/spec/models/label_note_spec.rb'
+    - 'ee/spec/models/lfs_object_spec.rb'
+    - 'ee/spec/models/license_spec.rb'
+    - 'ee/spec/models/merge_request_spec.rb'
+    - 'ee/spec/models/merge_train_spec.rb'
+    - 'spec/models/packages/package_spec.rb'
+    - 'ee/spec/models/project_ci_cd_setting_spec.rb'
+    - 'ee/spec/models/project_spec.rb'
+    - 'ee/spec/models/protected_environment_spec.rb'
+    - 'ee/spec/models/repository_spec.rb'
+    - 'ee/spec/models/scim_identity_spec.rb'
+    - 'ee/spec/models/scim_oauth_access_token_spec.rb'
+    - 'ee/spec/models/upload_spec.rb'
+    - 'ee/spec/models/user_preference_spec.rb'
+    - 'ee/spec/models/user_spec.rb'
+    - 'ee/spec/models/visible_approvable_spec.rb'
+    - 'ee/spec/models/vulnerabilities/feedback_spec.rb'
+    - 'ee/spec/models/vulnerabilities/issue_link_spec.rb'
+    - 'ee/spec/presenters/audit_event_presenter_spec.rb'
+    - 'ee/spec/presenters/epic_presenter_spec.rb'
+    - 'ee/spec/requests/api/boards_spec.rb'
+    - 'ee/spec/requests/api/epic_issues_spec.rb'
+    - 'ee/spec/requests/api/epic_links_spec.rb'
+    - 'ee/spec/requests/api/epics_spec.rb'
+    - 'ee/spec/requests/api/geo_nodes_spec.rb'
+    - 'ee/spec/requests/api/geo_spec.rb'
+    - 'ee/spec/requests/api/graphql/group/epics_spec.rb'
+    - 'ee/spec/requests/api/graphql/mutations/epic_tree/reorder_spec.rb'
+    - 'ee/spec/requests/api/groups_spec.rb'
+    - 'ee/spec/requests/api/issues_spec.rb'
+    - 'ee/spec/requests/api/ldap_group_links_spec.rb'
+    - 'ee/spec/requests/api/merge_request_approval_rules_spec.rb'
+    - 'ee/spec/requests/api/merge_request_approvals_spec.rb'
+    - 'ee/spec/requests/api/merge_requests_spec.rb'
+    - 'ee/spec/requests/api/project_approvals_spec.rb'
+    - 'ee/spec/requests/api/projects_spec.rb'
+    - 'ee/spec/requests/api/protected_branches_spec.rb'
+    - 'ee/spec/requests/api/scim_spec.rb'
+    - 'ee/spec/requests/api/todos_spec.rb'
+    - 'ee/spec/requests/lfs_http_spec.rb'
+    - 'ee/spec/services/approval_rules/finalize_service_spec.rb'
+    - 'ee/spec/services/approval_rules/update_service_spec.rb'
+    - 'ee/spec/services/ee/boards/issues/create_service_spec.rb'
+    - 'ee/spec/services/ee/boards/issues/list_service_spec.rb'
+    - 'ee/spec/services/ee/boards/lists/list_service_spec.rb'
+    - 'ee/spec/services/ee/issuable/clone/attributes_rewriter_spec.rb'
+    - 'ee/spec/services/ee/issuable/common_system_notes_service_spec.rb'
+    - 'ee/spec/services/ee/issues/update_service_spec.rb'
+    - 'ee/spec/services/ee/merge_requests/refresh_service_spec.rb'
+    - 'ee/spec/services/ee/merge_requests/update_service_spec.rb'
+    - 'ee/spec/services/ee/notes/quick_actions_service_spec.rb'
+    - 'ee/spec/services/ee/notification_service_spec.rb'
+    - 'ee/spec/services/epic_links/create_service_spec.rb'
+    - 'ee/spec/services/epics/close_service_spec.rb'
+    - 'ee/spec/services/epics/issue_promote_service_spec.rb'
+    - 'ee/spec/services/epics/reopen_service_spec.rb'
+    - 'ee/spec/services/epics/tree_reorder_service_spec.rb'
+    - 'ee/spec/services/epics/update_dates_service_spec.rb'
+    - 'ee/spec/services/epics/update_service_spec.rb'
+    - 'ee/spec/services/geo/blob_verification_secondary_service_spec.rb'
+    - 'ee/spec/services/geo/files_expire_service_spec.rb'
+    - 'ee/spec/services/geo/metrics_update_service_spec.rb'
+    - 'ee/spec/services/geo/registry_consistency_service_spec.rb'
+    - 'ee/spec/services/geo/repository_verification_secondary_service_spec.rb'
+    - 'ee/spec/services/groups/autocomplete_service_spec.rb'
+    - 'ee/spec/services/ldap_group_reset_service_spec.rb'
+    - 'ee/spec/services/lfs/unlock_file_service_spec.rb'
+    - 'ee/spec/services/merge_trains/refresh_merge_request_service_spec.rb'
+    - 'ee/spec/services/quick_actions/interpret_service_spec.rb'
+    - 'ee/spec/services/slash_commands/global_slack_handler_spec.rb'
+    - 'ee/spec/services/start_pull_mirroring_service_spec.rb'
+    - 'ee/spec/services/status_page/trigger_publish_service_spec.rb'
+    - 'ee/spec/services/todo_service_spec.rb'
+    - 'ee/spec/services/update_build_minutes_service_spec.rb'
+    - 'ee/spec/services/vulnerability_feedback/create_service_spec.rb'
+    - 'ee/spec/support/protected_tags/access_control_shared_examples.rb'
+    - 'ee/spec/support/shared_examples/features/protected_branches_access_control_shared_examples.rb'
+    - 'ee/spec/support/shared_examples/finders/geo/framework_registry_finder_shared_examples.rb'
+    - 'ee/spec/support/shared_examples/graphql/geo/geo_registries_resolver_shared_examples.rb'
+    - 'ee/spec/support/shared_examples/lib/analytics/common_merge_request_metrics_refresh_shared_examples.rb'
+    - 'ee/spec/support/shared_examples/policies/protected_environments_shared_examples.rb'
+    - 'ee/spec/workers/adjourned_project_deletion_worker_spec.rb'
+    - 'ee/spec/workers/clear_shared_runners_minutes_worker_spec.rb'
+    - 'ee/spec/workers/create_github_webhook_worker_spec.rb'
+    - 'ee/spec/workers/elastic_namespace_rollout_worker_spec.rb'
+    - 'ee/spec/workers/geo/container_repository_sync_dispatch_worker_spec.rb'
+    - 'ee/spec/workers/geo/file_download_dispatch_worker_spec.rb'
+    - 'ee/spec/workers/geo/prune_event_log_worker_spec.rb'
+    - 'ee/spec/workers/geo/registry_sync_worker_spec.rb'
+    - 'ee/spec/workers/geo/repository_shard_sync_worker_spec.rb'
+    - 'ee/spec/workers/repository_import_worker_spec.rb'
+    - 'ee/spec/workers/update_all_mirrors_worker_spec.rb'
+    - 'qa/qa/specs/features/browser_ui/3_create/repository/push_mirroring_over_http_spec.rb'
+    - 'qa/qa/specs/features/browser_ui/3_create/repository/push_mirroring_lfs_over_http_spec.rb'
+    - 'qa/qa/specs/features/ee/browser_ui/3_create/repository/pull_mirroring_over_http_spec.rb'
+    - 'qa/qa/specs/features/ee/browser_ui/3_create/repository/pull_mirroring_over_ssh_with_key_spec.rb'
+    - 'spec/controllers/abuse_reports_controller_spec.rb'
+    - 'spec/controllers/admin/impersonations_controller_spec.rb'
+    - 'spec/controllers/admin/runners_controller_spec.rb'
+    - 'spec/controllers/admin/services_controller_spec.rb'
+    - 'spec/controllers/boards/issues_controller_spec.rb'
+    - 'spec/controllers/groups/milestones_controller_spec.rb'
+    - 'spec/controllers/groups/runners_controller_spec.rb'
+    - 'spec/controllers/groups/uploads_controller_spec.rb'
+    - 'spec/controllers/groups_controller_spec.rb'
+    - 'spec/controllers/oauth/authorizations_controller_spec.rb'
+    - 'spec/controllers/omniauth_callbacks_controller_spec.rb'
+    - 'spec/controllers/profiles/emails_controller_spec.rb'
+    - 'spec/controllers/profiles/notifications_controller_spec.rb'
+    - 'spec/controllers/projects/artifacts_controller_spec.rb'
+    - 'spec/controllers/projects/cycle_analytics/events_controller_spec.rb'
+    - 'spec/controllers/projects/cycle_analytics_controller_spec.rb'
+    - 'spec/controllers/projects/discussions_controller_spec.rb'
+    - 'spec/controllers/projects/forks_controller_spec.rb'
+    - 'spec/controllers/projects/group_links_controller_spec.rb'
+    - 'spec/controllers/projects/imports_controller_spec.rb'
+    - 'spec/controllers/projects/issues_controller_spec.rb'
+    - 'spec/controllers/projects/labels_controller_spec.rb'
+    - 'spec/controllers/projects/milestones_controller_spec.rb'
+    - 'spec/controllers/projects/notes_controller_spec.rb'
+    - 'spec/controllers/projects/pipelines_controller_spec.rb'
+    - 'spec/controllers/projects/releases/evidences_controller_spec.rb'
+    - 'spec/controllers/projects/runners_controller_spec.rb'
+    - 'spec/controllers/projects/starrers_controller_spec.rb'
+    - 'spec/controllers/projects/uploads_controller_spec.rb'
+    - 'spec/controllers/projects_controller_spec.rb'
+    - 'spec/controllers/sent_notifications_controller_spec.rb'
+    - 'spec/controllers/sessions_controller_spec.rb'
+    - 'spec/controllers/users_controller_spec.rb'
+    - 'spec/factories_spec.rb'
+    - 'spec/features/admin/admin_appearance_spec.rb'
+    - 'spec/features/admin/admin_labels_spec.rb'
+    - 'spec/features/admin/admin_mode/login_spec.rb'
+    - 'spec/features/admin/admin_runners_spec.rb'
+    - 'spec/features/admin/admin_sees_project_statistics_spec.rb'
+    - 'spec/features/admin/admin_sees_projects_statistics_spec.rb'
+    - 'spec/features/admin/admin_users_impersonation_tokens_spec.rb'
+    - 'spec/features/admin/admin_users_spec.rb'
+    - 'spec/features/boards/sidebar_spec.rb'
+    - 'spec/features/calendar_spec.rb'
+    - 'spec/features/commits_spec.rb'
+    - 'spec/features/dashboard/datetime_on_tooltips_spec.rb'
+    - 'spec/features/dashboard/issuables_counter_spec.rb'
+    - 'spec/features/dashboard/project_member_activity_index_spec.rb'
+    - 'spec/features/dashboard/projects_spec.rb'
+    - 'spec/features/error_tracking/user_sees_error_index_spec.rb'
+    - 'spec/features/groups/members/request_access_spec.rb'
+    - 'spec/features/issuables/close_reopen_report_toggle_spec.rb'
+    - 'spec/features/issues/bulk_assignment_labels_spec.rb'
+    - 'spec/features/issues/gfm_autocomplete_spec.rb'
+    - 'spec/features/issues/issue_sidebar_spec.rb'
+    - 'spec/features/issues/note_polling_spec.rb'
+    - 'spec/features/issues/user_creates_branch_and_merge_request_spec.rb'
+    - 'spec/features/issues/user_creates_confidential_merge_request_spec.rb'
+    - 'spec/features/issues/user_edits_issue_spec.rb'
+    - 'spec/features/issues/user_filters_issues_spec.rb'
+    - 'spec/features/issues/user_sees_live_update_spec.rb'
+    - 'spec/features/issues/user_sorts_issues_spec.rb'
+    - 'spec/features/profiles/emails_spec.rb'
+    - 'spec/features/profiles/password_spec.rb'
+    - 'spec/features/profiles/personal_access_tokens_spec.rb'
+    - 'spec/features/projects/features_visibility_spec.rb'
+    - 'spec/features/projects/fork_spec.rb'
+    - 'spec/features/projects/jobs/permissions_spec.rb'
+    - 'spec/features/projects/jobs_spec.rb'
+    - 'spec/features/projects/members/user_requests_access_spec.rb'
+    - 'spec/features/projects/pages_lets_encrypt_spec.rb'
+    - 'spec/features/projects/pages_spec.rb'
+    - 'spec/features/projects/pipelines/pipeline_spec.rb'
+    - 'spec/features/projects/pipelines/pipelines_spec.rb'
+    - 'spec/features/projects/remote_mirror_spec.rb'
+    - 'spec/features/projects/services/user_activates_slack_notifications_spec.rb'
+    - 'spec/features/projects/settings/access_tokens_spec.rb'
+    - 'spec/features/projects/show/user_sees_deletion_failure_message_spec.rb'
+    - 'spec/features/projects/user_sees_sidebar_spec.rb'
+    - 'spec/features/projects/wiki/user_updates_wiki_page_spec.rb'
+    - 'spec/features/projects/wiki/user_views_wiki_page_spec.rb'
+    - 'spec/features/projects/wiki/users_views_asciidoc_page_with_includes_spec.rb'
+    - 'spec/features/runners_spec.rb'
+    - 'spec/features/security/project/internal_access_spec.rb'
+    - 'spec/features/security/project/private_access_spec.rb'
+    - 'spec/features/security/project/public_access_spec.rb'
+    - 'spec/features/users/login_spec.rb'
+    - 'spec/features/users/show_spec.rb'
+    - 'spec/frontend/fixtures/issues.rb'
+    - 'spec/frontend/fixtures/merge_requests.rb'
+    - 'spec/graphql/mutations/merge_requests/set_locked_spec.rb'
+    - 'spec/graphql/mutations/merge_requests/set_wip_spec.rb'
+    - 'spec/graphql/resolvers/boards_resolver_spec.rb'
+    - 'spec/initializers/active_record_locking_spec.rb'
+    - 'spec/initializers/fog_google_https_private_urls_spec.rb'
+    - 'spec/lib/after_commit_queue_spec.rb'
+    - 'spec/lib/backup/manager_spec.rb'
+    - 'spec/lib/banzai/reference_parser/external_issue_parser_spec.rb'
+    - 'spec/lib/banzai/reference_redactor_spec.rb'
+    - 'spec/lib/gitlab/alerting/alert_spec.rb'
+    - 'spec/lib/gitlab/analytics/cycle_analytics/records_fetcher_spec.rb'
+    - 'spec/lib/gitlab/auth/ldap/user_spec.rb'
+    - 'spec/lib/gitlab/auth/o_auth/user_spec.rb'
+    - 'spec/lib/gitlab/auth/saml/user_spec.rb'
+    - 'spec/lib/gitlab/auth_spec.rb'
+    - 'spec/lib/gitlab/authorized_keys_spec.rb'
+    - 'spec/lib/gitlab/background_migration/backfill_deployment_clusters_from_deployments_spec.rb'
+    - 'spec/lib/gitlab/background_migration/backfill_project_repositories_spec.rb'
+    - 'spec/lib/gitlab/background_migration/backfill_project_settings_spec.rb'
+    - 'spec/lib/gitlab/background_migration/backfill_push_rules_id_in_projects_spec.rb'
+    - 'spec/lib/gitlab/background_migration/backfill_snippet_repositories_spec.rb'
+    - 'spec/lib/gitlab/background_migration/digest_column_spec.rb'
+    - 'spec/lib/gitlab/background_migration/encrypt_columns_spec.rb'
+    - 'spec/lib/gitlab/background_migration/fix_cross_project_label_links_spec.rb'
+    - 'spec/lib/gitlab/background_migration/fix_projects_without_project_feature_spec.rb'
+    - 'spec/lib/gitlab/background_migration/fix_projects_without_prometheus_service_spec.rb'
+    - 'spec/lib/gitlab/background_migration/fix_user_namespace_names_spec.rb'
+    - 'spec/lib/gitlab/background_migration/fix_user_project_route_names_spec.rb'
+    - 'spec/lib/gitlab/background_migration/legacy_upload_mover_spec.rb'
+    - 'spec/lib/gitlab/background_migration/legacy_uploads_migrator_spec.rb'
+    - 'spec/lib/gitlab/background_migration/link_lfs_objects_projects_spec.rb'
+    - 'spec/lib/gitlab/background_migration/migrate_issue_trackers_sensitive_data_spec.rb'
+    - 'spec/lib/gitlab/background_migration/migrate_stage_index_spec.rb'
+    - 'spec/lib/gitlab/background_migration/migrate_users_bio_to_user_details_spec.rb'
+    - 'spec/lib/gitlab/background_migration/populate_canonical_emails_spec.rb'
+    - 'spec/lib/gitlab/background_migration/populate_merge_request_assignees_table_spec.rb'
+    - 'spec/lib/gitlab/background_migration/populate_user_highest_roles_table_spec.rb'
+    - 'spec/lib/gitlab/background_migration/recalculate_project_authorizations_spec.rb'
+    - 'spec/lib/gitlab/background_migration/remove_restricted_todos_spec.rb'
+    - 'spec/lib/gitlab/background_migration/reset_merge_status_spec.rb'
+    - 'spec/lib/gitlab/background_migration/set_confidential_note_events_on_services_spec.rb'
+    - 'spec/lib/gitlab/background_migration/set_confidential_note_events_on_webhooks_spec.rb'
+    - 'spec/lib/gitlab/bitbucket_server_import/importer_spec.rb'
+    - 'spec/lib/gitlab/ci/ansi2json/style_spec.rb'
+    - 'spec/lib/gitlab/ci/status/build/common_spec.rb'
+    - 'spec/lib/gitlab/cycle_analytics/base_event_fetcher_spec.rb'
+    - 'spec/lib/gitlab/database/custom_structure_spec.rb'
+    - 'spec/lib/gitlab/database/partitioning_migration_helpers/table_management_helpers_spec.rb'
+    - 'spec/lib/gitlab/database_importers/self_monitoring/project/create_service_spec.rb'
+    - 'spec/lib/gitlab/email/handler/create_note_handler_spec.rb'
+    - 'spec/lib/gitlab/email/handler/unsubscribe_handler_spec.rb'
+    - 'spec/lib/gitlab/gfm/reference_rewriter_spec.rb'
+    - 'spec/lib/gitlab/git_access_spec.rb'
+    - 'spec/lib/gitlab/gitaly_client/object_pool_service_spec.rb'
+    - 'spec/lib/gitlab/gitaly_client/repository_service_spec.rb'
+    - 'spec/lib/gitlab/import_export/avatar_saver_spec.rb'
+    - 'spec/lib/gitlab/import_export/base/relation_factory_spec.rb'
+    - 'spec/lib/gitlab/import_export/design_repo_restorer_spec.rb'
+    - 'spec/lib/gitlab/import_export/fast_hash_serializer_spec.rb'
+    - 'spec/lib/gitlab/import_export/fork_spec.rb'
+    - 'spec/lib/gitlab/import_export/group/legacy_tree_saver_spec.rb'
+    - 'spec/lib/gitlab/import_export/group/relation_factory_spec.rb'
+    - 'spec/lib/gitlab/import_export/group/tree_saver_spec.rb'
+    - 'spec/lib/gitlab/import_export/importer_spec.rb'
+    - 'spec/lib/gitlab/import_export/lfs_restorer_spec.rb'
+    - 'spec/lib/gitlab/import_export/lfs_saver_spec.rb'
+    - 'spec/lib/gitlab/import_export/members_mapper_spec.rb'
+    - 'spec/lib/gitlab/import_export/project/relation_factory_spec.rb'
+    - 'spec/lib/gitlab/import_export/project/tree_restorer_spec.rb'
+    - 'spec/lib/gitlab/import_export/project/tree_saver_spec.rb'
+    - 'spec/lib/gitlab/import_export/repo_restorer_spec.rb'
+    - 'spec/lib/gitlab/import_export/saver_spec.rb'
+    - 'spec/lib/gitlab/import_export/snippet_repo_restorer_spec.rb'
+    - 'spec/lib/gitlab/import_export/snippet_repo_saver_spec.rb'
+    - 'spec/lib/gitlab/import_export/snippets_repo_restorer_spec.rb'
+    - 'spec/lib/gitlab/import_export/snippets_repo_saver_spec.rb'
+    - 'spec/lib/gitlab/import_export/uploads_manager_spec.rb'
+    - 'spec/lib/gitlab/import_export/uploads_saver_spec.rb'
+    - 'spec/lib/gitlab/import_export/wiki_restorer_spec.rb'
+    - 'spec/lib/gitlab/legacy_github_import/importer_spec.rb'
+    - 'spec/lib/gitlab/legacy_github_import/issue_formatter_spec.rb'
+    - 'spec/lib/gitlab/legacy_github_import/milestone_formatter_spec.rb'
+    - 'spec/lib/gitlab/legacy_github_import/pull_request_formatter_spec.rb'
+    - 'spec/lib/gitlab/lets_encrypt/client_spec.rb'
+    - 'spec/lib/gitlab/markdown_cache/active_record/extension_spec.rb'
+    - 'spec/lib/gitlab/markdown_cache/redis/store_spec.rb'
+    - 'spec/lib/gitlab/middleware/go_spec.rb'
+    - 'spec/lib/gitlab/shard_health_cache_spec.rb'
+    - 'spec/lib/mattermost/command_spec.rb'
+    - 'spec/lib/mattermost/session_spec.rb'
+    - 'spec/lib/mattermost/team_spec.rb'
+    - 'spec/mailers/notify_spec.rb'
+    - 'spec/migrations/20190924152703_migrate_issue_trackers_data_spec.rb'
+    - 'spec/migrations/20200122123016_backfill_project_settings_spec.rb'
+    - 'spec/migrations/20200123155929_remove_invalid_jira_data_spec.rb'
+    - 'spec/migrations/20200127090233_remove_invalid_issue_tracker_data_spec.rb'
+    - 'spec/migrations/20200130145430_reschedule_migrate_issue_trackers_data_spec.rb'
+    - 'spec/migrations/20200313203550_remove_orphaned_chat_names_spec.rb'
+    - 'spec/migrations/20200406102120_backfill_deployment_clusters_from_deployments_spec.rb'
+    - 'spec/migrations/20200526115436_dedup_mr_metrics_spec.rb'
+    - 'spec/migrations/add_deploy_token_type_to_deploy_tokens_spec.rb'
+    - 'spec/migrations/add_incident_settings_to_all_existing_projects_spec.rb'
+    - 'spec/migrations/add_unique_constraint_to_approvals_user_id_and_merge_request_id_spec.rb'
+    - 'spec/migrations/backfill_and_add_not_null_constraint_to_released_at_column_on_releases_table_spec.rb'
+    - 'spec/migrations/backfill_imported_snippet_repositories_spec.rb'
+    - 'spec/migrations/backfill_releases_table_updated_at_and_add_not_null_constraints_to_timestamps_spec.rb'
+    - 'spec/migrations/backfill_snippet_repositories_spec.rb'
+    - 'spec/migrations/encrypt_plaintext_attributes_on_application_settings_spec.rb'
+    - 'spec/migrations/enqueue_reset_merge_status_second_run_spec.rb'
+    - 'spec/migrations/enqueue_reset_merge_status_spec.rb'
+    - 'spec/migrations/fill_file_store_lfs_objects_spec.rb'
+    - 'spec/migrations/fill_store_uploads_spec.rb'
+    - 'spec/migrations/fix_null_type_labels_spec.rb'
+    - 'spec/migrations/fix_pool_repository_source_project_id_spec.rb'
+    - 'spec/migrations/fix_projects_without_project_feature_spec.rb'
+    - 'spec/migrations/fix_projects_without_prometheus_services_spec.rb'
+    - 'spec/migrations/fix_wrong_pages_access_level_spec.rb'
+    - 'spec/migrations/insert_project_hooks_plan_limits_spec.rb'
+    - 'spec/migrations/migrate_auto_dev_ops_domain_to_cluster_domain_spec.rb'
+    - 'spec/migrations/move_limits_from_plans_spec.rb'
+    - 'spec/migrations/populate_project_statistics_packages_size_spec.rb'
+    - 'spec/migrations/schedule_link_lfs_objects_projects_spec.rb'
+    - 'spec/migrations/schedule_populate_merge_request_assignees_table_spec.rb'
+    - 'spec/migrations/seed_repository_storages_weighted_spec.rb'
+    - 'spec/models/appearance_spec.rb'
+    - 'spec/models/application_record_spec.rb'
+    - 'spec/models/application_setting_spec.rb'
+    - 'spec/models/clusters/applications/helm_spec.rb'
+    - 'spec/models/commit_spec.rb'
+    - 'spec/models/commit_status_spec.rb'
+    - 'spec/models/container_repository_spec.rb'
+    - 'spec/models/deploy_keys_project_spec.rb'
+    - 'spec/models/deploy_token_spec.rb'
+    - 'spec/models/deployment_spec.rb'
+    - 'spec/models/design_management/version_spec.rb'
+    - 'spec/models/diff_discussion_spec.rb'
+    - 'spec/models/diff_note_spec.rb'
+    - 'spec/models/email_spec.rb'
+    - 'spec/models/environment_spec.rb'
+    - 'spec/models/event_spec.rb'
+    - 'spec/models/fork_network_spec.rb'
+    - 'spec/models/generic_commit_status_spec.rb'
+    - 'spec/models/grafana_integration_spec.rb'
+    - 'spec/models/group_spec.rb'
+    - 'spec/models/hooks/system_hook_spec.rb'
+    - 'spec/models/hooks/web_hook_spec.rb'
+    - 'spec/models/identity_spec.rb'
+    - 'spec/models/issue/metrics_spec.rb'
+    - 'spec/models/issue_spec.rb'
+    - 'spec/models/jira_import_state_spec.rb'
+    - 'spec/models/key_spec.rb'
+    - 'spec/models/lfs_objects_project_spec.rb'
+    - 'spec/models/member_spec.rb'
+    - 'spec/models/members/group_member_spec.rb'
+    - 'spec/models/members/project_member_spec.rb'
+    - 'spec/models/merge_request_spec.rb'
+    - 'spec/models/milestone_spec.rb'
+    - 'spec/models/namespace_spec.rb'
+    - 'spec/models/note_spec.rb'
+    - 'spec/models/notification_setting_spec.rb'
+    - 'spec/models/operations/feature_flag_scope_spec.rb'
+    - 'spec/models/operations/feature_flags/strategy_spec.rb'
+    - 'spec/models/operations/feature_flags/user_list_spec.rb'
+    - 'spec/models/pages_domain_spec.rb'
+    - 'spec/models/project_auto_devops_spec.rb'
+    - 'spec/models/project_feature_spec.rb'
+    - 'spec/models/project_spec.rb'
+    - 'spec/models/project_team_spec.rb'
+    - 'spec/models/protectable_dropdown_spec.rb'
+    - 'spec/models/redirect_route_spec.rb'
+    - 'spec/models/release_spec.rb'
+    - 'spec/models/remote_mirror_spec.rb'
+    - 'spec/models/resource_milestone_event_spec.rb'
+    - 'spec/models/route_spec.rb'
+    - 'spec/models/sentry_issue_spec.rb'
+    - 'spec/models/service_spec.rb'
+    - 'spec/models/snippet_spec.rb'
+    - 'spec/models/upload_spec.rb'
+    - 'spec/models/user_preference_spec.rb'
+    - 'spec/models/user_spec.rb'
+    - 'spec/models/user_status_spec.rb'
+    - 'spec/models/wiki_page/meta_spec.rb'
+    - 'spec/models/wiki_page_spec.rb'
+    - 'spec/presenters/ci/build_runner_presenter_spec.rb'
+    - 'spec/presenters/ci/trigger_presenter_spec.rb'
+    - 'spec/presenters/packages/conan/package_presenter_spec.rb'
+    - 'spec/requests/api/ci/runner_spec.rb'
+    - 'spec/requests/api/commit_statuses_spec.rb'
+    - 'spec/requests/api/conan_packages_spec.rb'
+    - 'spec/requests/api/deployments_spec.rb'
+    - 'spec/requests/api/environments_spec.rb'
+    - 'spec/requests/api/go_proxy_spec.rb'
+    - 'spec/requests/api/graphql/mutations/merge_requests/set_labels_spec.rb'
+    - 'spec/requests/api/graphql/user_query_spec.rb'
+    - 'spec/requests/api/graphql_spec.rb'
+    - 'spec/requests/api/group_import_spec.rb'
+    - 'spec/requests/api/group_milestones_spec.rb'
+    - 'spec/requests/api/internal/base_spec.rb'
+    - 'spec/requests/api/issues/get_group_issues_spec.rb'
+    - 'spec/requests/api/issues/post_projects_issues_spec.rb'
+    - 'spec/requests/api/jobs_spec.rb'
+    - 'spec/requests/api/labels_spec.rb'
+    - 'spec/requests/api/project_import_spec.rb'
+    - 'spec/requests/projects/cycle_analytics_events_spec.rb'
+
+Rails/TimeZone:
+  Enabled: true
+  Exclude:
+    - 'lib/gitlab/popen.rb'
+    - 'ee/lib/delay.rb'
+    - 'ee/lib/gitlab/elastic/helper.rb'
+    - 'ee/lib/gitlab/elastic/indexer.rb'
+    - 'ee/lib/gitlab/geo/base_request.rb'
+    - 'ee/lib/gitlab/geo/event_gap_tracking.rb'
+    - 'ee/lib/gitlab/geo/log_cursor/events/design_repository_updated_event.rb'
+    - 'ee/lib/gitlab/geo/log_cursor/events/repository_updated_event.rb'
+    - 'ee/lib/gitlab/geo/log_cursor/logger.rb'
+    - 'ee/lib/gitlab/geo/oauth/login_state.rb'
+    - 'ee/lib/gitlab/prometheus/queries/cluster_query.rb'
+    - 'ee/lib/gitlab/prometheus/queries/packet_flow_query.rb'
+    - 'ee/spec/lib/ee/gitlab/checks/push_rules/commit_check_spec.rb'
+    - 'ee/spec/lib/ee/gitlab/ci/pipeline/quota/job_activity_spec.rb'
+    - 'ee/spec/lib/gitlab/analytics/cycle_analytics/data_collector_spec.rb'
+    - 'ee/spec/lib/gitlab/analytics/cycle_analytics/summary/group/stage_summary_spec.rb'
+    - 'ee/spec/lib/gitlab/analytics/cycle_analytics/summary/group/stage_time_summary_spec.rb'
+    - 'ee/spec/lib/gitlab/auth/ldap/access_spec.rb'
+    - 'ee/spec/lib/gitlab/auth/smartcard/san_extension_spec.rb'
+    - 'ee/spec/lib/gitlab/auth/smartcard/session_spec.rb'
+    - 'ee/spec/lib/gitlab/background_migration/fix_orphan_promoted_issues_spec.rb'
+    - 'ee/spec/lib/gitlab/ci/pipeline/chain/limit/job_activity_spec.rb'
+    - 'ee/spec/lib/gitlab/elastic/client_spec.rb'
+    - 'ee/spec/lib/gitlab/geo/base_request_spec.rb'
+    - 'ee/spec/lib/gitlab/geo/log_cursor/events/cache_invalidation_event_spec.rb'
+    - 'ee/spec/lib/gitlab/geo/log_cursor/events/container_repository_updated_event_spec.rb'
+    - 'ee/spec/lib/gitlab/geo/log_cursor/events/design_repository_updated_event_spec.rb'
+    - 'ee/spec/lib/gitlab/geo/log_cursor/events/event_spec.rb'
+    - 'ee/spec/lib/gitlab/geo/log_cursor/events/hashed_storage_attachments_event_spec.rb'
+    - 'ee/spec/lib/gitlab/geo/log_cursor/events/hashed_storage_migrated_event_spec.rb'
+    - 'ee/spec/lib/gitlab/geo/log_cursor/events/job_artifact_deleted_event_spec.rb'
+    - 'ee/spec/lib/gitlab/geo/log_cursor/events/lfs_object_deleted_event_spec.rb'
+    - 'ee/spec/lib/gitlab/geo/log_cursor/events/repositories_changed_event_spec.rb'
+    - 'ee/spec/lib/gitlab/geo/log_cursor/events/repository_created_event_spec.rb'
+    - 'ee/spec/lib/gitlab/geo/log_cursor/events/repository_deleted_event_spec.rb'
+    - 'ee/spec/lib/gitlab/geo/log_cursor/events/repository_renamed_event_spec.rb'
+    - 'ee/spec/lib/gitlab/geo/log_cursor/events/repository_updated_event_spec.rb'
+    - 'ee/spec/lib/gitlab/geo/log_cursor/events/reset_checksum_event_spec.rb'
+    - 'ee/spec/lib/gitlab/geo/log_cursor/events/upload_deleted_event_spec.rb'
+    - 'ee/spec/lib/gitlab/geo/log_cursor/logger_spec.rb'
+    - 'ee/spec/lib/gitlab/git_access_spec.rb'
+    - 'ee/spec/lib/gitlab/prometheus/queries/additional_metrics_deployment_query_spec.rb'
+    - 'ee/spec/lib/gitlab/prometheus/queries/cluster_query_spec.rb'
+    - 'ee/spec/lib/gitlab/prometheus/queries/packet_flow_query_spec.rb'
+    - 'lib/api/helpers.rb'
+    - 'lib/api/sidekiq_metrics.rb'
+    - 'lib/backup/manager.rb'
+    - 'lib/bitbucket_server/representation/base.rb'
+    - 'lib/gitlab/auth/current_user_mode.rb'
+    - 'lib/gitlab/auth/ldap/access.rb'
+    - 'lib/gitlab/chaos.rb'
+    - 'lib/gitlab/checks/timed_logger.rb'
+    - 'lib/gitlab/ci/ansi2json/line.rb'
+    - 'lib/gitlab/ci/pipeline/chain/sequence.rb'
+    - 'lib/gitlab/ci/pipeline/duration.rb'
+    - 'lib/gitlab/cycle_analytics/summary/deployment_frequency.rb'
+    - 'lib/gitlab/database.rb'
+    - 'lib/gitlab/external_authorization/access.rb'
+    - 'lib/gitlab/external_authorization/cache.rb'
+    - 'lib/gitlab/gitaly_client.rb'
+    - 'lib/gitlab/gitaly_client/ref_service.rb'
+    - 'lib/gitlab/github_import/representation.rb'
+    - 'lib/gitlab/grape_logging/loggers/queue_duration_logger.rb'
+    - 'lib/gitlab/health_checks/base_abstract_check.rb'
+    - 'lib/gitlab/import_export.rb'
+    - 'lib/gitlab/instrumentation/elasticsearch_transport.rb'
+    - 'lib/gitlab/instrumentation/redis_interceptor.rb'
+    - 'lib/gitlab/instrumentation_helper.rb'
+    - 'lib/gitlab/kubernetes/helm/certificate.rb'
+    - 'lib/gitlab/lfs_token.rb'
+    - 'lib/gitlab/loop_helpers.rb'
+    - 'lib/gitlab/phabricator_import/representation/task.rb'
+    - 'lib/gitlab/prometheus/queries/additional_metrics_environment_query.rb'
+    - 'lib/gitlab/prometheus/queries/matched_metric_query.rb'
+    - 'lib/gitlab/prometheus_client.rb'
+    - 'lib/gitlab/sherlock/transaction.rb'
+    - 'lib/gitlab/task_helpers.rb'
+    - 'lib/gitlab/x509/tag.rb'
+    - 'lib/grafana/time_window.rb'
+    - 'lib/json_web_token/token.rb'
+    - 'lib/object_storage/direct_upload.rb'
+    - 'lib/quality/seeders/issues.rb'
+    - 'lib/rspec_flaky/flaky_example.rb'
+    - 'lib/rspec_flaky/report.rb'
+    - 'lib/tasks/gitlab/assets.rake'
+    - 'lib/tasks/gitlab/backup.rake'
+    - 'lib/tasks/gitlab/cleanup.rake'
+    - 'lib/tasks/gitlab/list_repos.rake'
+    - 'spec/lib/api/helpers_spec.rb'
+    - 'spec/lib/gitlab/analytics/cycle_analytics/base_query_builder_spec.rb'
+    - 'spec/lib/gitlab/app_json_logger_spec.rb'
+    - 'spec/lib/gitlab/app_text_logger_spec.rb'
+    - 'spec/lib/gitlab/auth/current_user_mode_spec.rb'
+    - 'spec/lib/gitlab/background_migration/recalculate_project_authorizations_spec.rb'
+    - 'spec/lib/gitlab/background_migration/wrongfully_confirmed_email_unconfirmer_spec.rb'
+    - 'spec/lib/gitlab/bitbucket_import/importer_spec.rb'
+    - 'spec/lib/gitlab/bitbucket_server_import/importer_spec.rb'
+    - 'spec/lib/gitlab/checks/timed_logger_spec.rb'
+    - 'spec/lib/gitlab/ci/cron_parser_spec.rb'
+    - 'spec/lib/gitlab/cycle_analytics/stage_summary_spec.rb'
+    - 'spec/lib/gitlab/cycle_analytics/usage_data_spec.rb'
+    - 'spec/lib/gitlab/data_builder/note_spec.rb'
+    - 'spec/lib/gitlab/database/background_migration_job_spec.rb'
+    - 'spec/lib/gitlab/database_spec.rb'
+    - 'spec/lib/gitlab/discussions_diff/file_collection_spec.rb'
+    - 'spec/lib/gitlab/external_authorization/access_spec.rb'
+    - 'spec/lib/gitlab/external_authorization/cache_spec.rb'
+    - 'spec/lib/gitlab/external_authorization/logger_spec.rb'
+    - 'spec/lib/gitlab/fogbugz_import/importer_spec.rb'
+    - 'spec/lib/gitlab/git/branch_spec.rb'
+    - 'spec/lib/gitlab/git/commit_spec.rb'
+    - 'spec/lib/gitlab/git/repository_spec.rb'
+    - 'spec/lib/gitlab/git_access_spec.rb'
+    - 'spec/lib/gitlab/github_import/importer/diff_note_importer_spec.rb'
+    - 'spec/lib/gitlab/github_import/importer/issue_importer_spec.rb'
+    - 'spec/lib/gitlab/github_import/importer/issues_importer_spec.rb'
+    - 'spec/lib/gitlab/github_import/importer/milestones_importer_spec.rb'
+    - 'spec/lib/gitlab/github_import/importer/note_importer_spec.rb'
+    - 'spec/lib/gitlab/github_import/importer/pull_request_importer_spec.rb'
+    - 'spec/lib/gitlab/github_import/importer/releases_importer_spec.rb'
+    - 'spec/lib/gitlab/github_import/representation/diff_note_spec.rb'
+    - 'spec/lib/gitlab/github_import/representation/issue_spec.rb'
+    - 'spec/lib/gitlab/github_import/representation/note_spec.rb'
+    - 'spec/lib/gitlab/github_import/representation/pull_request_spec.rb'
+    - 'spec/lib/gitlab/grape_logging/formatters/lograge_with_timestamp_spec.rb'
+    - 'spec/lib/gitlab/grape_logging/loggers/cloudflare_logger_spec.rb'
+    - 'spec/lib/gitlab/grape_logging/loggers/queue_duration_logger_spec.rb'
+    - 'spec/lib/gitlab/graphql_logger_spec.rb'
+    - 'spec/lib/gitlab/graphs/commits_spec.rb'
+    - 'spec/lib/gitlab/import_export/project/relation_factory_spec.rb'
+    - 'spec/lib/gitlab/instrumentation_helper_spec.rb'
+    - 'spec/lib/gitlab/json_logger_spec.rb'
+    - 'spec/lib/gitlab/lfs_token_spec.rb'
+    - 'spec/lib/gitlab/log_timestamp_formatter_spec.rb'
+    - 'spec/lib/gitlab/middleware/rails_queue_duration_spec.rb'
+    - 'spec/lib/gitlab/omniauth_logging/json_formatter_spec.rb'
+    - 'spec/lib/gitlab/phabricator_import/issues/task_importer_spec.rb'
+    - 'spec/lib/gitlab/phabricator_import/representation/task_spec.rb'
+    - 'spec/lib/gitlab/prometheus/queries/additional_metrics_deployment_query_spec.rb'
+    - 'spec/lib/gitlab/prometheus/queries/deployment_query_spec.rb'
+    - 'spec/lib/gitlab/prometheus/queries/validate_query_spec.rb'
+    - 'spec/lib/gitlab/sherlock/transaction_spec.rb'
+    - 'spec/lib/gitlab/sidekiq_logging/json_formatter_spec.rb'
+    - 'spec/lib/gitlab/sidekiq_middleware/duplicate_jobs/strategies/until_executing_spec.rb'
+    - 'spec/lib/gitlab/updated_notes_paginator_spec.rb'
+    - 'spec/lib/gitlab/utils/json_size_estimator_spec.rb'
+    - 'spec/lib/gitlab/x509/signature_spec.rb'
+    - 'spec/lib/grafana/time_window_spec.rb'
+    - 'spec/lib/json_web_token/hmac_token_spec.rb'
+    - 'spec/lib/rspec_flaky/flaky_example_spec.rb'
+    - 'spec/lib/rspec_flaky/listener_spec.rb'
+    - 'spec/lib/rspec_flaky/report_spec.rb'
+
+RSpec/TimecopFreeze:
+  Exclude:
+    - 'ee/spec/controllers/admin/application_settings_controller_spec.rb'
+    - 'ee/spec/controllers/projects/security/network_policies_controller_spec.rb'
+    - 'ee/spec/features/admin/admin_reset_pipeline_minutes_spec.rb'
+    - 'ee/spec/features/boards/sidebar_spec.rb'
+    - 'ee/spec/features/groups/analytics/cycle_analytics/filters_and_data_spec.rb'
+    - 'ee/spec/features/groups/iteration_spec.rb'
+    - 'ee/spec/features/projects/mirror_spec.rb'
+    - 'ee/spec/features/projects/services/prometheus_custom_metrics_spec.rb'
+    - 'ee/spec/finders/productivity_analytics_finder_spec.rb'
+    - 'ee/spec/frontend/fixtures/analytics.rb'
+    - 'ee/spec/helpers/vulnerabilities_helper_spec.rb'
+    - 'ee/spec/lib/analytics/merge_request_metrics_refresh_spec.rb'
+    - 'ee/spec/lib/analytics/productivity_analytics_request_params_spec.rb'
+    - 'ee/spec/lib/ee/gitlab/background_migration/populate_vulnerability_historical_statistics_spec.rb'
+    - 'ee/spec/lib/gitlab/analytics/cycle_analytics/data_collector_spec.rb'
+    - 'ee/spec/lib/gitlab/analytics/cycle_analytics/group_stage_time_summary_spec.rb'
+    - 'ee/spec/lib/gitlab/analytics/cycle_analytics/summary/group/stage_time_summary_spec.rb'
+    - 'ee/spec/lib/gitlab/analytics/type_of_work/tasks_by_type_spec.rb'
+    - 'ee/spec/lib/gitlab/auth/group_saml/sso_enforcer_spec.rb'
+    - 'ee/spec/lib/gitlab/database/load_balancing/host_spec.rb'
+    - 'ee/spec/lib/gitlab/geo/base_request_spec.rb'
+    - 'ee/spec/lib/gitlab/geo/event_gap_tracking_spec.rb'
+    - 'ee/spec/lib/gitlab/geo/git_push_http_spec.rb'
+    - 'ee/spec/lib/gitlab/geo/log_cursor/daemon_spec.rb'
+    - 'ee/spec/lib/gitlab/geo/log_cursor/events/repository_updated_event_spec.rb'
+    - 'ee/spec/lib/gitlab/geo/oauth/login_state_spec.rb'
+    - 'ee/spec/lib/gitlab/insights/reducers/count_per_period_reducer_spec.rb'
+    - 'ee/spec/lib/gitlab/prometheus/queries/additional_metrics_environment_query_spec.rb'
+    - 'ee/spec/lib/gitlab/prometheus/queries/cluster_query_spec.rb'
+    - 'ee/spec/migrations/populate_vulnerability_historical_statistics_for_year_spec.rb'
+    - 'ee/spec/migrations/remove_duplicated_cs_findings_spec.rb'
+    - 'ee/spec/migrations/remove_duplicated_cs_findings_without_vulnerability_id_spec.rb'
+    - 'ee/spec/migrations/schedule_fix_orphan_promoted_issues_spec.rb'
+    - 'ee/spec/migrations/schedule_merge_request_any_approval_rule_migration_spec.rb'
+    - 'ee/spec/migrations/schedule_populate_resolved_on_default_branch_column_spec.rb'
+    - 'ee/spec/migrations/schedule_populate_vulnerability_historical_statistics_spec.rb'
+    - 'ee/spec/migrations/schedule_project_any_approval_rule_migration_spec.rb'
+    - 'ee/spec/migrations/set_resolved_state_on_vulnerabilities_spec.rb'
+    - 'ee/spec/migrations/20190926180443_schedule_epic_issues_after_epics_move_spec.rb'
+    - 'ee/spec/models/analytics/cycle_analytics/group_level_spec.rb'
+    - 'ee/spec/models/burndown_spec.rb'
+    - 'ee/spec/models/ee/namespace_spec.rb'
+    - 'ee/spec/models/geo/project_registry_spec.rb'
+    - 'ee/spec/models/merge_train_spec.rb'
+    - 'ee/spec/models/productivity_analytics_spec.rb'
+    - 'ee/spec/models/project_spec.rb'
+    - 'ee/spec/models/vulnerabilities/export_spec.rb'
+    - 'ee/spec/requests/api/vulnerabilities_spec.rb'
+    - 'ee/spec/services/geo/file_download_service_spec.rb'
+    - 'ee/spec/services/vulnerabilities/confirm_service_spec.rb'
+    - 'ee/spec/services/vulnerabilities/dismiss_service_spec.rb'
+    - 'ee/spec/services/vulnerabilities/resolve_service_spec.rb'
+    - 'ee/spec/services/vulnerabilities/revert_to_detected_service_spec.rb'
+    - 'ee/spec/services/vulnerability_exports/export_service_spec.rb'
+    - 'ee/spec/support/shared_contexts/lib/gitlab/insights/reducers/reducers_shared_contexts.rb'
+    - 'qa/spec/support/repeater_spec.rb'
+    - 'spec/features/profiles/active_sessions_spec.rb'
+    - 'spec/features/projects/environments/environment_metrics_spec.rb'
+    - 'spec/features/users/active_sessions_spec.rb'
+    - 'spec/lib/atlassian/jira_connect/client_spec.rb'
+    - 'spec/lib/gitlab/analytics/cycle_analytics/base_query_builder_spec.rb'
+    - 'spec/lib/gitlab/analytics/cycle_analytics/median_spec.rb'
+    - 'spec/lib/gitlab/analytics/cycle_analytics/records_fetcher_spec.rb'
+    - 'spec/lib/gitlab/anonymous_session_spec.rb'
+    - 'spec/lib/gitlab/auth/unique_ips_limiter_spec.rb'
+    - 'spec/lib/gitlab/checks/timed_logger_spec.rb'
+    - 'spec/lib/gitlab/cycle_analytics/stage_summary_spec.rb'
+    - 'spec/lib/gitlab/cycle_analytics/usage_data_spec.rb'
+    - 'spec/lib/gitlab/instrumentation_helper_spec.rb'
+    - 'spec/lib/gitlab/omniauth_logging/json_formatter_spec.rb'
+    - 'spec/lib/gitlab/puma_logging/json_formatter_spec.rb'
+    - 'spec/lib/gitlab/sidekiq_logging/structured_logger_spec.rb'
+    - 'spec/lib/json_web_token/hmac_token_spec.rb'
+    - 'spec/lib/rspec_flaky/flaky_example_spec.rb'
+    - 'spec/lib/rspec_flaky/listener_spec.rb'
+    - 'spec/models/active_session_spec.rb'
+    - 'spec/models/container_repository_spec.rb'
+    - 'spec/models/pages/lookup_path_spec.rb'
+    - 'spec/models/project_feature_usage_spec.rb'
+    - 'spec/requests/api/v3/github_spec.rb'
+    - 'spec/serializers/entity_date_helper_spec.rb'
+    - 'spec/support/cycle_analytics_helpers/test_generation.rb'
+    - 'spec/support/helpers/cycle_analytics_helpers.rb'
+    - 'spec/support/helpers/javascript_fixtures_helpers.rb'
+    - 'spec/support/shared_contexts/rack_attack_shared_context.rb'
+    - 'spec/support/shared_examples/workers/concerns/reenqueuer_shared_examples.rb'
+    - 'spec/workers/concerns/reenqueuer_spec.rb'
+    - 'spec/workers/metrics/dashboard/prune_old_annotations_worker_spec.rb'
+
+RSpec/TimecopTravel:
+  Exclude:
+    - 'ee/spec/lib/gitlab/geo/event_gap_tracking_spec.rb'
+    - 'ee/spec/lib/gitlab/geo/git_push_http_spec.rb'
+    - 'ee/spec/lib/gitlab/geo/jwt_request_decoder_spec.rb'
+    - 'ee/spec/lib/gitlab/geo/log_cursor/daemon_spec.rb'
+    - 'ee/spec/models/broadcast_message_spec.rb'
+    - 'ee/spec/models/burndown_spec.rb'
+    - 'qa/spec/support/repeater_spec.rb'
+    - 'spec/features/users/terms_spec.rb'
+    - 'spec/lib/feature_spec.rb'
+    - 'spec/models/broadcast_message_spec.rb'
+    - 'spec/models/concerns/issuable_spec.rb'
+    - 'spec/requests/api/ci/runner/jobs_trace_spec.rb'
+    - 'spec/requests/api/issues/put_projects_issues_spec.rb'
+    - 'spec/support/shared_contexts/cache_allowed_users_in_namespace_shared_context.rb'
+    - 'spec/support/shared_examples/requests/api/time_tracking_shared_examples.rb'
+    - 'spec/support/shared_examples/workers/concerns/reenqueuer_shared_examples.rb'
+    - 'spec/workers/concerns/reenqueuer_spec.rb'
+    - 'spec/lib/gitlab/analytics/cycle_analytics/median_spec.rb'
diff --git a/.rubocop_todo.yml b/.rubocop_todo.yml
index bba84800d5229b559197387cb778480c29594ca2..ba6ee058218a7a5d41d30fd3870fdc3d14d93d7e 100644
--- a/.rubocop_todo.yml
+++ b/.rubocop_todo.yml
@@ -1,38 +1,49 @@
 # This configuration was generated by
-# `rubocop --auto-gen-config --exclude-limit 10000`
-# on 2020-08-17 21:05:54 +1200 using RuboCop version 0.82.0.
+# `rubocop --auto-gen-config`
+# on 2020-10-29 17:35:37 UTC using RuboCop version 0.89.1.
 # The point is for the user to remove these configuration records
 # one by one as the offenses are removed from the code base.
 # Note that changes in the inspected code, or installation of new
 # versions of RuboCop, may require this file to be generated again.
 
-# Offense count: 308
+# Offense count: 310
 # Cop supports --auto-correct.
 Capybara/CurrentPathExpectation:
   Enabled: false
 
-# Offense count: 1715
+# Offense count: 210
+Capybara/VisibilityMatcher:
+  Enabled: false
+
+# Offense count: 1903
 # Cop supports --auto-correct.
 # Configuration parameters: EnforcedStyle, IndentationWidth.
 # SupportedStyles: with_first_argument, with_fixed_indentation
 Layout/ArgumentAlignment:
   Enabled: false
 
-# Offense count: 413
+# Offense count: 49
+# Cop supports --auto-correct.
+# Configuration parameters: AllowAliasSyntax, AllowedMethods.
+# AllowedMethods: alias_method, public, protected, private
+Layout/EmptyLinesAroundAttributeAccessor:
+  Enabled: false
+
+# Offense count: 610
 # Cop supports --auto-correct.
 # Configuration parameters: EnforcedStyle, IndentationWidth.
 # SupportedStyles: special_inside_parentheses, consistent, align_brackets
 Layout/FirstArrayElementIndentation:
   Enabled: false
 
-# Offense count: 1218
+# Offense count: 1535
 # Cop supports --auto-correct.
 # Configuration parameters: EnforcedStyle, IndentationWidth.
 # SupportedStyles: special_inside_parentheses, consistent, align_braces
 Layout/FirstHashElementIndentation:
   Enabled: false
 
-# Offense count: 2164
+# Offense count: 2754
 # Cop supports --auto-correct.
 # Configuration parameters: AllowMultipleStyles, EnforcedHashRocketStyle, EnforcedColonStyle, EnforcedLastArgumentHashStyle.
 # SupportedHashRocketStyles: key, separator, table
@@ -41,33 +52,33 @@ Layout/FirstHashElementIndentation:
 Layout/HashAlignment:
   Enabled: false
 
-# Offense count: 9396
+# Offense count: 64
 # Cop supports --auto-correct.
 # Configuration parameters: AutoCorrect, AllowHeredoc, AllowURI, URISchemes, IgnoreCopDirectives, IgnoredPatterns.
 # URISchemes: http, https
 Layout/LineLength:
   Max: 1313
 
-# Offense count: 94
+# Offense count: 118
 # Cop supports --auto-correct.
 # Configuration parameters: EnforcedStyle, IndentationWidth.
 # SupportedStyles: aligned, indented
 Layout/MultilineOperationIndentation:
   Enabled: false
 
-# Offense count: 36
+# Offense count: 52
 # Cop supports --auto-correct.
 Layout/SpaceAroundMethodCallOperator:
   Enabled: false
 
-# Offense count: 642
+# Offense count: 790
 # Cop supports --auto-correct.
 # Configuration parameters: EnforcedStyle.
 # SupportedStyles: require_no_space, require_space
 Layout/SpaceInLambdaLiteral:
   Enabled: false
 
-# Offense count: 926
+# Offense count: 1110
 # Cop supports --auto-correct.
 # Configuration parameters: EnforcedStyle, EnforcedStyleForEmptyBraces, SpaceBeforeBlockParameters.
 # SupportedStyles: space, no_space
@@ -75,23 +86,89 @@ Layout/SpaceInLambdaLiteral:
 Layout/SpaceInsideBlockBraces:
   Enabled: false
 
-# Offense count: 401
+# Offense count: 501
 # Cop supports --auto-correct.
 # Configuration parameters: EnforcedStyle.
 # SupportedStyles: space, no_space
 Layout/SpaceInsideParens:
   Enabled: false
 
+# Offense count: 18
+Lint/BinaryOperatorWithIdenticalOperands:
+  Exclude:
+    - 'app/finders/concerns/time_frame_filter.rb'
+    - 'ee/spec/lib/ee/gitlab/application_context_spec.rb'
+    - 'spec/helpers/visibility_level_helper_spec.rb'
+    - 'spec/lib/gitlab/conan_token_spec.rb'
+    - 'spec/lib/gitlab/danger/sidekiq_queues_spec.rb'
+    - 'spec/lib/gitlab/git/conflict/parser_spec.rb'
+    - 'spec/lib/gitlab/graphql/lazy_spec.rb'
+    - 'spec/models/ci/build_trace_chunk_spec.rb'
+    - 'spec/models/clusters/platforms/kubernetes_spec.rb'
+    - 'spec/models/concerns/where_composite_spec.rb'
+    - 'spec/models/metrics/dashboard/annotation_spec.rb'
+    - 'spec/models/repository_spec.rb'
+    - 'spec/models/ssh_host_key_spec.rb'
+
+# Offense count: 9
+# Cop supports --auto-correct.
+Lint/DeprecatedOpenSSLConstant:
+  Exclude:
+    - 'app/services/clusters/kubernetes/configure_istio_ingress_service.rb'
+    - 'ee/lib/gitlab/geo/oauth/logout_state.rb'
+    - 'lib/gitlab/conan_token.rb'
+    - 'lib/gitlab/gitaly_client.rb'
+    - 'lib/gitlab/kubernetes/helm/certificate.rb'
+    - 'lib/gitlab/kubernetes/helm/v2/certificate.rb'
+    - 'spec/lib/gitlab/conan_token_spec.rb'
+    - 'spec/services/pages_domains/obtain_lets_encrypt_certificate_service_spec.rb'
+    - 'spec/support/helpers/smime_helper.rb'
+    - 'spec/support/shared_contexts/requests/api/conan_packages_shared_context.rb'
+
+# Offense count: 1
+Lint/FloatComparison:
+  Exclude:
+    - 'ee/app/models/ee/namespace.rb'
+
 # Offense count: 157
 # Configuration parameters: MaximumRangeSize.
 Lint/MissingCopEnableDirective:
   Enabled: false
 
-# Offense count: 27
+# Offense count: 14
+Lint/MixedRegexpCaptureTypes:
+  Exclude:
+    - 'app/models/alert_management/alert.rb'
+    - 'app/models/project_services/ewm_service.rb'
+    - 'app/uploaders/file_uploader.rb'
+    - 'ee/lib/gitlab/code_owners/reference_extractor.rb'
+    - 'lib/gitlab/ci/pipeline/expression/lexeme/string.rb'
+    - 'lib/gitlab/dependency_linker/gemfile_linker.rb'
+    - 'lib/gitlab/diff/inline_diff.rb'
+    - 'lib/gitlab/diff/suggestions_parser.rb'
+    - 'lib/gitlab/github_import/representation/note.rb'
+    - 'lib/gitlab/metrics/system.rb'
+    - 'lib/gitlab/request_profiler/profile.rb'
+    - 'lib/gitlab/slash_commands/issue_move.rb'
+    - 'lib/gitlab/slash_commands/issue_new.rb'
+    - 'lib/gitlab/slash_commands/run.rb'
+
+# Offense count: 1
+# Cop supports --auto-correct.
+Lint/NonDeterministicRequireOrder:
+  Exclude:
+    - 'rubocop/rubocop.rb'
+
+# Offense count: 118
 # Cop supports --auto-correct.
 Lint/RedundantCopDisableDirective:
   Enabled: false
 
+# Offense count: 1
+Lint/SelfAssignment:
+  Exclude:
+    - 'spec/lib/gitlab/search_context/builder_spec.rb'
+
 # Offense count: 1
 # Cop supports --auto-correct.
 Lint/SendWithMixinArgument:
@@ -105,13 +182,34 @@ Lint/StructNewOverride:
     - 'app/serializers/environment_serializer.rb'
     - 'lib/gitlab/ci/pipeline/duration.rb'
 
-# Offense count: 65
+# Offense count: 1
+Lint/UnreachableLoop:
+  Exclude:
+    - 'qa/qa/runtime/feature.rb'
+
+# Offense count: 5
+# Configuration parameters: IgnoredMethods.
+Metrics/AbcSize:
+  Max: 59
+
+# Offense count: 13
+# Configuration parameters: IgnoredMethods.
+Metrics/CyclomaticComplexity:
+  Max: 25
+
+# Offense count: 13
+# Configuration parameters: IgnoredMethods.
+Metrics/PerceivedComplexity:
+  Max: 25
+
+# Offense count: 1
 # Cop supports --auto-correct.
 Migration/DepartmentName:
-  Enabled: false
+  Exclude:
+    - 'app/models/commit.rb'
 
-# Offense count: 156
-# Configuration parameters: ExpectMatchingDefinition, Regex, IgnoreExecutableScripts, AllowedAcronyms.
+# Offense count: 171
+# Configuration parameters: ExpectMatchingDefinition, CheckDefinitionPathHierarchy, Regex, IgnoreExecutableScripts, AllowedAcronyms.
 # AllowedAcronyms: 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
 Naming/FileName:
   Enabled: false
@@ -127,7 +225,7 @@ Naming/HeredocDelimiterCase:
     - 'spec/support/helpers/repo_helpers.rb'
     - 'spec/support/helpers/seed_repo.rb'
 
-# Offense count: 239
+# Offense count: 263
 # Configuration parameters: ForbiddenDelimiters.
 # ForbiddenDelimiters: (?-mix:(^|\s)(EO[A-Z]{1}|END)(\s|$))
 Naming/HeredocDelimiterNaming:
@@ -135,19 +233,30 @@ Naming/HeredocDelimiterNaming:
 
 # Offense count: 5
 # Configuration parameters: MinNameLength, AllowNamesEndingInNumbers, AllowedNames, ForbiddenNames.
-# AllowedNames: io, id, to, by, on, in, at, ip, db, os, pp
+# AllowedNames: at, by, db, id, in, io, ip, of, on, os, pp, to
 Naming/MethodParameterName:
   Exclude:
     - 'lib/gitlab/diff/inline_diff.rb'
     - 'spec/support/helpers/key_generator_helper.rb'
 
-# Offense count: 162
+# Offense count: 191
 # Cop supports --auto-correct.
 # Configuration parameters: PreferredName.
 Naming/RescuedExceptionsVariableName:
   Enabled: false
 
-# Offense count: 20
+# Offense count: 1
+# Cop supports --auto-correct.
+Performance/AncestorsInclude:
+  Exclude:
+    - 'lib/gitlab/ci/config/extendable/entry.rb'
+
+# Offense count: 28
+# Configuration parameters: MinSize.
+Performance/CollectionLiteralInLoop:
+  Enabled: false
+
+# Offense count: 19
 # Cop supports --auto-correct.
 Performance/Count:
   Exclude:
@@ -159,49 +268,157 @@ Performance/Count:
     - 'spec/lib/gitlab/git/tree_spec.rb'
     - 'spec/models/ci/build_spec.rb'
     - 'spec/support/matchers/exceed_query_limit.rb'
+    - 'spec/support_specs/helpers/active_record/query_recorder_spec.rb'
 
-# Offense count: 25
+# Offense count: 15
+# Cop supports --auto-correct.
+# Configuration parameters: SafeMultiline.
+Performance/DeletePrefix:
+  Exclude:
+    - 'app/helpers/submodule_helper.rb'
+    - 'app/workers/concerns/application_worker.rb'
+    - 'ee/lib/gitlab/geo/git_ssh_proxy.rb'
+    - 'lib/banzai/filter/repository_link_filter.rb'
+    - 'lib/gitlab/auth/ldap/dn.rb'
+    - 'lib/gitlab/gfm/uploads_rewriter.rb'
+    - 'lib/gitlab/git/ref.rb'
+    - 'lib/gitlab/project_template.rb'
+    - 'lib/gitlab/repo_path.rb'
+    - 'lib/gitlab/setup_helper.rb'
+    - 'lib/gitlab/time_tracking_formatter.rb'
+    - 'spec/controllers/projects/artifacts_controller_spec.rb'
+    - 'spec/lib/gitlab/gfm/uploads_rewriter_spec.rb'
+    - 'spec/support/helpers/test_env.rb'
+
+# Offense count: 6
+# Cop supports --auto-correct.
+# Configuration parameters: SafeMultiline.
+Performance/DeleteSuffix:
+  Exclude:
+    - 'app/helpers/submodule_helper.rb'
+    - 'app/workers/concerns/application_worker.rb'
+    - 'ee/app/models/geo/upload_registry.rb'
+    - 'ee/app/workers/geo/file_download_dispatch_worker/attachment_job_finder.rb'
+    - 'lib/gitlab/repo_path.rb'
+    - 'lib/sentry/client/issue.rb'
+
+# Offense count: 13
 # Cop supports --auto-correct.
 Performance/Detect:
   Exclude:
     - 'ee/spec/controllers/projects/dependencies_controller_spec.rb'
+    - 'ee/spec/requests/api/dependencies_spec.rb'
+    - 'qa/qa/runtime/feature.rb'
     - 'spec/lib/gitlab/git/tree_spec.rb'
     - 'spec/lib/gitlab/import_export/project/tree_restorer_spec.rb'
     - 'spec/models/event_spec.rb'
-    - 'spec/requests/api/jobs_spec.rb'
 
-# Offense count: 11832
+# Offense count: 19
+# Cop supports --auto-correct.
+# Configuration parameters: AutoCorrect.
+Performance/StringInclude:
+  Exclude:
+    - 'app/helpers/groups_helper.rb'
+    - 'app/models/snippet_repository.rb'
+    - 'config/initializers/macos.rb'
+    - 'config/spring.rb'
+    - 'ee/app/models/ee/container_registry/event.rb'
+    - 'ee/lib/gitlab/auth/smartcard/certificate.rb'
+    - 'lib/gitlab/database/migration_helpers.rb'
+    - 'lib/kramdown/parser/atlassian_document_format.rb'
+    - 'lib/prometheus/pid_provider.rb'
+    - 'qa/qa/ee/page/merge_request/show.rb'
+    - 'qa/qa/specs/runner.rb'
+    - 'spec/features/projects/jobs_spec.rb'
+    - 'spec/lib/gitlab/import_export/project/tree_restorer_spec.rb'
+    - 'spec/spec_helper.rb'
+    - 'spec/support_specs/helpers/active_record/query_recorder_spec.rb'
+
+# Offense count: 9
+# Cop supports --auto-correct.
+Performance/Sum:
+  Exclude:
+    - 'app/models/application_setting_implementation.rb'
+    - 'app/models/ci/pipeline.rb'
+    - 'ee/spec/lib/gitlab/elastic/bulk_indexer_spec.rb'
+    - 'lib/declarative_policy/rule.rb'
+    - 'lib/declarative_policy/runner.rb'
+    - 'lib/gitlab/sherlock/transaction.rb'
+    - 'lib/gitlab/usage_data.rb'
+
+# Offense count: 13879
 # Configuration parameters: Prefixes.
 # Prefixes: when, with, without
 RSpec/ContextWording:
   Enabled: false
 
-# Offense count: 1121
+# Offense count: 4
+# Configuration parameters: CustomIncludeMethods.
+RSpec/EmptyExampleGroup:
+  Exclude:
+    - 'ee/spec/services/personal_access_tokens/revoke_invalid_tokens_spec.rb'
+    - 'spec/services/projects/prometheus/alerts/notify_service_spec.rb'
+
+# Offense count: 176
+# Cop supports --auto-correct.
+RSpec/EmptyLineAfterLetBlock:
+  Enabled: false
+
+# Offense count: 1310
 # Cop supports --auto-correct.
 # Configuration parameters: EnforcedStyle.
 # SupportedStyles: method_call, block
 RSpec/ExpectChange:
   Enabled: false
 
-# Offense count: 751
+RSpec/ExpectGitlabTracking:
+  Exclude:
+    - 'ee/spec/requests/api/visual_review_discussions_spec.rb'
+    - 'ee/spec/services/epics/issue_promote_service_spec.rb'
+    - 'spec/controllers/groups/registry/repositories_controller_spec.rb'
+    - 'spec/controllers/projects/registry/repositories_controller_spec.rb'
+    - 'spec/controllers/projects/registry/tags_controller_spec.rb'
+    - 'spec/controllers/projects/settings/operations_controller_spec.rb'
+    - 'spec/lib/api/helpers_spec.rb'
+    - 'spec/requests/api/project_container_repositories_spec.rb'
+    - 'spec/support/shared_examples/controllers/trackable_shared_examples.rb'
+    - 'spec/support/shared_examples/requests/api/discussions_shared_examples.rb'
+    - 'spec/support/shared_examples/requests/api/packages_shared_examples.rb'
+    - 'spec/support/shared_examples/requests/api/tracking_shared_examples.rb'
+
+# Offense count: 888
 RSpec/ExpectInHook:
   Enabled: false
 
-# Offense count: 2188
+# Offense count: 15945
+# Configuration parameters: AllowSubject.
+RSpec/MultipleMemoizedHelpers:
+  Max: 40
+
+# Offense count: 2297
 # Cop supports --auto-correct.
 # Configuration parameters: Strict, EnforcedStyle, AllowedExplicitMatchers.
 # SupportedStyles: inflected, explicit
 RSpec/PredicateMatcher:
   Enabled: false
 
-# Offense count: 635
+# Offense count: 98
+RSpec/RepeatedExampleGroupBody:
+  Enabled: false
+
+# Offense count: 213
+RSpec/RepeatedExampleGroupDescription:
+  Enabled: false
+
+# Offense count: 636
 # Cop supports --auto-correct.
 # Configuration parameters: EnforcedStyle.
 # SupportedStyles: and_return, block
 RSpec/ReturnFromStub:
   Enabled: false
 
-# Offense count: 518
+# Offense count: 574
+# Cop supports --auto-correct.
 RSpec/ScatteredLet:
   Enabled: false
 
@@ -210,6 +427,34 @@ RSpec/ScatteredSetup:
   Exclude:
     - 'spec/requests/api/jobs_spec.rb'
 
+# Offense count: 10
+# Configuration parameters: EnforcedStyle.
+# SupportedStyles: symbols, strings
+RSpec/VariableDefinition:
+  Exclude:
+    - 'spec/initializers/mail_encoding_patch_spec.rb'
+
+# Offense count: 25
+# Configuration parameters: EnforcedStyle, IgnoredPatterns.
+# SupportedStyles: snake_case, camelCase
+RSpec/VariableName:
+  Exclude:
+    - 'spec/features/projects/import_export/import_file_spec.rb'
+    - 'spec/features/task_lists_spec.rb'
+    - 'spec/initializers/mail_encoding_patch_spec.rb'
+    - 'spec/lib/gitlab/experimentation_spec.rb'
+    - 'spec/models/board_spec.rb'
+    - 'spec/support/shared_contexts/url_shared_context.rb'
+    - 'spec/support/shared_examples/requests/api/graphql/group_and_project_boards_query_shared_examples.rb'
+    - 'spec/support/shared_examples/services/boards/boards_list_service_shared_examples.rb'
+
+# Offense count: 27
+# Cop supports --auto-correct.
+# Configuration parameters: Include.
+# Include: app/models/**/*.rb
+Rails/ActiveRecordCallbacksOrder:
+  Enabled: false
+
 # Offense count: 10
 # Cop supports --auto-correct.
 Rails/ApplicationController:
@@ -232,41 +477,63 @@ Rails/BelongsTo:
     - 'app/models/deployment.rb'
     - 'app/models/environment.rb'
 
-# Offense count: 71
+# Offense count: 84
 # Configuration parameters: Database, Include.
 # SupportedDatabases: mysql, postgresql
 # Include: db/migrate/*.rb
 Rails/BulkChangeTable:
   Enabled: false
 
-# Offense count: 208
+# Offense count: 151
+# Cop supports --auto-correct.
+Rails/ContentTag:
+  Enabled: false
+
+# Offense count: 270
 # Configuration parameters: Include.
 # Include: db/migrate/*.rb
 Rails/CreateTableWithTimestamps:
   Enabled: false
 
-# Offense count: 346
+# Offense count: 323
 # Configuration parameters: EnforcedStyle.
 # SupportedStyles: slashes, arguments
 Rails/FilePath:
   Enabled: false
 
-# Offense count: 264
+# Offense count: 15
+# Cop supports --auto-correct.
+Rails/FindById:
+  Exclude:
+    - 'app/controllers/projects/pipelines_controller.rb'
+    - 'app/services/concerns/deploy_token_methods.rb'
+    - 'ee/app/controllers/ee/groups/group_members_controller.rb'
+    - 'ee/lib/api/audit_events.rb'
+    - 'ee/lib/api/merge_request_approval_rules.rb'
+    - 'ee/lib/ee/api/groups.rb'
+    - 'ee/lib/ee/api/projects.rb'
+    - 'ee/spec/finders/audit_log_finder_spec.rb'
+    - 'lib/api/snippets.rb'
+    - 'spec/finders/concerns/finder_methods_spec.rb'
+    - 'spec/finders/concerns/finder_with_cross_project_access_spec.rb'
+
+# Offense count: 329
 # Configuration parameters: Include.
 # Include: app/models/**/*.rb
 Rails/HasManyOrHasOneDependent:
   Enabled: false
 
-# Offense count: 467
+# Offense count: 507
 # Configuration parameters: Include.
 # Include: app/helpers/**/*.rb
 Rails/HelperInstanceVariable:
   Enabled: false
 
-# Offense count: 15
+# Offense count: 17
 # Cop supports --auto-correct.
 Rails/IndexBy:
   Exclude:
+    - 'app/graphql/types/design_management/design_fields.rb'
     - 'app/models/ci/pipeline.rb'
     - 'app/services/ci/pipeline_processing/atomic_processing_service/status_collection.rb'
     - 'ee/app/services/projects/update_mirror_service.rb'
@@ -276,21 +543,27 @@ Rails/IndexBy:
     - 'ee/lib/gitlab/analytics/type_of_work/tasks_by_type.rb'
     - 'ee/lib/gitlab/elastic/document_reference.rb'
     - 'ee/lib/gitlab/group_plans_preloader.rb'
+    - 'lib/gitlab/danger/sidekiq_queues.rb'
     - 'lib/gitlab/database/count/reltuples_count_strategy.rb'
     - 'lib/gitlab/language_detection.rb'
 
-# Offense count: 36
+# Offense count: 44
 # Cop supports --auto-correct.
 Rails/IndexWith:
   Enabled: false
 
-# Offense count: 105
+# Offense count: 1
+Rails/Inquiry:
+  Exclude:
+    - 'spec/helpers/labels_helper_spec.rb'
+
+# Offense count: 112
 # Configuration parameters: Include.
 # Include: app/models/**/*.rb
 Rails/InverseOf:
   Enabled: false
 
-# Offense count: 55
+# Offense count: 60
 # Configuration parameters: Include.
 # Include: app/controllers/**/*.rb
 Rails/LexicallyScopedActionFilter:
@@ -304,177 +577,77 @@ Rails/LinkToBlank:
     - 'app/helpers/wiki_helper.rb'
     - 'ee/app/helpers/ee/user_callouts_helper.rb'
 
-# Offense count: 34
+# Offense count: 1
+# Cop supports --auto-correct.
+# Configuration parameters: Include.
+# Include: app/mailers/**/*.rb
+Rails/MailerName:
+  Exclude:
+    - 'app/mailers/notify.rb'
+
+# Offense count: 48
+# Cop supports --auto-correct.
+Rails/NegateInclude:
+  Enabled: false
+
+# Offense count: 41
+# Cop supports --auto-correct.
+Rails/Pick:
+  Enabled: false
+
+# Offense count: 113
+# Cop supports --auto-correct.
+Rails/Pluck:
+  Enabled: false
+
+# Offense count: 38
+# Cop supports --auto-correct.
 # Configuration parameters: Include.
 # Include: **/Rakefile, **/*.rake
 Rails/RakeEnvironment:
   Enabled: false
 
-# Offense count: 926
-# Configuration parameters: Blacklist, Whitelist.
-# Blacklist: decrement!, decrement_counter, increment!, increment_counter, toggle!, touch, update_all, update_attribute, update_column, update_columns, update_counters
-Rails/SkipsModelValidations:
+# Offense count: 52
+# Cop supports --auto-correct.
+Rails/RedundantForeignKey:
   Enabled: false
 
-# Offense count: 308
+Rails/RenderInline:
+  Exclude:
+    - 'ee/app/controllers/sitemap_controller.rb'
+
+# Offense count: 4
 # Cop supports --auto-correct.
 # Configuration parameters: EnforcedStyle.
-# SupportedStyles: strict, flexible
-Rails/TimeZone:
-  Enabled: true
+# SupportedStyles: conservative, aggressive
+Rails/ShortI18n:
   Exclude:
-    - 'lib/gitlab/popen.rb'
-    - 'ee/lib/delay.rb'
-    - 'ee/lib/gitlab/elastic/helper.rb'
-    - 'ee/lib/gitlab/elastic/indexer.rb'
-    - 'ee/lib/gitlab/geo/base_request.rb'
-    - 'ee/lib/gitlab/geo/event_gap_tracking.rb'
-    - 'ee/lib/gitlab/geo/log_cursor/events/design_repository_updated_event.rb'
-    - 'ee/lib/gitlab/geo/log_cursor/events/repository_updated_event.rb'
-    - 'ee/lib/gitlab/geo/log_cursor/logger.rb'
-    - 'ee/lib/gitlab/geo/oauth/login_state.rb'
-    - 'ee/lib/gitlab/prometheus/queries/cluster_query.rb'
-    - 'ee/lib/gitlab/prometheus/queries/packet_flow_query.rb'
-    - 'ee/spec/lib/ee/gitlab/checks/push_rules/commit_check_spec.rb'
-    - 'ee/spec/lib/ee/gitlab/ci/pipeline/quota/job_activity_spec.rb'
-    - 'ee/spec/lib/gitlab/analytics/cycle_analytics/data_collector_spec.rb'
-    - 'ee/spec/lib/gitlab/analytics/cycle_analytics/summary/group/stage_summary_spec.rb'
-    - 'ee/spec/lib/gitlab/analytics/cycle_analytics/summary/group/stage_time_summary_spec.rb'
-    - 'ee/spec/lib/gitlab/auth/ldap/access_spec.rb'
-    - 'ee/spec/lib/gitlab/auth/smartcard/san_extension_spec.rb'
-    - 'ee/spec/lib/gitlab/auth/smartcard/session_spec.rb'
-    - 'ee/spec/lib/gitlab/background_migration/fix_orphan_promoted_issues_spec.rb'
-    - 'ee/spec/lib/gitlab/ci/pipeline/chain/limit/job_activity_spec.rb'
-    - 'ee/spec/lib/gitlab/elastic/client_spec.rb'
-    - 'ee/spec/lib/gitlab/geo/base_request_spec.rb'
-    - 'ee/spec/lib/gitlab/geo/log_cursor/events/cache_invalidation_event_spec.rb'
-    - 'ee/spec/lib/gitlab/geo/log_cursor/events/container_repository_updated_event_spec.rb'
-    - 'ee/spec/lib/gitlab/geo/log_cursor/events/design_repository_updated_event_spec.rb'
-    - 'ee/spec/lib/gitlab/geo/log_cursor/events/event_spec.rb'
-    - 'ee/spec/lib/gitlab/geo/log_cursor/events/hashed_storage_attachments_event_spec.rb'
-    - 'ee/spec/lib/gitlab/geo/log_cursor/events/hashed_storage_migrated_event_spec.rb'
-    - 'ee/spec/lib/gitlab/geo/log_cursor/events/job_artifact_deleted_event_spec.rb'
-    - 'ee/spec/lib/gitlab/geo/log_cursor/events/lfs_object_deleted_event_spec.rb'
-    - 'ee/spec/lib/gitlab/geo/log_cursor/events/repositories_changed_event_spec.rb'
-    - 'ee/spec/lib/gitlab/geo/log_cursor/events/repository_created_event_spec.rb'
-    - 'ee/spec/lib/gitlab/geo/log_cursor/events/repository_deleted_event_spec.rb'
-    - 'ee/spec/lib/gitlab/geo/log_cursor/events/repository_renamed_event_spec.rb'
-    - 'ee/spec/lib/gitlab/geo/log_cursor/events/repository_updated_event_spec.rb'
-    - 'ee/spec/lib/gitlab/geo/log_cursor/events/reset_checksum_event_spec.rb'
-    - 'ee/spec/lib/gitlab/geo/log_cursor/events/upload_deleted_event_spec.rb'
-    - 'ee/spec/lib/gitlab/geo/log_cursor/logger_spec.rb'
-    - 'ee/spec/lib/gitlab/git_access_spec.rb'
-    - 'ee/spec/lib/gitlab/prometheus/queries/additional_metrics_deployment_query_spec.rb'
-    - 'ee/spec/lib/gitlab/prometheus/queries/cluster_query_spec.rb'
-    - 'ee/spec/lib/gitlab/prometheus/queries/packet_flow_query_spec.rb'
-    - 'lib/api/helpers.rb'
-    - 'lib/api/sidekiq_metrics.rb'
-    - 'lib/backup/manager.rb'
-    - 'lib/bitbucket_server/representation/base.rb'
-    - 'lib/gitlab/auth/current_user_mode.rb'
-    - 'lib/gitlab/auth/ldap/access.rb'
-    - 'lib/gitlab/chaos.rb'
-    - 'lib/gitlab/checks/timed_logger.rb'
-    - 'lib/gitlab/ci/ansi2json/line.rb'
-    - 'lib/gitlab/ci/pipeline/chain/sequence.rb'
-    - 'lib/gitlab/ci/pipeline/duration.rb'
-    - 'lib/gitlab/cycle_analytics/summary/deployment_frequency.rb'
-    - 'lib/gitlab/database.rb'
-    - 'lib/gitlab/external_authorization/access.rb'
-    - 'lib/gitlab/external_authorization/cache.rb'
-    - 'lib/gitlab/gitaly_client.rb'
-    - 'lib/gitlab/gitaly_client/ref_service.rb'
-    - 'lib/gitlab/github_import/representation.rb'
-    - 'lib/gitlab/grape_logging/loggers/queue_duration_logger.rb'
-    - 'lib/gitlab/health_checks/base_abstract_check.rb'
-    - 'lib/gitlab/import_export.rb'
-    - 'lib/gitlab/instrumentation/elasticsearch_transport.rb'
-    - 'lib/gitlab/instrumentation/redis_interceptor.rb'
-    - 'lib/gitlab/instrumentation_helper.rb'
-    - 'lib/gitlab/kubernetes/helm/certificate.rb'
-    - 'lib/gitlab/lfs_token.rb'
-    - 'lib/gitlab/loop_helpers.rb'
-    - 'lib/gitlab/phabricator_import/representation/task.rb'
-    - 'lib/gitlab/prometheus/queries/additional_metrics_environment_query.rb'
-    - 'lib/gitlab/prometheus/queries/matched_metric_query.rb'
-    - 'lib/gitlab/prometheus_client.rb'
-    - 'lib/gitlab/sherlock/transaction.rb'
-    - 'lib/gitlab/task_helpers.rb'
-    - 'lib/gitlab/x509/tag.rb'
-    - 'lib/grafana/time_window.rb'
-    - 'lib/json_web_token/token.rb'
-    - 'lib/object_storage/direct_upload.rb'
-    - 'lib/quality/seeders/issues.rb'
-    - 'lib/rspec_flaky/flaky_example.rb'
-    - 'lib/rspec_flaky/report.rb'
-    - 'lib/tasks/gitlab/assets.rake'
-    - 'lib/tasks/gitlab/backup.rake'
-    - 'lib/tasks/gitlab/cleanup.rake'
-    - 'lib/tasks/gitlab/list_repos.rake'
-    - 'spec/lib/api/helpers_spec.rb'
-    - 'spec/lib/gitlab/analytics/cycle_analytics/base_query_builder_spec.rb'
-    - 'spec/lib/gitlab/app_json_logger_spec.rb'
-    - 'spec/lib/gitlab/app_text_logger_spec.rb'
-    - 'spec/lib/gitlab/auth/current_user_mode_spec.rb'
-    - 'spec/lib/gitlab/background_migration/recalculate_project_authorizations_spec.rb'
-    - 'spec/lib/gitlab/background_migration/wrongfully_confirmed_email_unconfirmer_spec.rb'
-    - 'spec/lib/gitlab/bitbucket_import/importer_spec.rb'
-    - 'spec/lib/gitlab/bitbucket_server_import/importer_spec.rb'
-    - 'spec/lib/gitlab/checks/timed_logger_spec.rb'
-    - 'spec/lib/gitlab/ci/cron_parser_spec.rb'
-    - 'spec/lib/gitlab/cycle_analytics/stage_summary_spec.rb'
-    - 'spec/lib/gitlab/cycle_analytics/usage_data_spec.rb'
-    - 'spec/lib/gitlab/data_builder/note_spec.rb'
-    - 'spec/lib/gitlab/database/background_migration_job_spec.rb'
-    - 'spec/lib/gitlab/database_spec.rb'
-    - 'spec/lib/gitlab/discussions_diff/file_collection_spec.rb'
-    - 'spec/lib/gitlab/external_authorization/access_spec.rb'
-    - 'spec/lib/gitlab/external_authorization/cache_spec.rb'
-    - 'spec/lib/gitlab/external_authorization/logger_spec.rb'
-    - 'spec/lib/gitlab/fogbugz_import/importer_spec.rb'
-    - 'spec/lib/gitlab/git/branch_spec.rb'
-    - 'spec/lib/gitlab/git/commit_spec.rb'
-    - 'spec/lib/gitlab/git/repository_spec.rb'
-    - 'spec/lib/gitlab/git_access_spec.rb'
-    - 'spec/lib/gitlab/github_import/importer/diff_note_importer_spec.rb'
-    - 'spec/lib/gitlab/github_import/importer/issue_importer_spec.rb'
-    - 'spec/lib/gitlab/github_import/importer/issues_importer_spec.rb'
-    - 'spec/lib/gitlab/github_import/importer/milestones_importer_spec.rb'
-    - 'spec/lib/gitlab/github_import/importer/note_importer_spec.rb'
-    - 'spec/lib/gitlab/github_import/importer/pull_request_importer_spec.rb'
-    - 'spec/lib/gitlab/github_import/importer/releases_importer_spec.rb'
-    - 'spec/lib/gitlab/github_import/representation/diff_note_spec.rb'
-    - 'spec/lib/gitlab/github_import/representation/issue_spec.rb'
-    - 'spec/lib/gitlab/github_import/representation/note_spec.rb'
-    - 'spec/lib/gitlab/github_import/representation/pull_request_spec.rb'
-    - 'spec/lib/gitlab/grape_logging/formatters/lograge_with_timestamp_spec.rb'
-    - 'spec/lib/gitlab/grape_logging/loggers/cloudflare_logger_spec.rb'
-    - 'spec/lib/gitlab/grape_logging/loggers/queue_duration_logger_spec.rb'
-    - 'spec/lib/gitlab/graphql_logger_spec.rb'
-    - 'spec/lib/gitlab/graphs/commits_spec.rb'
-    - 'spec/lib/gitlab/import_export/project/relation_factory_spec.rb'
-    - 'spec/lib/gitlab/instrumentation_helper_spec.rb'
-    - 'spec/lib/gitlab/json_logger_spec.rb'
-    - 'spec/lib/gitlab/lfs_token_spec.rb'
-    - 'spec/lib/gitlab/log_timestamp_formatter_spec.rb'
-    - 'spec/lib/gitlab/middleware/rails_queue_duration_spec.rb'
-    - 'spec/lib/gitlab/omniauth_logging/json_formatter_spec.rb'
-    - 'spec/lib/gitlab/phabricator_import/issues/task_importer_spec.rb'
-    - 'spec/lib/gitlab/phabricator_import/representation/task_spec.rb'
-    - 'spec/lib/gitlab/prometheus/queries/additional_metrics_deployment_query_spec.rb'
-    - 'spec/lib/gitlab/prometheus/queries/deployment_query_spec.rb'
-    - 'spec/lib/gitlab/prometheus/queries/validate_query_spec.rb'
-    - 'spec/lib/gitlab/sherlock/transaction_spec.rb'
-    - 'spec/lib/gitlab/sidekiq_logging/json_formatter_spec.rb'
-    - 'spec/lib/gitlab/sidekiq_middleware/duplicate_jobs/strategies/until_executing_spec.rb'
-    - 'spec/lib/gitlab/updated_notes_paginator_spec.rb'
-    - 'spec/lib/gitlab/utils/json_size_estimator_spec.rb'
-    - 'spec/lib/gitlab/x509/signature_spec.rb'
-    - 'spec/lib/grafana/time_window_spec.rb'
-    - 'spec/lib/json_web_token/hmac_token_spec.rb'
-    - 'spec/lib/rspec_flaky/flaky_example_spec.rb'
-    - 'spec/lib/rspec_flaky/listener_spec.rb'
-    - 'spec/lib/rspec_flaky/report_spec.rb'
+    - 'app/models/project_services/chat_message/pipeline_message.rb'
+    - 'app/uploaders/content_type_whitelist.rb'
+    - 'spec/views/shared/runners/show.html.haml_spec.rb'
+
+# Offense count: 1043
+# Configuration parameters: ForbiddenMethods, AllowedMethods.
+# ForbiddenMethods: decrement!, decrement_counter, increment!, increment_counter, insert, insert!, insert_all, insert_all!, toggle!, touch, touch_all, update_all, update_attribute, update_column, update_columns, update_counters, upsert, upsert_all
+Rails/SkipsModelValidations:
+  Enabled: false
+
+# Offense count: 202
+# Cop supports --auto-correct.
+Rails/SquishedSQLHeredocs:
+  Enabled: false
+
+# Offense count: 37
+# Cop supports --auto-correct.
+# Configuration parameters: EnforcedStyle.
+# SupportedStyles: exists, where
+Rails/WhereExists:
+  Enabled: false
+
+# Offense count: 21
+# Cop supports --auto-correct.
+Rails/WhereNot:
+  Enabled: false
 
 # Offense count: 8
 # Cop supports --auto-correct.
@@ -486,13 +659,58 @@ Security/YAMLLoad:
     - 'spec/initializers/secret_token_spec.rb'
     - 'spec/lib/gitlab/prometheus/additional_metrics_parser_spec.rb'
 
-# Offense count: 148
+# Offense count: 240
+# Cop supports --auto-correct.
+# Configuration parameters: EnforcedStyle.
+# SupportedStyles: separated, grouped
+Style/AccessorGrouping:
+  Enabled: false
+
+# Offense count: 13
+# Cop supports --auto-correct.
+Style/ArrayCoercion:
+  Exclude:
+    - 'app/controllers/admin/ci/variables_controller.rb'
+    - 'app/controllers/groups/variables_controller.rb'
+    - 'app/controllers/import/bulk_imports_controller.rb'
+    - 'app/controllers/projects/variables_controller.rb'
+    - 'db/migrate/20190620105427_change_null_private_profile_to_false.rb'
+    - 'db/post_migrate/20190812070645_migrate_private_profile_nulls.rb'
+    - 'db/post_migrate/20200311130802_schedule_populate_user_highest_roles_table.rb'
+    - 'db/post_migrate/20200805152108_migrate_null_external_diff_store_to_local_value.rb'
+    - 'db/post_migrate/20200806173633_migrate_null_package_files_file_store_to_local_value.rb'
+    - 'ee/app/services/geo/blob_verification_secondary_service.rb'
+    - 'ee/app/services/geo/repository_verification_secondary_service.rb'
+    - 'ee/lib/ee/banzai/pipeline/gfm_pipeline.rb'
+    - 'spec/support/helpers/lfs_http_helpers.rb'
+
+# Offense count: 176
 # Cop supports --auto-correct.
 # Configuration parameters: EnforcedStyle.
 # SupportedStyles: percent_q, bare_percent
 Style/BarePercentLiterals:
   Enabled: false
 
+# Offense count: 6
+# Cop supports --auto-correct.
+Style/BisectedAttrAccessor:
+  Exclude:
+    - 'lib/system_check/base_check.rb'
+    - 'qa/qa/resource/api_fabricator.rb'
+
+# Offense count: 37
+# Cop supports --auto-correct.
+Style/CaseLikeIf:
+  Enabled: false
+
+# Offense count: 1
+# Cop supports --auto-correct.
+# Configuration parameters: EnforcedStyle, SingleLineConditionsOnly, IncludeTernaryExpressions.
+# SupportedStyles: assign_to_condition, assign_inside_condition
+Style/ConditionalAssignment:
+  Exclude:
+    - 'lib/gitlab/database.rb'
+
 # Offense count: 5
 # Cop supports --auto-correct.
 Style/EachWithObject:
@@ -503,715 +721,221 @@ Style/EachWithObject:
     - 'lib/gitlab/i18n/po_linter.rb'
     - 'lib/gitlab/import_export/members_mapper.rb'
 
-# Offense count: 46
+# Offense count: 53
 # Cop supports --auto-correct.
 # Configuration parameters: EnforcedStyle.
 # SupportedStyles: empty, nil, both
 Style/EmptyElse:
   Enabled: false
 
-# Offense count: 170
+# Offense count: 193
 # Cop supports --auto-correct.
 # Configuration parameters: EnforcedStyle.
 # SupportedStyles: compact, expanded
 Style/EmptyMethod:
   Enabled: false
 
-# Offense count: 431
+# Offense count: 2
+# Cop supports --auto-correct.
+Style/ExpandPathArguments:
+  Exclude:
+    - 'cable/config.ru'
+    - 'config.ru'
+
+# Offense count: 118
+# Cop supports --auto-correct.
+Style/ExplicitBlockArgument:
+  Enabled: false
+
+# Offense count: 521
 # Cop supports --auto-correct.
 # Configuration parameters: EnforcedStyle.
 # SupportedStyles: format, sprintf, percent
 Style/FormatString:
   Enabled: false
 
-# Offense count: 769
+# Offense count: 48
+# Cop supports --auto-correct.
+Style/GlobalStdStream:
+  Enabled: false
+
+# Offense count: 835
 # Configuration parameters: MinBodyLength.
 Style/GuardClause:
   Enabled: false
 
-# Offense count: 47
+# Offense count: 93
+# Cop supports --auto-correct.
+# Configuration parameters: EnforcedStyle.
+# SupportedStyles: braces, no_braces
+Style/HashAsLastArrayItem:
+  Enabled: false
+
+# Offense count: 55
 # Cop supports --auto-correct.
 Style/HashEachMethods:
   Enabled: false
 
-# Offense count: 31
+# Offense count: 30
 # Configuration parameters: AllowIfModifier.
 Style/IfInsideElse:
   Enabled: false
 
-# Offense count: 1313
+# Offense count: 1798
 # Cop supports --auto-correct.
 Style/IfUnlessModifier:
   Enabled: false
 
-# Offense count: 377
+# Offense count: 447
 # Cop supports --auto-correct.
 # Configuration parameters: EnforcedStyle.
 # SupportedStyles: line_count_dependent, lambda, literal
 Style/Lambda:
   Enabled: false
 
-# Offense count: 17
-Style/MethodMissingSuper:
-  Enabled: false
-
-# Offense count: 17
+# Offense count: 18
 Style/MissingRespondToMissing:
   Enabled: false
 
-# Offense count: 5
-Style/MixinUsage:
-  Exclude:
-    - 'spec/factories/ci/builds.rb'
-    - 'spec/factories/ci/job_artifacts.rb'
-    - 'spec/factories/lfs_objects.rb'
-    - 'spec/factories/notes.rb'
-    - 'spec/lib/gitlab/import_export/version_checker_spec.rb'
-
-# Offense count: 29
+# Offense count: 32
 # Cop supports --auto-correct.
 # Configuration parameters: EnforcedStyle, MinBodyLength.
 # SupportedStyles: skip_modifier_ifs, always
 Style/Next:
   Enabled: false
 
-# Offense count: 89
+# Offense count: 95
 # Cop supports --auto-correct.
 # Configuration parameters: EnforcedOctalStyle.
 # SupportedOctalStyles: zero_with_o, zero_only
 Style/NumericLiteralPrefix:
   Enabled: false
 
-# Offense count: 117
+# Offense count: 132
 # Cop supports --auto-correct.
 Style/ParallelAssignment:
   Enabled: false
 
-# Offense count: 2035
+# Offense count: 2473
 # Cop supports --auto-correct.
 # Configuration parameters: PreferredDelimiters.
 Style/PercentLiteralDelimiters:
   Enabled: false
 
-# Offense count: 200
+# Offense count: 246
 # Cop supports --auto-correct.
 # Configuration parameters: EnforcedStyle.
 # SupportedStyles: compact, exploded
 Style/RaiseArgs:
   Enabled: false
 
-# Offense count: 246
+# Offense count: 66
+# Cop supports --auto-correct.
+Style/RedundantAssignment:
+  Enabled: false
+
+# Offense count: 26
+# Cop supports --auto-correct.
+# Configuration parameters: SafeForConstants.
+Style/RedundantFetchBlock:
+  Exclude:
+    - 'app/finders/admin/projects_finder.rb'
+    - 'lib/gitlab/diff/file.rb'
+    - 'spec/lib/gitlab/json_cache_spec.rb'
+    - 'spec/lib/gitlab/metrics/dashboard/cache_spec.rb'
+    - 'spec/lib/gitlab/null_request_store_spec.rb'
+    - 'spec/lib/gitlab/safe_request_store_spec.rb'
+
+# Offense count: 26
+# Cop supports --auto-correct.
+Style/RedundantFileExtensionInRequire:
+  Enabled: false
+
+# Offense count: 260
 # Cop supports --auto-correct.
 Style/RedundantFreeze:
   Enabled: false
 
-# Offense count: 123
+# Offense count: 167
 # Cop supports --auto-correct.
 Style/RedundantInterpolation:
   Enabled: false
 
-# Offense count: 801
+# Offense count: 11
+# Cop supports --auto-correct.
+Style/RedundantRegexpCharacterClass:
+  Exclude:
+    - 'app/models/concerns/taskable.rb'
+    - 'ee/lib/ee/gitlab/path_regex.rb'
+    - 'lib/gitlab/authorized_keys.rb'
+    - 'lib/gitlab/fogbugz_import/repository.rb'
+    - 'lib/gitlab/prometheus/internal.rb'
+    - 'lib/gitlab/quick_actions/substitution_definition.rb'
+    - 'lib/gitlab/regex.rb'
+    - 'spec/features/merge_request/user_views_open_merge_request_spec.rb'
+    - 'spec/tasks/gitlab/usage_data_rake_spec.rb'
+
+# Offense count: 250
+# Cop supports --auto-correct.
+Style/RedundantRegexpEscape:
+  Enabled: false
+
+# Offense count: 868
 # Cop supports --auto-correct.
 Style/RedundantSelf:
   Enabled: false
 
-# Offense count: 120
+# Offense count: 179
 # Cop supports --auto-correct.
 # Configuration parameters: EnforcedStyle, AllowInnerSlashes.
 # SupportedStyles: slashes, percent_r, mixed
 Style/RegexpLiteral:
   Enabled: false
 
-# Offense count: 46
+# Offense count: 49
 # Cop supports --auto-correct.
 Style/RescueModifier:
   Enabled: false
 
-# Offense count: 286
+# Offense count: 329
 # Cop supports --auto-correct.
 # Configuration parameters: EnforcedStyle.
 # SupportedStyles: implicit, explicit
 Style/RescueStandardError:
   Enabled: false
 
-# Offense count: 102
+# Offense count: 104
+# Cop supports --auto-correct.
+Style/SingleArgumentDig:
+  Enabled: false
+
+# Offense count: 47
+# Cop supports --auto-correct.
+Style/SlicingWithRange:
+  Enabled: false
+
+# Offense count: 109
 # Cop supports --auto-correct.
 # Configuration parameters: .
 # SupportedStyles: use_perl_names, use_english_names
 Style/SpecialGlobalVars:
   EnforcedStyle: use_perl_names
 
-# Offense count: 93
+# Offense count: 516
+# Cop supports --auto-correct.
+Style/StringConcatenation:
+  Enabled: false
+
+# Offense count: 103
 # Cop supports --auto-correct.
 # Configuration parameters: EnforcedStyle.
 # SupportedStyles: single_quotes, double_quotes
 Style/StringLiteralsInInterpolation:
   Enabled: false
 
-# Offense count: 233
+# Offense count: 276
 # Cop supports --auto-correct.
 # Configuration parameters: IgnoredMethods.
 # IgnoredMethods: respond_to, define_method
 Style/SymbolProc:
   Enabled: false
-
-# Offense count: 2362
-# Cop supports --auto-correct.
-# Configuration parameters: AllowImplicitReturn, AllowedReceivers.
-Rails/SaveBang:
-  Exclude:
-    - 'ee/spec/controllers/projects/merge_requests_controller_spec.rb'
-    - 'ee/spec/controllers/subscriptions_controller_spec.rb'
-    - 'ee/spec/frontend/fixtures/analytics.rb'
-    - 'ee/spec/graphql/resolvers/vulnerabilities_resolver_spec.rb'
-    - 'ee/spec/initializers/fog_google_https_private_urls_spec.rb'
-    - 'ee/spec/lib/analytics/merge_request_metrics_calculator_spec.rb'
-    - 'ee/spec/lib/ee/gitlab/auth/ldap/sync/group_spec.rb'
-    - 'ee/spec/lib/ee/gitlab/checks/push_rules/commit_check_spec.rb'
-    - 'ee/spec/lib/ee/gitlab/ci/pipeline/quota/activity_spec.rb'
-    - 'ee/spec/lib/gitlab/auth/ldap/access_spec.rb'
-    - 'ee/spec/lib/gitlab/auth/o_auth/user_spec.rb'
-    - 'ee/spec/lib/gitlab/auth/saml/user_spec.rb'
-    - 'ee/spec/lib/gitlab/background_migration/fix_orphan_promoted_issues_spec.rb'
-    - 'ee/spec/lib/gitlab/elastic/search_results_spec.rb'
-    - 'ee/spec/lib/gitlab/email/handler/ee/service_desk_handler_spec.rb'
-    - 'ee/spec/lib/gitlab/geo_spec.rb'
-    - 'ee/spec/lib/gitlab/git_access_spec.rb'
-    - 'ee/spec/lib/gitlab/import_export/group/relation_factory_spec.rb'
-    - 'ee/spec/lib/gitlab/mirror_spec.rb'
-    - 'ee/spec/mailers/notify_spec.rb'
-    - 'ee/spec/migrations/fix_any_approver_rule_for_projects_spec.rb'
-    - 'ee/spec/migrations/geo/migrate_ci_job_artifacts_to_separate_registry_spec.rb'
-    - 'ee/spec/migrations/geo/migrate_lfs_objects_to_separate_registry_spec.rb'
-    - 'ee/spec/migrations/schedule_merge_request_any_approval_rule_migration_spec.rb'
-    - 'ee/spec/migrations/schedule_project_any_approval_rule_migration_spec.rb'
-    - 'ee/spec/models/application_setting_spec.rb'
-    - 'ee/spec/models/approval_merge_request_rule_spec.rb'
-    - 'ee/spec/models/approval_project_rule_spec.rb'
-    - 'ee/spec/models/burndown_spec.rb'
-    - 'ee/spec/models/ci/pipeline_spec.rb'
-    - 'ee/spec/models/ci/subscriptions/project_spec.rb'
-    - 'ee/spec/models/ee/appearance_spec.rb'
-    - 'ee/spec/models/ee/ci/job_artifact_spec.rb'
-    - 'ee/spec/models/ee/protected_branch_spec.rb'
-    - 'ee/spec/models/ee/protected_ref_access_spec.rb'
-    - 'ee/spec/models/ee/protected_ref_spec.rb'
-    - 'ee/spec/models/elasticsearch_indexed_namespace_spec.rb'
-    - 'ee/spec/models/environment_spec.rb'
-    - 'ee/spec/models/epic_spec.rb'
-    - 'ee/spec/models/geo/project_registry_spec.rb'
-    - 'ee/spec/models/geo_node_spec.rb'
-    - 'ee/spec/models/geo_node_status_spec.rb'
-    - 'ee/spec/models/gitlab_subscription_spec.rb'
-    - 'ee/spec/models/group_spec.rb'
-    - 'ee/spec/models/issue_spec.rb'
-    - 'ee/spec/models/label_note_spec.rb'
-    - 'ee/spec/models/lfs_object_spec.rb'
-    - 'ee/spec/models/license_spec.rb'
-    - 'ee/spec/models/merge_request_spec.rb'
-    - 'ee/spec/models/merge_train_spec.rb'
-    - 'spec/models/packages/package_spec.rb'
-    - 'ee/spec/models/project_ci_cd_setting_spec.rb'
-    - 'ee/spec/models/project_spec.rb'
-    - 'ee/spec/models/protected_environment_spec.rb'
-    - 'ee/spec/models/repository_spec.rb'
-    - 'ee/spec/models/scim_identity_spec.rb'
-    - 'ee/spec/models/scim_oauth_access_token_spec.rb'
-    - 'ee/spec/models/upload_spec.rb'
-    - 'ee/spec/models/user_preference_spec.rb'
-    - 'ee/spec/models/user_spec.rb'
-    - 'ee/spec/models/visible_approvable_spec.rb'
-    - 'ee/spec/models/vulnerabilities/feedback_spec.rb'
-    - 'ee/spec/models/vulnerabilities/issue_link_spec.rb'
-    - 'ee/spec/presenters/audit_event_presenter_spec.rb'
-    - 'ee/spec/presenters/epic_presenter_spec.rb'
-    - 'ee/spec/requests/api/boards_spec.rb'
-    - 'ee/spec/requests/api/epic_issues_spec.rb'
-    - 'ee/spec/requests/api/epic_links_spec.rb'
-    - 'ee/spec/requests/api/epics_spec.rb'
-    - 'ee/spec/requests/api/geo_nodes_spec.rb'
-    - 'ee/spec/requests/api/geo_spec.rb'
-    - 'ee/spec/requests/api/graphql/group/epics_spec.rb'
-    - 'ee/spec/requests/api/graphql/mutations/epic_tree/reorder_spec.rb'
-    - 'ee/spec/requests/api/groups_spec.rb'
-    - 'ee/spec/requests/api/issues_spec.rb'
-    - 'ee/spec/requests/api/ldap_group_links_spec.rb'
-    - 'ee/spec/requests/api/merge_request_approval_rules_spec.rb'
-    - 'ee/spec/requests/api/merge_request_approvals_spec.rb'
-    - 'ee/spec/requests/api/merge_requests_spec.rb'
-    - 'ee/spec/requests/api/project_approvals_spec.rb'
-    - 'ee/spec/requests/api/projects_spec.rb'
-    - 'ee/spec/requests/api/protected_branches_spec.rb'
-    - 'ee/spec/requests/api/scim_spec.rb'
-    - 'ee/spec/requests/api/todos_spec.rb'
-    - 'ee/spec/requests/lfs_http_spec.rb'
-    - 'ee/spec/services/approval_rules/finalize_service_spec.rb'
-    - 'ee/spec/services/approval_rules/update_service_spec.rb'
-    - 'ee/spec/services/ee/boards/issues/create_service_spec.rb'
-    - 'ee/spec/services/ee/boards/issues/list_service_spec.rb'
-    - 'ee/spec/services/ee/boards/lists/list_service_spec.rb'
-    - 'ee/spec/services/ee/issuable/clone/attributes_rewriter_spec.rb'
-    - 'ee/spec/services/ee/issuable/common_system_notes_service_spec.rb'
-    - 'ee/spec/services/ee/issues/update_service_spec.rb'
-    - 'ee/spec/services/ee/merge_requests/refresh_service_spec.rb'
-    - 'ee/spec/services/ee/merge_requests/update_service_spec.rb'
-    - 'ee/spec/services/ee/notes/quick_actions_service_spec.rb'
-    - 'ee/spec/services/ee/notification_service_spec.rb'
-    - 'ee/spec/services/epic_links/create_service_spec.rb'
-    - 'ee/spec/services/epics/close_service_spec.rb'
-    - 'ee/spec/services/epics/issue_promote_service_spec.rb'
-    - 'ee/spec/services/epics/reopen_service_spec.rb'
-    - 'ee/spec/services/epics/tree_reorder_service_spec.rb'
-    - 'ee/spec/services/epics/update_dates_service_spec.rb'
-    - 'ee/spec/services/epics/update_service_spec.rb'
-    - 'ee/spec/services/geo/blob_verification_secondary_service_spec.rb'
-    - 'ee/spec/services/geo/files_expire_service_spec.rb'
-    - 'ee/spec/services/geo/metrics_update_service_spec.rb'
-    - 'ee/spec/services/geo/registry_consistency_service_spec.rb'
-    - 'ee/spec/services/geo/repository_verification_secondary_service_spec.rb'
-    - 'ee/spec/services/groups/autocomplete_service_spec.rb'
-    - 'ee/spec/services/ldap_group_reset_service_spec.rb'
-    - 'ee/spec/services/lfs/unlock_file_service_spec.rb'
-    - 'ee/spec/services/merge_trains/refresh_merge_request_service_spec.rb'
-    - 'ee/spec/services/quick_actions/interpret_service_spec.rb'
-    - 'ee/spec/services/slash_commands/global_slack_handler_spec.rb'
-    - 'ee/spec/services/start_pull_mirroring_service_spec.rb'
-    - 'ee/spec/services/status_page/trigger_publish_service_spec.rb'
-    - 'ee/spec/services/todo_service_spec.rb'
-    - 'ee/spec/services/update_build_minutes_service_spec.rb'
-    - 'ee/spec/services/vulnerability_feedback/create_service_spec.rb'
-    - 'ee/spec/support/protected_tags/access_control_shared_examples.rb'
-    - 'ee/spec/support/shared_examples/features/protected_branches_access_control_shared_examples.rb'
-    - 'ee/spec/support/shared_examples/finders/geo/framework_registry_finder_shared_examples.rb'
-    - 'ee/spec/support/shared_examples/graphql/geo/geo_registries_resolver_shared_examples.rb'
-    - 'ee/spec/support/shared_examples/lib/analytics/common_merge_request_metrics_refresh_shared_examples.rb'
-    - 'ee/spec/support/shared_examples/policies/protected_environments_shared_examples.rb'
-    - 'ee/spec/workers/adjourned_project_deletion_worker_spec.rb'
-    - 'ee/spec/workers/clear_shared_runners_minutes_worker_spec.rb'
-    - 'ee/spec/workers/create_github_webhook_worker_spec.rb'
-    - 'ee/spec/workers/elastic_namespace_rollout_worker_spec.rb'
-    - 'ee/spec/workers/geo/container_repository_sync_dispatch_worker_spec.rb'
-    - 'ee/spec/workers/geo/file_download_dispatch_worker_spec.rb'
-    - 'ee/spec/workers/geo/prune_event_log_worker_spec.rb'
-    - 'ee/spec/workers/geo/registry_sync_worker_spec.rb'
-    - 'ee/spec/workers/geo/repository_shard_sync_worker_spec.rb'
-    - 'ee/spec/workers/repository_import_worker_spec.rb'
-    - 'ee/spec/workers/update_all_mirrors_worker_spec.rb'
-    - 'qa/qa/specs/features/browser_ui/3_create/repository/push_mirroring_over_http_spec.rb'
-    - 'qa/qa/specs/features/browser_ui/3_create/repository/push_mirroring_lfs_over_http_spec.rb'
-    - 'qa/qa/specs/features/ee/browser_ui/3_create/repository/pull_mirroring_over_http_spec.rb'
-    - 'qa/qa/specs/features/ee/browser_ui/3_create/repository/pull_mirroring_over_ssh_with_key_spec.rb'
-    - 'spec/controllers/abuse_reports_controller_spec.rb'
-    - 'spec/controllers/admin/impersonations_controller_spec.rb'
-    - 'spec/controllers/admin/runners_controller_spec.rb'
-    - 'spec/controllers/admin/services_controller_spec.rb'
-    - 'spec/controllers/boards/issues_controller_spec.rb'
-    - 'spec/controllers/groups/milestones_controller_spec.rb'
-    - 'spec/controllers/groups/runners_controller_spec.rb'
-    - 'spec/controllers/groups/uploads_controller_spec.rb'
-    - 'spec/controllers/groups_controller_spec.rb'
-    - 'spec/controllers/oauth/authorizations_controller_spec.rb'
-    - 'spec/controllers/omniauth_callbacks_controller_spec.rb'
-    - 'spec/controllers/profiles/emails_controller_spec.rb'
-    - 'spec/controllers/profiles/notifications_controller_spec.rb'
-    - 'spec/controllers/projects/artifacts_controller_spec.rb'
-    - 'spec/controllers/projects/cycle_analytics/events_controller_spec.rb'
-    - 'spec/controllers/projects/cycle_analytics_controller_spec.rb'
-    - 'spec/controllers/projects/discussions_controller_spec.rb'
-    - 'spec/controllers/projects/forks_controller_spec.rb'
-    - 'spec/controllers/projects/group_links_controller_spec.rb'
-    - 'spec/controllers/projects/imports_controller_spec.rb'
-    - 'spec/controllers/projects/issues_controller_spec.rb'
-    - 'spec/controllers/projects/labels_controller_spec.rb'
-    - 'spec/controllers/projects/milestones_controller_spec.rb'
-    - 'spec/controllers/projects/notes_controller_spec.rb'
-    - 'spec/controllers/projects/pipelines_controller_spec.rb'
-    - 'spec/controllers/projects/releases/evidences_controller_spec.rb'
-    - 'spec/controllers/projects/runners_controller_spec.rb'
-    - 'spec/controllers/projects/starrers_controller_spec.rb'
-    - 'spec/controllers/projects/uploads_controller_spec.rb'
-    - 'spec/controllers/projects_controller_spec.rb'
-    - 'spec/controllers/sent_notifications_controller_spec.rb'
-    - 'spec/controllers/sessions_controller_spec.rb'
-    - 'spec/controllers/users_controller_spec.rb'
-    - 'spec/factories_spec.rb'
-    - 'spec/features/admin/admin_appearance_spec.rb'
-    - 'spec/features/admin/admin_labels_spec.rb'
-    - 'spec/features/admin/admin_mode/login_spec.rb'
-    - 'spec/features/admin/admin_runners_spec.rb'
-    - 'spec/features/admin/admin_sees_project_statistics_spec.rb'
-    - 'spec/features/admin/admin_sees_projects_statistics_spec.rb'
-    - 'spec/features/admin/admin_users_impersonation_tokens_spec.rb'
-    - 'spec/features/admin/admin_users_spec.rb'
-    - 'spec/features/boards/sidebar_spec.rb'
-    - 'spec/features/calendar_spec.rb'
-    - 'spec/features/commits_spec.rb'
-    - 'spec/features/dashboard/datetime_on_tooltips_spec.rb'
-    - 'spec/features/dashboard/issuables_counter_spec.rb'
-    - 'spec/features/dashboard/project_member_activity_index_spec.rb'
-    - 'spec/features/dashboard/projects_spec.rb'
-    - 'spec/features/error_tracking/user_sees_error_index_spec.rb'
-    - 'spec/features/groups/members/request_access_spec.rb'
-    - 'spec/features/issuables/close_reopen_report_toggle_spec.rb'
-    - 'spec/features/issues/bulk_assignment_labels_spec.rb'
-    - 'spec/features/issues/gfm_autocomplete_spec.rb'
-    - 'spec/features/issues/issue_sidebar_spec.rb'
-    - 'spec/features/issues/note_polling_spec.rb'
-    - 'spec/features/issues/user_creates_branch_and_merge_request_spec.rb'
-    - 'spec/features/issues/user_creates_confidential_merge_request_spec.rb'
-    - 'spec/features/issues/user_edits_issue_spec.rb'
-    - 'spec/features/issues/user_filters_issues_spec.rb'
-    - 'spec/features/issues/user_sees_live_update_spec.rb'
-    - 'spec/features/issues/user_sorts_issues_spec.rb'
-    - 'spec/features/profiles/emails_spec.rb'
-    - 'spec/features/profiles/password_spec.rb'
-    - 'spec/features/profiles/personal_access_tokens_spec.rb'
-    - 'spec/features/projects/features_visibility_spec.rb'
-    - 'spec/features/projects/fork_spec.rb'
-    - 'spec/features/projects/jobs/permissions_spec.rb'
-    - 'spec/features/projects/jobs_spec.rb'
-    - 'spec/features/projects/members/user_requests_access_spec.rb'
-    - 'spec/features/projects/pages_lets_encrypt_spec.rb'
-    - 'spec/features/projects/pages_spec.rb'
-    - 'spec/features/projects/pipelines/pipeline_spec.rb'
-    - 'spec/features/projects/pipelines/pipelines_spec.rb'
-    - 'spec/features/projects/remote_mirror_spec.rb'
-    - 'spec/features/projects/services/user_activates_slack_notifications_spec.rb'
-    - 'spec/features/projects/settings/access_tokens_spec.rb'
-    - 'spec/features/projects/show/user_sees_deletion_failure_message_spec.rb'
-    - 'spec/features/projects/user_sees_sidebar_spec.rb'
-    - 'spec/features/projects/wiki/user_updates_wiki_page_spec.rb'
-    - 'spec/features/projects/wiki/user_views_wiki_page_spec.rb'
-    - 'spec/features/projects/wiki/users_views_asciidoc_page_with_includes_spec.rb'
-    - 'spec/features/runners_spec.rb'
-    - 'spec/features/security/project/internal_access_spec.rb'
-    - 'spec/features/security/project/private_access_spec.rb'
-    - 'spec/features/security/project/public_access_spec.rb'
-    - 'spec/features/users/login_spec.rb'
-    - 'spec/features/users/show_spec.rb'
-    - 'spec/frontend/fixtures/issues.rb'
-    - 'spec/frontend/fixtures/merge_requests.rb'
-    - 'spec/graphql/mutations/merge_requests/set_locked_spec.rb'
-    - 'spec/graphql/mutations/merge_requests/set_wip_spec.rb'
-    - 'spec/graphql/resolvers/boards_resolver_spec.rb'
-    - 'spec/initializers/active_record_locking_spec.rb'
-    - 'spec/initializers/fog_google_https_private_urls_spec.rb'
-    - 'spec/lib/after_commit_queue_spec.rb'
-    - 'spec/lib/backup/manager_spec.rb'
-    - 'spec/lib/banzai/reference_parser/external_issue_parser_spec.rb'
-    - 'spec/lib/banzai/reference_redactor_spec.rb'
-    - 'spec/lib/gitlab/alerting/alert_spec.rb'
-    - 'spec/lib/gitlab/analytics/cycle_analytics/records_fetcher_spec.rb'
-    - 'spec/lib/gitlab/auth/ldap/user_spec.rb'
-    - 'spec/lib/gitlab/auth/o_auth/user_spec.rb'
-    - 'spec/lib/gitlab/auth/saml/user_spec.rb'
-    - 'spec/lib/gitlab/auth_spec.rb'
-    - 'spec/lib/gitlab/authorized_keys_spec.rb'
-    - 'spec/lib/gitlab/background_migration/backfill_deployment_clusters_from_deployments_spec.rb'
-    - 'spec/lib/gitlab/background_migration/backfill_project_repositories_spec.rb'
-    - 'spec/lib/gitlab/background_migration/backfill_project_settings_spec.rb'
-    - 'spec/lib/gitlab/background_migration/backfill_push_rules_id_in_projects_spec.rb'
-    - 'spec/lib/gitlab/background_migration/backfill_snippet_repositories_spec.rb'
-    - 'spec/lib/gitlab/background_migration/digest_column_spec.rb'
-    - 'spec/lib/gitlab/background_migration/encrypt_columns_spec.rb'
-    - 'spec/lib/gitlab/background_migration/fix_cross_project_label_links_spec.rb'
-    - 'spec/lib/gitlab/background_migration/fix_projects_without_project_feature_spec.rb'
-    - 'spec/lib/gitlab/background_migration/fix_projects_without_prometheus_service_spec.rb'
-    - 'spec/lib/gitlab/background_migration/fix_user_namespace_names_spec.rb'
-    - 'spec/lib/gitlab/background_migration/fix_user_project_route_names_spec.rb'
-    - 'spec/lib/gitlab/background_migration/legacy_upload_mover_spec.rb'
-    - 'spec/lib/gitlab/background_migration/legacy_uploads_migrator_spec.rb'
-    - 'spec/lib/gitlab/background_migration/link_lfs_objects_projects_spec.rb'
-    - 'spec/lib/gitlab/background_migration/migrate_issue_trackers_sensitive_data_spec.rb'
-    - 'spec/lib/gitlab/background_migration/migrate_stage_index_spec.rb'
-    - 'spec/lib/gitlab/background_migration/migrate_users_bio_to_user_details_spec.rb'
-    - 'spec/lib/gitlab/background_migration/populate_canonical_emails_spec.rb'
-    - 'spec/lib/gitlab/background_migration/populate_merge_request_assignees_table_spec.rb'
-    - 'spec/lib/gitlab/background_migration/populate_user_highest_roles_table_spec.rb'
-    - 'spec/lib/gitlab/background_migration/recalculate_project_authorizations_spec.rb'
-    - 'spec/lib/gitlab/background_migration/remove_restricted_todos_spec.rb'
-    - 'spec/lib/gitlab/background_migration/reset_merge_status_spec.rb'
-    - 'spec/lib/gitlab/background_migration/set_confidential_note_events_on_services_spec.rb'
-    - 'spec/lib/gitlab/background_migration/set_confidential_note_events_on_webhooks_spec.rb'
-    - 'spec/lib/gitlab/bitbucket_server_import/importer_spec.rb'
-    - 'spec/lib/gitlab/ci/ansi2json/style_spec.rb'
-    - 'spec/lib/gitlab/ci/status/build/common_spec.rb'
-    - 'spec/lib/gitlab/cycle_analytics/base_event_fetcher_spec.rb'
-    - 'spec/lib/gitlab/database/custom_structure_spec.rb'
-    - 'spec/lib/gitlab/database/partitioning_migration_helpers/table_management_helpers_spec.rb'
-    - 'spec/lib/gitlab/database_importers/self_monitoring/project/create_service_spec.rb'
-    - 'spec/lib/gitlab/email/handler/create_note_handler_spec.rb'
-    - 'spec/lib/gitlab/email/handler/unsubscribe_handler_spec.rb'
-    - 'spec/lib/gitlab/gfm/reference_rewriter_spec.rb'
-    - 'spec/lib/gitlab/git_access_spec.rb'
-    - 'spec/lib/gitlab/gitaly_client/object_pool_service_spec.rb'
-    - 'spec/lib/gitlab/gitaly_client/repository_service_spec.rb'
-    - 'spec/lib/gitlab/import_export/avatar_saver_spec.rb'
-    - 'spec/lib/gitlab/import_export/base/relation_factory_spec.rb'
-    - 'spec/lib/gitlab/import_export/design_repo_restorer_spec.rb'
-    - 'spec/lib/gitlab/import_export/fast_hash_serializer_spec.rb'
-    - 'spec/lib/gitlab/import_export/fork_spec.rb'
-    - 'spec/lib/gitlab/import_export/group/legacy_tree_saver_spec.rb'
-    - 'spec/lib/gitlab/import_export/group/relation_factory_spec.rb'
-    - 'spec/lib/gitlab/import_export/group/tree_saver_spec.rb'
-    - 'spec/lib/gitlab/import_export/importer_spec.rb'
-    - 'spec/lib/gitlab/import_export/lfs_restorer_spec.rb'
-    - 'spec/lib/gitlab/import_export/lfs_saver_spec.rb'
-    - 'spec/lib/gitlab/import_export/members_mapper_spec.rb'
-    - 'spec/lib/gitlab/import_export/project/relation_factory_spec.rb'
-    - 'spec/lib/gitlab/import_export/project/tree_restorer_spec.rb'
-    - 'spec/lib/gitlab/import_export/project/tree_saver_spec.rb'
-    - 'spec/lib/gitlab/import_export/repo_restorer_spec.rb'
-    - 'spec/lib/gitlab/import_export/saver_spec.rb'
-    - 'spec/lib/gitlab/import_export/snippet_repo_restorer_spec.rb'
-    - 'spec/lib/gitlab/import_export/snippet_repo_saver_spec.rb'
-    - 'spec/lib/gitlab/import_export/snippets_repo_restorer_spec.rb'
-    - 'spec/lib/gitlab/import_export/snippets_repo_saver_spec.rb'
-    - 'spec/lib/gitlab/import_export/uploads_manager_spec.rb'
-    - 'spec/lib/gitlab/import_export/uploads_saver_spec.rb'
-    - 'spec/lib/gitlab/import_export/wiki_restorer_spec.rb'
-    - 'spec/lib/gitlab/legacy_github_import/importer_spec.rb'
-    - 'spec/lib/gitlab/legacy_github_import/issue_formatter_spec.rb'
-    - 'spec/lib/gitlab/legacy_github_import/milestone_formatter_spec.rb'
-    - 'spec/lib/gitlab/legacy_github_import/pull_request_formatter_spec.rb'
-    - 'spec/lib/gitlab/lets_encrypt/client_spec.rb'
-    - 'spec/lib/gitlab/markdown_cache/active_record/extension_spec.rb'
-    - 'spec/lib/gitlab/markdown_cache/redis/store_spec.rb'
-    - 'spec/lib/gitlab/middleware/go_spec.rb'
-    - 'spec/lib/gitlab/shard_health_cache_spec.rb'
-    - 'spec/lib/mattermost/command_spec.rb'
-    - 'spec/lib/mattermost/session_spec.rb'
-    - 'spec/lib/mattermost/team_spec.rb'
-    - 'spec/mailers/notify_spec.rb'
-    - 'spec/migrations/20190924152703_migrate_issue_trackers_data_spec.rb'
-    - 'spec/migrations/20200122123016_backfill_project_settings_spec.rb'
-    - 'spec/migrations/20200123155929_remove_invalid_jira_data_spec.rb'
-    - 'spec/migrations/20200127090233_remove_invalid_issue_tracker_data_spec.rb'
-    - 'spec/migrations/20200130145430_reschedule_migrate_issue_trackers_data_spec.rb'
-    - 'spec/migrations/20200313203550_remove_orphaned_chat_names_spec.rb'
-    - 'spec/migrations/20200406102120_backfill_deployment_clusters_from_deployments_spec.rb'
-    - 'spec/migrations/20200526115436_dedup_mr_metrics_spec.rb'
-    - 'spec/migrations/add_deploy_token_type_to_deploy_tokens_spec.rb'
-    - 'spec/migrations/add_incident_settings_to_all_existing_projects_spec.rb'
-    - 'spec/migrations/add_unique_constraint_to_approvals_user_id_and_merge_request_id_spec.rb'
-    - 'spec/migrations/backfill_and_add_not_null_constraint_to_released_at_column_on_releases_table_spec.rb'
-    - 'spec/migrations/backfill_imported_snippet_repositories_spec.rb'
-    - 'spec/migrations/backfill_releases_table_updated_at_and_add_not_null_constraints_to_timestamps_spec.rb'
-    - 'spec/migrations/backfill_snippet_repositories_spec.rb'
-    - 'spec/migrations/encrypt_plaintext_attributes_on_application_settings_spec.rb'
-    - 'spec/migrations/enqueue_reset_merge_status_second_run_spec.rb'
-    - 'spec/migrations/enqueue_reset_merge_status_spec.rb'
-    - 'spec/migrations/fill_file_store_lfs_objects_spec.rb'
-    - 'spec/migrations/fill_store_uploads_spec.rb'
-    - 'spec/migrations/fix_null_type_labels_spec.rb'
-    - 'spec/migrations/fix_pool_repository_source_project_id_spec.rb'
-    - 'spec/migrations/fix_projects_without_project_feature_spec.rb'
-    - 'spec/migrations/fix_projects_without_prometheus_services_spec.rb'
-    - 'spec/migrations/fix_wrong_pages_access_level_spec.rb'
-    - 'spec/migrations/insert_project_hooks_plan_limits_spec.rb'
-    - 'spec/migrations/migrate_auto_dev_ops_domain_to_cluster_domain_spec.rb'
-    - 'spec/migrations/move_limits_from_plans_spec.rb'
-    - 'spec/migrations/populate_project_statistics_packages_size_spec.rb'
-    - 'spec/migrations/schedule_link_lfs_objects_projects_spec.rb'
-    - 'spec/migrations/schedule_populate_merge_request_assignees_table_spec.rb'
-    - 'spec/migrations/seed_repository_storages_weighted_spec.rb'
-    - 'spec/models/appearance_spec.rb'
-    - 'spec/models/application_record_spec.rb'
-    - 'spec/models/application_setting_spec.rb'
-    - 'spec/models/clusters/applications/helm_spec.rb'
-    - 'spec/models/commit_spec.rb'
-    - 'spec/models/commit_status_spec.rb'
-    - 'spec/models/container_repository_spec.rb'
-    - 'spec/models/deploy_keys_project_spec.rb'
-    - 'spec/models/deploy_token_spec.rb'
-    - 'spec/models/deployment_spec.rb'
-    - 'spec/models/design_management/version_spec.rb'
-    - 'spec/models/diff_discussion_spec.rb'
-    - 'spec/models/diff_note_spec.rb'
-    - 'spec/models/email_spec.rb'
-    - 'spec/models/environment_spec.rb'
-    - 'spec/models/event_spec.rb'
-    - 'spec/models/fork_network_spec.rb'
-    - 'spec/models/generic_commit_status_spec.rb'
-    - 'spec/models/grafana_integration_spec.rb'
-    - 'spec/models/group_spec.rb'
-    - 'spec/models/hooks/system_hook_spec.rb'
-    - 'spec/models/hooks/web_hook_spec.rb'
-    - 'spec/models/identity_spec.rb'
-    - 'spec/models/issue/metrics_spec.rb'
-    - 'spec/models/issue_spec.rb'
-    - 'spec/models/jira_import_state_spec.rb'
-    - 'spec/models/key_spec.rb'
-    - 'spec/models/lfs_objects_project_spec.rb'
-    - 'spec/models/member_spec.rb'
-    - 'spec/models/members/group_member_spec.rb'
-    - 'spec/models/members/project_member_spec.rb'
-    - 'spec/models/merge_request_spec.rb'
-    - 'spec/models/milestone_spec.rb'
-    - 'spec/models/namespace_spec.rb'
-    - 'spec/models/note_spec.rb'
-    - 'spec/models/notification_setting_spec.rb'
-    - 'spec/models/operations/feature_flag_scope_spec.rb'
-    - 'spec/models/operations/feature_flags/strategy_spec.rb'
-    - 'spec/models/operations/feature_flags/user_list_spec.rb'
-    - 'spec/models/pages_domain_spec.rb'
-    - 'spec/models/project_auto_devops_spec.rb'
-    - 'spec/models/project_feature_spec.rb'
-    - 'spec/models/project_spec.rb'
-    - 'spec/models/project_team_spec.rb'
-    - 'spec/models/protectable_dropdown_spec.rb'
-    - 'spec/models/redirect_route_spec.rb'
-    - 'spec/models/release_spec.rb'
-    - 'spec/models/remote_mirror_spec.rb'
-    - 'spec/models/resource_milestone_event_spec.rb'
-    - 'spec/models/route_spec.rb'
-    - 'spec/models/sentry_issue_spec.rb'
-    - 'spec/models/service_spec.rb'
-    - 'spec/models/snippet_spec.rb'
-    - 'spec/models/upload_spec.rb'
-    - 'spec/models/user_preference_spec.rb'
-    - 'spec/models/user_spec.rb'
-    - 'spec/models/user_status_spec.rb'
-    - 'spec/models/wiki_page/meta_spec.rb'
-    - 'spec/models/wiki_page_spec.rb'
-    - 'spec/presenters/ci/build_runner_presenter_spec.rb'
-    - 'spec/presenters/ci/trigger_presenter_spec.rb'
-    - 'spec/presenters/packages/conan/package_presenter_spec.rb'
-    - 'spec/requests/api/ci/runner_spec.rb'
-    - 'spec/requests/api/commit_statuses_spec.rb'
-    - 'spec/requests/api/conan_packages_spec.rb'
-    - 'spec/requests/api/deployments_spec.rb'
-    - 'spec/requests/api/environments_spec.rb'
-    - 'spec/requests/api/go_proxy_spec.rb'
-    - 'spec/requests/api/graphql/mutations/merge_requests/set_labels_spec.rb'
-    - 'spec/requests/api/graphql/user_query_spec.rb'
-    - 'spec/requests/api/graphql_spec.rb'
-    - 'spec/requests/api/group_import_spec.rb'
-    - 'spec/requests/api/group_milestones_spec.rb'
-    - 'spec/requests/api/internal/base_spec.rb'
-    - 'spec/requests/api/issues/get_group_issues_spec.rb'
-    - 'spec/requests/api/issues/post_projects_issues_spec.rb'
-    - 'spec/requests/api/jobs_spec.rb'
-    - 'spec/requests/api/labels_spec.rb'
-    - 'spec/requests/api/project_import_spec.rb'
-    - 'spec/requests/projects/cycle_analytics_events_spec.rb'
-
-# Offense count: 187
-# Cop supports --auto-correct.
-RSpec/TimecopFreeze:
-  Exclude:
-    - 'ee/spec/lib/gitlab/geo/git_push_http_spec.rb'
-    - 'ee/spec/lib/gitlab/geo/log_cursor/daemon_spec.rb'
-    - 'ee/spec/lib/gitlab/analytics/cycle_analytics/data_collector_spec.rb'
-    - 'ee/spec/lib/gitlab/geo/oauth/login_state_spec.rb'
-    - 'ee/spec/lib/gitlab/insights/reducers/count_per_period_reducer_spec.rb'
-    - 'ee/spec/models/merge_train_spec.rb'
-    - 'ee/spec/frontend/fixtures/analytics.rb'
-    - 'ee/spec/support/shared_contexts/lib/gitlab/insights/reducers/reducers_shared_contexts.rb'
-    - 'qa/spec/support/repeater_spec.rb'
-    - 'spec/features/profiles/active_sessions_spec.rb'
-    - 'spec/features/projects/environments/environment_metrics_spec.rb'
-    - 'spec/features/users/active_sessions_spec.rb'
-    - 'spec/lib/atlassian/jira_connect/client_spec.rb'
-    - 'spec/lib/gitlab/analytics/cycle_analytics/base_query_builder_spec.rb'
-    - 'spec/lib/gitlab/analytics/cycle_analytics/median_spec.rb'
-    - 'spec/lib/gitlab/analytics/cycle_analytics/records_fetcher_spec.rb'
-    - 'spec/lib/gitlab/anonymous_session_spec.rb'
-    - 'spec/lib/gitlab/auth/unique_ips_limiter_spec.rb'
-    - 'spec/lib/gitlab/checks/timed_logger_spec.rb'
-    - 'spec/lib/gitlab/cycle_analytics/stage_summary_spec.rb'
-    - 'spec/lib/gitlab/cycle_analytics/usage_data_spec.rb'
-    - 'spec/lib/gitlab/instrumentation_helper_spec.rb'
-    - 'spec/lib/gitlab/omniauth_logging/json_formatter_spec.rb'
-    - 'spec/lib/gitlab/puma_logging/json_formatter_spec.rb'
-    - 'spec/lib/gitlab/sidekiq_logging/structured_logger_spec.rb'
-    - 'spec/lib/json_web_token/hmac_token_spec.rb'
-    - 'spec/lib/rspec_flaky/flaky_example_spec.rb'
-    - 'spec/lib/rspec_flaky/listener_spec.rb'
-    - 'spec/models/active_session_spec.rb'
-    - 'spec/models/container_repository_spec.rb'
-    - 'spec/models/pages/lookup_path_spec.rb'
-    - 'spec/models/project_feature_usage_spec.rb'
-    - 'spec/requests/api/v3/github_spec.rb'
-    - 'spec/serializers/entity_date_helper_spec.rb'
-    - 'spec/support/cycle_analytics_helpers/test_generation.rb'
-    - 'spec/support/helpers/cycle_analytics_helpers.rb'
-    - 'spec/support/helpers/javascript_fixtures_helpers.rb'
-    - 'spec/support/shared_contexts/rack_attack_shared_context.rb'
-    - 'spec/support/shared_examples/workers/concerns/reenqueuer_shared_examples.rb'
-    - 'spec/workers/concerns/reenqueuer_spec.rb'
-    - 'spec/workers/metrics/dashboard/prune_old_annotations_worker_spec.rb'
-
-# Offense count: 54
-# Cop supports --auto-correct.
-RSpec/TimecopTravel:
-  Exclude:
-    - 'ee/spec/lib/gitlab/geo/event_gap_tracking_spec.rb'
-    - 'ee/spec/lib/gitlab/geo/git_push_http_spec.rb'
-    - 'ee/spec/lib/gitlab/geo/jwt_request_decoder_spec.rb'
-    - 'ee/spec/lib/gitlab/geo/log_cursor/daemon_spec.rb'
-    - 'ee/spec/models/broadcast_message_spec.rb'
-    - 'ee/spec/models/burndown_spec.rb'
-    - 'qa/spec/support/repeater_spec.rb'
-    - 'spec/features/users/terms_spec.rb'
-    - 'spec/lib/feature_spec.rb'
-    - 'spec/models/broadcast_message_spec.rb'
-    - 'spec/models/concerns/issuable_spec.rb'
-    - 'spec/requests/api/ci/runner/jobs_trace_spec.rb'
-    - 'spec/requests/api/issues/put_projects_issues_spec.rb'
-    - 'spec/support/shared_contexts/cache_allowed_users_in_namespace_shared_context.rb'
-    - 'spec/support/shared_examples/requests/api/time_tracking_shared_examples.rb'
-    - 'spec/support/shared_examples/workers/concerns/reenqueuer_shared_examples.rb'
-    - 'spec/workers/concerns/reenqueuer_spec.rb'
-    - 'spec/lib/gitlab/analytics/cycle_analytics/median_spec.rb'
-
-# Offense count: 21
-Graphql/IDType:
-  Exclude:
-    - 'ee/app/graphql/ee/mutations/issues/update.rb'
-    - 'ee/app/graphql/mutations/iterations/update.rb'
-    - 'ee/app/graphql/resolvers/iterations_resolver.rb'
-    - 'app/graphql/mutations/boards/issues/issue_move_list.rb'
-    - 'app/graphql/mutations/issues/update.rb'
-    - 'app/graphql/mutations/metrics/dashboard/annotations/delete.rb'
-    - 'app/graphql/mutations/snippets/destroy.rb'
-    - 'app/graphql/mutations/snippets/mark_as_spam.rb'
-    - 'app/graphql/mutations/snippets/update.rb'
-    - 'app/graphql/resolvers/design_management/design_at_version_resolver.rb'
-    - 'app/graphql/resolvers/design_management/design_resolver.rb'
-    - 'app/graphql/resolvers/design_management/designs_resolver.rb'
-    - 'app/graphql/resolvers/design_management/version/design_at_version_resolver.rb'
-    - 'app/graphql/resolvers/design_management/version_in_collection_resolver.rb'
-    - 'app/graphql/resolvers/design_management/version_resolver.rb'
-    - 'app/graphql/resolvers/design_management/versions_resolver.rb'
-    - 'app/graphql/resolvers/error_tracking/sentry_detailed_error_resolver.rb'
-    - 'app/graphql/resolvers/error_tracking/sentry_error_stack_trace_resolver.rb'
-    - 'app/graphql/resolvers/snippets_resolver.rb'
-    - 'app/graphql/resolvers/user_merge_requests_resolver.rb'
-
-# Offense count: 86
-# Cop supports --auto-correct.
-FactoryBot/InlineAssociation:
-  Exclude:
-    - 'ee/spec/factories/analytics/cycle_analytics/group_stages.rb'
-    - 'ee/spec/factories/geo/event_log.rb'
-    - 'ee/spec/factories/groups.rb'
-    - 'ee/spec/factories/merge_request_blocks.rb'
-    - 'ee/spec/factories/vulnerabilities/feedback.rb'
-    - 'spec/factories/atlassian_identities.rb'
-    - 'spec/factories/design_management/design_at_version.rb'
-    - 'spec/factories/design_management/designs.rb'
-    - 'spec/factories/design_management/versions.rb'
-    - 'spec/factories/events.rb'
-    - 'spec/factories/git_wiki_commit_details.rb'
-    - 'spec/factories/gitaly/commit.rb'
-    - 'spec/factories/go_module_commits.rb'
-    - 'spec/factories/go_module_versions.rb'
-    - 'spec/factories/go_modules.rb'
-    - 'spec/factories/group_group_links.rb'
-    - 'spec/factories/import_export_uploads.rb'
-    - 'spec/factories/merge_requests.rb'
-    - 'spec/factories/notes.rb'
-    - 'spec/factories/packages.rb'
-    - 'spec/factories/packages/package_file.rb'
-    - 'spec/factories/sent_notifications.rb'
diff --git a/Gemfile b/Gemfile
index f78f0b3076f13103ce4186a841a64074f5be4096..3080445bca5d3b88bcaa335ada184f619a68aae0 100644
--- a/Gemfile
+++ b/Gemfile
@@ -370,11 +370,7 @@ group :development, :test do
   gem 'spring', '~> 2.0.0'
   gem 'spring-commands-rspec', '~> 1.0.4'
 
-  gem 'gitlab-styles', '~> 4.3.0', require: false
-  # Pin these dependencies, otherwise a new rule could break the CI pipelines
-  gem 'rubocop', '~> 0.82.0'
-  gem 'rubocop-performance', '~> 1.5.2'
-  gem 'rubocop-rspec', '~> 1.37.0'
+  gem 'gitlab-styles', '~> 5.0.0', require: false
 
   gem 'scss_lint', '~> 0.56.0', require: false
   gem 'haml_lint', '~> 0.36.0', require: false
diff --git a/Gemfile.lock b/Gemfile.lock
index 5c77e1a92cf89b2ea3a237ffe277bf8408c73a85..f16934bf05c2c4af8c8b89fddeb95d69da394213 100644
--- a/Gemfile.lock
+++ b/Gemfile.lock
@@ -449,12 +449,12 @@ GEM
       gitlab-puma (>= 2.7, < 5)
     gitlab-sidekiq-fetcher (0.5.2)
       sidekiq (~> 5)
-    gitlab-styles (4.3.0)
-      rubocop (~> 0.82.0)
+    gitlab-styles (5.0.0)
+      rubocop (~> 0.89.1)
       rubocop-gitlab-security (~> 0.1.0)
-      rubocop-performance (~> 1.5.2)
-      rubocop-rails (~> 2.5)
-      rubocop-rspec (~> 1.36)
+      rubocop-performance (~> 1.8.1)
+      rubocop-rails (~> 2.8)
+      rubocop-rspec (~> 1.44)
     gitlab_chronic_duration (0.10.6.2)
       numerizer (~> 0.2)
     gitlab_omniauth-ldap (2.1.1)
@@ -602,7 +602,6 @@ GEM
     jaeger-client (1.1.0)
       opentracing (~> 0.3)
       thrift
-    jaro_winkler (1.5.4)
     jira-ruby (2.0.0)
       activesupport
       atlassian-jwt
@@ -834,7 +833,7 @@ GEM
       rubypants (~> 0.2)
     orm_adapter (0.5.0)
     os (1.0.0)
-    parallel (1.19.1)
+    parallel (1.19.2)
     parser (2.7.2.0)
       ast (~> 2.4.1)
     parslet (1.8.2)
@@ -958,7 +957,7 @@ GEM
       redis-store (>= 1.2, < 2)
     redis-store (1.8.1)
       redis (>= 4, < 5)
-    regexp_parser (1.5.1)
+    regexp_parser (1.8.2)
     regexp_property_values (0.3.5)
     representable (3.0.4)
       declarative (< 0.1.0)
@@ -1019,24 +1018,29 @@ GEM
       pg
       rails
       sqlite3
-    rubocop (0.82.0)
-      jaro_winkler (~> 1.5.1)
+    rubocop (0.89.1)
       parallel (~> 1.10)
-      parser (>= 2.7.0.1)
+      parser (>= 2.7.1.1)
       rainbow (>= 2.2.2, < 4.0)
+      regexp_parser (>= 1.7)
       rexml
+      rubocop-ast (>= 0.3.0, < 1.0)
       ruby-progressbar (~> 1.7)
       unicode-display_width (>= 1.4.0, < 2.0)
+    rubocop-ast (0.8.0)
+      parser (>= 2.7.1.5)
     rubocop-gitlab-security (0.1.1)
       rubocop (>= 0.51)
-    rubocop-performance (1.5.2)
-      rubocop (>= 0.71.0)
-    rubocop-rails (2.5.2)
-      activesupport
+    rubocop-performance (1.8.1)
+      rubocop (>= 0.87.0)
+      rubocop-ast (>= 0.4.0)
+    rubocop-rails (2.8.1)
+      activesupport (>= 4.2.0)
       rack (>= 1.1)
-      rubocop (>= 0.72.0)
-    rubocop-rspec (1.37.0)
-      rubocop (>= 0.68.1)
+      rubocop (>= 0.87.0)
+    rubocop-rspec (1.44.1)
+      rubocop (~> 0.87)
+      rubocop-ast (>= 0.7.1)
     ruby-enum (0.7.2)
       i18n
     ruby-fogbugz (0.2.1)
@@ -1249,7 +1253,7 @@ GEM
     xpath (3.2.0)
       nokogiri (~> 1.8)
     yajl-ruby (1.4.1)
-    zeitwerk (2.4.0)
+    zeitwerk (2.4.1)
 
 PLATFORMS
   ruby
@@ -1353,7 +1357,7 @@ DEPENDENCIES
   gitlab-puma (~> 4.3.3.gitlab.2)
   gitlab-puma_worker_killer (~> 0.1.1.gitlab.1)
   gitlab-sidekiq-fetcher (= 0.5.2)
-  gitlab-styles (~> 4.3.0)
+  gitlab-styles (~> 5.0.0)
   gitlab_chronic_duration (~> 0.10.6.2)
   gitlab_omniauth-ldap (~> 2.1.1)
   gon (~> 6.2)
@@ -1473,9 +1477,6 @@ DEPENDENCIES
   rspec-retry (~> 0.6.1)
   rspec_junit_formatter
   rspec_profiling (~> 0.0.6)
-  rubocop (~> 0.82.0)
-  rubocop-performance (~> 1.5.2)
-  rubocop-rspec (~> 1.37.0)
   ruby-fogbugz (~> 0.2.1)
   ruby-prof (~> 1.3.0)
   ruby-progressbar
diff --git a/ee/lib/ee/gitlab/background_migration/.rubocop.yml b/ee/lib/ee/gitlab/background_migration/.rubocop.yml
index f1bd8adb0d592efa1f9fad5f4070e5882f9d77b2..c94d6600f4543e0b6b653fc4d913ac44ae8d123d 100644
--- a/ee/lib/ee/gitlab/background_migration/.rubocop.yml
+++ b/ee/lib/ee/gitlab/background_migration/.rubocop.yml
@@ -3,8 +3,5 @@
 ---
 inherit_from: ../../../../../lib/gitlab/background_migration/.rubocop.yml
 
-CodeReuse/ActiveRecord:
-  Enabled: false
-
 Style/Documentation:
   Enabled: false
diff --git a/lib/gitlab/danger/helper.rb b/lib/gitlab/danger/helper.rb
index 599a458d4a94b93bb74347dfd38a39ba30e994af..89f21e8bd2370767053306c25bcc71b23345677e 100644
--- a/lib/gitlab/danger/helper.rb
+++ b/lib/gitlab/danger/helper.rb
@@ -190,7 +190,7 @@ def label_for_category(category)
         %r{\A(ee/)?vendor/} => :backend,
         %r{\A(Gemfile|Gemfile.lock|Rakefile)\z} => :backend,
         %r{\A[A-Z_]+_VERSION\z} => :backend,
-        %r{\A\.rubocop(_todo)?\.yml\z} => :backend,
+        %r{\A\.rubocop((_manual)?_todo)?\.yml\z} => :backend,
         %r{\Afile_hooks/} => :backend,
 
         %r{\A(ee/)?qa/} => :qa,
diff --git a/rubocop/cop/code_reuse/active_record.rb b/rubocop/cop/code_reuse/active_record.rb
deleted file mode 100644
index f6b5d66647d300b8b67a02b66e9c1d217ad1e666..0000000000000000000000000000000000000000
--- a/rubocop/cop/code_reuse/active_record.rb
+++ /dev/null
@@ -1,168 +0,0 @@
-# frozen_string_literal: true
-
-require_relative '../../code_reuse_helpers'
-
-module RuboCop
-  module Cop
-    module CodeReuse
-      # Cop that denies the use of ActiveRecord methods outside of models.
-      class ActiveRecord < RuboCop::Cop::Cop
-        include CodeReuseHelpers
-
-        MSG = 'This method can only be used inside an ActiveRecord model: ' \
-        'https://gitlab.com/gitlab-org/gitlab-foss/issues/49653'
-
-        # Various methods from ActiveRecord::Querying that are denied. We
-        # exclude some generic ones such as `any?` and `first`, as these may
-        # lead to too many false positives, since `Array` also supports these
-        # methods.
-        #
-        # The keys of this Hash are the denied method names. The values are
-        # booleans that indicate if the method should only be denied if any
-        # arguments are provided.
-        NOT_ALLOWED = {
-          average: true,
-          calculate: true,
-          count_by_sql: true,
-          create_with: true,
-          distinct: false,
-          eager_load: true,
-          exists?: true,
-          find_by: true,
-          find_by!: true,
-          find_by_sql: true,
-          find_each: true,
-          find_in_batches: true,
-          find_or_create_by: true,
-          find_or_create_by!: true,
-          find_or_initialize_by: true,
-          first!: false,
-          first_or_create: true,
-          first_or_create!: true,
-          first_or_initialize: true,
-          from: true,
-          group: true,
-          having: true,
-          ids: false,
-          includes: true,
-          joins: true,
-          limit: true,
-          lock: false,
-          many?: false,
-          offset: true,
-          order: true,
-          pluck: true,
-          preload: true,
-          readonly: false,
-          references: true,
-          reorder: true,
-          rewhere: true,
-          take: false,
-          take!: false,
-          unscope: false,
-          where: false,
-          with: true
-        }.freeze
-
-        # Directories that allow the use of the denied methods. These
-        # directories are checked relative to both . and ee/
-        ALLOWED_DIRECTORIES = %w[
-          app/models
-          config
-          danger
-          db
-          lib/backup
-          lib/banzai
-          lib/gitlab/background_migration
-          lib/gitlab/cycle_analytics
-          lib/gitlab/database
-          lib/gitlab/import_export
-          lib/gitlab/project_authorizations
-          lib/gitlab/sql
-          lib/system_check
-          lib/tasks
-          qa
-          rubocop
-          spec
-        ].freeze
-
-        def on_send(node)
-          return if in_allowed_directory?(node)
-
-          receiver = node.children[0]
-          send_name = node.children[1]
-          first_arg = node.children[2]
-
-          if receiver && NOT_ALLOWED.key?(send_name)
-            # If the rule requires an argument to be given, but none are
-            # provided, we won't register an offense. This prevents us from
-            # adding offenses for `project.group`, while still covering
-            # `Project.group(:name)`.
-            return if NOT_ALLOWED[send_name] && !first_arg
-
-            add_offense(node, location: :selector)
-          end
-        end
-
-        # Returns true if the node resides in one of the allowed
-        # directories.
-        def in_allowed_directory?(node)
-          path = file_path_for_node(node)
-
-          ALLOWED_DIRECTORIES.any? do |directory|
-            path.start_with?(
-              File.join(rails_root, directory),
-              File.join(rails_root, 'ee', directory)
-            )
-          end
-        end
-
-        # We can not auto correct code like this, as it requires manual
-        # refactoring. Instead, we'll just allow the surrounding scope.
-        #
-        # Despite this method's presence, you should not use it. This method
-        # exists to make it possible to allow large chunks of offenses we
-        # can't fix in the short term. If you are writing new code, follow the
-        # code reuse guidelines, instead of allowing any new offenses.
-        def autocorrect(node)
-          scope = surrounding_scope_of(node)
-          indent = indentation_of(scope)
-
-          lambda do |corrector|
-            # This prevents us from inserting the same enable/disable comment
-            # for a method or block that has multiple offenses.
-            next if allowed_scopes.include?(scope)
-
-            corrector.insert_before(
-              scope.source_range,
-              "# rubocop: disable #{cop_name}\n#{indent}"
-            )
-
-            corrector.insert_after(
-              scope.source_range,
-              "\n#{indent}# rubocop: enable #{cop_name}"
-            )
-
-            allowed_scopes << scope
-          end
-        end
-
-        def indentation_of(node)
-          ' ' * node.loc.expression.source_line[/\A */].length
-        end
-
-        def surrounding_scope_of(node)
-          %i[def defs block begin].each do |type|
-            if (found = node.each_ancestor(type).first)
-              return found
-            end
-          end
-        end
-
-        def allowed_scopes
-          @allowed_scopes ||= Set.new
-        end
-      end
-    end
-  end
-end
diff --git a/rubocop/qa_helpers.rb b/rubocop/qa_helpers.rb
index 95875d64727bbfcc10abf5182822a3c23321002b..f4adf7f4e9f0ce9e44c82ea531ac32f0fad67da8 100644
--- a/rubocop/qa_helpers.rb
+++ b/rubocop/qa_helpers.rb
@@ -5,7 +5,7 @@ module QAHelpers
     def in_qa_file?(node)
       path = node.location.expression.source_buffer.name
 
-      path.start_with?(File.join(RuboCop::PathUtil.pwd, 'qa'))
+      path.start_with?(File.join(Dir.pwd, 'qa'))
     end
   end
 end
diff --git a/rubocop/rubocop-code_reuse.yml b/rubocop/rubocop-code_reuse.yml
new file mode 100644
index 0000000000000000000000000000000000000000..64e51c859f4326362106e26ae42976957b944d0a
--- /dev/null
+++ b/rubocop/rubocop-code_reuse.yml
@@ -0,0 +1,41 @@
+# Denies the use of ActiveRecord methods outside of configured
+# excluded directories
+# Directories that allow the use of the denied methods.
+# To start we provide a default configuration that matches
+# a standard Rails app and enable.
+# The default configuration can be overridden by
+# providing your own Exclusion list as follows:
+# CodeReuse/ActiveRecord:
+#  Enabled: true
+#  Exclude:
+#    - app/models/**/*.rb
+#    - config/**/*.rb
+#    - db/**/*.rb
+#    - lib/tasks/**/*.rb
+#    - spec/**/*.rb
+#    - lib/gitlab/**/*.rb
+CodeReuse/ActiveRecord:
+  Exclude:
+    - app/models/**/*.rb
+    - config/**/*.rb
+    - db/**/*.rb
+    - lib/tasks/**/*.rake
+    - spec/**/*.rb
+    - danger/**/*.rb
+    - lib/backup/**/*.rb
+    - lib/banzai/**/*.rb
+    - lib/gitlab/background_migration/**/*.rb
+    - lib/gitlab/cycle_analytics/**/*.rb
+    - lib/gitlab/database/**/*.rb
+    - lib/gitlab/database_importers/common_metrics/importer.rb
+    - lib/gitlab/import_export/**/*.rb
+    - lib/gitlab/project_authorizations.rb
+    - lib/gitlab/sql/**/*.rb
+    - lib/system_check/**/*.rb
+    - qa/**/*.rb
+    - rubocop/**/*.rb
+    - ee/app/models/**/*.rb
+    - ee/spec/**/*.rb
+    - ee/db/fixtures/**/*.rb
+    - ee/lib/tasks/**/*.rake
+    - ee/lib/ee/gitlab/background_migration/**/*.rb
diff --git a/spec/lib/gitlab/danger/helper_spec.rb b/spec/lib/gitlab/danger/helper_spec.rb
index 9866965589fc4984e561a4a75d089e25764ddba2..f400641706df2b7266ab40c25018b23adae60874 100644
--- a/spec/lib/gitlab/danger/helper_spec.rb
+++ b/spec/lib/gitlab/danger/helper_spec.rb
@@ -236,13 +236,16 @@
 
       '.gitlab/ci/frontend.gitlab-ci.yml' | %i[frontend engineering_productivity]
 
-      'app/models/foo' | [:backend]
-      'bin/foo'        | [:backend]
-      'config/foo'     | [:backend]
-      'lib/foo'        | [:backend]
-      'rubocop/foo'    | [:backend]
-      'spec/foo'       | [:backend]
-      'spec/foo/bar'   | [:backend]
+      'app/models/foo'             | [:backend]
+      'bin/foo'                    | [:backend]
+      'config/foo'                 | [:backend]
+      'lib/foo'                    | [:backend]
+      'rubocop/foo'                | [:backend]
+      '.rubocop.yml'               | [:backend]
+      '.rubocop_todo.yml'          | [:backend]
+      '.rubocop_manual_todo.yml'   | [:backend]
+      'spec/foo'                   | [:backend]
+      'spec/foo/bar'               | [:backend]
 
       'ee/app/foo'      | [:backend]
       'ee/bin/foo'      | [:backend]
diff --git a/spec/models/key_spec.rb b/spec/models/key_spec.rb
index 1e14864676c4495033e06074f7910b8c7dc70a39..3d33a39d3535f8a5ddba82434970ae3065d3a3dc 100644
--- a/spec/models/key_spec.rb
+++ b/spec/models/key_spec.rb
@@ -108,7 +108,7 @@
       expect(build(:key, key: 'ssh-rsa an-invalid-key==')).not_to be_valid
     end
 
-    where(:factory, :chars, :expected_sections) do
+    where(:factory, :characters, :expected_sections) do
       [
         [:key,                 ["\n", "\r\n"], 3],
         [:key,                 [' ', ' '],     3],
@@ -122,7 +122,7 @@
       let!(:original_fingerprint_sha256) { key.fingerprint_sha256 }
 
       it 'accepts a key with blank space characters after stripping them' do
-        modified_key = key.key.insert(100, chars.first).insert(40, chars.last)
+        modified_key = key.key.insert(100, characters.first).insert(40, characters.last)
         _, content = modified_key.split
 
         key.update!(key: modified_key)
diff --git a/spec/rubocop/cop/code_reuse/active_record_spec.rb b/spec/rubocop/cop/code_reuse/active_record_spec.rb
deleted file mode 100644
index e15b9e11aed7d7af4407c13eaa8cea135cb6236b..0000000000000000000000000000000000000000
--- a/spec/rubocop/cop/code_reuse/active_record_spec.rb
+++ /dev/null
@@ -1,134 +0,0 @@
-# frozen_string_literal: true
-
-require 'fast_spec_helper'
-require 'rubocop'
-require_relative '../../../../rubocop/cop/code_reuse/active_record'
-
-RSpec.describe RuboCop::Cop::CodeReuse::ActiveRecord, type: :rubocop do
-  include CopHelper
-
-  subject(:cop) { described_class.new }
-
-  it 'flags the use of "where" without any arguments' do
-    expect_offense(<<~SOURCE)
-    def foo
-      User.where
-           ^^^^^ This method can only be used inside an ActiveRecord model: https://gitlab.com/gitlab-org/gitlab-foss/issues/49653
-    end
-    SOURCE
-  end
-
-  it 'flags the use of "where" with arguments' do
-    expect_offense(<<~SOURCE)
-    def foo
-      User.where(id: 10)
-           ^^^^^ This method can only be used inside an ActiveRecord model: https://gitlab.com/gitlab-org/gitlab-foss/issues/49653
-    end
-    SOURCE
-  end
-
-  it 'does not flag the use of "group" without any arguments' do
-    expect_no_offenses(<<~SOURCE)
-    def foo
-      project.group
-    end
-    SOURCE
-  end
-
-  it 'flags the use of "group" with arguments' do
-    expect_offense(<<~SOURCE)
-    def foo
-      project.group(:name)
-              ^^^^^ This method can only be used inside an ActiveRecord model: https://gitlab.com/gitlab-org/gitlab-foss/issues/49653
-    end
-    SOURCE
-  end
-
-  it 'does not flag the use of ActiveRecord models in a model' do
-    path = rails_root_join('app', 'models', 'foo.rb').to_s
-
-    expect_no_offenses(<<~SOURCE, path)
-    def foo
-      project.group(:name)
-    end
-    SOURCE
-  end
-
-  it 'does not flag the use of ActiveRecord models in a spec' do
-    path = rails_root_join('spec', 'foo_spec.rb').to_s
-
-    expect_no_offenses(<<~SOURCE, path)
-    def foo
-      project.group(:name)
-    end
-    SOURCE
-  end
-
-  it 'does not flag the use of ActiveRecord models in a background migration' do
-    path = rails_root_join('lib', 'gitlab', 'background_migration', 'foo.rb').to_s
-
-    expect_no_offenses(<<~SOURCE, path)
-    def foo
-      project.group(:name)
-    end
-    SOURCE
-  end
-
-  it 'does not flag the use of ActiveRecord models in lib/gitlab/database' do
-    path = rails_root_join('lib', 'gitlab', 'database', 'foo.rb').to_s
-
-    expect_no_offenses(<<~SOURCE, path)
-    def foo
-      project.group(:name)
-    end
-    SOURCE
-  end
-
-  it 'autocorrects offenses in instance methods by allowing them' do
-    corrected = autocorrect_source(<<~SOURCE)
-    def foo
-      User.where
-    end
-    SOURCE
-
-    expect(corrected).to eq(<<~SOURCE)
-    # rubocop: disable CodeReuse/ActiveRecord
-    def foo
-      User.where
-    end
-    # rubocop: enable CodeReuse/ActiveRecord
-    SOURCE
-  end
-
-  it 'autocorrects offenses in class methods by allowing them' do
-    corrected = autocorrect_source(<<~SOURCE)
-    def self.foo
-      User.where
-    end
-    SOURCE
-
-    expect(corrected).to eq(<<~SOURCE)
-    # rubocop: disable CodeReuse/ActiveRecord
-    def self.foo
-      User.where
-    end
-    # rubocop: enable CodeReuse/ActiveRecord
-    SOURCE
-  end
-
-  it 'autocorrects offenses in blocks by allowing them' do
-    corrected = autocorrect_source(<<~SOURCE)
-    get '/' do
-      User.where
-    end
-    SOURCE
-
-    expect(corrected).to eq(<<~SOURCE)
-    # rubocop: disable CodeReuse/ActiveRecord
-    get '/' do
-      User.where
-    end
-    # rubocop: enable CodeReuse/ActiveRecord
-    SOURCE
-  end
-end
diff --git a/spec/rubocop/cop/rspec/be_success_matcher_spec.rb b/spec/rubocop/cop/rspec/be_success_matcher_spec.rb
index a16cd8b634fc070466674f752765d23655f9b5a0..b14cf39cbdea4dfd7cc2347fc53d5b0e202947ea 100644
--- a/spec/rubocop/cop/rspec/be_success_matcher_spec.rb
+++ b/spec/rubocop/cop/rspec/be_success_matcher_spec.rb
@@ -1,7 +1,7 @@
 # frozen_string_literal: true
 
 require 'fast_spec_helper'
-
+require 'rubocop'
 require_relative '../../../../rubocop/cop/rspec/be_success_matcher'
 
 RSpec.describe RuboCop::Cop::RSpec::BeSuccessMatcher, type: :rubocop do
diff --git a/spec/support/helpers/cop_helper.rb b/spec/support/helpers/cop_helper.rb
new file mode 100644
index 0000000000000000000000000000000000000000..d4c056eea8aa4b9d0a8550b047659d299411d598
--- /dev/null
+++ b/spec/support/helpers/cop_helper.rb
@@ -0,0 +1,74 @@
+# frozen_string_literal: true
+
+require 'tempfile'
+
+# This module provides methods that make it easier to test Cops.
+module CopHelper
+  extend RSpec::SharedContext
+
+  let(:ruby_version) { 2.4 }
+  let(:rails_version) { false }
+
+  def inspect_source_file(source)
+    Tempfile.open('tmp') { |f| inspect_source(source, f) }
+  end
+
+  def inspect_source(source, file = nil)
+    RuboCop::Formatter::DisabledConfigFormatter.config_to_allow_offenses = {}
+    RuboCop::Formatter::DisabledConfigFormatter.detected_styles = {}
+    processed_source = parse_source(source, file)
+    raise 'Error parsing example code' unless processed_source.valid_syntax?
+
+    _investigate(cop, processed_source)
+  end
+
+  def parse_source(source, file = nil)
+    if file&.respond_to?(:write)
+      file.write(source)
+      file.rewind
+      file = file.path
+    end
+
+    RuboCop::ProcessedSource.new(source, ruby_version, file)
+  end
+
+  def autocorrect_source_file(source)
+    Tempfile.open('tmp') { |f| autocorrect_source(source, f) }
+  end
+
+  def autocorrect_source(source, file = nil)
+    RuboCop::Formatter::DisabledConfigFormatter.config_to_allow_offenses = {}
+    RuboCop::Formatter::DisabledConfigFormatter.detected_styles = {}
+    cop.instance_variable_get(:@options)[:auto_correct] = true
+    processed_source = parse_source(source, file)
+    _investigate(cop, processed_source)
+
+    @last_corrector.rewrite
+  end
+
+  def _investigate(cop, processed_source)
+    team = RuboCop::Cop::Team.new([cop], nil, raise_error: true)
+    report = team.investigate(processed_source)
+    @last_corrector = report.correctors.first || RuboCop::Cop::Corrector.new(processed_source)
+    report.offenses
+  end
+end
+
+module RuboCop
+  module Cop
+    # Monkey-patch Cop for tests to provide easy access to messages and
+    # highlights.
+    # this file is an exact copy of source except for this line
+    # where we change to the new Base class defined in rubocop and skirt around our superclass mismatch for class Cop
+    # when running a rubocop spec.
+    class Base
+      def messages
+        offenses.sort.map(&:message)
+      end
+
+      def highlights
+        offenses.sort.map { |o| o.location.source }
+      end
+    end
+  end
+end
diff --git a/spec/support/rspec.rb b/spec/support/rspec.rb
index 861b57c9efa7a900396a9d81efe177fd3a4bfd82..558a6ee1e86a841812c1bf920eaeb90b9b64abe4 100644
--- a/spec/support/rspec.rb
+++ b/spec/support/rspec.rb
@@ -5,7 +5,8 @@
 require_relative "helpers/stub_object_storage"
 require_relative "helpers/stub_env"
 require_relative "helpers/fast_rails_root"
-require 'rubocop/rspec/support'
+
+require_relative 'rubocop_patch'
 
 RSpec.configure do |config|
   config.mock_with :rspec
diff --git a/spec/support/rubocop_patch.rb b/spec/support/rubocop_patch.rb
new file mode 100644
index 0000000000000000000000000000000000000000..f485ef32a87c1676d4ea79d8df9c69ce386b59d3
--- /dev/null
+++ b/spec/support/rubocop_patch.rb
@@ -0,0 +1,21 @@
+# frozen_string_literal: true
+
+# There is an issue between rubocop versions 0.86 and 0.87 (verified by testing locally)
+# where the monkey patching in cop_helper is referencing class Cop and should really be referencing class Base instead
+# the gem's version of the cop_helper causes this issue when testing a rubocop cop locally and in CI
+# The only difference in this file as compared to gem source file is that we include our own cop_helper instead
+# which is a direct copy with a fix for the monkey patching part.
+# Doing this, resolves the issue.
+# Ideally we should move away from using the cop_helper at all as is the direction of rubocop as seen
+# here - https://github.com/rubocop-hq/rubocop/issues/8003
+# more info https://gitlab.com/gitlab-org/gitlab/-/merge_requests/46477
+
+require_relative 'helpers/cop_helper'
+require 'rubocop/rspec/host_environment_simulation_helper'
+require 'rubocop/rspec/shared_contexts'
+require 'rubocop/rspec/expect_offense'
+
+RSpec.configure do |config|
+  config.include CopHelper
+  config.include HostEnvironmentSimulatorHelper
+end
diff --git a/tooling/overcommit/Gemfile b/tooling/overcommit/Gemfile
index 615da316fd526e83cf0f71092db72d6962ccf467..571ea1862a579f13d96b48775b303fb134e3c39c 100644
--- a/tooling/overcommit/Gemfile
+++ b/tooling/overcommit/Gemfile
@@ -4,6 +4,6 @@
 source 'https://rubygems.org'
 
 gem 'overcommit'
-gem 'gitlab-styles', '~> 4.3.0', require: false
+gem 'gitlab-styles', '~> 5.0.0', require: false
 gem 'scss_lint', '~> 0.56.0', require: false
 gem 'haml_lint', '~> 0.34.0', require: false
diff --git a/tooling/overcommit/Gemfile.lock b/tooling/overcommit/Gemfile.lock
index 15b4a0b0d04b1447791c55382ef54f1c5fa0de69..6527ad3fcda70d1bd8f186ea348267896ffbeb52 100644
--- a/tooling/overcommit/Gemfile.lock
+++ b/tooling/overcommit/Gemfile.lock
@@ -1,22 +1,22 @@
 GEM
   remote: https://rubygems.org/
   specs:
-    activesupport (6.0.3)
+    activesupport (6.0.3.4)
       concurrent-ruby (~> 1.0, >= 1.0.2)
       i18n (>= 0.7, < 2)
       minitest (~> 5.1)
       tzinfo (~> 1.1)
       zeitwerk (~> 2.2, >= 2.2.2)
-    ast (2.4.0)
+    ast (2.4.1)
     childprocess (3.0.0)
-    concurrent-ruby (1.1.6)
+    concurrent-ruby (1.1.7)
     ffi (1.12.2)
-    gitlab-styles (4.3.0)
-      rubocop (~> 0.82.0)
+    gitlab-styles (5.0.0)
+      rubocop (~> 0.89.1)
       rubocop-gitlab-security (~> 0.1.0)
-      rubocop-performance (~> 1.5.2)
-      rubocop-rails (~> 2.5)
-      rubocop-rspec (~> 1.36)
+      rubocop-performance (~> 1.8.1)
+      rubocop-rails (~> 2.8)
+      rubocop-rspec (~> 1.44)
     haml (5.1.2)
       temple (>= 0.8.0)
       tilt
@@ -25,42 +25,47 @@ GEM
       rainbow
       rubocop (>= 0.50.0)
       sysexits (~> 1.1)
-    i18n (1.8.2)
+    i18n (1.8.5)
       concurrent-ruby (~> 1.0)
     iniparse (1.5.0)
-    jaro_winkler (1.5.4)
-    minitest (5.11.3)
+    minitest (5.14.2)
     overcommit (0.53.0)
       childprocess (>= 0.6.3, < 4)
       iniparse (~> 1.4)
-    parallel (1.19.1)
-    parser (2.7.1.2)
-      ast (~> 2.4.0)
-    rack (2.0.9)
+    parallel (1.19.2)
+    parser (2.7.2.0)
+      ast (~> 2.4.1)
+    rack (2.2.3)
     rainbow (3.0.0)
     rake (12.3.3)
     rb-fsevent (0.10.2)
     rb-inotify (0.9.10)
       ffi (>= 0.5.0, < 2)
+    regexp_parser (1.8.2)
     rexml (3.2.4)
-    rubocop (0.82.0)
-      jaro_winkler (~> 1.5.1)
+    rubocop (0.89.1)
       parallel (~> 1.10)
-      parser (>= 2.7.0.1)
+      parser (>= 2.7.1.1)
       rainbow (>= 2.2.2, < 4.0)
+      regexp_parser (>= 1.7)
       rexml
+      rubocop-ast (>= 0.3.0, < 1.0)
       ruby-progressbar (~> 1.7)
       unicode-display_width (>= 1.4.0, < 2.0)
+    rubocop-ast (0.8.0)
+      parser (>= 2.7.1.5)
     rubocop-gitlab-security (0.1.1)
       rubocop (>= 0.51)
-    rubocop-performance (1.5.2)
-      rubocop (>= 0.71.0)
-    rubocop-rails (2.5.2)
-      activesupport
+    rubocop-performance (1.8.1)
+      rubocop (>= 0.87.0)
+      rubocop-ast (>= 0.4.0)
+    rubocop-rails (2.8.1)
+      activesupport (>= 4.2.0)
       rack (>= 1.1)
-      rubocop (>= 0.72.0)
-    rubocop-rspec (1.37.0)
-      rubocop (>= 0.68.1)
+      rubocop (>= 0.87.0)
+    rubocop-rspec (1.44.1)
+      rubocop (~> 0.87)
+      rubocop-ast (>= 0.7.1)
     ruby-progressbar (1.10.1)
     sass (3.5.5)
       sass-listen (~> 4.0.0)
@@ -77,13 +82,13 @@ GEM
     tzinfo (1.2.7)
       thread_safe (~> 0.1)
     unicode-display_width (1.7.0)
-    zeitwerk (2.3.0)
+    zeitwerk (2.4.1)
 
 PLATFORMS
   ruby
 
 DEPENDENCIES
-  gitlab-styles (~> 4.3.0)
+  gitlab-styles (~> 5.0.0)
   haml_lint (~> 0.34.0)
   overcommit
   scss_lint (~> 0.56.0)