@security-alert/sarif-to-markdown 1.6.0 → 1.7.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.
package/lib/sarif-to-markdown.js
CHANGED
|
@@ -49,11 +49,21 @@ var createCodeURL = function (result, options) {
|
|
|
49
49
|
return (0, url_join_1.default)(githubHost, options.owner, options.repo, "blob/".concat(options.branch), options.sourceRoot, "".concat(physicalLocation.artifactLocation.uri, "#").concat(lineNumber));
|
|
50
50
|
});
|
|
51
51
|
};
|
|
52
|
+
function groupBy(arr, criteria) {
|
|
53
|
+
var newObj = arr.reduce(function (acc, currentValue) {
|
|
54
|
+
if (!acc[currentValue[criteria]]) {
|
|
55
|
+
acc[currentValue[criteria]] = [];
|
|
56
|
+
}
|
|
57
|
+
acc[currentValue[criteria]].push(currentValue);
|
|
58
|
+
return acc;
|
|
59
|
+
}, {});
|
|
60
|
+
return [newObj];
|
|
61
|
+
}
|
|
52
62
|
var sarifToMarkdown = function (options) {
|
|
53
63
|
var suppressedResultsFlag = options.suppressedResults !== undefined ? options.suppressedResults : true;
|
|
54
64
|
return function (sarifLog) {
|
|
55
65
|
return sarifLog.runs.map(function (run) {
|
|
56
|
-
var _a, _b, _c, _d, _e, _f, _g
|
|
66
|
+
var _a, _b, _c, _d, _e, _f, _g;
|
|
57
67
|
var title = options.title ? "# ".concat(options.title, "\n") : "# Report";
|
|
58
68
|
var toolInfo = "\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");
|
|
59
69
|
// # tool section
|
|
@@ -68,9 +78,25 @@ var sarifToMarkdown = function (options) {
|
|
|
68
78
|
var _a, _b;
|
|
69
79
|
var severity = rule.properties ? (_a = rule.properties) === null || _a === void 0 ? void 0 : _a["problem.severity"] : "";
|
|
70
80
|
// rule description
|
|
71
|
-
return "- ".concat(rule.id, " [").concat(severity, "]\n\n> ").concat((_b = rule.shortDescription) === null || _b === void 0 ? void 0 : _b.text);
|
|
81
|
+
return "\n - ".concat(rule.id, " [").concat(severity, "] \n\n > ").concat((_b = rule.shortDescription) === null || _b === void 0 ? void 0 : _b.text, "\n");
|
|
72
82
|
}));
|
|
73
83
|
var ruleDetails = "<details><summary>Details</summary>\n<pre>".concat(JSON.stringify(run.tool, null, 4), "</pre></details>\n");
|
|
84
|
+
var groupedResults = groupBy(run.results, "ruleId");
|
|
85
|
+
var groupedResultsMarkdown = "";
|
|
86
|
+
for (var _i = 0, groupedResults_1 = groupedResults; _i < groupedResults_1.length; _i++) {
|
|
87
|
+
var group = groupedResults_1[_i];
|
|
88
|
+
for (var r in group) {
|
|
89
|
+
groupedResultsMarkdown +=
|
|
90
|
+
"- **".concat(r, "**: ").concat(group[r][0] ? (0, markdown_escape_1.default)(group[r][0].message.text) : "") + "\n";
|
|
91
|
+
for (var _h = 0, _j = group[r]; _h < _j.length; _h++) {
|
|
92
|
+
var result = _j[_h];
|
|
93
|
+
var properResult = result;
|
|
94
|
+
if (properResult.suppressions === undefined) {
|
|
95
|
+
groupedResultsMarkdown += " - " + createCodeURL(result, options) + "\n";
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
}
|
|
74
100
|
/* Results
|
|
75
101
|
- rule id
|
|
76
102
|
- message
|
|
@@ -79,27 +105,33 @@ var sarifToMarkdown = function (options) {
|
|
|
79
105
|
If pass the scan, results is empty array
|
|
80
106
|
*/
|
|
81
107
|
var results = run.results && run.results.length > 0
|
|
82
|
-
? "\n## Results\n
|
|
83
|
-
return result.suppressions
|
|
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")
|
|
108
|
+
? "\n## Results\n".concat(groupedResultsMarkdown)
|
|
90
109
|
: "\n## Results\n\nNo Error\n\n";
|
|
110
|
+
var groupedSuppressedResultsMD = "";
|
|
111
|
+
var suppressedCounter = 0;
|
|
112
|
+
for (var _k = 0, groupedResults_2 = groupedResults; _k < groupedResults_2.length; _k++) {
|
|
113
|
+
var group = groupedResults_2[_k];
|
|
114
|
+
for (var r in group) {
|
|
115
|
+
var groupContainsSuppressed = group[r].filter(function (r) { return r.suppressions !== undefined; }).length > 0;
|
|
116
|
+
if (groupContainsSuppressed) {
|
|
117
|
+
groupedSuppressedResultsMD +=
|
|
118
|
+
"- **".concat(r, "**: ").concat(group[r][0] ? (0, markdown_escape_1.default)(group[r][0].message.text) : "") + "\n";
|
|
119
|
+
for (var _l = 0, _m = group[r]; _l < _m.length; _l++) {
|
|
120
|
+
var result = _m[_l];
|
|
121
|
+
var properResult = result;
|
|
122
|
+
if (properResult.suppressions !== undefined) {
|
|
123
|
+
suppressedCounter += 1;
|
|
124
|
+
groupedSuppressedResultsMD += " - " + createCodeURL(result, options) + "\n";
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
}
|
|
91
130
|
// careful, double ternary... first check if we should include suppressedresults (return empty string)
|
|
92
131
|
// then check if there are results, if none, return default string
|
|
93
132
|
var suppressedResultsText = suppressedResultsFlag
|
|
94
|
-
? run.results &&
|
|
95
|
-
? "\n## Suppressed results\n\n".concat(
|
|
96
|
-
return result.suppressions
|
|
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")
|
|
133
|
+
? run.results && suppressedCounter > 0
|
|
134
|
+
? "\n## Suppressed results\n\n".concat(groupedSuppressedResultsMD, "\n")
|
|
103
135
|
: "\n## Results\n\nNo suppressed issues\n\n"
|
|
104
136
|
: "";
|
|
105
137
|
if (options.details) {
|
|
@@ -113,12 +145,12 @@ var sarifToMarkdown = function (options) {
|
|
|
113
145
|
"\n" +
|
|
114
146
|
ruleDetails +
|
|
115
147
|
toolInfo,
|
|
116
|
-
hasMessages: ((
|
|
148
|
+
hasMessages: ((_f = run.results) === null || _f === void 0 ? void 0 : _f.length) !== 0
|
|
117
149
|
};
|
|
118
150
|
}
|
|
119
151
|
return {
|
|
120
152
|
body: title + results + "\n" + suppressedResultsText + "\n" + ruleInfo + "\n" + toolInfo,
|
|
121
|
-
hasMessages: ((
|
|
153
|
+
hasMessages: ((_g = run.results) === null || _g === void 0 ? void 0 : _g.length) !== 0
|
|
122
154
|
};
|
|
123
155
|
});
|
|
124
156
|
};
|
|
@@ -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":";;;;;;;;;;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;AAsCF,SAAS,OAAO,CAAC,GAAa,EAAE,QAAa;IACzC,IAAM,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,UAAU,GAAQ,EAAE,YAAiB;QAC3D,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,EAAE;YAC9B,GAAG,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,GAAG,EAAE,CAAC;SACpC;QACD,GAAG,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QAC/C,OAAO,GAAG,CAAC;IACf,CAAC,EAAE,EAAE,CAAC,CAAC;IACP,OAAO,CAAC,MAAM,CAAC,CAAC;AACpB,CAAC;AAUM,IAAM,eAAe,GAAG,UAAC,OAA8B;IAC1D,IAAM,qBAAqB,GAAG,OAAO,CAAC,iBAAiB,KAAK,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC,CAAC,IAAI,CAAC;IAEzG,OAAO,UAAC,QAAa;QACjB,OAAO,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,UAAC,GAAQ;;YAC9B,IAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,YAAK,OAAO,CAAC,KAAK,OAAI,CAAC,CAAC,CAAC,UAAU,CAAC;YAElE,IAAM,QAAQ,GAAG,yCAEnB,MAAA,GAAG,CAAC,IAAI,CAAC,MAAM,0CAAE,IAAI,+BACb,MAAA,GAAG,CAAC,IAAI,CAAC,MAAM,0CAAE,YAAY,0BAClC,MAAA,GAAG,CAAC,IAAI,CAAC,MAAM,0CAAE,eAAe,OAC5C,CAAC;YACU,iBAAiB;YACjB,YAAY;YACZ,qBAAqB;YACrB,aAAa;YACb,YAAY;YACZ;;eAEG;YACH,IAAM,QAAQ,GAAG,cAAc,qKAAA,2FAKzC,EAMA,KACA,KAPA,MAAA,MAAA,GAAG,CAAC,IAAI,CAAC,MAAM,0CAAE,KAAK,0CAAE,GAAG,CAAC,UAAC,IAAS;;gBACpC,IAAM,QAAQ,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,MAAA,IAAI,CAAC,UAAU,0CAAG,kBAAkB,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC9E,mBAAmB;gBACnB,OAAO,kBACH,IAAI,CAAC,EAAE,eAAK,QAAQ,yBACpB,MAAA,IAAI,CAAC,gBAAgB,0CAAE,IAAI,OAAI,CAAC;YACxC,CAAC,CAAC,CACA,CAAC;YACS,IAAM,WAAW,GAAG,oDACzB,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,uBACvC,CAAC;YACU,IAAM,cAAc,GAAG,OAAO,CAAC,GAAG,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;YAEtD,IAAI,sBAAsB,GAAG,EAAE,CAAC;YAChC,KAAoB,UAAc,EAAd,iCAAc,EAAd,4BAAc,EAAd,IAAc,EAAE;gBAA/B,IAAM,KAAK,uBAAA;gBACZ,KAAK,IAAM,CAAC,IAAI,KAAK,EAAE;oBACnB,sBAAsB;wBAClB,cAAO,CAAC,iBAAO,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAA,yBAAM,EAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAE,GAAG,IAAI,CAAC;oBAChF,KAAqB,UAAQ,EAAR,KAAA,KAAK,CAAC,CAAC,CAAC,EAAR,cAAQ,EAAR,IAAQ,EAAE;wBAA1B,IAAM,MAAM,SAAA;wBACb,IAAM,YAAY,GAAG,MAA2B,CAAC;wBACjD,IAAI,YAAY,CAAC,YAAY,KAAK,SAAS,EAAE;4BACzC,sBAAsB,IAAI,QAAQ,GAAG,aAAa,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;yBAC9E;qBACJ;iBACJ;aACJ;YACD;;;;;;cAME;YACF,IAAM,OAAO,GACT,GAAG,CAAC,OAAO,IAAI,GAAG,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC;gBACjC,CAAC,CAAC,wBAEpB,sBAAsB,CAAE;gBACN,CAAC,CAAC,8BAKrB,CAAC;YAEU,IAAI,0BAA0B,GAAG,EAAE,CAAC;YACpC,IAAI,iBAAiB,GAAG,CAAC,CAAC;YAC1B,KAAoB,UAAc,EAAd,iCAAc,EAAd,4BAAc,EAAd,IAAc,EAAE;gBAA/B,IAAM,KAAK,uBAAA;gBACZ,KAAK,IAAM,CAAC,IAAI,KAAK,EAAE;oBACnB,IAAM,uBAAuB,GACzB,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,UAAC,CAAS,IAAK,OAAA,CAAC,CAAC,YAAY,KAAK,SAAS,EAA5B,CAA4B,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;oBAC5E,IAAI,uBAAuB,EAAE;wBACzB,0BAA0B;4BACtB,cAAO,CAAC,iBAAO,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAA,yBAAM,EAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAE,GAAG,IAAI,CAAC;wBAChF,KAAqB,UAAQ,EAAR,KAAA,KAAK,CAAC,CAAC,CAAC,EAAR,cAAQ,EAAR,IAAQ,EAAE;4BAA1B,IAAM,MAAM,SAAA;4BACb,IAAM,YAAY,GAAG,MAA2B,CAAC;4BACjD,IAAI,YAAY,CAAC,YAAY,KAAK,SAAS,EAAE;gCACzC,iBAAiB,IAAI,CAAC,CAAC;gCACvB,0BAA0B,IAAI,QAAQ,GAAG,aAAa,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;6BAClF;yBACJ;qBACJ;iBACJ;aACJ;YACD,sGAAsG;YACtG,kEAAkE;YAClE,IAAM,qBAAqB,GAAG,qBAAqB;gBAC/C,CAAC,CAAC,GAAG,CAAC,OAAO,IAAI,iBAAiB,GAAG,CAAC;oBAClC,CAAC,CAAC,qCAGpB,0BAA0B,OAC3B;oBACmB,CAAC,CAAC,0CAKrB;gBACe,CAAC,CAAC,EAAE,CAAC;YAET,IAAI,OAAO,CAAC,OAAO,EAAE;gBACjB,OAAO;oBACH,IAAI,EACA,KAAK;wBACL,OAAO;wBACP,IAAI;wBACJ,qBAAqB;wBACrB,IAAI;wBACJ,QAAQ;wBACR,IAAI;wBACJ,WAAW;wBACX,QAAQ;oBACZ,WAAW,EAAE,CAAA,MAAA,GAAG,CAAC,OAAO,0CAAE,MAAM,MAAK,CAAC;iBACzC,CAAC;aACL;YACD,OAAO;gBACH,IAAI,EAAE,KAAK,GAAG,OAAO,GAAG,IAAI,GAAG,qBAAqB,GAAG,IAAI,GAAG,QAAQ,GAAG,IAAI,GAAG,QAAQ;gBACxF,WAAW,EAAE,CAAA,MAAA,GAAG,CAAC,OAAO,0CAAE,MAAM,MAAK,CAAC;aACzC,CAAC;QACN,CAAC,CAAC,CAAC;IACP,CAAC,CAAC;AACN,CAAC,CAAC;AAhIW,QAAA,eAAe,mBAgI1B"}
|
|
@@ -43,11 +43,21 @@ var createCodeURL = function (result, options) {
|
|
|
43
43
|
return urlJoin(githubHost, options.owner, options.repo, "blob/".concat(options.branch), options.sourceRoot, "".concat(physicalLocation.artifactLocation.uri, "#").concat(lineNumber));
|
|
44
44
|
});
|
|
45
45
|
};
|
|
46
|
+
function groupBy(arr, criteria) {
|
|
47
|
+
var newObj = arr.reduce(function (acc, currentValue) {
|
|
48
|
+
if (!acc[currentValue[criteria]]) {
|
|
49
|
+
acc[currentValue[criteria]] = [];
|
|
50
|
+
}
|
|
51
|
+
acc[currentValue[criteria]].push(currentValue);
|
|
52
|
+
return acc;
|
|
53
|
+
}, {});
|
|
54
|
+
return [newObj];
|
|
55
|
+
}
|
|
46
56
|
export var sarifToMarkdown = function (options) {
|
|
47
57
|
var suppressedResultsFlag = options.suppressedResults !== undefined ? options.suppressedResults : true;
|
|
48
58
|
return function (sarifLog) {
|
|
49
59
|
return sarifLog.runs.map(function (run) {
|
|
50
|
-
var _a, _b, _c, _d, _e, _f, _g
|
|
60
|
+
var _a, _b, _c, _d, _e, _f, _g;
|
|
51
61
|
var title = options.title ? "# ".concat(options.title, "\n") : "# Report";
|
|
52
62
|
var toolInfo = "\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");
|
|
53
63
|
// # tool section
|
|
@@ -62,9 +72,25 @@ export var sarifToMarkdown = function (options) {
|
|
|
62
72
|
var _a, _b;
|
|
63
73
|
var severity = rule.properties ? (_a = rule.properties) === null || _a === void 0 ? void 0 : _a["problem.severity"] : "";
|
|
64
74
|
// rule description
|
|
65
|
-
return "- ".concat(rule.id, " [").concat(severity, "]\n\n> ").concat((_b = rule.shortDescription) === null || _b === void 0 ? void 0 : _b.text);
|
|
75
|
+
return "\n - ".concat(rule.id, " [").concat(severity, "] \n\n > ").concat((_b = rule.shortDescription) === null || _b === void 0 ? void 0 : _b.text, "\n");
|
|
66
76
|
}));
|
|
67
77
|
var ruleDetails = "<details><summary>Details</summary>\n<pre>".concat(JSON.stringify(run.tool, null, 4), "</pre></details>\n");
|
|
78
|
+
var groupedResults = groupBy(run.results, "ruleId");
|
|
79
|
+
var groupedResultsMarkdown = "";
|
|
80
|
+
for (var _i = 0, groupedResults_1 = groupedResults; _i < groupedResults_1.length; _i++) {
|
|
81
|
+
var group = groupedResults_1[_i];
|
|
82
|
+
for (var r in group) {
|
|
83
|
+
groupedResultsMarkdown +=
|
|
84
|
+
"- **".concat(r, "**: ").concat(group[r][0] ? escape(group[r][0].message.text) : "") + "\n";
|
|
85
|
+
for (var _h = 0, _j = group[r]; _h < _j.length; _h++) {
|
|
86
|
+
var result = _j[_h];
|
|
87
|
+
var properResult = result;
|
|
88
|
+
if (properResult.suppressions === undefined) {
|
|
89
|
+
groupedResultsMarkdown += " - " + createCodeURL(result, options) + "\n";
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
}
|
|
68
94
|
/* Results
|
|
69
95
|
- rule id
|
|
70
96
|
- message
|
|
@@ -73,27 +99,33 @@ export var sarifToMarkdown = function (options) {
|
|
|
73
99
|
If pass the scan, results is empty array
|
|
74
100
|
*/
|
|
75
101
|
var results = run.results && run.results.length > 0
|
|
76
|
-
? "\n## Results\n
|
|
77
|
-
return result.suppressions
|
|
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")
|
|
102
|
+
? "\n## Results\n".concat(groupedResultsMarkdown)
|
|
84
103
|
: "\n## Results\n\nNo Error\n\n";
|
|
104
|
+
var groupedSuppressedResultsMD = "";
|
|
105
|
+
var suppressedCounter = 0;
|
|
106
|
+
for (var _k = 0, groupedResults_2 = groupedResults; _k < groupedResults_2.length; _k++) {
|
|
107
|
+
var group = groupedResults_2[_k];
|
|
108
|
+
for (var r in group) {
|
|
109
|
+
var groupContainsSuppressed = group[r].filter(function (r) { return r.suppressions !== undefined; }).length > 0;
|
|
110
|
+
if (groupContainsSuppressed) {
|
|
111
|
+
groupedSuppressedResultsMD +=
|
|
112
|
+
"- **".concat(r, "**: ").concat(group[r][0] ? escape(group[r][0].message.text) : "") + "\n";
|
|
113
|
+
for (var _l = 0, _m = group[r]; _l < _m.length; _l++) {
|
|
114
|
+
var result = _m[_l];
|
|
115
|
+
var properResult = result;
|
|
116
|
+
if (properResult.suppressions !== undefined) {
|
|
117
|
+
suppressedCounter += 1;
|
|
118
|
+
groupedSuppressedResultsMD += " - " + createCodeURL(result, options) + "\n";
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
}
|
|
85
124
|
// careful, double ternary... first check if we should include suppressedresults (return empty string)
|
|
86
125
|
// then check if there are results, if none, return default string
|
|
87
126
|
var suppressedResultsText = suppressedResultsFlag
|
|
88
|
-
? run.results &&
|
|
89
|
-
? "\n## Suppressed results\n\n".concat(
|
|
90
|
-
return result.suppressions
|
|
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")
|
|
127
|
+
? run.results && suppressedCounter > 0
|
|
128
|
+
? "\n## Suppressed results\n\n".concat(groupedSuppressedResultsMD, "\n")
|
|
97
129
|
: "\n## Results\n\nNo suppressed issues\n\n"
|
|
98
130
|
: "";
|
|
99
131
|
if (options.details) {
|
|
@@ -107,12 +139,12 @@ export var sarifToMarkdown = function (options) {
|
|
|
107
139
|
"\n" +
|
|
108
140
|
ruleDetails +
|
|
109
141
|
toolInfo,
|
|
110
|
-
hasMessages: ((
|
|
142
|
+
hasMessages: ((_f = run.results) === null || _f === void 0 ? void 0 : _f.length) !== 0
|
|
111
143
|
};
|
|
112
144
|
}
|
|
113
145
|
return {
|
|
114
146
|
body: title + results + "\n" + suppressedResultsText + "\n" + ruleInfo + "\n" + toolInfo,
|
|
115
|
-
hasMessages: ((
|
|
147
|
+
hasMessages: ((_g = run.results) === null || _g === void 0 ? void 0 : _g.length) !== 0
|
|
116
148
|
};
|
|
117
149
|
});
|
|
118
150
|
};
|
|
@@ -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.7.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": "5be23f660a2ff4af68317b34132e0853f65829ce"
|
|
60
60
|
}
|