From d40cda150cfa77ecc60653ec3d6a8c10777fed39 Mon Sep 17 00:00:00 2001 From: Nicolas Will Date: Mon, 1 Jul 2024 18:20:23 +0200 Subject: [PATCH] WIP: standalone MRVA --- .vscode/settings.json | 6 + extensions/ql-vscode/package.json | 12 -- extensions/ql-vscode/src/common/commands.ts | 1 - extensions/ql-vscode/src/config.ts | 28 +-- .../ql-vscode/src/databases/ui/db-panel.ts | 23 --- .../src/databases/ui/db-tree-data-provider.ts | 5 - ...-history-variant-analysis-domain-mapper.ts | 5 - ...ery-history-variant-analysis-dto-mapper.ts | 10 +- .../query-history-variant-analysis-dto.ts | 5 - .../src/variant-analysis/export-results.ts | 8 +- .../variant-analysis/gh-api/gh-api-client.ts | 188 ++++++++++++------ .../src/variant-analysis/run-remote-query.ts | 96 +-------- .../variant-analysis-manager.ts | 24 ++- .../variant-analysis-monitor.ts | 8 +- 14 files changed, 163 insertions(+), 256 deletions(-) diff --git a/.vscode/settings.json b/.vscode/settings.json index f61c6b3dc..f4b20423d 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -111,4 +111,10 @@ "editor.defaultFormatter": "esbenp.prettier-vscode", "editor.formatOnSave": true, }, + "github.copilot.advanced": { + + + }, + "codeQL.variantAnalysis.enableGhecDr": true, + "github-enterprise.uri": "http://localhost:8080/" } diff --git a/extensions/ql-vscode/package.json b/extensions/ql-vscode/package.json index 21272f093..99e30cc9f 100644 --- a/extensions/ql-vscode/package.json +++ b/extensions/ql-vscode/package.json @@ -339,13 +339,6 @@ "title": "Variant analysis", "order": 5, "properties": { - "codeQL.variantAnalysis.controllerRepo": { - "type": "string", - "default": "", - "pattern": "^$|^(?:[a-zA-Z0-9]+-)*[a-zA-Z0-9]+/[a-zA-Z0-9-_]+$", - "patternErrorMessage": "Please enter a valid GitHub repository", - "markdownDescription": "[For internal use only] The name of the GitHub repository in which the GitHub Actions workflow is run when using the \"Run Variant Analysis\" command. The repository should be of the form `/`)." - }, "codeQL.variantAnalysis.defaultResultsFilter": { "type": "string", "default": "all", @@ -1931,11 +1924,6 @@ { "view": "codeQLEvalLogViewer", "contents": "Run the 'Show Evaluator Log (UI)' command on a CodeQL query run in the Query History view." - }, - { - "view": "codeQLVariantAnalysisRepositories", - "contents": "Set up a controller repository to start using variant analysis. [Learn more](https://codeql.github.com/docs/codeql-for-visual-studio-code/running-codeql-queries-at-scale-with-mrva#controller-repository) about controller repositories. \n[Set up controller repository](command:codeQLVariantAnalysisRepositories.setupControllerRepository)", - "when": "!config.codeQL.variantAnalysis.controllerRepo" } ] }, diff --git a/extensions/ql-vscode/src/common/commands.ts b/extensions/ql-vscode/src/common/commands.ts index 7b1cadcda..ee53a3966 100644 --- a/extensions/ql-vscode/src/common/commands.ts +++ b/extensions/ql-vscode/src/common/commands.ts @@ -290,7 +290,6 @@ export type DatabasePanelCommands = { "codeQLVariantAnalysisRepositories.openConfigFile": () => Promise; "codeQLVariantAnalysisRepositories.addNewDatabase": () => Promise; "codeQLVariantAnalysisRepositories.addNewList": () => Promise; - "codeQLVariantAnalysisRepositories.setupControllerRepository": () => Promise; "codeQLVariantAnalysisRepositories.setSelectedItem": TreeViewContextSingleSelectionCommandFunction; "codeQLVariantAnalysisRepositories.setSelectedItemContextMenu": TreeViewContextSingleSelectionCommandFunction; diff --git a/extensions/ql-vscode/src/config.ts b/extensions/ql-vscode/src/config.ts index 8f4d6fe37..54bdbaa99 100644 --- a/extensions/ql-vscode/src/config.ts +++ b/extensions/ql-vscode/src/config.ts @@ -112,7 +112,9 @@ export function hasEnterpriseUri(): boolean { * Does the uri look like GHEC-DR? */ function isGhecDrUri(uri: Uri | undefined): boolean { - return uri !== undefined && uri.authority.toLowerCase().endsWith(".ghe.com"); + return ( + uri !== undefined && !uri.authority.toLowerCase().endsWith("github.com") + ); } /** @@ -591,27 +593,7 @@ export const NO_CACHE_CONTEXTUAL_QUERIES = new Setting( // Settings for variant analysis const VARIANT_ANALYSIS_SETTING = new Setting("variantAnalysis", ROOT_SETTING); -/** - * The name of the "controller" repository that you want to use with the "Run Variant Analysis" command. - * Note: This command is only available for internal users. - * - * This setting should be a GitHub repository of the form `/`. - */ -const REMOTE_CONTROLLER_REPO = new Setting( - "controllerRepo", - VARIANT_ANALYSIS_SETTING, -); - -export function getRemoteControllerRepo(): string | undefined { - return REMOTE_CONTROLLER_REPO.getValue() || undefined; -} - -export async function setRemoteControllerRepo(repo: string | undefined) { - await REMOTE_CONTROLLER_REPO.updateValue(repo, ConfigurationTarget.Global); -} - export interface VariantAnalysisConfig { - controllerRepo: string | undefined; showSystemDefinedRepositoryLists: boolean; /** * This uses a URL instead of a URI because the URL class is available in @@ -632,10 +614,6 @@ export class VariantAnalysisConfigListener ); } - public get controllerRepo(): string | undefined { - return getRemoteControllerRepo(); - } - public get showSystemDefinedRepositoryLists(): boolean { return !hasEnterpriseUri(); } diff --git a/extensions/ql-vscode/src/databases/ui/db-panel.ts b/extensions/ql-vscode/src/databases/ui/db-panel.ts index 0605721d3..794dc5223 100644 --- a/extensions/ql-vscode/src/databases/ui/db-panel.ts +++ b/extensions/ql-vscode/src/databases/ui/db-panel.ts @@ -18,8 +18,6 @@ import type { DbManager } from "../db-manager"; import { DbTreeDataProvider } from "./db-tree-data-provider"; import type { DbTreeViewItem } from "./db-tree-view-item"; import { getGitHubUrl } from "./db-tree-view-item-action"; -import { getControllerRepo } from "../../variant-analysis/run-remote-query"; -import { getErrorMessage } from "../../common/helpers-pure"; import type { DatabasePanelCommands } from "../../common/commands"; import type { App } from "../../common/app"; import { QueryLanguage } from "../../common/query-language"; @@ -74,9 +72,6 @@ export class DbPanel extends DisposableObject { this.addNewRemoteDatabase.bind(this), "codeQLVariantAnalysisRepositories.addNewList": this.addNewList.bind(this), - "codeQLVariantAnalysisRepositories.setupControllerRepository": - this.setupControllerRepository.bind(this), - "codeQLVariantAnalysisRepositories.setSelectedItem": this.setSelectedItem.bind(this), "codeQLVariantAnalysisRepositories.setSelectedItemContextMenu": @@ -427,22 +422,4 @@ export class DbPanel extends DisposableObject { await this.app.commands.execute("vscode.open", Uri.parse(githubUrl)); } - - private async setupControllerRepository(): Promise { - try { - // This will also validate that the controller repository is valid - await getControllerRepo(this.app.credentials); - } catch (e: unknown) { - if (e instanceof UserCancellationException) { - return; - } - - void showAndLogErrorMessage( - this.app.logger, - `An error occurred while setting up the controller repository: ${getErrorMessage( - e, - )}`, - ); - } - } } diff --git a/extensions/ql-vscode/src/databases/ui/db-tree-data-provider.ts b/extensions/ql-vscode/src/databases/ui/db-tree-data-provider.ts index 8249af564..f83f8183d 100644 --- a/extensions/ql-vscode/src/databases/ui/db-tree-data-provider.ts +++ b/extensions/ql-vscode/src/databases/ui/db-tree-data-provider.ts @@ -83,11 +83,6 @@ export class DbTreeDataProvider } private createTree(): DbTreeViewItem[] { - // Returning an empty tree here will show the welcome view - if (!this.variantAnalysisConfig.controllerRepo) { - return []; - } - const dbItemsResult = this.dbManager.getDbItems(); if (dbItemsResult.isFailure) { diff --git a/extensions/ql-vscode/src/query-history/store/query-history-variant-analysis-domain-mapper.ts b/extensions/ql-vscode/src/query-history/store/query-history-variant-analysis-domain-mapper.ts index 6ca7c6313..8fd92623c 100644 --- a/extensions/ql-vscode/src/query-history/store/query-history-variant-analysis-domain-mapper.ts +++ b/extensions/ql-vscode/src/query-history/store/query-history-variant-analysis-domain-mapper.ts @@ -48,11 +48,6 @@ function mapVariantAnalysisDtoToDto( ): VariantAnalysisDto { return { id: variantAnalysis.id, - controllerRepo: { - id: variantAnalysis.controllerRepo.id, - fullName: variantAnalysis.controllerRepo.fullName, - private: variantAnalysis.controllerRepo.private, - }, query: { name: variantAnalysis.query.name, filePath: variantAnalysis.query.filePath, diff --git a/extensions/ql-vscode/src/query-history/store/query-history-variant-analysis-dto-mapper.ts b/extensions/ql-vscode/src/query-history/store/query-history-variant-analysis-dto-mapper.ts index 7f81ed918..50bfc5918 100644 --- a/extensions/ql-vscode/src/query-history/store/query-history-variant-analysis-dto-mapper.ts +++ b/extensions/ql-vscode/src/query-history/store/query-history-variant-analysis-dto-mapper.ts @@ -48,12 +48,12 @@ function mapVariantAnalysisToDomainModel( ): VariantAnalysis { return { id: variantAnalysis.id, - controllerRepo: { - id: variantAnalysis.controllerRepo.id, - fullName: variantAnalysis.controllerRepo.fullName, - private: variantAnalysis.controllerRepo.private, - }, language: mapQueryLanguageToDomainModel(variantAnalysis.query.language), + controllerRepo: { + id: 0, + fullName: "", + private: false, + }, query: { name: variantAnalysis.query.name, filePath: variantAnalysis.query.filePath, diff --git a/extensions/ql-vscode/src/query-history/store/query-history-variant-analysis-dto.ts b/extensions/ql-vscode/src/query-history/store/query-history-variant-analysis-dto.ts index dfe07af1d..f9c0c3c2c 100644 --- a/extensions/ql-vscode/src/query-history/store/query-history-variant-analysis-dto.ts +++ b/extensions/ql-vscode/src/query-history/store/query-history-variant-analysis-dto.ts @@ -15,11 +15,6 @@ export interface QueryHistoryVariantAnalysisDto { export interface VariantAnalysisDto { id: number; - controllerRepo: { - id: number; - fullName: string; - private: boolean; - }; query: { name: string; filePath: string; diff --git a/extensions/ql-vscode/src/variant-analysis/export-results.ts b/extensions/ql-vscode/src/variant-analysis/export-results.ts index 17d1997a4..a9c53de26 100644 --- a/extensions/ql-vscode/src/variant-analysis/export-results.ts +++ b/extensions/ql-vscode/src/variant-analysis/export-results.ts @@ -160,7 +160,7 @@ async function exportVariantAnalysisAnalysisResults( expectedAnalysesResultsCount: number, exportFormat: "gist" | "local", commandManager: AppCommandManager, - credentials: Credentials, + _credentials: Credentials, progress: ProgressCallback, token: CancellationToken, ) { @@ -191,7 +191,6 @@ async function exportVariantAnalysisAnalysisResults( markdownFiles, exportFormat, commandManager, - credentials, progress, token, ); @@ -236,7 +235,6 @@ async function exportResults( markdownFiles: MarkdownFile[], exportFormat: "gist" | "local", commandManager: AppCommandManager, - credentials: Credentials, progress?: ProgressCallback, token?: CancellationToken, ) { @@ -249,7 +247,6 @@ async function exportResults( description, markdownFiles, commandManager, - credentials, progress, token, ); @@ -268,7 +265,6 @@ async function exportToGist( description: string, markdownFiles: MarkdownFile[], commandManager: AppCommandManager, - credentials: Credentials, progress?: ProgressCallback, token?: CancellationToken, ) { @@ -291,7 +287,7 @@ async function exportToGist( {} as { [key: string]: { content: string } }, ); - const gistUrl = await createGist(credentials, description, gistFiles); + const gistUrl = await createGist(description, gistFiles); if (gistUrl) { // This needs to use .then to ensure we aren't keeping the progress notification open. We shouldn't await the // "Open gist" button click. diff --git a/extensions/ql-vscode/src/variant-analysis/gh-api/gh-api-client.ts b/extensions/ql-vscode/src/variant-analysis/gh-api/gh-api-client.ts index 385595186..f27e0c6ac 100644 --- a/extensions/ql-vscode/src/variant-analysis/gh-api/gh-api-client.ts +++ b/extensions/ql-vscode/src/variant-analysis/gh-api/gh-api-client.ts @@ -1,5 +1,4 @@ -import type { OctokitResponse } from "@octokit/types/dist-types"; -import type { Credentials } from "../../common/authentication"; +import { getGitHubInstanceUrl } from "../../config"; import type { VariantAnalysisSubmission } from "../shared/variant-analysis"; import type { VariantAnalysis, @@ -7,84 +6,142 @@ import type { VariantAnalysisSubmissionRequest, } from "./variant-analysis"; import type { Repository } from "./repository"; +import { extLogger } from "../../common/logging/vscode"; -export async function submitVariantAnalysis( - credentials: Credentials, - submissionDetails: VariantAnalysisSubmission, -): Promise { - const octokit = await credentials.getOctokit(); - - const { actionRepoRef, language, pack, databases, controllerRepoId } = - submissionDetails; - - const data: VariantAnalysisSubmissionRequest = { - action_repo_ref: actionRepoRef, - language, - query_pack: pack, - repositories: databases.repositories, - repository_lists: databases.repositoryLists, - repository_owners: databases.repositoryOwners, - }; - - const response: OctokitResponse = await octokit.request( - "POST /repositories/:controllerRepoId/code-scanning/codeql/variant-analyses", - { - controllerRepoId, - data, - }, - ); - - return response.data; +function getOctokitBaseUrl(): string { + let apiUrl = getGitHubInstanceUrl().toString(); + if (apiUrl.endsWith("/")) { + apiUrl = apiUrl.slice(0, -1); + } + if (apiUrl.startsWith("https://")) { + apiUrl = apiUrl.replace("https://", "http://"); + } + return apiUrl; } +export async function submitVariantAnalysis( + submissionDetails: VariantAnalysisSubmission, +): Promise { + try { + console.log("Getting base URL..."); + const baseUrl = getOctokitBaseUrl(); + void extLogger.log(`Base URL: ${baseUrl}`); + + const { actionRepoRef, language, pack, databases, controllerRepoId } = + submissionDetails; + + const data: VariantAnalysisSubmissionRequest = { + action_repo_ref: actionRepoRef, + language, + query_pack: pack, + repositories: databases.repositories, + repository_lists: databases.repositoryLists, + repository_owners: databases.repositoryOwners, + }; + + void extLogger.log( + `Sending fetch request with data: ${JSON.stringify(data)}`, + ); + + void extLogger.log( + `Fetch request URL: ${baseUrl}/repositories/${controllerRepoId}/code-scanning/codeql/variant-analyses`, + ); + + const response = await fetch( + `${baseUrl}/repositories/${controllerRepoId}/code-scanning/codeql/variant-analyses`, + { + method: "POST", + headers: { + "Content-Type": "application/json", + }, + body: JSON.stringify(data), + }, + ); + + void extLogger.log(`Response status: ${response.status}`); + + if (!response.ok) { + throw new Error( + `Error submitting variant analysis: ${response.statusText}`, + ); + } + + const responseData = await response.json(); + void extLogger.log(`Response data: ${responseData}`); + + return responseData; + } catch (error) { + void extLogger.log(`Error: ${error}`); + throw error; + } +} export async function getVariantAnalysis( - credentials: Credentials, controllerRepoId: number, variantAnalysisId: number, ): Promise { - const octokit = await credentials.getOctokit(); + const baseUrl = getOctokitBaseUrl(); - const response: OctokitResponse = await octokit.request( - "GET /repositories/:controllerRepoId/code-scanning/codeql/variant-analyses/:variantAnalysisId", + const response = await fetch( + `${baseUrl}/repositories/${controllerRepoId}/code-scanning/codeql/variant-analyses/${variantAnalysisId}`, { - controllerRepoId, - variantAnalysisId, + method: "GET", + headers: { + "Content-Type": "application/json", + }, }, ); - return response.data; + if (!response.ok) { + throw new Error(`Error getting variant analysis: ${response.statusText}`); + } + + return response.json(); } export async function getVariantAnalysisRepo( - credentials: Credentials, controllerRepoId: number, variantAnalysisId: number, repoId: number, ): Promise { - const octokit = await credentials.getOctokit(); + const baseUrl = getOctokitBaseUrl(); - const response: OctokitResponse = - await octokit.request( - "GET /repositories/:controllerRepoId/code-scanning/codeql/variant-analyses/:variantAnalysisId/repositories/:repoId", - { - controllerRepoId, - variantAnalysisId, - repoId, + const response = await fetch( + `${baseUrl}/repositories/${controllerRepoId}/code-scanning/codeql/variant-analyses/${variantAnalysisId}/repositories/${repoId}`, + { + method: "GET", + headers: { + "Content-Type": "application/json", }, - ); + }, + ); - return response.data; + if (!response.ok) { + throw new Error( + `Error getting variant analysis repo: ${response.statusText}`, + ); + } + + return response.json(); } export async function getRepositoryFromNwo( - credentials: Credentials, owner: string, repo: string, ): Promise { - const octokit = await credentials.getOctokit(); + const baseUrl = getOctokitBaseUrl(); - const response = await octokit.rest.repos.get({ owner, repo }); - return response.data as Repository; + const response = await fetch(`${baseUrl}/repos/${owner}/${repo}`, { + method: "GET", + headers: { + "Content-Type": "application/json", + }, + }); + + if (!response.ok) { + throw new Error(`Error getting repository: ${response.statusText}`); + } + + return response.json(); } /** @@ -92,22 +149,29 @@ export async function getRepositoryFromNwo( * Returns the URL of the created gist. */ export async function createGist( - credentials: Credentials, description: string, files: { [key: string]: { content: string } }, ): Promise { - const octokit = await credentials.getOctokit(); - const response = await octokit.request("POST /gists", { - description, - files, - public: false, + const baseUrl = getOctokitBaseUrl(); + + const response = await fetch(`${baseUrl}/gists`, { + method: "POST", + headers: { + "Content-Type": "application/json", + }, + body: JSON.stringify({ + description, + files, + public: false, + }), }); - if (response.status >= 300) { + + if (!response.ok) { throw new Error( - `Error exporting variant analysis results: ${response.status} ${ - response?.data || "" - }`, + `Error creating gist: ${response.status} ${response.statusText}`, ); } - return response.data.html_url; + + const data = await response.json(); + return data.html_url; } diff --git a/extensions/ql-vscode/src/variant-analysis/run-remote-query.ts b/extensions/ql-vscode/src/variant-analysis/run-remote-query.ts index 2251afe49..4a6878a4a 100644 --- a/extensions/ql-vscode/src/variant-analysis/run-remote-query.ts +++ b/extensions/ql-vscode/src/variant-analysis/run-remote-query.ts @@ -1,5 +1,5 @@ import type { CancellationToken } from "vscode"; -import { Uri, window } from "vscode"; +import { Uri } from "vscode"; import { join, sep, basename, relative } from "path"; import { dump, load } from "js-yaml"; import { copy, writeFile, readFile, mkdirp } from "fs-extra"; @@ -7,26 +7,17 @@ import type { DirectoryResult } from "tmp-promise"; import { dir, tmpName } from "tmp-promise"; import { tmpDir } from "../tmp-dir"; import { getOnDiskWorkspaceFolders } from "../common/vscode/workspace-folders"; -import type { Credentials } from "../common/authentication"; import type { CodeQLCliServer } from "../codeql-cli/cli"; import { extLogger } from "../common/logging/vscode"; -import { - getActionBranch, - getRemoteControllerRepo, - setRemoteControllerRepo, -} from "../config"; +import { getActionBranch } from "../config"; import type { ProgressCallback } from "../common/vscode/progress"; import { UserCancellationException } from "../common/vscode/progress"; -import type { RequestError } from "@octokit/types/dist-types"; import type { QueryMetadata } from "../common/interface-types"; -import { getErrorMessage, REPO_REGEX } from "../common/helpers-pure"; -import { getRepositoryFromNwo } from "./gh-api/gh-api-client"; import type { RepositorySelection } from "./repository-selection"; import { getRepositorySelection, isValidSelection, } from "./repository-selection"; -import type { Repository } from "./shared/repository"; import type { DbManager } from "../databases/db-manager"; import { getQlPackFilePath, @@ -285,13 +276,11 @@ interface PreparedRemoteQuery { base64Pack: string; modelPacks: ModelPackDetails[]; repoSelection: RepositorySelection; - controllerRepo: Repository; queryStartTime: number; } export async function prepareRemoteQueryRun( cliServer: CodeQLCliServer, - credentials: Credentials, qlPackDetails: QlPackDetails, progress: ProgressCallback, token: CancellationToken, @@ -322,8 +311,6 @@ export async function prepareRemoteQueryRun( message: "Determining controller repo", }); - const controllerRepo = await getControllerRepo(credentials); - progress({ maxStep: 4, step: 3, @@ -367,7 +354,6 @@ export async function prepareRemoteQueryRun( base64Pack: generatedPack.base64Pack, modelPacks: generatedPack.modelPacks, repoSelection, - controllerRepo, queryStartTime, }; } @@ -494,84 +480,6 @@ export function getQueryName( return queryMetadata?.name ?? basename(queryFilePath); } -export async function getControllerRepo( - credentials: Credentials, -): Promise { - // Get the controller repo from the config, if it exists. - // If it doesn't exist, prompt the user to enter it, check - // whether the repo exists, and save the nwo to the config. - - let shouldSetControllerRepo = false; - let controllerRepoNwo: string | undefined; - controllerRepoNwo = getRemoteControllerRepo(); - if (!controllerRepoNwo || !REPO_REGEX.test(controllerRepoNwo)) { - void extLogger.log( - controllerRepoNwo - ? "Invalid controller repository name." - : "No controller repository defined.", - ); - controllerRepoNwo = await window.showInputBox({ - title: - "Controller repository in which to run GitHub Actions workflows for variant analyses", - placeHolder: "/", - prompt: - "Enter the name of a GitHub repository in the format /. You can change this in the extension settings.", - ignoreFocusOut: true, - }); - if (!controllerRepoNwo) { - throw new UserCancellationException("No controller repository entered."); - } else if (!REPO_REGEX.test(controllerRepoNwo)) { - // Check if user entered invalid input - throw new UserCancellationException( - "Invalid repository format. Must be a valid GitHub repository in the format /.", - ); - } - - shouldSetControllerRepo = true; - } - - void extLogger.log(`Using controller repository: ${controllerRepoNwo}`); - const controllerRepo = await getControllerRepoFromApi( - credentials, - controllerRepoNwo, - ); - - if (shouldSetControllerRepo) { - void extLogger.log( - `Setting the controller repository as: ${controllerRepoNwo}`, - ); - await setRemoteControllerRepo(controllerRepoNwo); - } - - return controllerRepo; -} - -async function getControllerRepoFromApi( - credentials: Credentials, - nwo: string, -): Promise { - const [owner, repo] = nwo.split("/"); - try { - const controllerRepo = await getRepositoryFromNwo(credentials, owner, repo); - void extLogger.log(`Controller repository ID: ${controllerRepo.id}`); - return { - id: controllerRepo.id, - fullName: controllerRepo.full_name, - private: controllerRepo.private, - }; - } catch (e) { - if ((e as RequestError).status === 404) { - throw new Error(`Controller repository "${owner}/${repo}" not found`); - } else { - throw new Error( - `Error getting controller repository "${owner}/${repo}": ${getErrorMessage( - e, - )}`, - ); - } - } -} - function removeWorkspaceRefs(qlpack: QlPackFile) { if (!qlpack.dependencies) { return; diff --git a/extensions/ql-vscode/src/variant-analysis/variant-analysis-manager.ts b/extensions/ql-vscode/src/variant-analysis/variant-analysis-manager.ts index 9e05309f4..7a6c760c4 100644 --- a/extensions/ql-vscode/src/variant-analysis/variant-analysis-manager.ts +++ b/extensions/ql-vscode/src/variant-analysis/variant-analysis-manager.ts @@ -373,16 +373,19 @@ export class VariantAnalysisManager ); } + // log to extLogger + void this.app.logger.log( + `Running variant analysis with query: ${queryName}, language: ${variantAnalysisLanguage}`, + ); + const { actionBranch, base64Pack, modelPacks, repoSelection, - controllerRepo, queryStartTime, } = await prepareRemoteQueryRun( this.cliServer, - this.app.credentials, qlPackDetails, progress, token, @@ -399,12 +402,15 @@ export class VariantAnalysisManager count: qlPackDetails.queryFiles.length, }; + // log that submitting + void this.app.logger.log("Submitting variant analysis"); + const variantAnalysisSubmission: VariantAnalysisSubmission = { startTime: queryStartTime, actionRepoRef: actionBranch, - controllerRepoId: controllerRepo.id, language: variantAnalysisLanguage, pack: base64Pack, + controllerRepoId: 0, query: { name: queryName, filePath: firstQueryFile, @@ -422,7 +428,6 @@ export class VariantAnalysisManager let variantAnalysisResponse: ApiVariantAnalysis; try { variantAnalysisResponse = await submitVariantAnalysis( - this.app.credentials, variantAnalysisSubmission, ); } catch (e: unknown) { @@ -431,9 +436,17 @@ export class VariantAnalysisManager e instanceof RequestError && handleRequestError(e, this.config.githubUrl, this.app.logger) ) { + // log + void this.app.logger.log( + `Error submitting variant analysis: ${getErrorMessage(e)}`, + ); return undefined; } + // throwing + void this.app.logger.log( + `Error submitting variant analysis: ${getErrorMessage(e)}`, + ); throw e; } @@ -806,8 +819,7 @@ export class VariantAnalysisManager let repoTask: VariantAnalysisRepositoryTask; try { const repoTaskResponse = await getVariantAnalysisRepo( - this.app.credentials, - variantAnalysis.controllerRepo.id, + 0, variantAnalysis.id, scannedRepo.repository.id, ); diff --git a/extensions/ql-vscode/src/variant-analysis/variant-analysis-monitor.ts b/extensions/ql-vscode/src/variant-analysis/variant-analysis-monitor.ts index 8592f8435..a1a810175 100644 --- a/extensions/ql-vscode/src/variant-analysis/variant-analysis-monitor.ts +++ b/extensions/ql-vscode/src/variant-analysis/variant-analysis-monitor.ts @@ -62,7 +62,6 @@ export class VariantAnalysisMonitor extends DisposableObject { try { await this._monitorVariantAnalysis( variantAnalysis.id, - variantAnalysis.controllerRepo.id, variantAnalysis.executionStartTime, variantAnalysis.query.name, variantAnalysis.language, @@ -74,7 +73,6 @@ export class VariantAnalysisMonitor extends DisposableObject { private async _monitorVariantAnalysis( variantAnalysisId: number, - controllerRepoId: number, executionStartTime: number, queryName: string, language: QueryLanguage, @@ -97,11 +95,7 @@ export class VariantAnalysisMonitor extends DisposableObject { let variantAnalysisSummary: ApiVariantAnalysis; try { - variantAnalysisSummary = await getVariantAnalysis( - this.app.credentials, - controllerRepoId, - variantAnalysisId, - ); + variantAnalysisSummary = await getVariantAnalysis(0, variantAnalysisId); } catch (e) { const errorMessage = getErrorMessage(e);