split the sarif file into languages

This commit is contained in:
Erik Krogh Kristensen
2022-07-14 13:20:52 +02:00
parent 47c9b446f0
commit a7a9428dc1
2 changed files with 40 additions and 0 deletions

View File

@@ -176,3 +176,13 @@ jobs:
with:
name: ql-for-ql.sarif
path: ql-for-ql.sarif
- name: Split out the sarif file into langs
run: |
mkdir split-sarif
node ./ql/scripts/split-sarif.js ql-for-ql.sarif split-sarif
- name: Upload langs as artifacts
uses: actions/upload-artifact@v3
with:
name: ql-for-ql-langs
path: split-sarif
retention-days: 1

30
ql/scripts/split-sarif.js Normal file
View File

@@ -0,0 +1,30 @@
var fs = require("fs");
// the .sarif file to split, and then the directory to put the split files in.
async function main(inputs) {
const sarifFile = JSON.parse(fs.readFileSync(inputs[0]));
const outFolder = inputs[1];
const out = {};
for (const result of sarifFile.runs[0].results) {
const lang = getLanguage(result);
if (!out[lang]) {
out[lang] = [];
}
out[lang].push(result);
}
for (const lang in out) {
const outSarif = JSON.parse(JSON.stringify(sarifFile));
outSarif.runs[0].results = out[lang];
fs.writeFileSync(`${outFolder}/${lang}.sarif`, JSON.stringify(outSarif, null, 2));
}
}
function getLanguage(result) {
return result.locations[0].physicalLocation.artifactLocation.uri.split(
"/"
)[0];
}
main(process.argv.splice(2));