Skip to content

Commit 8e4da4a

Browse files
committed
Remove extLogger imports from model editor
We shouldn't be directly using the `extLogger` if we have access to the app logger (either directly or by passing it in as a parameter). This removes all imports of `extLogger` from the model editor directory.
1 parent 135bce8 commit 8e4da4a

File tree

10 files changed

+44
-22
lines changed

10 files changed

+44
-22
lines changed

extensions/ql-vscode/src/model-editor/auto-modeler.ts

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
import { Method, MethodSignature } from "./method";
22
import { ModeledMethod } from "./modeled-method";
3-
import { extLogger } from "../common/logging/vscode";
43
import { load as loadYaml } from "js-yaml";
54
import { ProgressCallback, withProgress } from "../common/vscode/progress";
65
import { createAutoModelRequest, getCandidates } from "./auto-model";
@@ -84,7 +83,7 @@ export class AutoModeler {
8483
* @param packageName The name of the package to stop modeling.
8584
*/
8685
public async stopModeling(packageName: string): Promise<void> {
87-
void extLogger.log(`Stopping modeling for package ${packageName}`);
86+
void this.app.logger.log(`Stopping modeling for package ${packageName}`);
8887
const cancellationTokenSource = this.jobs.get(packageName);
8988
if (cancellationTokenSource) {
9089
cancellationTokenSource.cancel();
@@ -107,7 +106,7 @@ export class AutoModeler {
107106
mode: Mode,
108107
cancellationTokenSource: CancellationTokenSource,
109108
): Promise<void> {
110-
void extLogger.log(`Modeling package ${packageName}`);
109+
void this.app.logger.log(`Modeling package ${packageName}`);
111110

112111
const candidateBatchSize = this.modelConfig.llmGenerationBatchSize;
113112

@@ -117,7 +116,7 @@ export class AutoModeler {
117116

118117
// If there are no candidates, there is nothing to model and we just return
119118
if (allCandidateMethods.length === 0) {
120-
void extLogger.log("No candidates to model. Stopping.");
119+
void this.app.logger.log("No candidates to model. Stopping.");
121120
return;
122121
}
123122

@@ -175,7 +174,7 @@ export class AutoModeler {
175174
progress: ProgressCallback,
176175
cancellationTokenSource: CancellationTokenSource,
177176
): Promise<void> {
178-
void extLogger.log("Executing auto-model queries");
177+
void this.app.logger.log("Executing auto-model queries");
179178

180179
const usages = await runAutoModelQueries({
181180
mode,
@@ -193,7 +192,7 @@ export class AutoModeler {
193192

194193
const request = await createAutoModelRequest(mode, usages);
195194

196-
void extLogger.log("Calling auto-model API");
195+
void this.app.logger.log("Calling auto-model API");
197196

198197
const response = await this.callAutoModelApi(request);
199198
if (!response) {

extensions/ql-vscode/src/model-editor/extensions-workspace-folder.ts

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
import { FileType, Uri, workspace, WorkspaceFolder } from "vscode";
22
import { getOnDiskWorkspaceFoldersObjects } from "../common/vscode/workspace-folders";
3-
import { extLogger } from "../common/logging/vscode";
43
import { tmpdir } from "../common/files";
54
import { NotificationLogger, showAndLogErrorMessage } from "../common/logging";
65

@@ -180,7 +179,7 @@ export async function autoPickExtensionsDirectory(
180179
// Get the root workspace directory, i.e. the common root directory of all workspace folders
181180
const rootDirectory = await getRootWorkspaceDirectory();
182181
if (!rootDirectory) {
183-
void extLogger.log("Unable to determine root workspace directory");
182+
void logger.log("Unable to determine root workspace directory");
184183

185184
return undefined;
186185
}
@@ -204,7 +203,7 @@ export async function autoPickExtensionsDirectory(
204203
},
205204
)
206205
) {
207-
void extLogger.log(
206+
void logger.log(
208207
`Failed to add workspace folder for extensions at ${extensionsUri.fsPath}`,
209208
);
210209
return undefined;

extensions/ql-vscode/src/model-editor/flow-model-queries.ts

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,10 @@ import { DatabaseItem } from "../databases/local-databases";
33
import { basename } from "path";
44
import { QueryRunner } from "../query-server";
55
import { CodeQLCliServer } from "../codeql-cli/cli";
6-
import { showAndLogExceptionWithTelemetry } from "../common/logging";
7-
import { extLogger } from "../common/logging/vscode";
6+
import {
7+
NotificationLogger,
8+
showAndLogExceptionWithTelemetry,
9+
} from "../common/logging";
810
import { getModelsAsDataLanguage } from "./languages";
911
import { ProgressCallback } from "../common/vscode/progress";
1012
import { getOnDiskWorkspaceFolders } from "../common/vscode/workspace-folders";
@@ -29,6 +31,7 @@ export function isFlowModelGenerationSupported(
2931
type FlowModelOptions = {
3032
cliServer: CodeQLCliServer;
3133
queryRunner: QueryRunner;
34+
logger: NotificationLogger;
3235
queryStorageDir: string;
3336
databaseItem: DatabaseItem;
3437
language: QueryLanguage;
@@ -115,6 +118,7 @@ async function runSingleFlowQuery(
115118
{
116119
cliServer,
117120
queryRunner,
121+
logger,
118122
queryStorageDir,
119123
databaseItem,
120124
language,
@@ -125,7 +129,7 @@ async function runSingleFlowQuery(
125129
// Check that the right query was found
126130
if (queryPath === undefined) {
127131
void showAndLogExceptionWithTelemetry(
128-
extLogger,
132+
logger,
129133
telemetryListener,
130134
redactableError`Failed to find ${type} query`,
131135
);
@@ -163,7 +167,7 @@ async function runSingleFlowQuery(
163167
const bqrsInfo = await cliServer.bqrsInfo(bqrsPath);
164168
if (bqrsInfo["result-sets"].length !== 1) {
165169
void showAndLogExceptionWithTelemetry(
166-
extLogger,
170+
logger,
167171
telemetryListener,
168172
redactableError`Expected exactly one result set, got ${
169173
bqrsInfo["result-sets"].length

extensions/ql-vscode/src/model-editor/method-modeling/method-modeling-view-provider.ts

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@ import {
44
} from "../../common/interface-types";
55
import { telemetryListener } from "../../common/vscode/telemetry";
66
import { showAndLogExceptionWithTelemetry } from "../../common/logging/notifications";
7-
import { extLogger } from "../../common/logging/vscode/loggers";
87
import { App } from "../../common/app";
98
import { redactableError } from "../../common/errors";
109
import { Method } from "../method";
@@ -112,7 +111,7 @@ export class MethodModelingViewProvider extends AbstractWebviewViewProvider<
112111

113112
case "unhandledError":
114113
void showAndLogExceptionWithTelemetry(
115-
extLogger,
114+
this.app.logger,
116115
telemetryListener,
117116
redactableError(
118117
msg.error,

extensions/ql-vscode/src/model-editor/model-editor-module.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -200,6 +200,7 @@ export class ModelEditorModule extends DisposableObject {
200200

201201
const success = await setUpPack(
202202
this.cliServer,
203+
this.app.logger,
203204
queryDir,
204205
language,
205206
this.modelConfig,

extensions/ql-vscode/src/model-editor/model-editor-queries-setup.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import { ModelConfig } from "../config";
88
import { Mode } from "./shared/mode";
99
import { resolveQueriesFromPacks } from "../local-queries";
1010
import { modeTag } from "./mode-tag";
11+
import { NotificationLogger } from "../common/logging";
1112

1213
export const syntheticQueryPackName = "codeql/model-editor-queries";
1314

@@ -26,13 +27,15 @@ export const syntheticQueryPackName = "codeql/model-editor-queries";
2627
* are present in codeql/java-queries or in our own query pack. They just need to resolve the query.
2728
*
2829
* @param cliServer The CodeQL CLI server to use.
30+
* @param logger The logger to use.
2931
* @param queryDir The directory to set up.
3032
* @param language The language to use for the queries.
3133
* @param modelConfig The model config to use.
3234
* @returns true if the setup was successful, false otherwise.
3335
*/
3436
export async function setUpPack(
3537
cliServer: CodeQLCliServer,
38+
logger: NotificationLogger,
3639
queryDir: string,
3740
language: QueryLanguage,
3841
modelConfig: ModelConfig,
@@ -64,6 +67,7 @@ export async function setUpPack(
6467
} else {
6568
// If we can't resolve the query, we need to write them to desk ourselves.
6669
const externalApiQuerySuccess = await prepareModelEditorQueries(
70+
logger,
6771
queryDir,
6872
language,
6973
);

extensions/ql-vscode/src/model-editor/model-editor-queries.ts

Lines changed: 13 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,9 @@
11
import { QueryRunner } from "../query-server";
22
import { getOnDiskWorkspaceFolders } from "../common/vscode/workspace-folders";
3-
import { extLogger } from "../common/logging/vscode";
4-
import { showAndLogExceptionWithTelemetry } from "../common/logging";
3+
import {
4+
NotificationLogger,
5+
showAndLogExceptionWithTelemetry,
6+
} from "../common/logging";
57
import { CancellationToken } from "vscode";
68
import { CodeQLCliServer } from "../codeql-cli/cli";
79
import { DatabaseItem } from "../databases/local-databases";
@@ -24,6 +26,7 @@ import {
2426
type RunQueryOptions = {
2527
cliServer: CodeQLCliServer;
2628
queryRunner: QueryRunner;
29+
logger: NotificationLogger;
2730
databaseItem: DatabaseItem;
2831
language: QueryLanguage;
2932
queryStorageDir: string;
@@ -34,14 +37,15 @@ type RunQueryOptions = {
3437
};
3538

3639
export async function prepareModelEditorQueries(
40+
logger: NotificationLogger,
3741
queryDir: string,
3842
language: QueryLanguage,
3943
): Promise<boolean> {
4044
// Resolve the query that we want to run.
4145
const query = fetchExternalApiQueries[language];
4246
if (!query) {
4347
void showAndLogExceptionWithTelemetry(
44-
extLogger,
48+
logger,
4549
telemetryListener,
4650
redactableError`No bundled model editor query found for language ${language}`,
4751
);
@@ -70,6 +74,7 @@ export async function runModelEditorQueries(
7074
{
7175
cliServer,
7276
queryRunner,
77+
logger,
7378
databaseItem,
7479
language,
7580
queryStorageDir,
@@ -110,7 +115,7 @@ export async function runModelEditorQueries(
110115
);
111116
if (!queryPath) {
112117
void showAndLogExceptionWithTelemetry(
113-
extLogger,
118+
logger,
114119
telemetryListener,
115120
redactableError`The ${mode} model editor query could not be found. Try re-opening the model editor. If that doesn't work, try upgrading the CodeQL libraries.`,
116121
);
@@ -147,6 +152,7 @@ export async function runModelEditorQueries(
147152

148153
const bqrsChunk = await readQueryResults({
149154
cliServer,
155+
logger,
150156
bqrsPath: completedQuery.outputDir.bqrsPath,
151157
});
152158
if (!bqrsChunk) {
@@ -164,17 +170,19 @@ export async function runModelEditorQueries(
164170

165171
type GetResultsOptions = {
166172
cliServer: Pick<CodeQLCliServer, "bqrsInfo" | "bqrsDecode">;
173+
logger: NotificationLogger;
167174
bqrsPath: string;
168175
};
169176

170177
export async function readQueryResults({
171178
cliServer,
179+
logger,
172180
bqrsPath,
173181
}: GetResultsOptions) {
174182
const bqrsInfo = await cliServer.bqrsInfo(bqrsPath);
175183
if (bqrsInfo["result-sets"].length !== 1) {
176184
void showAndLogExceptionWithTelemetry(
177-
extLogger,
185+
logger,
178186
telemetryListener,
179187
redactableError`Expected exactly one result set, got ${bqrsInfo["result-sets"].length}`,
180188
);

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

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -437,6 +437,7 @@ export class ModelEditorView extends AbstractWebview<
437437
const queryResult = await runModelEditorQueries(mode, {
438438
cliServer: this.cliServer,
439439
queryRunner: this.queryRunner,
440+
logger: this.app.logger,
440441
databaseItem: this.databaseItem,
441442
language: this.language,
442443
queryStorageDir: this.queryStorageDir,
@@ -502,6 +503,7 @@ export class ModelEditorView extends AbstractWebview<
502503
await runFlowModelQueries({
503504
cliServer: this.cliServer,
504505
queryRunner: this.queryRunner,
506+
logger: this.app.logger,
505507
queryStorageDir: this.queryStorageDir,
506508
databaseItem: addedDatabase ?? this.databaseItem,
507509
language: this.language,

extensions/ql-vscode/test/vscode-tests/no-workspace/model-editor/external-api-usage-query.test.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,7 @@ describe("runModelEditorQueries", () => {
6565
}),
6666
logger: createMockLogger(),
6767
}),
68+
logger: createMockLogger(),
6869
databaseItem: mockedObject<DatabaseItem>({
6970
databaseUri: mockedUri("/a/b/c/src.zip"),
7071
contents: {
@@ -131,6 +132,7 @@ describe("runModelEditorQueries", () => {
131132
}),
132133
logger: createMockLogger(),
133134
}),
135+
logger: createMockLogger(),
134136
databaseItem: mockedObject<DatabaseItem>({
135137
databaseUri: mockedUri("/a/b/c/src.zip"),
136138
contents: {
@@ -180,6 +182,7 @@ describe("readQueryResults", () => {
180182
bqrsInfo: jest.fn(),
181183
bqrsDecode: jest.fn(),
182184
},
185+
logger: createMockLogger(),
183186
bqrsPath: "/tmp/results.bqrs",
184187
};
185188

extensions/ql-vscode/test/vscode-tests/no-workspace/model-editor/model-editor-queries.test.ts

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ import { Mode } from "../../../../src/model-editor/shared/mode";
99
import { mockedObject } from "../../utils/mocking.helpers";
1010
import { CodeQLCliServer } from "../../../../src/codeql-cli/cli";
1111
import { ModelConfig } from "../../../../src/config";
12+
import { createMockLogger } from "../../../__mocks__/loggerMock";
1213

1314
describe("setUpPack", () => {
1415
let queryDir: string;
@@ -33,11 +34,12 @@ describe("setUpPack", () => {
3334
packInstall: jest.fn(),
3435
resolveQueriesInSuite: jest.fn().mockResolvedValue([]),
3536
});
37+
const logger = createMockLogger();
3638
const modelConfig = mockedObject<ModelConfig>({
3739
llmGeneration: false,
3840
});
3941

40-
await setUpPack(cliServer, queryDir, language, modelConfig);
42+
await setUpPack(cliServer, logger, queryDir, language, modelConfig);
4143

4244
const queryFiles = await readdir(queryDir);
4345
expect(queryFiles).toEqual(
@@ -90,11 +92,12 @@ describe("setUpPack", () => {
9092
.fn()
9193
.mockResolvedValue(["/a/b/c/ApplicationModeEndpoints.ql"]),
9294
});
95+
const logger = createMockLogger();
9396
const modelConfig = mockedObject<ModelConfig>({
9497
llmGeneration: false,
9598
});
9699

97-
await setUpPack(cliServer, queryDir, language, modelConfig);
100+
await setUpPack(cliServer, logger, queryDir, language, modelConfig);
98101

99102
const queryFiles = await readdir(queryDir);
100103
expect(queryFiles.sort()).toEqual(["codeql-pack.yml"].sort());

0 commit comments

Comments
 (0)