Skip to content

Commit 9442330

Browse files
authored
Merge pull request #35 from SecureCodeWarrior/reorder-operations
Reorder operations
2 parents 20ca883 + bbd635c commit 9442330

14 files changed

+101
-121
lines changed

dist/index.js

Lines changed: 22 additions & 27 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

dist/index.js.map

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

fixtures/test003.sarif

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@
3131
},
3232
"results": [
3333
{
34-
"ruleId": "TEST01",
34+
"ruleId": "TEST01 CWE-22",
3535
"level": "error",
3636
"message": {
3737
"text": "Result text. This result does not have a rule associated."
@@ -55,7 +55,7 @@
5555
}
5656
},
5757
{
58-
"ruleId": "TEST01",
58+
"ruleId": "TEST01 CWE-22",
5959
"level": "note",
6060
"message": {
6161
"text": "more different text."

fixtures/test004.sarif

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@
3939
},
4040
"results": [
4141
{
42-
"ruleId": "TEST01",
42+
"ruleId": "TEST01 CWE-22",
4343
"level": "error",
4444
"message": {
4545
"text": "Result text. This result does not have a rule associated."
@@ -63,7 +63,7 @@
6363
}
6464
},
6565
{
66-
"ruleId": "TEST01",
66+
"ruleId": "TEST01 CWE-22",
6767
"level": "note",
6868
"message": {
6969
"text": "more different text."

fixtures/test005.sarif

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@
3939
},
4040
"results": [
4141
{
42-
"ruleId": "TEST01",
42+
"ruleId": "TEST01 CWE-22",
4343
"level": "error",
4444
"message": {
4545
"text": "Result text. This result does not have a rule associated."
@@ -63,7 +63,7 @@
6363
}
6464
},
6565
{
66-
"ruleId": "TEST01",
66+
"ruleId": "TEST01 CWE-22",
6767
"level": "note",
6868
"message": {
6969
"text": "more different text."

index.js

Lines changed: 4 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@ const languageResolver = require('./languageResolver');
88
const sarifLoader = require('./sarifLoader');
99
const resultProcessor = require('./sarifProcessors/resultProcessor');
1010
const ruleProcessor = require('./sarifProcessors/ruleProcessor');
11-
const taxonomyProcessor = require('./sarifProcessors/taxonomyProcessor');
1211

1312
const OUTPUT_DIR = 'processed-sarifs';
1413

@@ -48,14 +47,11 @@ async function run() {
4847
// process each run
4948
if (sarif && sarif.runs) {
5049
for (const run of sarif.runs) {
51-
// process run for rules
52-
await ruleProcessor.process(run, languageKey);
53-
54-
// process run for taxonomies
55-
await taxonomyProcessor.process(run, languageKey);
56-
5750
// process run for results
58-
await resultProcessor.process(run, languageKey);
51+
const triggeredRules = await resultProcessor.process(run, languageKey);
52+
53+
// process run for rules
54+
await ruleProcessor.process(run, languageKey, triggeredRules);
5955
}
6056
}
6157

package-lock.json

Lines changed: 28 additions & 47 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "github-action-add-sarif-contextual-training",
3-
"version": "1.0.4",
3+
"version": "1.0.6",
44
"description": "GitHub Action for adding contextual training material to SARIF files",
55
"main": "index.js",
66
"scripts": {
@@ -36,7 +36,7 @@
3636
},
3737
"devDependencies": {
3838
"@vercel/ncc": "^0.25.1",
39-
"eslint": "^7.13.0",
39+
"eslint": "^7.15.0",
4040
"jest": "^26.6.3"
4141
}
4242
}

sarifProcessors/resultProcessor.js

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,19 @@
11
"use strict";
22

33
async function process(run) {
4-
return run;
4+
const ruleMap = new Map();
5+
6+
if (run && run.results) {
7+
for (const result of run.results) {
8+
const ruleId = result.ruleId;
9+
const seen = ruleMap.get(ruleId);
10+
if (seen === undefined) {
11+
ruleMap.set(ruleId, true);
12+
}
13+
}
14+
}
15+
16+
return ruleMap;
517
}
618

719
module.exports = {

sarifProcessors/resultProcessor.test.js

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,9 @@ const sarifLoader = require('../sarifLoader');
66
test('resultProcessor should load test001 and add contextual micro-learning material', async () => {
77
const sarifs = await sarifLoader.load('./fixtures/test001.sarif');
88
for (const sarif of sarifs) {
9-
const processed = await resultProcessor.process(sarif.runs[0]);
10-
expect(processed.tool.driver.name).toEqual('Tool Name 3');
9+
const ruleMap = await resultProcessor.process(sarif.runs[0]);
10+
expect(ruleMap.has('TEST01')).toEqual(true);
11+
expect(ruleMap.get('TEST01')).toEqual(true);
12+
expect(ruleMap.get('TEST02')).toEqual(undefined);
1113
}
1214
});

0 commit comments

Comments
 (0)