@fabasoad/sarif-to-slack 0.1.1 → 0.2.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.github/ISSUE_TEMPLATE/bug_report.md +1 -1
- package/.github/pull_request_template.md +3 -3
- package/.github/workflows/linting.yml +14 -0
- package/.github/workflows/release.yml +5 -1
- package/.github/workflows/send-sarif-to-slack.yml +214 -0
- package/.github/workflows/unit-tests.yml +1 -0
- package/.pre-commit-config.yaml +3 -3
- package/.tool-versions +1 -1
- package/CONTRIBUTING.md +1 -1
- package/Makefile +10 -3
- package/README.md +36 -5
- package/biome.json +15 -12
- package/dist/Logger.js +17 -6
- package/dist/Processors.js +23 -22
- package/dist/SarifToSlackService.d.ts.map +1 -1
- package/dist/SarifToSlackService.js +6 -7
- package/dist/SlackMessageBuilder.js +51 -55
- package/dist/index.d.ts +9 -4
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +10 -5
- package/dist/model/SarifModelPerRun.d.ts +17 -0
- package/dist/model/SarifModelPerRun.d.ts.map +1 -0
- package/dist/model/SarifModelPerRun.js +84 -0
- package/dist/model/SarifModelPerSarif.d.ts +20 -0
- package/dist/model/SarifModelPerSarif.d.ts.map +1 -0
- package/dist/model/SarifModelPerSarif.js +97 -0
- package/dist/model/types.d.ts +17 -0
- package/dist/model/types.d.ts.map +1 -0
- package/dist/model/types.js +31 -0
- package/dist/sarif-to-slack.d.ts +121 -18
- package/dist/tsdoc-metadata.json +1 -1
- package/dist/types.d.ts +107 -15
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +73 -7
- package/dist/utils/SarifUtils.d.ts +5 -0
- package/dist/utils/SarifUtils.d.ts.map +1 -0
- package/dist/utils/SarifUtils.js +32 -0
- package/dist/utils/SortUtils.d.ts +5 -0
- package/dist/utils/SortUtils.d.ts.map +1 -0
- package/dist/utils/SortUtils.js +8 -0
- package/dist/version.d.ts +2 -0
- package/dist/version.d.ts.map +1 -0
- package/dist/version.js +4 -0
- package/etc/sarif-to-slack.api.md +47 -9
- package/jest.config.json +4 -4
- package/package.json +14 -10
- package/scripts/save-version.sh +6 -0
- package/src/Logger.ts +22 -17
- package/src/Processors.ts +22 -22
- package/src/SarifToSlackService.ts +6 -7
- package/src/SlackMessageBuilder.ts +85 -68
- package/src/index.ts +17 -6
- package/src/model/SarifModelPerRun.ts +114 -0
- package/src/model/SarifModelPerSarif.ts +116 -0
- package/src/model/types.ts +31 -0
- package/src/types.ts +113 -15
- package/src/utils/SarifUtils.ts +44 -0
- package/src/utils/SortUtils.ts +21 -0
- package/src/version.ts +3 -0
- package/test-data/sarif/codeql-csharp.sarif +1 -0
- package/test-data/sarif/codeql-go.sarif +1 -0
- package/test-data/sarif/codeql-python.sarif +1 -0
- package/test-data/sarif/codeql-ruby.sarif +1 -0
- package/test-data/sarif/codeql-typescript.sarif +1 -0
- package/test-data/sarif/grype-container.sarif +1774 -0
- package/test-data/sarif/runs-1-tools-1-results-0.sarif +18 -0
- package/test-data/sarif/runs-2-tools-1-results-0.sarif +30 -0
- package/test-data/sarif/runs-2-tools-1.sarif +656 -0
- package/test-data/sarif/runs-2-tools-2-results-0.sarif +44 -0
- package/test-data/sarif/runs-2-tools-2.sarif +686 -0
- package/test-data/sarif/runs-3-tools-2-results-0.sarif +48 -0
- package/test-data/sarif/runs-3-tools-2.sarif +278 -0
- package/test-data/sarif/snyk-composer.sarif +934 -0
- package/test-data/sarif/snyk-container.sarif +313 -0
- package/test-data/sarif/snyk-gomodules.sarif +388 -0
- package/test-data/sarif/snyk-gradle.sarif +274 -0
- package/test-data/sarif/snyk-hex.sarif +66 -0
- package/test-data/sarif/snyk-maven.sarif +274 -0
- package/test-data/sarif/snyk-npm.sarif +896 -0
- package/test-data/sarif/snyk-nuget.sarif +90 -0
- package/test-data/sarif/snyk-pip.sarif +66 -0
- package/test-data/sarif/snyk-pnpm.sarif +90 -0
- package/test-data/sarif/snyk-poetry.sarif +1952 -0
- package/test-data/sarif/snyk-rubygems.sarif +440 -0
- package/test-data/sarif/snyk-sbt.sarif +178 -0
- package/test-data/sarif/snyk-swift.sarif +112 -0
- package/test-data/sarif/snyk-yarn.sarif +2900 -0
- package/test-data/sarif/trivy-iac.sarif +134 -0
- package/test-data/sarif/wiz-container.sarif +30916 -0
- package/test-data/sarif/wiz-iac.sarif +558 -0
- package/tests/Processors.spec.ts +3 -3
- package/tests/integration/SendSarifToSlack.spec.ts +56 -0
- package/tsconfig.json +14 -14
- package/dist/Logger.js.map +0 -1
- package/dist/Processors.js.map +0 -1
- package/dist/SarifToSlackService.js.map +0 -1
- package/dist/SlackMessageBuilder.js.map +0 -1
- package/dist/index.js.map +0 -1
- package/dist/types.js.map +0 -1
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { promises as fs } from 'fs';
|
|
2
2
|
import Logger from './Logger';
|
|
3
|
-
import { processColor,
|
|
3
|
+
import { processColor, processSarifPath } from './Processors';
|
|
4
4
|
import { SlackMessageBuilder } from './SlackMessageBuilder';
|
|
5
5
|
async function initialize(opts) {
|
|
6
6
|
const slackMessages = new Map();
|
|
@@ -14,13 +14,14 @@ async function initialize(opts) {
|
|
|
14
14
|
username: opts.username,
|
|
15
15
|
iconUrl: opts.iconUrl,
|
|
16
16
|
color: processColor(opts.color),
|
|
17
|
-
sarif: JSON.parse(jsonString)
|
|
17
|
+
sarif: JSON.parse(jsonString),
|
|
18
|
+
output: opts.output,
|
|
18
19
|
});
|
|
19
20
|
if (opts.header?.include) {
|
|
20
21
|
messageBuilder.withHeader(opts.header?.value);
|
|
21
22
|
}
|
|
22
23
|
if (opts.footer?.include) {
|
|
23
|
-
messageBuilder.withFooter(opts.footer?.value);
|
|
24
|
+
messageBuilder.withFooter(opts.footer?.value, opts.footer?.type);
|
|
24
25
|
}
|
|
25
26
|
if (opts.actor?.include) {
|
|
26
27
|
messageBuilder.withActor(opts.actor?.value);
|
|
@@ -57,9 +58,7 @@ export class SarifToSlackService {
|
|
|
57
58
|
* @public
|
|
58
59
|
*/
|
|
59
60
|
static async create(opts) {
|
|
60
|
-
Logger.initialize(
|
|
61
|
-
logLevel: processLogLevel(opts.logLevel)
|
|
62
|
-
});
|
|
61
|
+
Logger.initialize(opts.log);
|
|
63
62
|
const instance = new SarifToSlackService();
|
|
64
63
|
const map = await initialize(opts);
|
|
65
64
|
map.forEach((val, key) => instance._slackMessages.set(key, val));
|
|
@@ -92,4 +91,4 @@ export class SarifToSlackService {
|
|
|
92
91
|
Logger.info(`Message sent for ${sarifPath} file. Status:`, text);
|
|
93
92
|
}
|
|
94
93
|
}
|
|
95
|
-
//# sourceMappingURL=
|
|
94
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU2FyaWZUb1NsYWNrU2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9TYXJpZlRvU2xhY2tTZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLElBQUksRUFBRSxFQUFFLE1BQU0sSUFBSSxDQUFDO0FBQ3BDLE9BQU8sTUFBTSxNQUFNLFVBQVUsQ0FBQTtBQUM3QixPQUFPLEVBQUUsWUFBWSxFQUFFLGdCQUFnQixFQUFFLE1BQU0sY0FBYyxDQUFBO0FBQzdELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHVCQUF1QixDQUFBO0FBTzNELEtBQUssVUFBVSxVQUFVLENBQUMsSUFBZ0M7SUFDeEQsTUFBTSxhQUFhLEdBQUcsSUFBSSxHQUFHLEVBQXdCLENBQUM7SUFDdEQsTUFBTSxVQUFVLEdBQWEsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFBO0lBQzdELElBQUksVUFBVSxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUUsQ0FBQztRQUM1QixNQUFNLElBQUksS0FBSyxDQUFDLDhDQUE4QyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQTtJQUNqRixDQUFDO0lBRUQsS0FBSyxNQUFNLFNBQVMsSUFBSSxVQUFVLEVBQUUsQ0FBQztRQUNuQyxNQUFNLFVBQVUsR0FBVyxNQUFNLEVBQUUsQ0FBQyxRQUFRLENBQUMsU0FBUyxFQUFFLE1BQU0sQ0FBQyxDQUFBO1FBRS9ELE1BQU0sY0FBYyxHQUFHLElBQUksbUJBQW1CLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRTtZQUM5RCxRQUFRLEVBQUUsSUFBSSxDQUFDLFFBQVE7WUFDdkIsT0FBTyxFQUFFLElBQUksQ0FBQyxPQUFPO1lBQ3JCLEtBQUssRUFBRSxZQUFZLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQztZQUMvQixLQUFLLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQWE7WUFDekMsTUFBTSxFQUFFLElB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
|
|
@@ -1,4 +1,7 @@
|
|
|
1
1
|
import { IncomingWebhook } from '@slack/webhook';
|
|
2
|
+
import { CalculateResultsBy, FooterType, GroupResultsBy } from './types';
|
|
3
|
+
import { LIB_VERSION } from './version';
|
|
4
|
+
import { SarifModelPerSarif } from './model/SarifModelPerSarif';
|
|
2
5
|
/**
|
|
3
6
|
* Class for building and sending Slack messages based on SARIF logs.
|
|
4
7
|
* @internal
|
|
@@ -7,6 +10,8 @@ export class SlackMessageBuilder {
|
|
|
7
10
|
webhook;
|
|
8
11
|
gitHubServerUrl;
|
|
9
12
|
color;
|
|
13
|
+
sarifModelPerSarif;
|
|
14
|
+
output;
|
|
10
15
|
header;
|
|
11
16
|
footer;
|
|
12
17
|
actor;
|
|
@@ -17,9 +22,14 @@ export class SlackMessageBuilder {
|
|
|
17
22
|
username: opts.username || 'SARIF results',
|
|
18
23
|
icon_url: opts.iconUrl
|
|
19
24
|
});
|
|
25
|
+
this.gitHubServerUrl = process.env.GITHUB_SERVER_URL || 'https://github.com';
|
|
20
26
|
this.color = opts.color;
|
|
21
27
|
this.sarif = opts.sarif;
|
|
22
|
-
this.
|
|
28
|
+
this.sarifModelPerSarif = new SarifModelPerSarif(opts.sarif);
|
|
29
|
+
this.output = opts.output || {
|
|
30
|
+
groupBy: GroupResultsBy.ToolName,
|
|
31
|
+
calculateBy: CalculateResultsBy.Level
|
|
32
|
+
};
|
|
23
33
|
}
|
|
24
34
|
withHeader(header) {
|
|
25
35
|
this.header = {
|
|
@@ -36,14 +46,14 @@ export class SlackMessageBuilder {
|
|
|
36
46
|
withRun() {
|
|
37
47
|
this.runId = process.env.GITHUB_RUN_ID;
|
|
38
48
|
}
|
|
39
|
-
withFooter(
|
|
40
|
-
const repoName = 'fabasoad/sarif-to-slack
|
|
49
|
+
withFooter(text, type) {
|
|
50
|
+
const repoName = 'fabasoad/sarif-to-slack';
|
|
51
|
+
const element = text
|
|
52
|
+
? { type: type || FooterType.PlainText, text }
|
|
53
|
+
: { type: FooterType.Markdown, text: `Generated by <${this.gitHubServerUrl}/${repoName}|@${repoName}@${LIB_VERSION}>` };
|
|
41
54
|
this.footer = {
|
|
42
55
|
type: 'context',
|
|
43
|
-
elements: [
|
|
44
|
-
type: footer ? 'plain_text' : 'mrkdwn',
|
|
45
|
-
text: footer || `Generated by <${this.gitHubServerUrl}/${repoName}|${repoName}>`
|
|
46
|
-
}],
|
|
56
|
+
elements: [element],
|
|
47
57
|
};
|
|
48
58
|
}
|
|
49
59
|
async send() {
|
|
@@ -83,61 +93,47 @@ export class SlackMessageBuilder {
|
|
|
83
93
|
}
|
|
84
94
|
text.push(runText);
|
|
85
95
|
}
|
|
86
|
-
return text.join('\n');
|
|
96
|
+
return text.join('\n\n');
|
|
87
97
|
}
|
|
88
|
-
|
|
89
|
-
const
|
|
90
|
-
for (const [
|
|
91
|
-
|
|
92
|
-
levelsText.push(`*${levelCapitalized}*: ${count}`);
|
|
98
|
+
composeSummaryWith(map, resultProcessor = (result) => result) {
|
|
99
|
+
const stats = new Array();
|
|
100
|
+
for (const [key, count] of map.entries()) {
|
|
101
|
+
stats.push(`*${key}*: ${count}`);
|
|
93
102
|
}
|
|
94
|
-
return
|
|
103
|
+
return resultProcessor(stats.length == 0 ? 'No issues found' : stats.join(', '));
|
|
95
104
|
}
|
|
96
105
|
composeSummary() {
|
|
97
|
-
const
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
106
|
+
const summaries = new Array();
|
|
107
|
+
switch (this.output.groupBy) {
|
|
108
|
+
case GroupResultsBy.ToolName: {
|
|
109
|
+
const dataGroupedByToolName = this.output.calculateBy === CalculateResultsBy.Level
|
|
110
|
+
? this.sarifModelPerSarif.groupByToolNameWithSecurityLevel()
|
|
111
|
+
: this.sarifModelPerSarif.groupByToolNameWithSecuritySeverity();
|
|
112
|
+
for (const [toolName, map] of dataGroupedByToolName.entries()) {
|
|
113
|
+
summaries.push(this.composeSummaryWith(map, (result) => `*${toolName}*\n${result}`));
|
|
114
|
+
}
|
|
115
|
+
break;
|
|
102
116
|
}
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
117
|
+
case GroupResultsBy.Run: {
|
|
118
|
+
const dataGroupedByRun = this.output.calculateBy === CalculateResultsBy.Level
|
|
119
|
+
? this.sarifModelPerSarif.groupByRunWithSecurityLevel()
|
|
120
|
+
: this.sarifModelPerSarif.groupByRunWithSecuritySeverity();
|
|
121
|
+
for (let i = 0; i < dataGroupedByRun.length; i++) {
|
|
122
|
+
const { data, toolName } = dataGroupedByRun[i];
|
|
123
|
+
summaries.push(this.composeSummaryWith(data, (result) => `_[Run ${i + 1}]_: *${toolName}*\n${result}`));
|
|
124
|
+
}
|
|
125
|
+
break;
|
|
108
126
|
}
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
tryGetLevel(run, result) {
|
|
117
|
-
if (result.level) {
|
|
118
|
-
return result.level;
|
|
119
|
-
}
|
|
120
|
-
const ruleData = {};
|
|
121
|
-
if (result.rule) {
|
|
122
|
-
if (result.rule?.index) {
|
|
123
|
-
ruleData.index = result.rule.index;
|
|
124
|
-
}
|
|
125
|
-
if (result.rule?.id) {
|
|
126
|
-
ruleData.id = result.rule.id;
|
|
127
|
-
}
|
|
128
|
-
}
|
|
129
|
-
if (!ruleData.index && result.ruleIndex) {
|
|
130
|
-
ruleData.index = result.ruleIndex;
|
|
131
|
-
}
|
|
132
|
-
if (ruleData.index
|
|
133
|
-
&& run.tool.driver?.rules
|
|
134
|
-
&& ruleData.index < run.tool.driver.rules.length) {
|
|
135
|
-
const rule = run.tool.driver.rules[ruleData.index];
|
|
136
|
-
if (rule.properties && 'problem.severity' in rule.properties) {
|
|
137
|
-
return rule.properties['problem.severity'];
|
|
127
|
+
default: {
|
|
128
|
+
const dataTotal = this.output.calculateBy === CalculateResultsBy.Level
|
|
129
|
+
? this.sarifModelPerSarif.groupByTotalWithSecurityLevel()
|
|
130
|
+
: this.sarifModelPerSarif.groupByTotalWithSecuritySeverity();
|
|
131
|
+
const toolNames = this.sarifModelPerSarif.listToolNames();
|
|
132
|
+
summaries.push(this.composeSummaryWith(dataTotal, (result) => `*${Array.from(toolNames).join('*, *')}*\n${result}`));
|
|
133
|
+
break;
|
|
138
134
|
}
|
|
139
135
|
}
|
|
140
|
-
return '
|
|
136
|
+
return summaries.join('\n\n');
|
|
141
137
|
}
|
|
142
138
|
}
|
|
143
|
-
//# sourceMappingURL=
|
|
139
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU2xhY2tNZXNzYWdlQnVpbGRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9TbGFja01lc3NhZ2VCdWlsZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUdBLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQTtBQUVoRCxPQUFPLEVBQ0wsa0JBQWtCLEVBQ2xCLFVBQVUsRUFDVixjQUFjLEVBSWYsTUFBTSxTQUFTLENBQUE7QUFDaEIsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLFdBQVcsQ0FBQTtBQUN2QyxPQUFPLEVBRUwsa0JBQWtCLEVBQ25CLE1BQU0sNEJBQTRCLENBQUM7QUFlcEM7OztHQUdHO0FBQ0gsTUFBTSxPQUFPLG1CQUFtQjtJQUNiLE9BQU8sQ0FBaUI7SUFDeEIsZUFBZSxDQUFRO0lBQ3ZCLEtBQUssQ0FBUztJQUNkLGtCQUFrQixDQUFvQjtJQUN0QyxNQUFNLENBQW9CO0lBQ25DLE1BQU0sQ0FBYztJQUVwQixNQUFNLENBQWU7SUFDckIsS0FBSyxDQUFTO0lBQ2QsS0FBSyxDQUFTO0lBRU4sS0FBSyxDQUFVO0lBRS9CLFlBQVksR0FBVyxFQUFFLElBQWdDO1FBQ3ZELElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxlQUFlLENBQUMsR0FBRyxFQUFFO1lBQ3RDLFFBQVEsRUFBRSxJQUFJLENBQUMsUUFBUSxJQUFJLGVBQWU7WUFDMUMsUUFBUSxFQUFFLElBQUksQ0FBQyxPQUFPO1NBQ3ZCLENBQUMsQ0FBQTtRQUNGLElBQUksQ0FBQyxlQUFlLEdBQUcsT0FBTyxDQUFDLEdBQUcsQ0FBQyxpQkFBaUIsSUFBSSxvQkFBb0IsQ0FBQTtRQUM1RSxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUE7UUFDdkIsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFBO1FBQ3ZCLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxJQUFJLGtCQUFrQixDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQTtRQUM1RCxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxNQUFNLElBQUk7WUFDM0IsT0FBTyxFQUFFLGNBQWMsQ0FBQyxRQUFRO1lBQ2hDLFdBQVcsRUFBRSxrQkFBa0IsQ0FBQyxLQUFLO1NBQ3RDLENBQUE7SUFDSCxDQUFDO0lBRUQsVUFBVSxDQUFDLE1BQWU7UUFDeEIsSUFBSSxDQUFDLE1BQU0sR0FBRztZQUNaLElBQUksRUFBRSxRQUFRO1lBQ2QsSUFBSSxFQUFFO2dCQUNKLElBQUksRUFBRSxZQUFZO2dCQUNsQixJQUFJLEVBQUUsTUFBTSxJQUFJLE9BQU8sQ0FBQyxHQUFHLENBQUMsaUJBQWlCLElBQUksZUFBZTthQUNqRTtTQUNGLENBQUE7SUFDSCxDQUFDO0lBRUQsU0FBUyxDQUFDLEtBQWM7UUFDdEIsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLElBQUksT0FBTyxDQUFDLEdBQUcsQ0FBQyxZQUFZLENBQUE7SUFDaEQsQ0FBQztJQUVELE9BQU87UUFDTCxJQUFJLENBQUMsS0FBSyxHQUFHLE9BQU8sQ0FBQyxHQUFHLENBQUMsYUFBYSxDQUFBO0lBQ3hDLENBQUM7SUFFRCxVQUFVLENBQUMsSUFBYSxFQUFFLElBQWlCO1FBQ3pDLE1BQU0sUUFBUSxHQUFHLHlCQUF5QixDQUFBO1FBQzFDLE1BQU0sT0FBTyxHQUFlLElBQUk7WUFDOUIsQ0FBQyxDQUFDLEVBQUUsSUFBSSxFQUFFLElBQUksSUFBSSxVQUFVLENBQUMsU0FBUyxFQUFFLElBQUksRUFBRTtZQUM5QyxDQUFDLENBQUMsRUFBRSxJQUFJLEVBQUUsVUFBVSxDQUFDLFFBQVEsRUFBRSxJQUFJLEVBQUUsaUJBQWlCLElBQUksQ0FBQyxlQUFlLElBQUksUUFBUSxLQUFLLFFBQVEsSUFBSSxXQUFXLEdBQUcsRUFBRSxDQUFBO1FBQ3pILElBQUksQ0FBQyxNQUFNLEdBQUc7WUFDWixJQUFJLEVBQUUsU0FBUztZQUNmLFFBQVEsRUFBRSxDQUFDLE9BQU8sQ0FBQztTQUNwQixDQUFBO0lBQ0gsQ0FBQztJQUVELEtBQUssQ0FBQyxJQUFJO1FBQ1IsTUFBTSxNQUFNLEdBQWUsRUFBRSxDQUFBO1FBQzdCLElBQUksSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ2hCLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFBO1FBQzFCLENBQUM7UUFDRCxNQUFNLENBQUMsSUFBSSxDQUFDO1lBQ1YsSUFBSSxFQUFFLFNBQVM7WUFDZixJQUFJLEVBQUU7Z0JBQ0osSUFBSSxFQUFFLFFBQVE7Z0JBQ2QsSUFBSSxFQUFFLElBQUksQ0FBQyxTQUFTLEVBQUU7YUFDdkI7U0FDRixDQUFDLENBQUE7UUFDRixJQUFJLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUNoQixNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQTtRQUMxQixDQUFDO1FBQ0QsTUFBTSxFQUFFLElBQUksRUFBRSxHQUFHLE1BQU0sSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUM7WUFDdkMsV0FBVyxFQUFFLENBQUMsRUFBRSxLQUFLLEVBQUUsSUFBSSxDQUFDLEtBQUssRUFBRSxNQUFNLEVBQUUsQ0FBQztTQUM3QyxDQUFDLENBQUE7UUFDRixPQUFPLElBQUksQ0FBQTtJQUNiLENBQUM7SUFFTyxTQUFTO1FBQ2YsTUFBTSxJQUFJLEdBQWEsRUFBRSxDQUFBO1FBQ3pCLElBQUksSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ2YsTUFBTSxRQUFRLEdBQUcsR0FBRyxJQUFJLENBQUMsZUFBZSxJQUFJLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQTtZQUN4RCxJQUFJLENBQUMsSUFBSSxDQUFDLGtCQUFrQixRQUFRLElBQUksSUFBSSxDQUFDLEtBQUssSUFBSSxDQUFDLENBQUE7UUFDekQsQ0FBQztRQUNELElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDLENBQUE7UUFDaEMsSUFBSSxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDZixJQUFJLE9BQU8sR0FBVyxNQUFNLENBQUE7WUFDNUIsSUFBSSxPQUFPLENBQUMsR0FBRyxDQUFDLGlCQUFpQixFQUFFLENBQUM7Z0JBQ2xDLE9BQU8sSUFBSSxJQUFJLElBQUksQ0FBQyxlQUFlLElBQUksT0FBTyxDQUFDLEdBQUcsQ0FBQyxpQkFBaUIsaUJBQWlCLElBQUksQ0FBQyxLQUFLLEtBQUssSUFBSSxDQUFDLEtBQUssR0FBRyxDQUFBO1lBQ25ILENBQUM7aUJBQU0sQ0FBQztnQkFDTixPQUFPLElBQUksSUFBSSxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUE7WUFDN0IsQ0FBQztZQUNELElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUE7UUFDcEIsQ0FBQztRQUNELE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQTtJQUMxQixDQUFDO0lBRU8sa0JBQWtCLENBQ3hCLEdBQTJELEVBQzNELGtCQUE4QyxDQUFDLE1BQWMsRUFBVSxFQUFFLENBQUMsTUFBTTtRQUVoRixNQUFNLEtBQUssR0FBRyxJQUFJLEtBQUssRUFBVSxDQUFBO1FBQ2pDLEtBQUssTUFBTSxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsSUFBSSxHQUFHLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQztZQUN6QyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksR0FBRyxNQUFNLEtBQUssRUFBRSxDQUFDLENBQUE7UUFDbEMsQ0FBQztRQUNELE9BQU8sZUFBZSxDQUNwQixLQUFLLENBQUMsTUFBTSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQ3pELENBQUE7SUFDSCxDQUFDO0lBRU8sY0FBYztRQUNwQixNQUFNLFNBQVMsR0FBRyxJQUFJLEtBQUssRUFBVSxDQUFBO1FBQ3JDLFFBQVEsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUM1QixLQUFLLGNBQWMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDO2dCQUM3QixNQUFNLHFCQUFxQixHQUN6QixJQUFJLENBQUMsTUFBTSxDQUFDLFdBQVcsS0FBSyxrQkFBa0IsQ0FBQyxLQUFLO29CQUNsRCxDQUFDLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLGdDQUFnQyxFQUFFO29CQUM1RCxDQUFDLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLG1DQUFtQyxFQUFFLENBQUE7Z0JBQ25FLEtBQUssTUFBTSxDQUFDLFFBQVEsRUFBRSxHQUFHLENBQUMsSUFBSSxxQkFBcUIsQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDO29CQUM5RCxTQUFTLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FDcEMsR0FBRyxFQUNILENBQUMsTUFBYyxFQUFVLEVBQUUsQ0FBQyxJQUFJLFFBQVEsTUFBTSxNQUFNLEVBQUUsQ0FDdkQsQ0FBQyxDQUFBO2dCQUNKLENBQUM7Z0JBQ0QsTUFBSztZQUNQLENBQUM7WUFDRCxLQUFLLGNBQWMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO2dCQUN4QixNQUFNLGdCQUFnQixHQUNwQixJQUFJLENBQUMsTUFBTSxDQUFDLFdBQVcsS0FBSyxrQkFBa0IsQ0FBQyxLQUFLO29CQUNsRCxDQUFDLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLDJCQUEyQixFQUFFO29CQUN2RCxDQUFDLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLDhCQUE4QixFQUFFLENBQUE7Z0JBQzlELEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxnQkFBZ0IsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztvQkFDakQsTUFBTSxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsR0FBRyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsQ0FBQTtvQkFDOUMsU0FBUyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQ3BDLElBQUksRUFDSixDQUFDLE1BQWMsRUFBVSxFQUFFLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxRQUFRLFFBQVEsTUFBTSxNQUFNLEVBQUUsQ0FDekUsQ0FBQyxDQUFBO2dCQUNKLENBQUM7Z0JBQ0QsTUFBSztZQUNQLENBQUM7WUFDRCxPQUFPLENBQUMsQ0FBQyxDQUFDO2dCQUNSLE1BQU0sU0FBUyxHQUNiLElBQUksQ0FBQyxNQUFNLENBQUMsV0FBVyxLQUFLLGtCQUFrQixDQUFDLEtBQUs7b0JBQ2xELENBQUMsQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsNkJBQTZCLEVBQUU7b0JBQ3pELENBQUMsQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsZ0NBQWdDLEVBQUUsQ0FBQTtnQkFDaEUsTUFBTSxTQUFTLEdBQWdCLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxhQUFhLEVBQUUsQ0FBQTtnQkFDdEUsU0FBUyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQ3BDLFNBQVMsRUFDVCxDQUFDLE1BQWMsRUFBVSxFQUFFLENBQUMsSUFBSSxLQUFLLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxNQUFNLEVBQUUsQ0FDakYsQ0FBQyxDQUFBO2dCQUNGLE1BQUs7WUFDUCxDQUFDO1FBQ0gsQ0FBQztRQUNELE9BQU8sU0FBUyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQTtJQUMvQixDQUFDO0NBQ0YifQ==
|
package/dist/index.d.ts
CHANGED
|
@@ -7,12 +7,16 @@
|
|
|
7
7
|
*
|
|
8
8
|
* @example
|
|
9
9
|
* ```typescript
|
|
10
|
-
* import { SarifToSlackService } from 'sarif-to-slack';
|
|
10
|
+
* import { SarifToSlackService, FooterType } from '@fabasoad/sarif-to-slack';
|
|
11
11
|
*
|
|
12
|
-
* const service =
|
|
12
|
+
* const service = await SarifToSlackService.create({
|
|
13
13
|
* webhookUrl: 'https://hooks.slack.com/services/your/webhook/url',
|
|
14
14
|
* sarifPath: 'path/to/your/sarif/file.sarif',
|
|
15
|
-
*
|
|
15
|
+
* log: {
|
|
16
|
+
* level: 'info',
|
|
17
|
+
* template: '[{{logLevelName}}] [{{name}}] {{dateIsoStr}} ',
|
|
18
|
+
* colored: false,
|
|
19
|
+
* },
|
|
16
20
|
* username: 'SARIF Bot',
|
|
17
21
|
* iconUrl: 'https://example.com/icon.png',
|
|
18
22
|
* color: '#36a64f',
|
|
@@ -22,6 +26,7 @@
|
|
|
22
26
|
* },
|
|
23
27
|
* footer: {
|
|
24
28
|
* include: true,
|
|
29
|
+
* type: FooterType.PLAIN_TEXT,
|
|
25
30
|
* value: 'Generated by @fabasoad/sarif-to-slack'
|
|
26
31
|
* },
|
|
27
32
|
* actor: {
|
|
@@ -40,5 +45,5 @@
|
|
|
40
45
|
* @packageDocumentation
|
|
41
46
|
*/
|
|
42
47
|
export { SarifToSlackService } from './SarifToSlackService';
|
|
43
|
-
export {
|
|
48
|
+
export { CalculateResultsBy, FooterOptions, FooterType, GroupResultsBy, IncludeAwareOptions, IncludeAwareWithValueOptions, LogLevel, LogOptions, SarifLog, SarifToSlackOutput, SarifToSlackServiceOptions, SlackMessage, } from './types';
|
|
44
49
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAEA
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6CG;AACH,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAA;AAC3D,OAAO,EACL,kBAAkB,EAClB,aAAa,EACb,UAAU,EACV,cAAc,EACd,mBAAmB,EACnB,4BAA4B,EAC5B,QAAQ,EACR,UAAU,EACV,QAAQ,EACR,kBAAkB,EAClB,0BAA0B,EAC1B,YAAY,GACb,MAAM,SAAS,CAAA"}
|
package/dist/index.js
CHANGED
|
@@ -8,12 +8,16 @@
|
|
|
8
8
|
*
|
|
9
9
|
* @example
|
|
10
10
|
* ```typescript
|
|
11
|
-
* import { SarifToSlackService } from 'sarif-to-slack';
|
|
11
|
+
* import { SarifToSlackService, FooterType } from '@fabasoad/sarif-to-slack';
|
|
12
12
|
*
|
|
13
|
-
* const service =
|
|
13
|
+
* const service = await SarifToSlackService.create({
|
|
14
14
|
* webhookUrl: 'https://hooks.slack.com/services/your/webhook/url',
|
|
15
15
|
* sarifPath: 'path/to/your/sarif/file.sarif',
|
|
16
|
-
*
|
|
16
|
+
* log: {
|
|
17
|
+
* level: 'info',
|
|
18
|
+
* template: '[{{logLevelName}}] [{{name}}] {{dateIsoStr}} ',
|
|
19
|
+
* colored: false,
|
|
20
|
+
* },
|
|
17
21
|
* username: 'SARIF Bot',
|
|
18
22
|
* iconUrl: 'https://example.com/icon.png',
|
|
19
23
|
* color: '#36a64f',
|
|
@@ -23,6 +27,7 @@
|
|
|
23
27
|
* },
|
|
24
28
|
* footer: {
|
|
25
29
|
* include: true,
|
|
30
|
+
* type: FooterType.PLAIN_TEXT,
|
|
26
31
|
* value: 'Generated by @fabasoad/sarif-to-slack'
|
|
27
32
|
* },
|
|
28
33
|
* actor: {
|
|
@@ -41,5 +46,5 @@
|
|
|
41
46
|
* @packageDocumentation
|
|
42
47
|
*/
|
|
43
48
|
export { SarifToSlackService } from './SarifToSlackService';
|
|
44
|
-
export { LogLevel, } from './types';
|
|
45
|
-
//# sourceMappingURL=
|
|
49
|
+
export { CalculateResultsBy, FooterType, GroupResultsBy, LogLevel, } from './types';
|
|
50
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsMEZBQTBGO0FBRTFGOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0E2Q0c7QUFDSCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQTtBQUMzRCxPQUFPLEVBQ0wsa0JBQWtCLEVBRWxCLFVBQVUsRUFDVixjQUFjLEVBR2QsUUFBUSxHQU1ULE1BQU0sU0FBUyxDQUFBIn0=
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import type { Run } from 'sarif';
|
|
2
|
+
import { SecurityLevel, SecuritySeverity } from './types';
|
|
3
|
+
import { Map as ImmutableMap } from 'immutable';
|
|
4
|
+
export declare class SarifModelPerRun {
|
|
5
|
+
readonly toolName: string;
|
|
6
|
+
private readonly _securitySeverityMap;
|
|
7
|
+
private readonly _securityLevelMap;
|
|
8
|
+
constructor(run: Run);
|
|
9
|
+
private identifySecuritySeverity;
|
|
10
|
+
private identifySecurityLevel;
|
|
11
|
+
private buildSecuritySeverityMap;
|
|
12
|
+
private tryGetSecurityLevel;
|
|
13
|
+
private buildSecurityLevelMap;
|
|
14
|
+
get securitySeverityMap(): ImmutableMap<SecuritySeverity, number>;
|
|
15
|
+
get securityLevelMap(): ImmutableMap<SecurityLevel, number>;
|
|
16
|
+
}
|
|
17
|
+
//# sourceMappingURL=SarifModelPerRun.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SarifModelPerRun.d.ts","sourceRoot":"","sources":["../../src/model/SarifModelPerRun.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAU,GAAG,EAAE,MAAM,OAAO,CAAC;AAEzC,OAAO,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAA;AAEzD,OAAO,EAAE,GAAG,IAAI,YAAY,EAAE,MAAM,WAAW,CAAA;AAM/C,qBAAa,gBAAgB;IAC3B,SAAgB,QAAQ,EAAE,MAAM,CAAA;IAEhC,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CAAwC;IAC7E,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAqC;gBAE3D,GAAG,EAAE,GAAG;IAUpB,OAAO,CAAC,wBAAwB;IA6BhC,OAAO,CAAC,qBAAqB;IAqB7B,OAAO,CAAC,wBAAwB;IAWhC,OAAO,CAAC,mBAAmB;IAQ3B,OAAO,CAAC,qBAAqB;IAW7B,IAAW,mBAAmB,IAAI,YAAY,CAAC,gBAAgB,EAAE,MAAM,CAAC,CAEvE;IAED,IAAW,gBAAgB,IAAI,YAAY,CAAC,aAAa,EAAE,MAAM,CAAC,CAEjE;CACF"}
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
import { tryGetRulePropertyByResult } from '../utils/SarifUtils';
|
|
2
|
+
import { SecurityLevel, SecuritySeverity } from './types';
|
|
3
|
+
import Logger from '../Logger';
|
|
4
|
+
import { Map as ImmutableMap } from 'immutable';
|
|
5
|
+
import { sortSecurityLevelMap, sortSecuritySeverityMap } from '../utils/SortUtils';
|
|
6
|
+
export class SarifModelPerRun {
|
|
7
|
+
toolName;
|
|
8
|
+
_securitySeverityMap;
|
|
9
|
+
_securityLevelMap;
|
|
10
|
+
constructor(run) {
|
|
11
|
+
this.toolName = run.tool.driver.name;
|
|
12
|
+
this._securitySeverityMap = ImmutableMap().asMutable();
|
|
13
|
+
this._securityLevelMap = ImmutableMap().asMutable();
|
|
14
|
+
this.buildSecuritySeverityMap(run);
|
|
15
|
+
this.buildSecurityLevelMap(run);
|
|
16
|
+
}
|
|
17
|
+
identifySecuritySeverity(score) {
|
|
18
|
+
if (score === undefined) {
|
|
19
|
+
return SecuritySeverity.Unknown;
|
|
20
|
+
}
|
|
21
|
+
if (score >= 9 && score <= 10) {
|
|
22
|
+
return SecuritySeverity.Critical;
|
|
23
|
+
}
|
|
24
|
+
if (score >= 7) {
|
|
25
|
+
return SecuritySeverity.High;
|
|
26
|
+
}
|
|
27
|
+
if (score >= 4) {
|
|
28
|
+
return SecuritySeverity.Medium;
|
|
29
|
+
}
|
|
30
|
+
if (score >= 0.1) {
|
|
31
|
+
return SecuritySeverity.Low;
|
|
32
|
+
}
|
|
33
|
+
if (score == 0) {
|
|
34
|
+
return SecuritySeverity.None;
|
|
35
|
+
}
|
|
36
|
+
Logger.warn(`Unsupported "${score}" security severity. Saving as "Unknown".`);
|
|
37
|
+
return SecuritySeverity.Unknown;
|
|
38
|
+
}
|
|
39
|
+
identifySecurityLevel(level) {
|
|
40
|
+
if (level === undefined) {
|
|
41
|
+
return SecurityLevel.Unknown;
|
|
42
|
+
}
|
|
43
|
+
if (level.toLowerCase() === 'error') {
|
|
44
|
+
return SecurityLevel.Error;
|
|
45
|
+
}
|
|
46
|
+
if (level.toLowerCase() === 'warning') {
|
|
47
|
+
return SecurityLevel.Warning;
|
|
48
|
+
}
|
|
49
|
+
if (level.toLowerCase() === 'note') {
|
|
50
|
+
return SecurityLevel.Note;
|
|
51
|
+
}
|
|
52
|
+
Logger.warn(`Unsupported ${level} security level. Saving as "Unknown".`);
|
|
53
|
+
return SecurityLevel.Unknown;
|
|
54
|
+
}
|
|
55
|
+
buildSecuritySeverityMap(run) {
|
|
56
|
+
const results = run.results ?? [];
|
|
57
|
+
for (const result of results) {
|
|
58
|
+
const severity = this.identifySecuritySeverity(tryGetRulePropertyByResult(run, result, 'security-severity'));
|
|
59
|
+
const count = this._securitySeverityMap.get(severity) || 0;
|
|
60
|
+
this._securitySeverityMap.set(severity, count + 1);
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
tryGetSecurityLevel(run, result) {
|
|
64
|
+
if (result.level) {
|
|
65
|
+
return result.level;
|
|
66
|
+
}
|
|
67
|
+
return tryGetRulePropertyByResult(run, result, 'problem.severity');
|
|
68
|
+
}
|
|
69
|
+
buildSecurityLevelMap(run) {
|
|
70
|
+
const results = run.results ?? [];
|
|
71
|
+
for (const result of results) {
|
|
72
|
+
const level = this.identifySecurityLevel(this.tryGetSecurityLevel(run, result));
|
|
73
|
+
const count = this._securityLevelMap.get(level) || 0;
|
|
74
|
+
this._securityLevelMap.set(level, count + 1);
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
get securitySeverityMap() {
|
|
78
|
+
return sortSecuritySeverityMap(this._securitySeverityMap);
|
|
79
|
+
}
|
|
80
|
+
get securityLevelMap() {
|
|
81
|
+
return sortSecurityLevelMap(this._securityLevelMap);
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU2FyaWZNb2RlbFBlclJ1bi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9tb2RlbC9TYXJpZk1vZGVsUGVyUnVuLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLHFCQUFxQixDQUFBO0FBQ2hFLE9BQU8sRUFBRSxhQUFhLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxTQUFTLENBQUE7QUFDekQsT0FBTyxNQUFNLE1BQU0sV0FBVyxDQUFBO0FBQzlCLE9BQU8sRUFBRSxHQUFHLElBQUksWUFBWSxFQUFFLE1BQU0sV0FBVyxDQUFBO0FBQy9DLE9BQU8sRUFDTCxvQkFBb0IsRUFDcEIsdUJBQXVCLEVBQ3hCLE1BQU0sb0JBQW9CLENBQUM7QUFFNUIsTUFBTSxPQUFPLGdCQUFnQjtJQUNYLFFBQVEsQ0FBUTtJQUVmLG9CQUFvQixDQUF3QztJQUM1RCxpQkFBaUIsQ0FBcUM7SUFFdkUsWUFBWSxHQUFRO1FBQ2xCLElBQUksQ0FBQyxRQUFRLEdBQUcsR0FBRyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFBO1FBRXBDLElBQUksQ0FBQyxvQkFBb0IsR0FBRyxZQUFZLEVBQTRCLENBQUMsU0FBUyxFQUFFLENBQUE7UUFDaEYsSUFBSSxDQUFDLGlCQUFpQixHQUFHLFlBQVksRUFBeUIsQ0FBQyxTQUFTLEVBQUUsQ0FBQTtRQUUxRSxJQUFJLENBQUMsd0JBQXdCLENBQUMsR0FBRyxDQUFDLENBQUE7UUFDbEMsSUFBSSxDQUFDLHFCQUFxQixDQUFDLEdBQUcsQ0FBQyxDQUFBO0lBQ2pDLENBQUM7SUFFTyx3QkFBd0IsQ0FBQyxLQUFjO1FBQzdDLElBQUksS0FBSyxLQUFLLFNBQVMsRUFBRSxDQUFDO1lBQ3hCLE9BQU8sZ0JBQWdCLENBQUMsT0FBTyxDQUFBO1FBQ2pDLENBQUM7UUFFRCxJQUFJLEtBQUssSUFBSSxDQUFDLElBQUksS0FBSyxJQUFJLEVBQUUsRUFBRSxDQUFDO1lB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
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import type { SarifLog } from '../types';
|
|
2
|
+
import { Map as ImmutableMap } from 'immutable';
|
|
3
|
+
import { SecurityLevel, SecuritySeverity } from './types';
|
|
4
|
+
export type DataGroupedByRun<T> = {
|
|
5
|
+
toolName: string;
|
|
6
|
+
data: ImmutableMap<T, number>;
|
|
7
|
+
};
|
|
8
|
+
export declare class SarifModelPerSarif {
|
|
9
|
+
private readonly sarifModelPerRunList;
|
|
10
|
+
constructor(sarif: SarifLog);
|
|
11
|
+
private buildRunsList;
|
|
12
|
+
groupByToolNameWithSecurityLevel(): Map<string, ImmutableMap<SecurityLevel, number>>;
|
|
13
|
+
groupByRunWithSecurityLevel(): DataGroupedByRun<SecurityLevel>[];
|
|
14
|
+
groupByTotalWithSecurityLevel(): ImmutableMap<SecurityLevel, number>;
|
|
15
|
+
groupByToolNameWithSecuritySeverity(): Map<string, ImmutableMap<SecuritySeverity, number>>;
|
|
16
|
+
groupByRunWithSecuritySeverity(): DataGroupedByRun<SecuritySeverity>[];
|
|
17
|
+
groupByTotalWithSecuritySeverity(): ImmutableMap<SecuritySeverity, number>;
|
|
18
|
+
listToolNames(): Set<string>;
|
|
19
|
+
}
|
|
20
|
+
//# sourceMappingURL=SarifModelPerSarif.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SarifModelPerSarif.d.ts","sourceRoot":"","sources":["../../src/model/SarifModelPerSarif.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAA;AACxC,OAAO,EAAE,GAAG,IAAI,YAAY,EAAE,MAAM,WAAW,CAAA;AAE/C,OAAO,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAA;AAMzD,MAAM,MAAM,gBAAgB,CAAC,CAAC,IAAI;IAChC,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,YAAY,CAAC,CAAC,EAAE,MAAM,CAAC,CAAA;CAC9B,CAAA;AAED,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CAA0B;gBAEnD,KAAK,EAAE,QAAQ;IAK3B,OAAO,CAAC,aAAa;IAMd,gCAAgC,IAAI,GAAG,CAAC,MAAM,EAAE,YAAY,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC;IAkBpF,2BAA2B,IAAI,gBAAgB,CAAC,aAAa,CAAC,EAAE;IAWhE,6BAA6B,IAAI,YAAY,CAAC,aAAa,EAAE,MAAM,CAAC;IAWpE,mCAAmC,IAAI,GAAG,CAAC,MAAM,EAAE,YAAY,CAAC,gBAAgB,EAAE,MAAM,CAAC,CAAC;IAkB1F,8BAA8B,IAAI,gBAAgB,CAAC,gBAAgB,CAAC,EAAE;IAWtE,gCAAgC,IAAI,YAAY,CAAC,gBAAgB,EAAE,MAAM,CAAC;IAW1E,aAAa,IAAI,GAAG,CAAC,MAAM,CAAC;CAOpC"}
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
import { Map as ImmutableMap } from 'immutable';
|
|
2
|
+
import { SarifModelPerRun } from './SarifModelPerRun';
|
|
3
|
+
import { sortSecurityLevelMap, sortSecuritySeverityMap } from '../utils/SortUtils';
|
|
4
|
+
export class SarifModelPerSarif {
|
|
5
|
+
sarifModelPerRunList;
|
|
6
|
+
constructor(sarif) {
|
|
7
|
+
this.sarifModelPerRunList = new Array();
|
|
8
|
+
this.buildRunsList(sarif);
|
|
9
|
+
}
|
|
10
|
+
buildRunsList(sarif) {
|
|
11
|
+
for (const run of sarif.runs) {
|
|
12
|
+
this.sarifModelPerRunList.push(new SarifModelPerRun(run));
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
groupByToolNameWithSecurityLevel() {
|
|
16
|
+
const result = new Map();
|
|
17
|
+
for (const sarifModelPerRun of this.sarifModelPerRunList) {
|
|
18
|
+
if (!result.has(sarifModelPerRun.toolName)) {
|
|
19
|
+
result.set(sarifModelPerRun.toolName, ImmutableMap().asMutable());
|
|
20
|
+
}
|
|
21
|
+
for (const [k, v] of sarifModelPerRun.securityLevelMap.entries()) {
|
|
22
|
+
const count = result.get(sarifModelPerRun.toolName)?.get(k) || 0;
|
|
23
|
+
result.get(sarifModelPerRun.toolName)?.set(k, count + v);
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
// Sort
|
|
27
|
+
for (const [k, v] of result) {
|
|
28
|
+
result.set(k, sortSecurityLevelMap(v));
|
|
29
|
+
}
|
|
30
|
+
return result;
|
|
31
|
+
}
|
|
32
|
+
groupByRunWithSecurityLevel() {
|
|
33
|
+
const result = new Array();
|
|
34
|
+
for (const sarifModelPerRun of this.sarifModelPerRunList) {
|
|
35
|
+
result.push({
|
|
36
|
+
toolName: sarifModelPerRun.toolName,
|
|
37
|
+
data: sarifModelPerRun.securityLevelMap,
|
|
38
|
+
});
|
|
39
|
+
}
|
|
40
|
+
return result;
|
|
41
|
+
}
|
|
42
|
+
groupByTotalWithSecurityLevel() {
|
|
43
|
+
const result = ImmutableMap().asMutable();
|
|
44
|
+
for (const sarifModelPerRun of this.sarifModelPerRunList) {
|
|
45
|
+
for (const [k, v] of sarifModelPerRun.securityLevelMap.entries()) {
|
|
46
|
+
const count = result.get(k) || 0;
|
|
47
|
+
result.set(k, count + v);
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
return sortSecurityLevelMap(result);
|
|
51
|
+
}
|
|
52
|
+
groupByToolNameWithSecuritySeverity() {
|
|
53
|
+
const result = new Map();
|
|
54
|
+
for (const sarifModelPerRun of this.sarifModelPerRunList) {
|
|
55
|
+
if (!result.has(sarifModelPerRun.toolName)) {
|
|
56
|
+
result.set(sarifModelPerRun.toolName, ImmutableMap().asMutable());
|
|
57
|
+
}
|
|
58
|
+
for (const [k, v] of sarifModelPerRun.securitySeverityMap.entries()) {
|
|
59
|
+
const count = result.get(sarifModelPerRun.toolName)?.get(k) || 0;
|
|
60
|
+
result.get(sarifModelPerRun.toolName)?.set(k, count + v);
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
// Sort
|
|
64
|
+
for (const [k, v] of result.entries()) {
|
|
65
|
+
result.set(k, sortSecuritySeverityMap(v));
|
|
66
|
+
}
|
|
67
|
+
return result;
|
|
68
|
+
}
|
|
69
|
+
groupByRunWithSecuritySeverity() {
|
|
70
|
+
const result = new Array();
|
|
71
|
+
for (const sarifModelPerRun of this.sarifModelPerRunList) {
|
|
72
|
+
result.push({
|
|
73
|
+
toolName: sarifModelPerRun.toolName,
|
|
74
|
+
data: sarifModelPerRun.securitySeverityMap,
|
|
75
|
+
});
|
|
76
|
+
}
|
|
77
|
+
return result;
|
|
78
|
+
}
|
|
79
|
+
groupByTotalWithSecuritySeverity() {
|
|
80
|
+
const result = ImmutableMap().asMutable();
|
|
81
|
+
for (const sarifModelPerRun of this.sarifModelPerRunList) {
|
|
82
|
+
for (const [k, v] of sarifModelPerRun.securitySeverityMap.entries()) {
|
|
83
|
+
const count = result.get(k) || 0;
|
|
84
|
+
result.set(k, count + v);
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
return sortSecuritySeverityMap(result);
|
|
88
|
+
}
|
|
89
|
+
listToolNames() {
|
|
90
|
+
const toolNames = new Set();
|
|
91
|
+
for (const sarifModelPerRun of this.sarifModelPerRunList) {
|
|
92
|
+
toolNames.add(sarifModelPerRun.toolName);
|
|
93
|
+
}
|
|
94
|
+
return toolNames;
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU2FyaWZNb2RlbFBlclNhcmlmLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL21vZGVsL1NhcmlmTW9kZWxQZXJTYXJpZi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsR0FBRyxJQUFJLFlBQVksRUFBRSxNQUFNLFdBQVcsQ0FBQTtBQUMvQyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQTtBQUVyRCxPQUFPLEVBQ0wsb0JBQW9CLEVBQ3BCLHVCQUF1QixFQUN4QixNQUFNLG9CQUFvQixDQUFDO0FBTzVCLE1BQU0sT0FBTyxrQkFBa0I7SUFDWixvQkFBb0IsQ0FBMEI7SUFFL0QsWUFBWSxLQUFlO1FBQ3pCLElBQUksQ0FBQyxvQkFBb0IsR0FBRyxJQUFJLEtBQUssRUFBb0IsQ0FBQTtRQUN6RCxJQUFJLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFBO0lBQzNCLENBQUM7SUFFTyxhQUFhLENBQUMsS0FBZTtRQUNuQyxLQUFLLE1BQU0sR0FBRyxJQUFJLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUM3QixJQUFJLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUFDLElBQUksZ0JBQWdCLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQTtRQUMzRCxDQUFDO0lBQ0gsQ0FBQztJQUVNLGdDQUFnQztRQUNyQyxNQUFNLE1BQU0sR0FBRyxJQUFJLEdBQUcsRUFBK0MsQ0FBQTtRQUNyRSxLQUFLLE1BQU0sZ0JBQWdCLElBQUksSUFBSSxDQUFDLG9CQUFvQixFQUFFLENBQUM7WUFDekQsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsZ0JBQWdCLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQztnQkFDM0MsTUFBTSxDQUFDLEdBQUcsQ0FBQyxnQkFBZ0IsQ0FBQyxRQUFRLEVBQUUsWUFBWSxFQUF5QixDQUFDLFNBQVMsRUFBRSxDQUFDLENBQUE7WUFDMUYsQ0FBQztZQUNELEtBQUssTUFB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
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
export declare enum SecuritySeverity {
|
|
2
|
+
Unknown = "Unknown",
|
|
3
|
+
None = "None",
|
|
4
|
+
Low = "Low",
|
|
5
|
+
Medium = "Medium",
|
|
6
|
+
High = "High",
|
|
7
|
+
Critical = "Critical"
|
|
8
|
+
}
|
|
9
|
+
export declare const SecuritySeverityOrder: SecuritySeverity[];
|
|
10
|
+
export declare enum SecurityLevel {
|
|
11
|
+
Unknown = "Unknown",
|
|
12
|
+
Note = "Note",
|
|
13
|
+
Warning = "Warning",
|
|
14
|
+
Error = "Error"
|
|
15
|
+
}
|
|
16
|
+
export declare const SecurityLevelOrder: SecurityLevel[];
|
|
17
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/model/types.ts"],"names":[],"mappings":"AAAA,oBAAY,gBAAgB;IAC1B,OAAO,YAAY;IACnB,IAAI,SAAS;IACb,GAAG,QAAQ;IACX,MAAM,WAAW;IACjB,IAAI,SAAS;IACb,QAAQ,aAAa;CACtB;AAED,eAAO,MAAM,qBAAqB,EAAE,gBAAgB,EAOnD,CAAA;AAED,oBAAY,aAAa;IACvB,OAAO,YAAY;IACnB,IAAI,SAAS;IACb,OAAO,YAAY;IACnB,KAAK,UAAU;CAChB;AAED,eAAO,MAAM,kBAAkB,EAAE,aAAa,EAK7C,CAAA"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
export var SecuritySeverity;
|
|
2
|
+
(function (SecuritySeverity) {
|
|
3
|
+
SecuritySeverity["Unknown"] = "Unknown";
|
|
4
|
+
SecuritySeverity["None"] = "None";
|
|
5
|
+
SecuritySeverity["Low"] = "Low";
|
|
6
|
+
SecuritySeverity["Medium"] = "Medium";
|
|
7
|
+
SecuritySeverity["High"] = "High";
|
|
8
|
+
SecuritySeverity["Critical"] = "Critical";
|
|
9
|
+
})(SecuritySeverity || (SecuritySeverity = {}));
|
|
10
|
+
export const SecuritySeverityOrder = [
|
|
11
|
+
SecuritySeverity.Critical,
|
|
12
|
+
SecuritySeverity.High,
|
|
13
|
+
SecuritySeverity.Medium,
|
|
14
|
+
SecuritySeverity.Low,
|
|
15
|
+
SecuritySeverity.None,
|
|
16
|
+
SecuritySeverity.Unknown
|
|
17
|
+
];
|
|
18
|
+
export var SecurityLevel;
|
|
19
|
+
(function (SecurityLevel) {
|
|
20
|
+
SecurityLevel["Unknown"] = "Unknown";
|
|
21
|
+
SecurityLevel["Note"] = "Note";
|
|
22
|
+
SecurityLevel["Warning"] = "Warning";
|
|
23
|
+
SecurityLevel["Error"] = "Error";
|
|
24
|
+
})(SecurityLevel || (SecurityLevel = {}));
|
|
25
|
+
export const SecurityLevelOrder = [
|
|
26
|
+
SecurityLevel.Error,
|
|
27
|
+
SecurityLevel.Warning,
|
|
28
|
+
SecurityLevel.Note,
|
|
29
|
+
SecurityLevel.Unknown
|
|
30
|
+
];
|
|
31
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbW9kZWwvdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxDQUFOLElBQVksZ0JBT1g7QUFQRCxXQUFZLGdCQUFnQjtJQUMxQix1Q0FBbUIsQ0FBQTtJQUNuQixpQ0FBYSxDQUFBO0lBQ2IsK0JBQVcsQ0FBQTtJQUNYLHFDQUFpQixDQUFBO0lBQ2pCLGlDQUFhLENBQUE7SUFDYix5Q0FBcUIsQ0FBQTtBQUN2QixDQUFDLEVBUFcsZ0JBQWdCLEtBQWhCLGdCQUFnQixRQU8zQjtBQUVELE1BQU0sQ0FBQyxNQUFNLHFCQUFxQixHQUF1QjtJQUN2RCxnQkFBZ0IsQ0FBQyxRQUFRO0lBQ3pCLGdCQUFnQixDQUFDLElBQUk7SUFDckIsZ0JBQWdCLENBQUMsTUFBTTtJQUN2QixnQkFBZ0IsQ0FBQyxHQUFHO0lBQ3BCLGdCQUFnQixDQUFDLElBQUk7SUFDckIsZ0JBQWdCLENBQUMsT0FBTztDQUN6QixDQUFBO0FBRUQsTUFBTSxDQUFOLElBQVksYUFLWDtBQUxELFdBQVksYUFBYTtJQUN2QixvQ0FBbUIsQ0FBQTtJQUNuQiw4QkFBYSxDQUFBO0lBQ2Isb0NBQW1CLENBQUE7SUFDbkIsZ0NBQWUsQ0FBQTtBQUNqQixDQUFDLEVBTFcsYUFBYSxLQUFiLGFBQWEsUUFLeEI7QUFFRCxNQUFNLENBQUMsTUFBTSxrQkFBa0IsR0FBb0I7SUFDakQsYUFBYSxDQUFDLEtBQUs7SUFDbkIsYUFBYSxDQUFDLE9BQU87SUFDckIsYUFBYSxDQUFDLElBQUk7SUFDbEIsYUFBYSxDQUFDLE9BQU87Q0FDdEIsQ0FBQSJ9
|