Skip to content

Commit cb28816

Browse files
authored
Merge pull request #2487 from rvermeulen/rvermeulen/uri-errors-as-warnings
Turn URI errors into warnings
2 parents 34666c1 + 498c508 commit cb28816

7 files changed

+59
-32
lines changed

lib/upload-lib.js

+7-2
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

lib/upload-lib.js.map

+1-1
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

lib/upload-lib.test.js

+2-2
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

lib/upload-lib.test.js.map

+1-1
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/testdata/with-invalid-uri.sarif

+33-21
Original file line numberDiff line numberDiff line change
@@ -8,30 +8,42 @@
88
"name": "LGTM.com",
99
"organization": "Semmle",
1010
"version": "1.24.0-SNAPSHOT",
11-
"rules": []
11+
"rules": [
12+
{
13+
"id": "js/unused-local-variable",
14+
"shortDescription": {
15+
"text": "Unused local variable"
16+
},
17+
"helpUri": "not a valid URI"
18+
}
19+
]
1220
}
1321
},
14-
"results" : [ {
15-
"ruleId" : "js/unused-local-variable",
16-
"ruleIndex" : 0,
17-
"message" : {
18-
"text" : "Unused variable foo."
19-
},
20-
"locations" : [ {
21-
"physicalLocation" : {
22-
"artifactLocation" : {
23-
"uri" : "not a valid URI",
24-
"uriBaseId" : "%SRCROOT%",
25-
"index" : 0
26-
},
27-
"region" : {
28-
"startLine" : 2,
29-
"startColumn" : 7,
30-
"endColumn" : 10
22+
"results": [
23+
{
24+
"ruleId": "js/unused-local-variable",
25+
"ruleIndex": 0,
26+
"message": {
27+
"text": "Unused variable foo."
28+
},
29+
"locations": [
30+
{
31+
"physicalLocation": {
32+
"artifactLocation": {
33+
"uri": "not a valid URI",
34+
"uriBaseId": "%SRCROOT%",
35+
"index": 0
36+
},
37+
"region": {
38+
"startLine": 2,
39+
"startColumn": 7,
40+
"endColumn": 10
41+
}
42+
}
3143
}
32-
}
33-
} ]
34-
} ],
44+
]
45+
}
46+
],
3547
"columnKind": "utf16CodeUnits",
3648
"properties": {
3749
"semmle.formatSpecifier": "2.1.0",

src/upload-lib.test.ts

+2-1
Original file line numberDiff line numberDiff line change
@@ -317,9 +317,10 @@ test("accept results with invalid artifactLocation.uri value", (t) => {
317317
const sarifFile = `${__dirname}/../src/testdata/with-invalid-uri.sarif`;
318318
uploadLib.validateSarifFileSchema(sarifFile, mockLogger);
319319

320-
t.deepEqual(loggedMessages.length, 2);
320+
t.deepEqual(loggedMessages.length, 3);
321321
t.deepEqual(
322322
loggedMessages[1],
323+
"Warning: 'not a valid URI' is not a valid URI in 'instance.runs[0].tool.driver.rules[0].helpUri'.",
323324
"Warning: 'not a valid URI' is not a valid URI in 'instance.runs[0].results[0].locations[0].physicalLocation.artifactLocation.uri'.",
324325
);
325326
});

src/upload-lib.ts

+13-4
Original file line numberDiff line numberDiff line change
@@ -449,11 +449,20 @@ export function validateSarifFileSchema(sarifFilePath: string, logger: Logger) {
449449
const result = new jsonschema.Validator().validate(sarif, schema);
450450
// Filter errors related to invalid URIs in the artifactLocation field as this
451451
// is a breaking change. See https://github.com/github/codeql-action/issues/1703
452-
const errors = (result.errors || []).filter(
453-
(err) => err.argument !== "uri-reference",
452+
const warningAttributes = ["uri-reference", "uri"];
453+
const errors = (result.errors ?? []).filter(
454+
(err) =>
455+
!(
456+
err.name === "format" &&
457+
typeof err.argument === "string" &&
458+
warningAttributes.includes(err.argument)
459+
),
454460
);
455-
const warnings = (result.errors || []).filter(
456-
(err) => err.argument === "uri-reference",
461+
const warnings = (result.errors ?? []).filter(
462+
(err) =>
463+
err.name === "format" &&
464+
typeof err.argument === "string" &&
465+
warningAttributes.includes(err.argument),
457466
);
458467

459468
for (const warning of warnings) {

0 commit comments

Comments
 (0)