@@ -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