Skip to content

Commit 97a331c

Browse files
Remove the ModeledExternalApiUsage type in favour of just ModeledMethod
1 parent 16f9849 commit 97a331c

File tree

2 files changed

+25
-111
lines changed
  • extensions/ql-vscode

2 files changed

+25
-111
lines changed

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

Lines changed: 15 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -14,52 +14,41 @@ import { sanitizeExtensionPackName } from "./extension-pack-name";
1414
const ajv = new Ajv({ allErrors: true });
1515
const dataSchemaValidate = ajv.compile(dataSchemaJson);
1616

17-
type ModeledExternalApiUsage = {
18-
externalApiUsage: ExternalApiUsage;
19-
modeledMethod?: ModeledMethod;
20-
};
21-
2217
function createDataProperty(
23-
methods: ModeledExternalApiUsage[],
18+
methods: ModeledMethod[],
2419
definition: ExtensiblePredicateDefinition,
2520
) {
2621
if (methods.length === 0) {
2722
return " []";
2823
}
2924

30-
const modeledMethods = methods.filter(
31-
(method) => method.modeledMethod !== undefined,
32-
);
33-
34-
return `\n${modeledMethods
25+
return `\n${methods
3526
.map(
3627
(method) =>
3728
` - ${JSON.stringify(
38-
definition.generateMethodDefinition(method.modeledMethod!),
29+
definition.generateMethodDefinition(method),
3930
)}`,
4031
)
4132
.join("\n")}`;
4233
}
4334

4435
export function createDataExtensionYaml(
4536
language: string,
46-
modeledUsages: ModeledExternalApiUsage[],
37+
modeledMethods: ModeledMethod[],
4738
) {
4839
const methodsByType: Record<
4940
Exclude<ModeledMethodType, "none">,
50-
ModeledExternalApiUsage[]
41+
ModeledMethod[]
5142
> = {
5243
source: [],
5344
sink: [],
5445
summary: [],
5546
neutral: [],
5647
};
5748

58-
for (const modeledUsage of modeledUsages) {
59-
const { modeledMethod } = modeledUsage;
60-
49+
for (const modeledMethod of modeledMethods) {
6150
if (modeledMethod?.type && modeledMethod.type !== "none") {
62-
methodsByType[modeledMethod.type].push(modeledUsage);
51+
methodsByType[modeledMethod.type].push(modeledMethod);
6352
}
6453
}
6554

@@ -83,32 +72,24 @@ export function createDataExtensionYamlsForApplicationMode(
8372
externalApiUsages: ExternalApiUsage[],
8473
modeledMethods: Record<string, ModeledMethod>,
8574
): Record<string, string> {
86-
const methodsByLibraryFilename: Record<string, ModeledExternalApiUsage[]> =
87-
{};
75+
const methodsByLibraryFilename: Record<string, ModeledMethod[]> = {};
8876

8977
for (const externalApiUsage of externalApiUsages) {
9078
const modeledMethod = modeledMethods[externalApiUsage.signature];
79+
if (!modeledMethod) {
80+
continue;
81+
}
9182

9283
const filename = createFilenameForLibrary(externalApiUsage.library);
9384

9485
methodsByLibraryFilename[filename] =
9586
methodsByLibraryFilename[filename] || [];
96-
methodsByLibraryFilename[filename].push({
97-
externalApiUsage,
98-
modeledMethod,
99-
});
87+
methodsByLibraryFilename[filename].push(modeledMethod);
10088
}
10189

10290
const result: Record<string, string> = {};
10391

10492
for (const [filename, methods] of Object.entries(methodsByLibraryFilename)) {
105-
const hasModeledMethods = methods.some(
106-
(method) => method.modeledMethod !== undefined,
107-
);
108-
if (!hasModeledMethods) {
109-
continue;
110-
}
111-
11293
result[filename] = createDataExtensionYaml(language, methods);
11394
}
11495

@@ -129,10 +110,9 @@ export function createDataExtensionYamlsForFrameworkMode(
129110
.map((part) => sanitizeExtensionPackName(part))
130111
.join("-");
131112

132-
const methods = externalApiUsages.map((externalApiUsage) => ({
133-
externalApiUsage,
134-
modeledMethod: modeledMethods[externalApiUsage.signature],
135-
}));
113+
const methods = externalApiUsages
114+
.map((externalApiUsage) => modeledMethods[externalApiUsage.signature])
115+
.filter((modeledMethod) => modeledMethod !== undefined);
136116

137117
return {
138118
[`${prefix}${libraryName}${suffix}.yml`]: createDataExtensionYaml(

extensions/ql-vscode/test/unit-tests/data-extensions-editor/yaml.test.ts

Lines changed: 10 additions & 76 deletions
Original file line numberDiff line numberDiff line change
@@ -10,82 +10,16 @@ describe("createDataExtensionYaml", () => {
1010
it("creates the correct YAML file", () => {
1111
const yaml = createDataExtensionYaml("java", [
1212
{
13-
externalApiUsage: {
14-
library: "sql2o-1.6.0.jar",
15-
signature: "org.sql2o.Connection#createQuery(String)",
16-
packageName: "org.sql2o",
17-
typeName: "Connection",
18-
methodName: "createQuery",
19-
methodParameters: "(String)",
20-
supported: true,
21-
usages: [
22-
{
23-
label: "createQuery(...)",
24-
url: {
25-
uri: "file:/home/runner/work/sql2o-example/sql2o-example/src/main/java/org/example/HelloController.java",
26-
startLine: 15,
27-
startColumn: 13,
28-
endLine: 15,
29-
endColumn: 56,
30-
},
31-
},
32-
{
33-
label: "createQuery(...)",
34-
url: {
35-
uri: "file:/home/runner/work/sql2o-example/sql2o-example/src/main/java/org/example/HelloController.java",
36-
startLine: 26,
37-
startColumn: 13,
38-
endLine: 26,
39-
endColumn: 39,
40-
},
41-
},
42-
],
43-
},
44-
modeledMethod: {
45-
type: "sink",
46-
input: "Argument[0]",
47-
output: "",
48-
kind: "sql",
49-
provenance: "df-generated",
50-
signature: "org.sql2o.Connection#createQuery(String)",
51-
packageName: "org.sql2o",
52-
typeName: "Connection",
53-
methodName: "createQuery",
54-
methodParameters: "(String)",
55-
},
56-
},
57-
{
58-
externalApiUsage: {
59-
library: "sql2o-1.6.0.jar",
60-
signature: "org.sql2o.Query#executeScalar(Class)",
61-
packageName: "org.sql2o",
62-
typeName: "Query",
63-
methodName: "executeScalar",
64-
methodParameters: "(Class)",
65-
supported: true,
66-
usages: [
67-
{
68-
label: "executeScalar(...)",
69-
url: {
70-
uri: "file:/home/runner/work/sql2o-example/sql2o-example/src/main/java/org/example/HelloController.java",
71-
startLine: 15,
72-
startColumn: 13,
73-
endLine: 15,
74-
endColumn: 85,
75-
},
76-
},
77-
{
78-
label: "executeScalar(...)",
79-
url: {
80-
uri: "file:/home/runner/work/sql2o-example/sql2o-example/src/main/java/org/example/HelloController.java",
81-
startLine: 26,
82-
startColumn: 13,
83-
endLine: 26,
84-
endColumn: 68,
85-
},
86-
},
87-
],
88-
},
13+
type: "sink",
14+
input: "Argument[0]",
15+
output: "",
16+
kind: "sql",
17+
provenance: "df-generated",
18+
signature: "org.sql2o.Connection#createQuery(String)",
19+
packageName: "org.sql2o",
20+
typeName: "Connection",
21+
methodName: "createQuery",
22+
methodParameters: "(String)",
8923
},
9024
]);
9125

0 commit comments

Comments
 (0)