@@ -270,25 +270,28 @@ static void sarifReadCodeFlow(Defect *pDef, const pt::ptree &cf)
270
270
for (const auto &item : *locs) {
271
271
const pt::ptree &tfLoc = item.second ;
272
272
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
279
273
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
+ }
285
283
}
286
284
287
285
// append a new event of the specified kind
288
286
events.push_back (DefEvent (evtName));
289
287
DefEvent &evt = events.back ();
290
288
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
+
292
295
if (!evt.verbosityLevel )
293
296
// update key event
294
297
keyEventIdx = events.size () - 1U ;
@@ -300,6 +303,13 @@ static void sarifReadCodeFlow(Defect *pDef, const pt::ptree &cf)
300
303
301
304
sarifReadLocation (&evt, *loc);
302
305
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
+ }
303
313
}
304
314
305
315
if (events.size () <= 1U )
0 commit comments