Skip to content

Commit 111dfff

Browse files
Add signature to ModeledMethod
1 parent f927ac9 commit 111dfff

File tree

8 files changed

+163
-42
lines changed

8 files changed

+163
-42
lines changed

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

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -140,6 +140,12 @@ export function parsePredictedClassifications(
140140
input: "",
141141
output: "",
142142
provenance: "ai-generated",
143+
signature,
144+
// predictedBySignature[signature] always has at least element
145+
packageName: predictedMethods[0].package,
146+
typeName: predictedMethods[0].type,
147+
methodName: predictedMethods[0].name,
148+
methodParameters: predictedMethods[0].signature,
143149
};
144150
continue;
145151
}
@@ -157,6 +163,11 @@ export function parsePredictedClassifications(
157163
input: sink.input ?? "",
158164
output: sink.output ?? "",
159165
provenance: "ai-generated",
166+
signature,
167+
packageName: sink.package,
168+
typeName: sink.type,
169+
methodName: sink.name,
170+
methodParameters: sink.signature,
160171
};
161172
}
162173

extensions/ql-vscode/src/data-extensions-editor/modeled-method.ts

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
import { MethodSignature } from "./external-api-usage";
2+
13
export type ModeledMethodType =
24
| "none"
35
| "source"
@@ -17,13 +19,13 @@ export type Provenance =
1719
// Entered by the user in the editor manually
1820
| "manual";
1921

20-
export type ModeledMethod = {
22+
export interface ModeledMethod extends MethodSignature {
2123
type: ModeledMethodType;
2224
input: string;
2325
output: string;
2426
kind: string;
2527
provenance: Provenance;
26-
};
28+
}
2729

2830
export type ModeledMethodWithSignature = {
2931
signature: string;

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

Lines changed: 72 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -46,16 +46,24 @@ export const extensiblePredicateDefinitions: Record<
4646
method.modeledMethod.kind,
4747
method.modeledMethod.provenance,
4848
],
49-
readModeledMethod: (row) => ({
50-
signature: readRowToMethod(row),
51-
modeledMethod: {
52-
type: "source",
53-
input: "",
54-
output: row[6] as string,
55-
kind: row[7] as string,
56-
provenance: row[8] as Provenance,
57-
},
58-
}),
49+
readModeledMethod: (row) => {
50+
const signature = readRowToMethod(row);
51+
return {
52+
signature,
53+
modeledMethod: {
54+
type: "source",
55+
input: "",
56+
output: row[6] as string,
57+
kind: row[7] as string,
58+
provenance: row[8] as Provenance,
59+
signature,
60+
packageName: row[0] as string,
61+
typeName: row[1] as string,
62+
methodName: row[3] as string,
63+
methodParameters: row[4] as string,
64+
},
65+
};
66+
},
5967
supportedKinds: ["remote"],
6068
},
6169
sink: {
@@ -75,16 +83,24 @@ export const extensiblePredicateDefinitions: Record<
7583
method.modeledMethod.kind,
7684
method.modeledMethod.provenance,
7785
],
78-
readModeledMethod: (row) => ({
79-
signature: readRowToMethod(row),
80-
modeledMethod: {
81-
type: "sink",
82-
input: row[6] as string,
83-
output: "",
84-
kind: row[7] as string,
85-
provenance: row[8] as Provenance,
86-
},
87-
}),
86+
readModeledMethod: (row) => {
87+
const signature = readRowToMethod(row);
88+
return {
89+
signature,
90+
modeledMethod: {
91+
type: "sink",
92+
input: row[6] as string,
93+
output: "",
94+
kind: row[7] as string,
95+
provenance: row[8] as Provenance,
96+
signature,
97+
packageName: row[0] as string,
98+
typeName: row[1] as string,
99+
methodName: row[3] as string,
100+
methodParameters: row[4] as string,
101+
},
102+
};
103+
},
88104
supportedKinds: ["sql", "xss", "logging"],
89105
},
90106
summary: {
@@ -105,16 +121,24 @@ export const extensiblePredicateDefinitions: Record<
105121
method.modeledMethod.kind,
106122
method.modeledMethod.provenance,
107123
],
108-
readModeledMethod: (row) => ({
109-
signature: readRowToMethod(row),
110-
modeledMethod: {
111-
type: "summary",
112-
input: row[6] as string,
113-
output: row[7] as string,
114-
kind: row[8] as string,
115-
provenance: row[9] as Provenance,
116-
},
117-
}),
124+
readModeledMethod: (row) => {
125+
const signature = readRowToMethod(row);
126+
return {
127+
signature,
128+
modeledMethod: {
129+
type: "summary",
130+
input: row[6] as string,
131+
output: row[7] as string,
132+
kind: row[8] as string,
133+
provenance: row[9] as Provenance,
134+
signature,
135+
packageName: row[0] as string,
136+
typeName: row[1] as string,
137+
methodName: row[3] as string,
138+
methodParameters: row[4] as string,
139+
},
140+
};
141+
},
118142
supportedKinds: ["taint", "value"],
119143
},
120144
neutral: {
@@ -130,16 +154,24 @@ export const extensiblePredicateDefinitions: Record<
130154
method.modeledMethod.kind,
131155
method.modeledMethod.provenance,
132156
],
133-
readModeledMethod: (row) => ({
134-
signature: `${row[0]}.${row[1]}#${row[2]}${row[3]}`,
135-
modeledMethod: {
136-
type: "neutral",
137-
input: "",
138-
output: "",
139-
kind: row[4] as string,
140-
provenance: row[5] as Provenance,
141-
},
142-
}),
157+
readModeledMethod: (row) => {
158+
const signature = `${row[0]}.${row[1]}#${row[2]}${row[3]}`;
159+
return {
160+
signature,
161+
modeledMethod: {
162+
type: "neutral",
163+
input: "",
164+
output: "",
165+
kind: row[4] as string,
166+
provenance: row[5] as Provenance,
167+
signature,
168+
packageName: row[0] as string,
169+
typeName: row[1] as string,
170+
methodName: row[2] as string,
171+
methodParameters: row[3] as string,
172+
},
173+
};
174+
},
143175
supportedKinds: ["summary", "source", "sink"],
144176
},
145177
};

