Skip to content

Commit 09077a0

Browse files
authored
Rename ExternalApiUsage to Method (#2776)
1 parent 2d033bf commit 09077a0

Some content is hidden

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

43 files changed

+353
-427
lines changed

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ import type {
1212
} from "../variant-analysis/shared/variant-analysis";
1313
import type { QLDebugConfiguration } from "../debugger/debug-configuration";
1414
import type { QueryTreeViewItem } from "../queries-panel/query-tree-view-item";
15-
import type { Usage } from "../model-editor/external-api-usage";
15+
import type { Usage } from "../model-editor/method";
1616

1717
// A command function matching the signature that VS Code calls when
1818
// a command is invoked from a context menu on a TreeView with

extensions/ql-vscode/src/common/interface-types.ts

Lines changed: 21 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ import {
1717
} from "../variant-analysis/shared/variant-analysis-filter-sort";
1818
import { ErrorLike } from "../common/errors";
1919
import { DataFlowPaths } from "../variant-analysis/shared/data-flow-paths";
20-
import { ExternalApiUsage, Usage } from "../model-editor/external-api-usage";
20+
import { Method, Usage } from "../model-editor/method";
2121
import { ModeledMethod } from "../model-editor/modeled-method";
2222
import { ModelEditorViewState } from "../model-editor/shared/view-state";
2323
import { Mode } from "../model-editor/shared/mode";
@@ -495,9 +495,9 @@ interface SetExtensionPackStateMessage {
495495
viewState: ModelEditorViewState;
496496
}
497497

498-
interface SetExternalApiUsagesMessage {
499-
t: "setExternalApiUsages";
500-
externalApiUsages: ExternalApiUsage[];
498+
interface SetMethodsMessage {
499+
t: "setMethods";
500+
methods: Method[];
501501
}
502502

503503
interface LoadModeledMethodsMessage {
@@ -523,7 +523,7 @@ interface SwitchModeMessage {
523523

524524
interface JumpToUsageMessage {
525525
t: "jumpToUsage";
526-
method: ExternalApiUsage;
526+
method: Method;
527527
usage: Usage;
528528
}
529529

@@ -535,29 +535,29 @@ interface OpenExtensionPackMessage {
535535
t: "openExtensionPack";
536536
}
537537

538-
interface RefreshExternalApiUsages {
539-
t: "refreshExternalApiUsages";
538+
interface RefreshMethods {
539+
t: "refreshMethods";
540540
}
541541

542542
interface SaveModeledMethods {
543543
t: "saveModeledMethods";
544-
externalApiUsages: ExternalApiUsage[];
544+
methods: Method[];
545545
modeledMethods: Record<string, ModeledMethod>;
546546
}
547547

548-
interface GenerateExternalApiMessage {
549-
t: "generateExternalApi";
548+
interface GenerateMethodMessage {
549+
t: "generateMethod";
550550
}
551551

552-
interface GenerateExternalApiFromLlmMessage {
553-
t: "generateExternalApiFromLlm";
552+
interface GenerateMethodsFromLlmMessage {
553+
t: "generateMethodsFromLlm";
554554
packageName: string;
555-
externalApiUsages: ExternalApiUsage[];
555+
methods: Method[];
556556
modeledMethods: Record<string, ModeledMethod>;
557557
}
558558

559-
interface StopGeneratingExternalApiFromLlmMessage {
560-
t: "stopGeneratingExternalApiFromLlm";
559+
interface StopGeneratingMethodsFromLlmMessage {
560+
t: "stopGeneratingMethodsFromLlm";
561561
packageName: string;
562562
}
563563

@@ -572,22 +572,22 @@ interface HideModeledApisMessage {
572572

573573
export type ToModelEditorMessage =
574574
| SetExtensionPackStateMessage
575-
| SetExternalApiUsagesMessage
575+
| SetMethodsMessage
576576
| LoadModeledMethodsMessage
577577
| AddModeledMethodsMessage
578578
| SetInProgressMethodsMessage;
579579

580580
export type FromModelEditorMessage =
581581
| ViewLoadedMsg
582582
| SwitchModeMessage
583-
| RefreshExternalApiUsages
583+
| RefreshMethods
584584
| OpenDatabaseMessage
585585
| OpenExtensionPackMessage
586586
| JumpToUsageMessage
587587
| SaveModeledMethods
588-
| GenerateExternalApiMessage
589-
| GenerateExternalApiFromLlmMessage
590-
| StopGeneratingExternalApiFromLlmMessage
588+
| GenerateMethodMessage
589+
| GenerateMethodsFromLlmMessage
590+
| StopGeneratingMethodsFromLlmMessage
591591
| ModelDependencyMessage
592592
| HideModeledApisMessage;
593593

@@ -597,7 +597,7 @@ export type FromMethodModelingMessage =
597597

598598
interface SetMethodMessage {
599599
t: "setMethod";
600-
method: ExternalApiUsage;
600+
method: Method;
601601
}
602602

603603
export type ToMethodModelingMessage = SetMethodMessage;

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ import { assertNever } from "../common/helpers-pure";
1111
import { dir } from "tmp-promise";
1212
import { writeFile, outputFile } from "fs-extra";
1313
import { dump as dumpYaml } from "js-yaml";
14-
import { MethodSignature } from "./external-api-usage";
14+
import { MethodSignature } from "./method";
1515
import { runQuery } from "../local-queries/run-query";
1616
import { QueryMetadata } from "../common/interface-types";
1717
import { CancellationTokenSource } from "vscode";

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

Lines changed: 9 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ import { AutoModelQueriesResult } from "./auto-model-codeml-queries";
44
import { assertNever } from "../common/helpers-pure";
55
import * as Sarif from "sarif";
66
import { gzipEncode } from "../common/zlib";
7-
import { ExternalApiUsage, MethodSignature } from "./external-api-usage";
7+
import { Method, MethodSignature } from "./method";
88
import { ModeledMethod } from "./modeled-method";
99
import { groupMethods, sortGroupNames, sortMethods } from "./shared/sorting";
1010

@@ -13,28 +13,26 @@ import { groupMethods, sortGroupNames, sortMethods } from "./shared/sorting";
1313
* candidates to the candidate limit and filtering out anything that is already modeled and respecting
1414
* the order in the UI.
1515
* @param mode Whether it is application or framework mode.
16-
* @param externalApiUsages all external API usages.
16+
* @param methods all methods.
1717
* @param modeledMethods the currently modeled methods.
1818
* @returns list of modeled methods that are candidates for modeling.
1919
*/
2020
export function getCandidates(
2121
mode: Mode,
22-
externalApiUsages: ExternalApiUsage[],
22+
methods: Method[],
2323
modeledMethods: Record<string, ModeledMethod>,
2424
): MethodSignature[] {
2525
// Sort the same way as the UI so we send the first ones listed in the UI first
26-
const grouped = groupMethods(externalApiUsages, mode);
26+
const grouped = groupMethods(methods, mode);
2727
const sortedGroupNames = sortGroupNames(grouped);
28-
const sortedExternalApiUsages = sortedGroupNames.flatMap((name) =>
28+
const sortedMethods = sortedGroupNames.flatMap((name) =>
2929
sortMethods(grouped[name]),
3030
);
3131

3232
const candidates: MethodSignature[] = [];
3333

34-
for (const externalApiUsage of sortedExternalApiUsages) {
35-
const modeledMethod: ModeledMethod = modeledMethods[
36-
externalApiUsage.signature
37-
] ?? {
34+
for (const method of sortedMethods) {
35+
const modeledMethod: ModeledMethod = modeledMethods[method.signature] ?? {
3836
type: "none",
3937
};
4038

@@ -44,12 +42,12 @@ export function getCandidates(
4442
}
4543

4644
// A method that is supported is modeled outside of the model file, so it is not a candidate.
47-
if (externalApiUsage.supported) {
45+
if (method.supported) {
4846
continue;
4947
}
5048

5149
// The rest are candidates
52-
candidates.push(externalApiUsage);
50+
candidates.push(method);
5351
}
5452
return candidates;
5553
}

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

Lines changed: 6 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { ExternalApiUsage, MethodSignature } from "./external-api-usage";
1+
import { Method, MethodSignature } from "./method";
22
import { ModeledMethod } from "./modeled-method";
33
import { extLogger } from "../common/logging/vscode";
44
import { load as loadYaml } from "js-yaml";
@@ -52,13 +52,13 @@ export class AutoModeler {
5252
* Models the given package's external API usages, except
5353
* the ones that are already modeled.
5454
* @param packageName The name of the package to model.
55-
* @param externalApiUsages The external API usages.
55+
* @param methods The methods.
5656
* @param modeledMethods The currently modeled methods.
5757
* @param mode The mode we are modeling in.
5858
*/
5959
public async startModeling(
6060
packageName: string,
61-
externalApiUsages: ExternalApiUsage[],
61+
methods: Method[],
6262
modeledMethods: Record<string, ModeledMethod>,
6363
mode: Mode,
6464
): Promise<void> {
@@ -72,7 +72,7 @@ export class AutoModeler {
7272
try {
7373
await this.modelPackage(
7474
packageName,
75-
externalApiUsages,
75+
methods,
7676
modeledMethods,
7777
mode,
7878
cancellationTokenSource,
@@ -105,19 +105,15 @@ export class AutoModeler {
105105

106106
private async modelPackage(
107107
packageName: string,
108-
externalApiUsages: ExternalApiUsage[],
108+
methods: Method[],
109109
modeledMethods: Record<string, ModeledMethod>,
110110
mode: Mode,
111111
cancellationTokenSource: CancellationTokenSource,
112112
): Promise<void> {
113113
void extLogger.log(`Modeling package ${packageName}`);
114114
await withProgress(async (progress) => {
115115
// Fetch the candidates to send to the model
116-
const allCandidateMethods = getCandidates(
117-
mode,
118-
externalApiUsages,
119-
modeledMethods,
120-
);
116+
const allCandidateMethods = getCandidates(mode, methods, modeledMethods);
121117

122118
// If there are no candidates, there is nothing to model and we just return
123119
if (allCandidateMethods.length === 0) {

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

Lines changed: 3 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,12 @@
11
import { DecodedBqrsChunk } from "../common/bqrs-cli-types";
2-
import {
3-
Call,
4-
CallClassification,
5-
ExternalApiUsage,
6-
} from "./external-api-usage";
2+
import { Call, CallClassification, Method } from "./method";
73
import { ModeledMethodType } from "./modeled-method";
84
import { parseLibraryFilename } from "./library";
95

106
export function decodeBqrsToExternalApiUsages(
117
chunk: DecodedBqrsChunk,
12-
): ExternalApiUsage[] {
13-
const methodsByApiName = new Map<string, ExternalApiUsage>();
8+
): Method[] {
9+
const methodsByApiName = new Map<string, Method>();
1410

1511
chunk?.tuples.forEach((tuple) => {
1612
const usage = tuple[0] as Call;

extensions/ql-vscode/src/model-editor/external-api-usage-queries.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ import { Mode } from "./shared/mode";
1313
import { writeFile } from "fs-extra";
1414
import { QueryLanguage } from "../common/query-language";
1515
import { fetchExternalApiQueries } from "./queries";
16-
import { ExternalApiUsage } from "./external-api-usage";
16+
import { Method } from "./method";
1717
import { runQuery } from "../local-queries/run-query";
1818
import { decodeBqrsToExternalApiUsages } from "./bqrs";
1919

@@ -69,7 +69,7 @@ export async function runExternalApiQueries(
6969
progress,
7070
token,
7171
}: RunQueryOptions,
72-
): Promise<ExternalApiUsage[] | undefined> {
72+
): Promise<Method[] | undefined> {
7373
// The below code is temporary to allow for rapid prototyping of the queries. Once the queries are stabilized, we will
7474
// move these queries into the `github/codeql` repository and use them like any other contextual (e.g. AST) queries.
7575
// This is intentionally not pretty code, as it will be removed soon.

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import { ExtensionContext, window } from "vscode";
22
import { DisposableObject } from "../../common/disposable-object";
33
import { MethodModelingViewProvider } from "./method-modeling-view-provider";
4-
import { ExternalApiUsage } from "../external-api-usage";
4+
import { Method } from "../method";
55

66
export class MethodModelingPanel extends DisposableObject {
77
private readonly provider: MethodModelingViewProvider;
@@ -18,7 +18,7 @@ export class MethodModelingPanel extends DisposableObject {
1818
);
1919
}
2020

21-
public async setMethod(method: ExternalApiUsage): Promise<void> {
21+
public async setMethod(method: Method): Promise<void> {
2222
await this.provider.setMethod(method);
2323
}
2424
}

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ import { telemetryListener } from "../../common/vscode/telemetry";
66
import { showAndLogExceptionWithTelemetry } from "../../common/logging/notifications";
77
import { extLogger } from "../../common/logging/vscode/loggers";
88
import { redactableError } from "../../common/errors";
9-
import { ExternalApiUsage } from "../external-api-usage";
9+
import { Method } from "../method";
1010

1111
export class MethodModelingViewProvider implements WebviewViewProvider {
1212
public static readonly viewType = "codeQLMethodModeling";
@@ -46,7 +46,7 @@ export class MethodModelingViewProvider implements WebviewViewProvider {
4646
this.webviewView = webviewView;
4747
}
4848

49-
public async setMethod(method: ExternalApiUsage): Promise<void> {
49+
public async setMethod(method: Method): Promise<void> {
5050
if (this.webviewView) {
5151
await this.webviewView.webview.postMessage({
5252
t: "setMethod",

extensions/ql-vscode/src/model-editor/external-api-usage.ts renamed to extensions/ql-vscode/src/model-editor/method.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ export interface MethodSignature {
3939
methodParameters: string;
4040
}
4141

42-
export interface ExternalApiUsage extends MethodSignature {
42+
export interface Method extends MethodSignature {
4343
/**
4444
* Contains the name of the library containing the method declaration, e.g. `sql2o-1.6.0.jar` or `System.Runtime.dll`
4545
*/

0 commit comments

Comments
 (0)