Skip to content

Commit a27cf98

Browse files
committed
parser-json-sarif: attempt to read generic trace events
... produced by Snyk Code Related: https://issues.redhat.com/browse/OSH-654 Closes: csutils#199
1 parent 761b13a commit a27cf98

File tree

3 files changed

+35468
-646
lines changed

3 files changed

+35468
-646
lines changed

src/lib/parser-json-sarif.cc

+22-12
Original file line numberDiff line numberDiff line change
@@ -270,25 +270,28 @@ static void sarifReadCodeFlow(Defect *pDef, const pt::ptree &cf)
270270
for (const auto &item : *locs) {
271271
const pt::ptree &tfLoc = item.second;
272272

273-
const pt::ptree *kindList;
274-
if (!findChildOf(&kindList, tfLoc, "kinds") || kindList->empty())
275-
// kind of the event not specified
276-
continue;
277-
278-
// concatenate event name
279273
std::string evtName;
280-
for (const auto &kindItem : *kindList) {
281-
const pt::ptree &kind = kindItem.second;
282-
if (!evtName.empty())
283-
evtName += "_";
284-
evtName += kind.data();
274+
const pt::ptree *kindList;
275+
if (findChildOf(&kindList, tfLoc, "kinds")) {
276+
// calculate event name from the `kinds` list
277+
for (const auto &kindItem : *kindList) {
278+
const pt::ptree &kind = kindItem.second;
279+
if (!evtName.empty())
280+
evtName += "_";
281+
evtName += kind.data();
282+
}
285283
}
286284

287285
// append a new event of the specified kind
288286
events.push_back(DefEvent(evtName));
289287
DefEvent &evt = events.back();
290288

291-
evt.verbosityLevel = valueOf<int>(tfLoc, "nestingLevel", 1);
289+
// read/infer verbosity level
290+
evt.verbosityLevel = valueOf<int>(tfLoc, "nestingLevel",
291+
(evt.event.empty())
292+
? /* trace */ 2
293+
: /* info */ 1);
294+
292295
if (!evt.verbosityLevel)
293296
// update key event
294297
keyEventIdx = events.size() - 1U;
@@ -300,6 +303,13 @@ static void sarifReadCodeFlow(Defect *pDef, const pt::ptree &cf)
300303

301304
sarifReadLocation(&evt, *loc);
302305
sarifReadMsg(&evt.msg, *loc);
306+
307+
if (evt.event.empty()) {
308+
// if no `kind` is given, assume a generic trace event
309+
evt.event = "path";
310+
if (evt.msg.empty())
311+
evt.msg = "generic trace event";
312+
}
303313
}
304314

305315
if (events.size() <= 1U)

0 commit comments

Comments
 (0)