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)