extensions/ql-vscode/src/stories/data-extensions-editor/DataExtensionsEditor.stories.tsx

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -175,34 +175,59 @@ DataExtensionsEditor.args = {
175175
output: "",
176176
kind: "jndi-injection",
177177
provenance: "df-generated",
178+
signature: "org.sql2o.Sql2o#Sql2o(String)",
179+
packageName: "org.sql2o",
180+
typeName: "Sql2o",
181+
methodName: "Sql2o",
182+
methodParameters: "(String)",
178183
},
179184
"org.sql2o.Connection#createQuery(String)": {
180185
type: "summary",
181186
input: "Argument[this]",
182187
output: "ReturnValue",
183188
kind: "taint",
184189
provenance: "df-manual",
190+
signature: "org.sql2o.Connection#createQuery(String)",
191+
packageName: "org.sql2o",
192+
typeName: "Connection",
193+
methodName: "createQuery",
194+
methodParameters: "(String)",
185195
},
186196
"org.sql2o.Sql2o#open()": {
187197
type: "summary",
188198
input: "Argument[this]",
189199
output: "ReturnValue",
190200
kind: "taint",
191201
provenance: "manual",
202+
signature: "org.sql2o.Sql2o#open()",
203+
packageName: "org.sql2o",
204+
typeName: "Sql2o",
205+
methodName: "open",
206+
methodParameters: "()",
192207
},
193208
"org.sql2o.Query#executeScalar(Class)": {
194209
type: "neutral",
195210
input: "",
196211
output: "",
197212
kind: "",
198213
provenance: "df-generated",
214+
signature: "org.sql2o.Query#executeScalar(Class)",
215+
packageName: "org.sql2o",
216+
typeName: "Query",
217+
methodName: "executeScalar",
218+
methodParameters: "(Class)",
199219
},
200220
"org.sql2o.Sql2o#Sql2o(String,String,String)": {
201221
type: "neutral",
202222
input: "",
203223
output: "",
204224
kind: "",
205225
provenance: "df-generated",
226+
signature: "org.sql2o.Sql2o#Sql2o(String,String,String)",
227+
packageName: "org.sql2o",
228+
typeName: "Sql2o",
229+
methodName: "Sql2o",
230+
methodParameters: "(String,String,String)",
206231
},
207232
},
208233
};

extensions/ql-vscode/src/stories/data-extensions-editor/MethodRow.stories.tsx

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,5 +52,10 @@ MethodRow.args = {
5252
output: "ReturnValue",
5353
kind: "taint",
5454
provenance: "manual",
55+
signature: "org.sql2o.Sql2o#open()",
56+
packageName: "org.sql2o",
57+
typeName: "Sql2o",
58+
methodName: "open",
59+
methodParameters: "()",
5560
},
5661
};

