@security-alert/sarif-to-markdown 1.6.0 → 1.10.0
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.
|
@@ -33,6 +33,14 @@ export declare type sarifFormatterOptions = {
|
|
|
33
33
|
* Should the markdown include suppressed findings, defaults to true
|
|
34
34
|
*/
|
|
35
35
|
suppressedResults?: boolean;
|
|
36
|
+
/**
|
|
37
|
+
* Should the markdown include rule details or tool details at all
|
|
38
|
+
*/
|
|
39
|
+
simple?: boolean;
|
|
40
|
+
/**
|
|
41
|
+
* Which severities should be included ?
|
|
42
|
+
*/
|
|
43
|
+
severities?: readonly string[];
|
|
36
44
|
};
|
|
37
45
|
declare type sarifToMarkdownResult = {
|
|
38
46
|
title?: string;
|
package/lib/sarif-to-markdown.js
CHANGED
|
@@ -26,6 +26,19 @@ function escapeMarkdown(strings) {
|
|
|
26
26
|
}
|
|
27
27
|
});
|
|
28
28
|
}
|
|
29
|
+
function createRuleInfo(run) {
|
|
30
|
+
var _a, _b;
|
|
31
|
+
return escapeMarkdown(templateObject_1 || (templateObject_1 = __makeTemplateObject(["\n## Rules information\n<!-- Rule Info -->\n<details><summary>Rules details</summary>\n", ""], ["\n## Rules information\n<!-- Rule Info -->\n<details><summary>Rules details</summary>\n", ""])), (_b = (_a = run.tool.driver) === null || _a === void 0 ? void 0 : _a.rules) === null || _b === void 0 ? void 0 : _b.map(function (rule) {
|
|
32
|
+
var _a, _b;
|
|
33
|
+
var severity = rule.properties ? (_a = rule.properties) === null || _a === void 0 ? void 0 : _a["problem.severity"] : "";
|
|
34
|
+
// rule description
|
|
35
|
+
return "\n\n - ".concat(rule.id, " [").concat(severity, "] \n\n > ").concat((_b = rule.shortDescription) === null || _b === void 0 ? void 0 : _b.text, "\n");
|
|
36
|
+
}));
|
|
37
|
+
}
|
|
38
|
+
function createToolInfo(run) {
|
|
39
|
+
var _a, _b, _c;
|
|
40
|
+
return "\n## Tool information\n- Name: ".concat((_a = run.tool.driver) === null || _a === void 0 ? void 0 : _a.name, "\n- Organization: ").concat((_b = run.tool.driver) === null || _b === void 0 ? void 0 : _b.organization, "\n- Version: ").concat((_c = run.tool.driver) === null || _c === void 0 ? void 0 : _c.semanticVersion, "\n");
|
|
41
|
+
}
|
|
29
42
|
var createCodeURL = function (result, options) {
|
|
30
43
|
var _a, _b;
|
|
31
44
|
var githubHost = (_a = options.githubHost) !== null && _a !== void 0 ? _a : "https://github.com";
|
|
@@ -49,28 +62,105 @@ var createCodeURL = function (result, options) {
|
|
|
49
62
|
return (0, url_join_1.default)(githubHost, options.owner, options.repo, "blob/".concat(options.branch), options.sourceRoot, "".concat(physicalLocation.artifactLocation.uri, "#").concat(lineNumber));
|
|
50
63
|
});
|
|
51
64
|
};
|
|
65
|
+
function groupBy(arr, criteria) {
|
|
66
|
+
var newObj = arr.reduce(function (acc, currentValue) {
|
|
67
|
+
if (!acc[currentValue[criteria]]) {
|
|
68
|
+
acc[currentValue[criteria]] = [];
|
|
69
|
+
}
|
|
70
|
+
acc[currentValue[criteria]].push(currentValue);
|
|
71
|
+
return acc;
|
|
72
|
+
}, {});
|
|
73
|
+
return newObj;
|
|
74
|
+
}
|
|
75
|
+
function createGroupedResultsMarkdown(groupedResults, run, options) {
|
|
76
|
+
var _a, _b, _c, _d;
|
|
77
|
+
var groupedResultsMarkdown = "";
|
|
78
|
+
var _loop_1 = function (rule) {
|
|
79
|
+
var ruleMatch = run.tool.driver.rules.filter(function (r) {
|
|
80
|
+
return r.id == rule;
|
|
81
|
+
});
|
|
82
|
+
var severityLevel = (_c = (_b = (_a = ruleMatch[0].defaultConfiguration) === null || _a === void 0 ? void 0 : _a.level) === null || _b === void 0 ? void 0 : _b.toUpperCase()) !== null && _c !== void 0 ? _c : "";
|
|
83
|
+
var helpUri = ruleMatch[0].helpUri !== undefined ? (_d = "[[HELP LINK](" + ruleMatch[0].helpUri + ")]") !== null && _d !== void 0 ? _d : "" : "";
|
|
84
|
+
groupedResultsMarkdown +=
|
|
85
|
+
"- **".concat("[" + severityLevel + "]** **[" + rule + "]** " + helpUri, " `").concat(groupedResults[rule][0] ? (0, markdown_escape_1.default)(groupedResults[rule][0].message.text) : "", "`") + "\n";
|
|
86
|
+
for (var _i = 0, _e = groupedResults[rule]; _i < _e.length; _i++) {
|
|
87
|
+
var result = _e[_i];
|
|
88
|
+
var properResult = result;
|
|
89
|
+
if (properResult.suppressions === undefined) {
|
|
90
|
+
groupedResultsMarkdown += " - " + createCodeURL(result, options) + "\n";
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
};
|
|
94
|
+
for (var rule in groupedResults) {
|
|
95
|
+
_loop_1(rule);
|
|
96
|
+
}
|
|
97
|
+
return groupedResultsMarkdown;
|
|
98
|
+
}
|
|
99
|
+
function createGroupedSuppressedResultsMarkdown(groupedResults, run, options) {
|
|
100
|
+
var _a, _b, _c, _d;
|
|
101
|
+
var groupedSuppressedResultsMD = "";
|
|
102
|
+
var suppressedCounter = 0;
|
|
103
|
+
var _loop_2 = function (rule) {
|
|
104
|
+
var groupContainsSuppressed = groupedResults[rule].filter(function (r) { return r.suppressions !== undefined; }).length > 0;
|
|
105
|
+
if (groupContainsSuppressed) {
|
|
106
|
+
var ruleMatch = run.tool.driver.rules.filter(function (r) {
|
|
107
|
+
return r.id == rule;
|
|
108
|
+
});
|
|
109
|
+
var helpUri = ruleMatch[0].helpUri !== undefined ? (_a = "[[HELP LINK](" + ruleMatch[0].helpUri + ")]") !== null && _a !== void 0 ? _a : "" : "";
|
|
110
|
+
var severityLevel = (_d = (_c = (_b = ruleMatch[0].defaultConfiguration) === null || _b === void 0 ? void 0 : _b.level) === null || _c === void 0 ? void 0 : _c.toUpperCase()) !== null && _d !== void 0 ? _d : "";
|
|
111
|
+
groupedSuppressedResultsMD +=
|
|
112
|
+
"- **".concat("[" + severityLevel + "]** **[" + rule + "]** " + helpUri, " `").concat(groupedResults[rule][0] ? (0, markdown_escape_1.default)(groupedResults[rule][0].message.text) : "", "`") + "\n";
|
|
113
|
+
for (var _i = 0, _e = groupedResults[rule]; _i < _e.length; _i++) {
|
|
114
|
+
var result = _e[_i];
|
|
115
|
+
var properResult = result;
|
|
116
|
+
if (properResult.suppressions !== undefined) {
|
|
117
|
+
suppressedCounter += 1;
|
|
118
|
+
groupedSuppressedResultsMD += " - " + createCodeURL(result, options) + "\n";
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
};
|
|
123
|
+
for (var rule in groupedResults) {
|
|
124
|
+
_loop_2(rule);
|
|
125
|
+
}
|
|
126
|
+
return { groupedSuppressedResultsMD: groupedSuppressedResultsMD, suppressedCounter: suppressedCounter };
|
|
127
|
+
}
|
|
128
|
+
function filterGroupedResultsBySeverity(groupedResults, severities, run) {
|
|
129
|
+
var _a, _b;
|
|
130
|
+
// 1st step, go through run and find rule severities
|
|
131
|
+
// 2nd step, filter groupedResults and remove rulegroups that don't match the severities filter
|
|
132
|
+
var ruleSeverityMapping = new Map();
|
|
133
|
+
(_b = (_a = run.tool.driver) === null || _a === void 0 ? void 0 : _a.rules) === null || _b === void 0 ? void 0 : _b.forEach(function (rule) {
|
|
134
|
+
var _a, _b;
|
|
135
|
+
var severity = (_b = (_a = rule.defaultConfiguration) === null || _a === void 0 ? void 0 : _a.level) !== null && _b !== void 0 ? _b : "";
|
|
136
|
+
ruleSeverityMapping.set(rule.id, severity);
|
|
137
|
+
});
|
|
138
|
+
var filteredResults = Object.keys(groupedResults)
|
|
139
|
+
.filter(function (rule) {
|
|
140
|
+
var _a;
|
|
141
|
+
return severities.includes((_a = ruleSeverityMapping.get(rule)) !== null && _a !== void 0 ? _a : "unknownseverity");
|
|
142
|
+
})
|
|
143
|
+
.reduce(function (obj, key) {
|
|
144
|
+
obj[key] = groupedResults[key];
|
|
145
|
+
return obj;
|
|
146
|
+
}, {});
|
|
147
|
+
return filteredResults;
|
|
148
|
+
}
|
|
52
149
|
var sarifToMarkdown = function (options) {
|
|
150
|
+
var _a;
|
|
53
151
|
var suppressedResultsFlag = options.suppressedResults !== undefined ? options.suppressedResults : true;
|
|
152
|
+
var simpleMode = options.simple !== undefined ? options.simple : false;
|
|
153
|
+
var severities = (_a = options.severities) !== null && _a !== void 0 ? _a : ["warning", "error", "note", "none"];
|
|
54
154
|
return function (sarifLog) {
|
|
55
155
|
return sarifLog.runs.map(function (run) {
|
|
56
|
-
var _a, _b
|
|
156
|
+
var _a, _b;
|
|
57
157
|
var title = options.title ? "# ".concat(options.title, "\n") : "# Report";
|
|
58
|
-
var toolInfo =
|
|
59
|
-
|
|
60
|
-
// Rule info
|
|
61
|
-
// Vulnerability info
|
|
62
|
-
// ## Results
|
|
63
|
-
// Result(s)
|
|
64
|
-
/**
|
|
65
|
-
* # Rule Info
|
|
66
|
-
*/
|
|
67
|
-
var ruleInfo = escapeMarkdown(templateObject_1 || (templateObject_1 = __makeTemplateObject(["\n## Rules information\n<!-- Rule Info -->\n<details><summary>Rules details</summary>\n\n", "\n "], ["\n## Rules information\n<!-- Rule Info -->\n<details><summary>Rules details</summary>\n\n", "\n "])), (_e = (_d = run.tool.driver) === null || _d === void 0 ? void 0 : _d.rules) === null || _e === void 0 ? void 0 : _e.map(function (rule) {
|
|
68
|
-
var _a, _b;
|
|
69
|
-
var severity = rule.properties ? (_a = rule.properties) === null || _a === void 0 ? void 0 : _a["problem.severity"] : "";
|
|
70
|
-
// rule description
|
|
71
|
-
return "- ".concat(rule.id, " [").concat(severity, "]\n\n> ").concat((_b = rule.shortDescription) === null || _b === void 0 ? void 0 : _b.text);
|
|
72
|
-
}));
|
|
158
|
+
var toolInfo = simpleMode ? "" : createToolInfo(run);
|
|
159
|
+
var ruleInfo = simpleMode ? "" : createRuleInfo(run);
|
|
73
160
|
var ruleDetails = "<details><summary>Details</summary>\n<pre>".concat(JSON.stringify(run.tool, null, 4), "</pre></details>\n");
|
|
161
|
+
var groupedResults = groupBy(run.results, "ruleId");
|
|
162
|
+
var filteredResults = filterGroupedResultsBySeverity(groupedResults, severities, run);
|
|
163
|
+
var groupedResultsMarkdown = createGroupedResultsMarkdown(filteredResults, run, options);
|
|
74
164
|
/* Results
|
|
75
165
|
- rule id
|
|
76
166
|
- message
|
|
@@ -79,28 +169,15 @@ var sarifToMarkdown = function (options) {
|
|
|
79
169
|
If pass the scan, results is empty array
|
|
80
170
|
*/
|
|
81
171
|
var results = run.results && run.results.length > 0
|
|
82
|
-
? "\n## Results\n\n".concat(
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
: "- **".concat(result.ruleId, "**: ").concat((0, markdown_escape_1.default)(result.message.text)) +
|
|
86
|
-
"\n\n" +
|
|
87
|
-
createCodeURL(result, options).join("\n") +
|
|
88
|
-
"\n";
|
|
89
|
-
}).join("\n"), "\n")
|
|
90
|
-
: "\n## Results\n\nNo Error\n\n";
|
|
172
|
+
? "\n## Results\n\n".concat(groupedResultsMarkdown, "\n")
|
|
173
|
+
: "\n## Results\n\nNothing here.\n\n";
|
|
174
|
+
var _c = createGroupedSuppressedResultsMarkdown(filteredResults, run, options), groupedSuppressedResultsMD = _c.groupedSuppressedResultsMD, suppressedCounter = _c.suppressedCounter;
|
|
91
175
|
// careful, double ternary... first check if we should include suppressedresults (return empty string)
|
|
92
176
|
// then check if there are results, if none, return default string
|
|
93
177
|
var suppressedResultsText = suppressedResultsFlag
|
|
94
|
-
? run.results &&
|
|
95
|
-
? "\n## Suppressed results\n\n".concat(
|
|
96
|
-
|
|
97
|
-
? "- **".concat(result.ruleId, "**: ").concat((0, markdown_escape_1.default)(result.message.text)) +
|
|
98
|
-
"\n\n" +
|
|
99
|
-
createCodeURL(result, options).join("\n") +
|
|
100
|
-
"\n"
|
|
101
|
-
: "";
|
|
102
|
-
}).join("\n"), "\n")
|
|
103
|
-
: "\n## Results\n\nNo suppressed issues\n\n"
|
|
178
|
+
? run.results && suppressedCounter > 0
|
|
179
|
+
? "\n## Suppressed results\n\n".concat(groupedSuppressedResultsMD, "\n")
|
|
180
|
+
: "\n## Suppressed Results\n\nNothing here.\n\n"
|
|
104
181
|
: "";
|
|
105
182
|
if (options.details) {
|
|
106
183
|
return {
|
|
@@ -113,12 +190,12 @@ var sarifToMarkdown = function (options) {
|
|
|
113
190
|
"\n" +
|
|
114
191
|
ruleDetails +
|
|
115
192
|
toolInfo,
|
|
116
|
-
hasMessages: ((
|
|
193
|
+
hasMessages: ((_a = run.results) === null || _a === void 0 ? void 0 : _a.length) !== 0
|
|
117
194
|
};
|
|
118
195
|
}
|
|
119
196
|
return {
|
|
120
197
|
body: title + results + "\n" + suppressedResultsText + "\n" + ruleInfo + "\n" + toolInfo,
|
|
121
|
-
hasMessages: ((
|
|
198
|
+
hasMessages: ((_b = run.results) === null || _b === void 0 ? void 0 : _b.length) !== 0
|
|
122
199
|
};
|
|
123
200
|
});
|
|
124
201
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sarif-to-markdown.js","sourceRoot":"","sources":["../src/sarif-to-markdown.ts"],"names":[],"mappings":";;;;;;;;;;AACA,aAAa;AACb,oEAAqC;AACrC,sDAA+B;AAE/B,SAAS,cAAc,CAAC,OAA6B;IAAE,gBAAgB;SAAhB,UAAgB,EAAhB,qBAAgB,EAAhB,IAAgB;QAAhB,+BAAgB;;IACnE,OAAO,OAAO,CAAC,MAAM,CAAC,UAAC,MAAM,EAAE,GAAG,EAAE,CAAC;QACjC,IAAM,KAAK,GAAG,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;QAC5B,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;YAC3B,OAAO,MAAM,GAAG,IAAA,yBAAM,EAAC,KAAK,CAAC,GAAG,GAAG,CAAC;SACvC;aAAM;YACH,OAAO,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC;SACvC;IACL,CAAC,CAAC,CAAC;AACP,CAAC;AAED,IAAM,aAAa,GAAG,UAAC,MAAc,EAAE,OAA8B;;IACjE,IAAM,UAAU,GAAG,MAAA,OAAO,CAAC,UAAU,mCAAI,oBAAoB,CAAC;IAC9D,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE;QAClC,OAAO,EAAE,CAAC;KACb;IACD,OAAO,MAAA,MAAM,CAAC,SAAS,0CAAE,OAAO,CAAC,UAAC,QAAa;QAC3C,IAAI,CAAC,QAAQ,CAAC,gBAAgB,EAAE;YAC5B,OAAO,EAAE,CAAC;SACb;QACD,IAAM,gBAAgB,GAAG,QAAQ,CAAC,gBAAgB,CAAC;QACnD,IAAI,CAAC,gBAAgB,CAAC,gBAAgB,EAAE;YACpC,OAAO,EAAE,CAAC;SACb;QACD,IAAI,CAAC,gBAAgB,CAAC,MAAM,EAAE;YAC1B,OAAO,EAAE,CAAC;SACb;QACD,IAAM,UAAU,GACZ,gBAAgB,CAAC,MAAM,CAAC,OAAO,KAAK,SAAS;YACzC,CAAC,CAAC,WAAI,gBAAgB,CAAC,MAAM,CAAC,SAAS,cAAI,gBAAgB,CAAC,MAAM,CAAC,OAAO,CAAE;YAC5E,CAAC,CAAC,WAAI,gBAAgB,CAAC,MAAM,CAAC,SAAS,CAAE,CAAC;QAClD,OAAO,IAAA,kBAAO,EACV,UAAU,EACV,OAAO,CAAC,KAAK,EACb,OAAO,CAAC,IAAI,EACZ,eAAQ,OAAO,CAAC,MAAM,CAAE,EACxB,OAAO,CAAC,UAAU,EAClB,UAAG,gBAAgB,CAAC,gBAAgB,CAAC,GAAG,cAAI,UAAU,CAAE,CAC3D,CAAC;IACN,CAAC,CAAC,CAAC;AACP,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"sarif-to-markdown.js","sourceRoot":"","sources":["../src/sarif-to-markdown.ts"],"names":[],"mappings":"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"}
|
|
@@ -33,6 +33,14 @@ export declare type sarifFormatterOptions = {
|
|
|
33
33
|
* Should the markdown include suppressed findings, defaults to true
|
|
34
34
|
*/
|
|
35
35
|
suppressedResults?: boolean;
|
|
36
|
+
/**
|
|
37
|
+
* Should the markdown include rule details or tool details at all
|
|
38
|
+
*/
|
|
39
|
+
simple?: boolean;
|
|
40
|
+
/**
|
|
41
|
+
* Which severities should be included ?
|
|
42
|
+
*/
|
|
43
|
+
severities?: readonly string[];
|
|
36
44
|
};
|
|
37
45
|
declare type sarifToMarkdownResult = {
|
|
38
46
|
title?: string;
|
|
@@ -20,6 +20,19 @@ function escapeMarkdown(strings) {
|
|
|
20
20
|
}
|
|
21
21
|
});
|
|
22
22
|
}
|
|
23
|
+
function createRuleInfo(run) {
|
|
24
|
+
var _a, _b;
|
|
25
|
+
return escapeMarkdown(templateObject_1 || (templateObject_1 = __makeTemplateObject(["\n## Rules information\n<!-- Rule Info -->\n<details><summary>Rules details</summary>\n", ""], ["\n## Rules information\n<!-- Rule Info -->\n<details><summary>Rules details</summary>\n", ""])), (_b = (_a = run.tool.driver) === null || _a === void 0 ? void 0 : _a.rules) === null || _b === void 0 ? void 0 : _b.map(function (rule) {
|
|
26
|
+
var _a, _b;
|
|
27
|
+
var severity = rule.properties ? (_a = rule.properties) === null || _a === void 0 ? void 0 : _a["problem.severity"] : "";
|
|
28
|
+
// rule description
|
|
29
|
+
return "\n\n - ".concat(rule.id, " [").concat(severity, "] \n\n > ").concat((_b = rule.shortDescription) === null || _b === void 0 ? void 0 : _b.text, "\n");
|
|
30
|
+
}));
|
|
31
|
+
}
|
|
32
|
+
function createToolInfo(run) {
|
|
33
|
+
var _a, _b, _c;
|
|
34
|
+
return "\n## Tool information\n- Name: ".concat((_a = run.tool.driver) === null || _a === void 0 ? void 0 : _a.name, "\n- Organization: ").concat((_b = run.tool.driver) === null || _b === void 0 ? void 0 : _b.organization, "\n- Version: ").concat((_c = run.tool.driver) === null || _c === void 0 ? void 0 : _c.semanticVersion, "\n");
|
|
35
|
+
}
|
|
23
36
|
var createCodeURL = function (result, options) {
|
|
24
37
|
var _a, _b;
|
|
25
38
|
var githubHost = (_a = options.githubHost) !== null && _a !== void 0 ? _a : "https://github.com";
|
|
@@ -43,28 +56,105 @@ var createCodeURL = function (result, options) {
|
|
|
43
56
|
return urlJoin(githubHost, options.owner, options.repo, "blob/".concat(options.branch), options.sourceRoot, "".concat(physicalLocation.artifactLocation.uri, "#").concat(lineNumber));
|
|
44
57
|
});
|
|
45
58
|
};
|
|
59
|
+
function groupBy(arr, criteria) {
|
|
60
|
+
var newObj = arr.reduce(function (acc, currentValue) {
|
|
61
|
+
if (!acc[currentValue[criteria]]) {
|
|
62
|
+
acc[currentValue[criteria]] = [];
|
|
63
|
+
}
|
|
64
|
+
acc[currentValue[criteria]].push(currentValue);
|
|
65
|
+
return acc;
|
|
66
|
+
}, {});
|
|
67
|
+
return newObj;
|
|
68
|
+
}
|
|
69
|
+
function createGroupedResultsMarkdown(groupedResults, run, options) {
|
|
70
|
+
var _a, _b, _c, _d;
|
|
71
|
+
var groupedResultsMarkdown = "";
|
|
72
|
+
var _loop_1 = function (rule) {
|
|
73
|
+
var ruleMatch = run.tool.driver.rules.filter(function (r) {
|
|
74
|
+
return r.id == rule;
|
|
75
|
+
});
|
|
76
|
+
var severityLevel = (_c = (_b = (_a = ruleMatch[0].defaultConfiguration) === null || _a === void 0 ? void 0 : _a.level) === null || _b === void 0 ? void 0 : _b.toUpperCase()) !== null && _c !== void 0 ? _c : "";
|
|
77
|
+
var helpUri = ruleMatch[0].helpUri !== undefined ? (_d = "[[HELP LINK](" + ruleMatch[0].helpUri + ")]") !== null && _d !== void 0 ? _d : "" : "";
|
|
78
|
+
groupedResultsMarkdown +=
|
|
79
|
+
"- **".concat("[" + severityLevel + "]** **[" + rule + "]** " + helpUri, " `").concat(groupedResults[rule][0] ? escape(groupedResults[rule][0].message.text) : "", "`") + "\n";
|
|
80
|
+
for (var _i = 0, _e = groupedResults[rule]; _i < _e.length; _i++) {
|
|
81
|
+
var result = _e[_i];
|
|
82
|
+
var properResult = result;
|
|
83
|
+
if (properResult.suppressions === undefined) {
|
|
84
|
+
groupedResultsMarkdown += " - " + createCodeURL(result, options) + "\n";
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
};
|
|
88
|
+
for (var rule in groupedResults) {
|
|
89
|
+
_loop_1(rule);
|
|
90
|
+
}
|
|
91
|
+
return groupedResultsMarkdown;
|
|
92
|
+
}
|
|
93
|
+
function createGroupedSuppressedResultsMarkdown(groupedResults, run, options) {
|
|
94
|
+
var _a, _b, _c, _d;
|
|
95
|
+
var groupedSuppressedResultsMD = "";
|
|
96
|
+
var suppressedCounter = 0;
|
|
97
|
+
var _loop_2 = function (rule) {
|
|
98
|
+
var groupContainsSuppressed = groupedResults[rule].filter(function (r) { return r.suppressions !== undefined; }).length > 0;
|
|
99
|
+
if (groupContainsSuppressed) {
|
|
100
|
+
var ruleMatch = run.tool.driver.rules.filter(function (r) {
|
|
101
|
+
return r.id == rule;
|
|
102
|
+
});
|
|
103
|
+
var helpUri = ruleMatch[0].helpUri !== undefined ? (_a = "[[HELP LINK](" + ruleMatch[0].helpUri + ")]") !== null && _a !== void 0 ? _a : "" : "";
|
|
104
|
+
var severityLevel = (_d = (_c = (_b = ruleMatch[0].defaultConfiguration) === null || _b === void 0 ? void 0 : _b.level) === null || _c === void 0 ? void 0 : _c.toUpperCase()) !== null && _d !== void 0 ? _d : "";
|
|
105
|
+
groupedSuppressedResultsMD +=
|
|
106
|
+
"- **".concat("[" + severityLevel + "]** **[" + rule + "]** " + helpUri, " `").concat(groupedResults[rule][0] ? escape(groupedResults[rule][0].message.text) : "", "`") + "\n";
|
|
107
|
+
for (var _i = 0, _e = groupedResults[rule]; _i < _e.length; _i++) {
|
|
108
|
+
var result = _e[_i];
|
|
109
|
+
var properResult = result;
|
|
110
|
+
if (properResult.suppressions !== undefined) {
|
|
111
|
+
suppressedCounter += 1;
|
|
112
|
+
groupedSuppressedResultsMD += " - " + createCodeURL(result, options) + "\n";
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
};
|
|
117
|
+
for (var rule in groupedResults) {
|
|
118
|
+
_loop_2(rule);
|
|
119
|
+
}
|
|
120
|
+
return { groupedSuppressedResultsMD: groupedSuppressedResultsMD, suppressedCounter: suppressedCounter };
|
|
121
|
+
}
|
|
122
|
+
function filterGroupedResultsBySeverity(groupedResults, severities, run) {
|
|
123
|
+
var _a, _b;
|
|
124
|
+
// 1st step, go through run and find rule severities
|
|
125
|
+
// 2nd step, filter groupedResults and remove rulegroups that don't match the severities filter
|
|
126
|
+
var ruleSeverityMapping = new Map();
|
|
127
|
+
(_b = (_a = run.tool.driver) === null || _a === void 0 ? void 0 : _a.rules) === null || _b === void 0 ? void 0 : _b.forEach(function (rule) {
|
|
128
|
+
var _a, _b;
|
|
129
|
+
var severity = (_b = (_a = rule.defaultConfiguration) === null || _a === void 0 ? void 0 : _a.level) !== null && _b !== void 0 ? _b : "";
|
|
130
|
+
ruleSeverityMapping.set(rule.id, severity);
|
|
131
|
+
});
|
|
132
|
+
var filteredResults = Object.keys(groupedResults)
|
|
133
|
+
.filter(function (rule) {
|
|
134
|
+
var _a;
|
|
135
|
+
return severities.includes((_a = ruleSeverityMapping.get(rule)) !== null && _a !== void 0 ? _a : "unknownseverity");
|
|
136
|
+
})
|
|
137
|
+
.reduce(function (obj, key) {
|
|
138
|
+
obj[key] = groupedResults[key];
|
|
139
|
+
return obj;
|
|
140
|
+
}, {});
|
|
141
|
+
return filteredResults;
|
|
142
|
+
}
|
|
46
143
|
export var sarifToMarkdown = function (options) {
|
|
144
|
+
var _a;
|
|
47
145
|
var suppressedResultsFlag = options.suppressedResults !== undefined ? options.suppressedResults : true;
|
|
146
|
+
var simpleMode = options.simple !== undefined ? options.simple : false;
|
|
147
|
+
var severities = (_a = options.severities) !== null && _a !== void 0 ? _a : ["warning", "error", "note", "none"];
|
|
48
148
|
return function (sarifLog) {
|
|
49
149
|
return sarifLog.runs.map(function (run) {
|
|
50
|
-
var _a, _b
|
|
150
|
+
var _a, _b;
|
|
51
151
|
var title = options.title ? "# ".concat(options.title, "\n") : "# Report";
|
|
52
|
-
var toolInfo =
|
|
53
|
-
|
|
54
|
-
// Rule info
|
|
55
|
-
// Vulnerability info
|
|
56
|
-
// ## Results
|
|
57
|
-
// Result(s)
|
|
58
|
-
/**
|
|
59
|
-
* # Rule Info
|
|
60
|
-
*/
|
|
61
|
-
var ruleInfo = escapeMarkdown(templateObject_1 || (templateObject_1 = __makeTemplateObject(["\n## Rules information\n<!-- Rule Info -->\n<details><summary>Rules details</summary>\n\n", "\n "], ["\n## Rules information\n<!-- Rule Info -->\n<details><summary>Rules details</summary>\n\n", "\n "])), (_e = (_d = run.tool.driver) === null || _d === void 0 ? void 0 : _d.rules) === null || _e === void 0 ? void 0 : _e.map(function (rule) {
|
|
62
|
-
var _a, _b;
|
|
63
|
-
var severity = rule.properties ? (_a = rule.properties) === null || _a === void 0 ? void 0 : _a["problem.severity"] : "";
|
|
64
|
-
// rule description
|
|
65
|
-
return "- ".concat(rule.id, " [").concat(severity, "]\n\n> ").concat((_b = rule.shortDescription) === null || _b === void 0 ? void 0 : _b.text);
|
|
66
|
-
}));
|
|
152
|
+
var toolInfo = simpleMode ? "" : createToolInfo(run);
|
|
153
|
+
var ruleInfo = simpleMode ? "" : createRuleInfo(run);
|
|
67
154
|
var ruleDetails = "<details><summary>Details</summary>\n<pre>".concat(JSON.stringify(run.tool, null, 4), "</pre></details>\n");
|
|
155
|
+
var groupedResults = groupBy(run.results, "ruleId");
|
|
156
|
+
var filteredResults = filterGroupedResultsBySeverity(groupedResults, severities, run);
|
|
157
|
+
var groupedResultsMarkdown = createGroupedResultsMarkdown(filteredResults, run, options);
|
|
68
158
|
/* Results
|
|
69
159
|
- rule id
|
|
70
160
|
- message
|
|
@@ -73,28 +163,15 @@ export var sarifToMarkdown = function (options) {
|
|
|
73
163
|
If pass the scan, results is empty array
|
|
74
164
|
*/
|
|
75
165
|
var results = run.results && run.results.length > 0
|
|
76
|
-
? "\n## Results\n\n".concat(
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
: "- **".concat(result.ruleId, "**: ").concat(escape(result.message.text)) +
|
|
80
|
-
"\n\n" +
|
|
81
|
-
createCodeURL(result, options).join("\n") +
|
|
82
|
-
"\n";
|
|
83
|
-
}).join("\n"), "\n")
|
|
84
|
-
: "\n## Results\n\nNo Error\n\n";
|
|
166
|
+
? "\n## Results\n\n".concat(groupedResultsMarkdown, "\n")
|
|
167
|
+
: "\n## Results\n\nNothing here.\n\n";
|
|
168
|
+
var _c = createGroupedSuppressedResultsMarkdown(filteredResults, run, options), groupedSuppressedResultsMD = _c.groupedSuppressedResultsMD, suppressedCounter = _c.suppressedCounter;
|
|
85
169
|
// careful, double ternary... first check if we should include suppressedresults (return empty string)
|
|
86
170
|
// then check if there are results, if none, return default string
|
|
87
171
|
var suppressedResultsText = suppressedResultsFlag
|
|
88
|
-
? run.results &&
|
|
89
|
-
? "\n## Suppressed results\n\n".concat(
|
|
90
|
-
|
|
91
|
-
? "- **".concat(result.ruleId, "**: ").concat(escape(result.message.text)) +
|
|
92
|
-
"\n\n" +
|
|
93
|
-
createCodeURL(result, options).join("\n") +
|
|
94
|
-
"\n"
|
|
95
|
-
: "";
|
|
96
|
-
}).join("\n"), "\n")
|
|
97
|
-
: "\n## Results\n\nNo suppressed issues\n\n"
|
|
172
|
+
? run.results && suppressedCounter > 0
|
|
173
|
+
? "\n## Suppressed results\n\n".concat(groupedSuppressedResultsMD, "\n")
|
|
174
|
+
: "\n## Suppressed Results\n\nNothing here.\n\n"
|
|
98
175
|
: "";
|
|
99
176
|
if (options.details) {
|
|
100
177
|
return {
|
|
@@ -107,12 +184,12 @@ export var sarifToMarkdown = function (options) {
|
|
|
107
184
|
"\n" +
|
|
108
185
|
ruleDetails +
|
|
109
186
|
toolInfo,
|
|
110
|
-
hasMessages: ((
|
|
187
|
+
hasMessages: ((_a = run.results) === null || _a === void 0 ? void 0 : _a.length) !== 0
|
|
111
188
|
};
|
|
112
189
|
}
|
|
113
190
|
return {
|
|
114
191
|
body: title + results + "\n" + suppressedResultsText + "\n" + ruleInfo + "\n" + toolInfo,
|
|
115
|
-
hasMessages: ((
|
|
192
|
+
hasMessages: ((_b = run.results) === null || _b === void 0 ? void 0 : _b.length) !== 0
|
|
116
193
|
};
|
|
117
194
|
});
|
|
118
195
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sarif-to-markdown.js","sourceRoot":"","sources":["../src/sarif-to-markdown.ts"],"names":[],"mappings":";;;;AACA,aAAa;AACb,OAAO,MAAM,MAAM,iBAAiB,CAAC;AACrC,OAAO,OAAO,MAAM,UAAU,CAAC;AAE/B,SAAS,cAAc,CAAC,OAA6B;IAAE,gBAAgB;SAAhB,UAAgB,EAAhB,qBAAgB,EAAhB,IAAgB;QAAhB,+BAAgB;;IACnE,OAAO,OAAO,CAAC,MAAM,CAAC,UAAC,MAAM,EAAE,GAAG,EAAE,CAAC;QACjC,IAAM,KAAK,GAAG,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;QAC5B,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;YAC3B,OAAO,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC;SACvC;aAAM;YACH,OAAO,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC;SACvC;IACL,CAAC,CAAC,CAAC;AACP,CAAC;AAED,IAAM,aAAa,GAAG,UAAC,MAAc,EAAE,OAA8B;;IACjE,IAAM,UAAU,GAAG,MAAA,OAAO,CAAC,UAAU,mCAAI,oBAAoB,CAAC;IAC9D,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE;QAClC,OAAO,EAAE,CAAC;KACb;IACD,OAAO,MAAA,MAAM,CAAC,SAAS,0CAAE,OAAO,CAAC,UAAC,QAAa;QAC3C,IAAI,CAAC,QAAQ,CAAC,gBAAgB,EAAE;YAC5B,OAAO,EAAE,CAAC;SACb;QACD,IAAM,gBAAgB,GAAG,QAAQ,CAAC,gBAAgB,CAAC;QACnD,IAAI,CAAC,gBAAgB,CAAC,gBAAgB,EAAE;YACpC,OAAO,EAAE,CAAC;SACb;QACD,IAAI,CAAC,gBAAgB,CAAC,MAAM,EAAE;YAC1B,OAAO,EAAE,CAAC;SACb;QACD,IAAM,UAAU,GACZ,gBAAgB,CAAC,MAAM,CAAC,OAAO,KAAK,SAAS;YACzC,CAAC,CAAC,WAAI,gBAAgB,CAAC,MAAM,CAAC,SAAS,cAAI,gBAAgB,CAAC,MAAM,CAAC,OAAO,CAAE;YAC5E,CAAC,CAAC,WAAI,gBAAgB,CAAC,MAAM,CAAC,SAAS,CAAE,CAAC;QAClD,OAAO,OAAO,CACV,UAAU,EACV,OAAO,CAAC,KAAK,EACb,OAAO,CAAC,IAAI,EACZ,eAAQ,OAAO,CAAC,MAAM,CAAE,EACxB,OAAO,CAAC,UAAU,EAClB,UAAG,gBAAgB,CAAC,gBAAgB,CAAC,GAAG,cAAI,UAAU,CAAE,CAC3D,CAAC;IACN,CAAC,CAAC,CAAC;AACP,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"sarif-to-markdown.js","sourceRoot":"","sources":["../src/sarif-to-markdown.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@security-alert/sarif-to-markdown",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.10.0",
|
|
4
4
|
"description": "Convert Sarif format to body text",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"sarif",
|
|
@@ -56,5 +56,5 @@
|
|
|
56
56
|
"publishConfig": {
|
|
57
57
|
"access": "public"
|
|
58
58
|
},
|
|
59
|
-
"gitHead": "
|
|
59
|
+
"gitHead": "64e24ad981e3681055db97c6c1c420bc3ececcf9"
|
|
60
60
|
}
|