Skip to content

Commit cff3d95

Browse files
committed
Merge remote-tracking branch 'origin/main' into koesie10/rename-last-commit-to-last-updated
2 parents 0cbc991 + 24e4708 commit cff3d95

48 files changed

Lines changed: 531 additions & 178 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

extensions/ql-vscode/.eslintrc.js

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,6 @@ const baseConfig = {
4949
"@typescript-eslint/no-throw-literal": "error",
5050
"no-useless-escape": 0,
5151
camelcase: "off",
52-
eqeqeq: "off",
5352
"escompat/no-regexp-lookbehind": "off",
5453
"etc/no-implicit-any-catch": "error",
5554
"filenames/match-regex": "off",

extensions/ql-vscode/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1483,7 +1483,7 @@
14831483
"husky": {
14841484
"hooks": {
14851485
"pre-commit": "npm run format-staged",
1486-
"pre-push": "npm run lint && scripts/forbid-test-only"
1486+
"pre-push": "scripts/forbid-test-only"
14871487
}
14881488
},
14891489
"lint-staged": {

extensions/ql-vscode/src/abstract-webview.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@ export abstract class AbstractWebview<
5151
}
5252

5353
protected async getPanel(): Promise<WebviewPanel> {
54-
if (this.panel == undefined) {
54+
if (this.panel === undefined) {
5555
const { ctx } = this;
5656

5757
// This is an async method, so in theory this method can be called concurrently. To ensure that we don't

extensions/ql-vscode/src/astViewer.ts

Lines changed: 15 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,9 @@ import {
2525
} from "./pure/bqrs-utils";
2626
import { commandRunner } from "./commandRunner";
2727
import { DisposableObject } from "./pure/disposable-object";
28-
import { showAndLogErrorMessage } from "./helpers";
28+
import { showAndLogExceptionWithTelemetry } from "./helpers";
29+
import { asError, getErrorMessage } from "./pure/helpers-pure";
30+
import { redactableError } from "./pure/errors";
2931

3032
export interface AstItem {
3133
id: BqrsId;
@@ -146,7 +148,12 @@ export class AstViewer extends DisposableObject {
146148
() => {
147149
/**/
148150
},
149-
(err) => showAndLogErrorMessage(err),
151+
(error: unknown) =>
152+
showAndLogExceptionWithTelemetry(
153+
redactableError(
154+
asError(error),
155+
)`Failed to reveal AST: ${getErrorMessage(error)}`,
156+
),
150157
);
151158
}
152159

@@ -204,7 +211,12 @@ export class AstViewer extends DisposableObject {
204211
() => {
205212
/**/
206213
},
207-
(err) => showAndLogErrorMessage(err),
214+
(error: unknown) =>
215+
showAndLogExceptionWithTelemetry(
216+
redactableError(
217+
asError(error),
218+
)`Failed to reveal AST: ${getErrorMessage(error)}`,
219+
),
208220
);
209221
}
210222
}

extensions/ql-vscode/src/cli.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -384,7 +384,7 @@ export class CodeQLCliServer implements Disposable {
384384
this.killProcessIfRunning();
385385
// Report the error (if there is a stderr then use that otherwise just report the error cod or nodejs error)
386386
const newError =
387-
stderrBuffers.length == 0
387+
stderrBuffers.length === 0
388388
? new Error(`${description} failed: ${err}`)
389389
: new Error(
390390
`${description} failed: ${Buffer.concat(stderrBuffers).toString(

extensions/ql-vscode/src/commandRunner.ts

Lines changed: 29 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -6,10 +6,14 @@ import {
66
Disposable,
77
ProgressLocation,
88
} from "vscode";
9-
import { showAndLogErrorMessage, showAndLogWarningMessage } from "./helpers";
9+
import {
10+
showAndLogExceptionWithTelemetry,
11+
showAndLogWarningMessage,
12+
} from "./helpers";
1013
import { extLogger } from "./common";
1114
import { asError, getErrorMessage, getErrorStack } from "./pure/helpers-pure";
1215
import { telemetryListener } from "./telemetry";
16+
import { redactableError } from "./pure/errors";
1317

1418
export class UserCancellationException extends Error {
1519
/**
@@ -125,23 +129,28 @@ export function commandRunner(
125129
try {
126130
return await task(...args);
127131
} catch (e) {
128-
const errorMessage = `${getErrorMessage(e) || e} (${commandId})`;
129132
error = asError(e);
133+
const errorMessage = redactableError(error)`${
134+
getErrorMessage(e) || e
135+
} (${commandId})`;
130136
const errorStack = getErrorStack(e);
131137
if (e instanceof UserCancellationException) {
132138
// User has cancelled this action manually
133139
if (e.silent) {
134-
void extLogger.log(errorMessage);
140+
void extLogger.log(errorMessage.fullMessage);
135141
} else {
136-
void showAndLogWarningMessage(errorMessage);
142+
void showAndLogWarningMessage(errorMessage.fullMessage);
137143
}
138144
} else {
139145
// Include the full stack in the error log only.
140146
const fullMessage = errorStack
141-
? `${errorMessage}\n${errorStack}`
142-
: errorMessage;
143-
void showAndLogErrorMessage(errorMessage, {
147+
? `${errorMessage.fullMessage}\n${errorStack}`
148+
: errorMessage.fullMessage;
149+
void showAndLogExceptionWithTelemetry(errorMessage, {
144150
fullMessage,
151+
extraTelemetryProperties: {
152+
command: commandId,
153+
},
145154
});
146155
}
147156
return undefined;
@@ -178,24 +187,31 @@ export function commandRunnerWithProgress<R>(
178187
try {
179188
return await withProgress(progressOptionsWithDefaults, task, ...args);
180189
} catch (e) {
181-
const errorMessage = `${getErrorMessage(e) || e} (${commandId})`;
182190
error = asError(e);
191+
const errorMessage = redactableError`${
192+
getErrorMessage(e) || e
193+
} (${commandId})`;
183194
const errorStack = getErrorStack(e);
184195
if (e instanceof UserCancellationException) {
185196
// User has cancelled this action manually
186197
if (e.silent) {
187-
void outputLogger.log(errorMessage);
198+
void outputLogger.log(errorMessage.fullMessage);
188199
} else {
189-
void showAndLogWarningMessage(errorMessage, { outputLogger });
200+
void showAndLogWarningMessage(errorMessage.fullMessage, {
201+
outputLogger,
202+
});
190203
}
191204
} else {
192205
// Include the full stack in the error log only.
193206
const fullMessage = errorStack
194-
? `${errorMessage}\n${errorStack}`
195-
: errorMessage;
196-
void showAndLogErrorMessage(errorMessage, {
207+
? `${errorMessage.fullMessage}\n${errorStack}`
208+
: errorMessage.fullMessage;
209+
void showAndLogExceptionWithTelemetry(errorMessage, {
197210
outputLogger,
198211
fullMessage,
212+
extraTelemetryProperties: {
213+
command: commandId,
214+
},
199215
});
200216
}
201217
return undefined;

extensions/ql-vscode/src/config.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -357,7 +357,7 @@ export class QueryServerConfigListener
357357
if (memory === null) {
358358
return undefined;
359359
}
360-
if (memory == 0 || typeof memory !== "number") {
360+
if (memory === 0 || typeof memory !== "number") {
361361
void extLogger.log(
362362
`Ignoring value '${memory}' for setting ${MEMORY_SETTING.qualifiedName}`,
363363
);

extensions/ql-vscode/src/contextual/locationFinder.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -128,9 +128,9 @@ function createTemplates(path: string): Record<string, string> {
128128
function isValidSelect(selectInfo: ResultSetSchema | undefined) {
129129
return (
130130
selectInfo &&
131-
selectInfo.columns.length == 3 &&
132-
selectInfo.columns[0].kind == ColumnKindCode.ENTITY &&
133-
selectInfo.columns[1].kind == ColumnKindCode.ENTITY &&
134-
selectInfo.columns[2].kind == ColumnKindCode.STRING
131+
selectInfo.columns.length === 3 &&
132+
selectInfo.columns[0].kind === ColumnKindCode.ENTITY &&
133+
selectInfo.columns[1].kind === ColumnKindCode.ENTITY &&
134+
selectInfo.columns[2].kind === ColumnKindCode.STRING
135135
);
136136
}

extensions/ql-vscode/src/contextual/queryResolver.ts

Lines changed: 11 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,8 @@ import {
77
getPrimaryDbscheme,
88
getQlPackForDbscheme,
99
getOnDiskWorkspaceFolders,
10-
showAndLogErrorMessage,
1110
QlPacksForLanguage,
11+
showAndLogExceptionWithTelemetry,
1212
} from "../helpers";
1313
import { KeyType, kindOfKeyType, nameOfKeyType, tagOfKeyType } from "./keyType";
1414
import { CodeQLCliServer } from "../cli";
@@ -18,6 +18,7 @@ import { createInitialQueryInfo } from "../run-queries-shared";
1818
import { CancellationToken, Uri } from "vscode";
1919
import { ProgressCallback } from "../commandRunner";
2020
import { QueryRunner } from "../queryRunner";
21+
import { redactableError } from "../pure/errors";
2122

2223
export async function qlpackOfDatabase(
2324
cli: CodeQLCliServer,
@@ -88,22 +89,16 @@ export async function resolveQueries(
8889
}
8990

9091
// No queries found. Determine the correct error message for the various scenarios.
91-
const errorMessage = `No ${nameOfKeyType(
92-
keyType,
93-
)} queries (tagged "${tagOfKeyType(
94-
keyType,
95-
)}") could be found in the current library path. \
96-
Try upgrading the CodeQL libraries. If that doesn't work, then ${nameOfKeyType(
97-
keyType,
98-
)} queries are not yet available \
99-
for this language.`;
92+
const keyTypeName = nameOfKeyType(keyType);
93+
const keyTypeTag = tagOfKeyType(keyType);
94+
const joinedPacksToSearch = packsToSearch.join(", ");
95+
const error = redactableError`No ${keyTypeName} queries (tagged "${keyTypeTag}") could be found in the \
96+
current library path (tried searching the following packs: ${joinedPacksToSearch}). \
97+
Try upgrading the CodeQL libraries. If that doesn't work, then ${keyTypeName} queries are not yet available \
98+
for this language.`;
10099

101-
void showAndLogErrorMessage(errorMessage);
102-
throw new Error(
103-
`Couldn't find any queries tagged ${tagOfKeyType(
104-
keyType,
105-
)} in any of the following packs: ${packsToSearch.join(", ")}.`,
106-
);
100+
void showAndLogExceptionWithTelemetry(error);
101+
throw error;
107102
}
108103

109104
async function resolveContextualQuery(

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

Lines changed: 19 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -30,18 +30,20 @@ import {
3030
isLikelyDatabaseRoot,
3131
isLikelyDbLanguageFolder,
3232
showAndLogErrorMessage,
33+
showAndLogExceptionWithTelemetry,
3334
} from "./helpers";
3435
import { extLogger } from "./common";
3536
import {
3637
importArchiveDatabase,
3738
promptImportGithubDatabase,
3839
promptImportInternetDatabase,
3940
} from "./databaseFetcher";
40-
import { asyncFilter, getErrorMessage } from "./pure/helpers-pure";
41+
import { asError, asyncFilter, getErrorMessage } from "./pure/helpers-pure";
4142
import { QueryRunner } from "./queryRunner";
4243
import { isCanary } from "./config";
4344
import { App } from "./common/app";
4445
import { Credentials } from "./common/authentication";
46+
import { redactableError } from "./pure/errors";
4547

4648
enum SortOrder {
4749
NameAsc = "NameAsc",
@@ -354,7 +356,11 @@ export class DatabaseUI extends DisposableObject {
354356
try {
355357
await this.chooseAndSetDatabase(true, progress, token);
356358
} catch (e) {
357-
void showAndLogErrorMessage(getErrorMessage(e));
359+
void showAndLogExceptionWithTelemetry(
360+
redactableError(
361+
asError(e),
362+
)`Failed to choose and set database: ${getErrorMessage(e)}`,
363+
);
358364
}
359365
};
360366

@@ -437,6 +443,11 @@ export class DatabaseUI extends DisposableObject {
437443
void extLogger.log(`Deleting orphaned database '${dbDir}'.`);
438444
await remove(dbDir);
439445
} catch (e) {
446+
void showAndLogExceptionWithTelemetry(
447+
redactableError(
448+
asError(e),
449+
)`Failed to delete orphaned database: ${getErrorMessage(e)}`,
450+
);
440451
failures.push(`${basename(dbDir)}`);
441452
}
442453
}),
@@ -458,8 +469,12 @@ export class DatabaseUI extends DisposableObject {
458469
): Promise<void> => {
459470
try {
460471
await this.chooseAndSetDatabase(false, progress, token);
461-
} catch (e) {
462-
void showAndLogErrorMessage(getErrorMessage(e));
472+
} catch (e: unknown) {
473+
void showAndLogExceptionWithTelemetry(
474+
redactableError(
475+
asError(e),
476+
)`Failed to choose and set database: ${getErrorMessage(e)}`,
477+
);
463478
}
464479
};
465480

0 commit comments

Comments
 (0)