Skip to content

Commit e7ef449

Browse files
committed
Add support for auto-model provenance
1 parent 1cc77c0 commit e7ef449

File tree

4 files changed

+22
-4
lines changed

4 files changed

+22
-4
lines changed

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

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -110,9 +110,10 @@ export function parsePredictedClassifications(
110110
// For now, model any method for which none of its arguments are modeled as sinks as neutral
111111
modeledMethods[signature] = {
112112
type: "neutral",
113-
kind: "",
113+
kind: "summary",
114114
input: "",
115115
output: "",
116+
provenance: "ai-generated",
116117
};
117118
continue;
118119
}
@@ -129,6 +130,7 @@ export function parsePredictedClassifications(
129130
kind: sink.classification?.kind ?? "",
130131
input: sink.input ?? "",
131132
output: sink.output ?? "",
133+
provenance: "ai-generated",
132134
};
133135
}
134136

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

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,10 @@ export type Provenance =
1010
| "df-generated"
1111
// Generated by the dataflow model and manually edited
1212
| "df-manual"
13+
// Generated by the auto-model
14+
| "ai-generated"
15+
// Generated by the auto-model and manually edited
16+
| "ai-manual"
1317
// Entered by the user in the editor manually
1418
| "manual";
1519

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

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ import { ExternalApiUsage } from "../../data-extensions-editor/external-api-usag
1313
import {
1414
ModeledMethod,
1515
ModeledMethodType,
16+
Provenance,
1617
} from "../../data-extensions-editor/modeled-method";
1718
import { KindInput } from "./KindInput";
1819
import { extensiblePredicateDefinitions } from "../../data-extensions-editor/predicates";
@@ -63,15 +64,21 @@ export const MethodRow = ({
6364
(e: InputEvent) => {
6465
const target = e.target as HTMLSelectElement;
6566

67+
let newProvenance: Provenance = "manual";
68+
if (modeledMethod?.provenance === "df-generated") {
69+
newProvenance = "df-manual";
70+
} else if (modeledMethod?.provenance === "ai-generated") {
71+
newProvenance = "ai-manual";
72+
}
73+
6674
onChange(externalApiUsage, {
6775
// If there are no arguments, we will default to "Argument[this]"
6876
input: argumentsList.length === 0 ? "Argument[this]" : "Argument[0]",
6977
output: "ReturnType",
7078
kind: "value",
7179
...modeledMethod,
7280
type: target.value as ModeledMethodType,
73-
provenance:
74-
modeledMethod?.provenance === "df-generated" ? "df-manual" : "manual",
81+
provenance: newProvenance,
7582
});
7683
},
7784
[onChange, externalApiUsage, modeledMethod, argumentsList],

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

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -191,12 +191,14 @@ describe("createAutoModelRequest", () => {
191191
kind: "",
192192
input: "",
193193
output: "",
194+
provenance: "manual",
194195
},
195196
"org.sql2o.Sql2o#Sql2o(String)": {
196197
type: "sink",
197198
kind: "jndi-injection",
198199
input: "Argument[0]",
199200
output: "",
201+
provenance: "manual",
200202
},
201203
};
202204

@@ -407,18 +409,21 @@ describe("parsePredictedClassifications", () => {
407409
kind: "sql injection sink",
408410
input: "Argument[0]",
409411
output: "",
412+
provenance: "ai-generated",
410413
},
411414
"org.sql2o.Sql2o#executeScalar(Class)": {
412415
type: "neutral",
413-
kind: "",
416+
kind: "summary",
414417
input: "",
415418
output: "",
419+
provenance: "ai-generated",
416420
},
417421
"org.sql2o.Sql2o#Sql2o(String,String,String)": {
418422
type: "sink",
419423
kind: "sql injection sink",
420424
input: "Argument[1]",
421425
output: "",
426+
provenance: "ai-generated",
422427
},
423428
});
424429
});

0 commit comments

Comments
 (0)