Skip to content

Commit 7a76e20

Browse files
committed
Move showAndLogExceptionWithTelemetry out of vscode directory
1 parent d03d355 commit 7a76e20

27 files changed

Lines changed: 86 additions & 77 deletions

File tree

extensions/ql-vscode/src/common/logging/notifications.ts

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,6 @@
11
import { NotificationLogger } from "./notification-logger";
2+
import { AppTelemetry } from "../telemetry";
3+
import { RedactableError } from "../../pure/errors";
24

35
export interface ShowAndLogOptions {
46
/**
@@ -87,3 +89,28 @@ async function internalShowAndLog(
8789
void logger.log(fullMessage || message);
8890
await fn.bind(logger)(message);
8991
}
92+
93+
interface ShowAndLogExceptionOptions extends ShowAndLogOptions {
94+
/** Custom properties to include in the telemetry report. */
95+
extraTelemetryProperties?: { [key: string]: string };
96+
}
97+
98+
/**
99+
* Show an error message, log it to the console, and emit redacted information as telemetry
100+
*
101+
* @param logger The logger that will receive the message.
102+
* @param telemetry The telemetry instance to use for reporting.
103+
* @param error The error to show. Only redacted information will be included in the telemetry.
104+
* @param options See individual fields on `ShowAndLogExceptionOptions` type.
105+
*
106+
* @return A promise that resolves to the selected item or undefined when being dismissed.
107+
*/
108+
export async function showAndLogExceptionWithTelemetry(
109+
logger: NotificationLogger,
110+
telemetry: AppTelemetry | undefined,
111+
error: RedactableError,
112+
options: ShowAndLogExceptionOptions = {},
113+
): Promise<void> {
114+
telemetry?.sendError(error, options.extraTelemetryProperties);
115+
return showAndLogErrorMessage(logger, error.fullMessage, options);
116+
}

extensions/ql-vscode/src/common/vscode/commands.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import {
44
extLogger,
55
NotificationLogger,
66
showAndLogWarningMessage,
7+
showAndLogExceptionWithTelemetry,
78
} from "../logging";
89
import {
910
asError,
@@ -13,7 +14,6 @@ import {
1314
import { redactableError } from "../../pure/errors";
1415
import { UserCancellationException } from "./progress";
1516
import { telemetryListener } from "./telemetry";
16-
import { showAndLogExceptionWithTelemetry } from "./logging";
1717
import { AppTelemetry } from "../telemetry";
1818

1919
/**

extensions/ql-vscode/src/common/vscode/external-files.ts

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,7 @@ import {
77
getErrorMessage,
88
getErrorStack,
99
} from "../../pure/helpers-pure";
10-
import { extLogger } from "../logging";
11-
import { showAndLogExceptionWithTelemetry } from "./logging";
10+
import { extLogger, showAndLogExceptionWithTelemetry } from "../logging";
1211
import { telemetryListener } from "./telemetry";
1312

1413
export async function tryOpenExternalFile(

extensions/ql-vscode/src/common/vscode/logging.ts

Lines changed: 0 additions & 32 deletions
This file was deleted.

extensions/ql-vscode/src/compare/compare-view.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ import {
66
QueryCompareResult,
77
} from "../pure/interface-types";
88
import { extLogger, Logger } from "../common";
9-
import { showAndLogExceptionWithTelemetry } from "../common/vscode/logging";
9+
import { showAndLogExceptionWithTelemetry } from "../common/logging";
1010
import { CodeQLCliServer } from "../codeql-cli/cli";
1111
import { DatabaseManager } from "../databases/local-databases";
1212
import { jumpToLocation } from "../databases/local-databases/locations";

extensions/ql-vscode/src/data-extensions-editor/data-extensions-editor-view.ts

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,10 @@ import {
1717
} from "../pure/interface-types";
1818
import { ProgressUpdate } from "../common/vscode/progress";
1919
import { QueryRunner } from "../query-server";
20-
import { showAndLogExceptionWithTelemetry } from "../common/vscode/logging";
20+
import {
21+
showAndLogExceptionWithTelemetry,
22+
showAndLogErrorMessage,
23+
} from "../common/logging";
2124
import { outputFile, pathExists, readFile } from "fs-extra";
2225
import { load as loadYaml } from "js-yaml";
2326
import { DatabaseItem, DatabaseManager } from "../databases/local-databases";
@@ -42,7 +45,6 @@ import {
4245
} from "./auto-model";
4346
import { showLlmGeneration } from "../config";
4447
import { getAutoModelUsages } from "./auto-model-usages-query";
45-
import { showAndLogErrorMessage } from "../common/logging";
4648

4749
export class DataExtensionsEditorView extends AbstractWebview<
4850
ToDataExtensionsEditorMessage,

extensions/ql-vscode/src/data-extensions-editor/external-api-usage-query.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ import { writeFile } from "fs-extra";
44
import { dump as dumpYaml } from "js-yaml";
55
import { getOnDiskWorkspaceFolders } from "../common/vscode/workspace-folders";
66
import { extLogger, TeeLogger } from "../common";
7-
import { showAndLogExceptionWithTelemetry } from "../common/vscode/logging";
7+
import { showAndLogExceptionWithTelemetry } from "../common/logging";
88
import { isQueryLanguage } from "../common/query-language";
99
import { CancellationToken } from "vscode";
1010
import { CodeQLCliServer } from "../codeql-cli/cli";

extensions/ql-vscode/src/data-extensions-editor/generate-flow-model.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ import { basename } from "path";
44
import { QueryRunner } from "../query-server";
55
import { CodeQLCliServer } from "../codeql-cli/cli";
66
import { extLogger, TeeLogger } from "../common";
7-
import { showAndLogExceptionWithTelemetry } from "../common/vscode/logging";
7+
import { showAndLogExceptionWithTelemetry } from "../common/logging";
88
import { extensiblePredicateDefinitions } from "./predicates";
99
import { ProgressCallback } from "../common/vscode/progress";
1010
import { getOnDiskWorkspaceFolders } from "../common/vscode/workspace-folders";

extensions/ql-vscode/src/databases/local-databases-ui.ts

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,10 @@ import {
3232
isLikelyDatabaseRoot,
3333
isLikelyDbLanguageFolder,
3434
} from "./local-databases/db-contents-heuristics";
35-
import { showAndLogExceptionWithTelemetry } from "../common/vscode/logging";
35+
import {
36+
showAndLogExceptionWithTelemetry,
37+
showAndLogErrorMessage,
38+
} from "../common/logging";
3639
import {
3740
importArchiveDatabase,
3841
promptImportGithubDatabase,
@@ -48,7 +51,6 @@ import {
4851
createMultiSelectionCommand,
4952
createSingleSelectionCommand,
5053
} from "../common/vscode/selection-commands";
51-
import { showAndLogErrorMessage } from "../common/logging";
5254

5355
enum SortOrder {
5456
NameAsc = "NameAsc",

extensions/ql-vscode/src/databases/local-databases/database-manager.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import vscode, { ExtensionContext } from "vscode";
22
import { extLogger, Logger } from "../../common";
3-
import { showAndLogExceptionWithTelemetry } from "../../common/vscode/logging";
3+
import { showAndLogExceptionWithTelemetry } from "../../common/logging";
44
import { DisposableObject } from "../../pure/disposable-object";
55
import { App } from "../../common/app";
66
import { QueryRunner } from "../../query-server";

0 commit comments

Comments
 (0)