extensions/ql-vscode/src/view/data-extensions-editor/MethodRow.tsx

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -100,6 +100,11 @@ function ModelableMethodRow(props: Props) {
100100
...modeledMethod,
101101
type: e.target.value as ModeledMethodType,
102102
provenance: newProvenance,
103+
signature: externalApiUsage.signature,
104+
packageName: externalApiUsage.packageName,
105+
typeName: externalApiUsage.typeName,
106+
methodName: externalApiUsage.methodName,
107+
methodParameters: externalApiUsage.methodParameters,
103108
});
104109
},
105110
[onChange, externalApiUsage, modeledMethod, argumentsList],

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

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -221,13 +221,23 @@ describe("createAutoModelRequest", () => {
221221
input: "",
222222
output: "",
223223
provenance: "manual",
224+
signature: "org.sql2o.Sql2o#open()",
225+
packageName: "org.sql2o",
226+
typeName: "Sql2o",
227+
methodName: "open",
228+
methodParameters: "()",
224229
},
225230
"org.sql2o.Sql2o#Sql2o(String)": {
226231
type: "sink",
227232
kind: "jndi-injection",
228233
input: "Argument[0]",
229234
output: "",
230235
provenance: "manual",
236+
signature: "org.sql2o.Sql2o#Sql2o(String)",
237+
packageName: "org.sql2o",
238+
typeName: "Sql2o",
239+
methodName: "Sql2o",
240+
methodParameters: "(String)",
231241
},
232242
};
233243

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

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,11 @@ describe("createDataExtensionYaml", () => {
4747
output: "",
4848
kind: "sql",
4949
provenance: "df-generated",
50+
signature: "org.sql2o.Connection#createQuery(String)",
51+
packageName: "org.sql2o",
52+
typeName: "Connection",
53+
methodName: "createQuery",
54+
methodParameters: "(String)",
5055
},
5156
},
5257
{
@@ -274,20 +279,36 @@ describe("createDataExtensionYamlsForApplicationMode", () => {
274279
output: "",
275280
kind: "sql",
276281
provenance: "df-generated",
282+
signature: "org.sql2o.Connection#createQuery(String)",
283+
packageName: "org.sql2o",
284+
typeName: "Connection",
285+
methodName: "createQuery",
286+
methodParameters: "(String)",
277287
},
278288
"org.springframework.boot.SpringApplication#run(Class,String[])": {
279289
type: "neutral",
280290
input: "",
281291
output: "",
282292
kind: "summary",
283293
provenance: "manual",
294+
signature:
295+
"org.springframework.boot.SpringApplication#run(Class,String[])",
296+
packageName: "org.springframework.boot",
297+
typeName: "SpringApplication",
298+
methodName: "run",
299+
methodParameters: "(Class,String[])",
284300
},
285301
"org.sql2o.Sql2o#Sql2o(String,String,String)": {
286302
type: "sink",
287303
input: "Argument[0]",
288304
output: "",
289305
kind: "jndi",
290306
provenance: "manual",
307+
signature: "org.sql2o.Sql2o#Sql2o(String,String,String)",
308+
packageName: "org.sql2o",
309+
typeName: "Sql2o",
310+
methodName: "Sql2o",
311+
methodParameters: "(String,String,String)",
291312
},
292313
},
293314
);
@@ -439,13 +460,23 @@ describe("createDataExtensionYamlsForFrameworkMode", () => {
439460
output: "",
440461
kind: "sql",
441462
provenance: "df-generated",
463+
signature: "org.sql2o.Connection#createQuery(String)",
464+
packageName: "org.sql2o",
465+
typeName: "Connection",
466+
methodName: "createQuery",
467+
methodParameters: "(String)",
442468
},
443469
"org.sql2o.Sql2o#Sql2o(String,String,String)": {
444470
type: "sink",
445471
input: "Argument[0]",
446472
output: "",
447473
kind: "jndi",
448474
provenance: "manual",
475+
signature: "org.sql2o.Sql2o#Sql2o(String,String,String)",
476+
packageName: "org.sql2o",
477+
typeName: "Sql2o",
478+
methodName: "Sql2o",
479+
methodParameters: "(String,String,String)",
449480
},
450481
},
451482
);

0 commit comments

Comments
 (0)