@@ -342,16 +342,21 @@ def analyticsToDf(src):
342342 analytics = src .query ([Filter ("type" , "=" , "x-mitre-analytic" )])
343343 analytics = remove_revoked_deprecated (analytics )
344344
345- analytic_rows = []
346- for analytic in tqdm (analytics , desc = "parsing analytics" ):
347- analytic_rows .append (parseBaseStix (analytic ))
345+ dataframes = {}
346+ if analytics :
347+ analytic_rows = []
348+ for analytic in tqdm (analytics , desc = "parsing analytics" ):
349+ analytic_rows .append (parseBaseStix (analytic ))
348350
349- citations = get_citations (analytics )
350- dataframes = {
351- "analytics" : pd .DataFrame (analytic_rows ).sort_values ("name" ),
352- }
353- if not citations .empty :
354- dataframes ["citations" ] = citations .sort_values ("reference" )
351+ citations = get_citations (analytics )
352+ dataframes = {
353+ "analytics" : pd .DataFrame (analytic_rows ).sort_values ("name" ),
354+ }
355+ if not citations .empty :
356+ dataframes ["citations" ] = citations .sort_values ("reference" )
357+
358+ else :
359+ logger .warning ("No analytics found - nothing to parse" )
355360
356361 return dataframes
357362
@@ -365,30 +370,35 @@ def detectionstrategiesToDf(src):
365370 detection_strategies = src .query ([Filter ("type" , "=" , "x-mitre-detection-strategy" )])
366371 detection_strategies = remove_revoked_deprecated (detection_strategies )
367372
368- detection_strategy_rows = []
369- for detection_strategy in tqdm (detection_strategies , desc = "parsing detection strategies" ):
370- detection_strategy_rows .append (parseBaseStix (detection_strategy ))
373+ dataframes = {}
374+ if detection_strategies :
375+ detection_strategy_rows = []
376+ for detection_strategy in tqdm (detection_strategies , desc = "parsing detection strategies" ):
377+ detection_strategy_rows .append (parseBaseStix (detection_strategy ))
371378
372- citations = get_citations (detection_strategies )
373- dataframes = {
374- "detectionstrategies" : pd .DataFrame (detection_strategy_rows ).sort_values ("name" ),
375- }
379+ citations = get_citations (detection_strategies )
380+ dataframes = {
381+ "detectionstrategies" : pd .DataFrame (detection_strategy_rows ).sort_values ("name" ),
382+ }
376383
377- # add relationships
378- codex = relationshipsToDf (src , relatedType = "detectionstrategy" )
379- dataframes .update (codex )
380- # add relationship references
381- dataframes ["detectionstrategies" ]["relationship citations" ] = _get_relationship_citations (
382- dataframes ["detectionstrategies" ], codex
383- )
384- # add/merge citations
385- if not citations .empty :
386- if "citations" in dataframes : # append to existing citations from references
387- dataframes ["citations" ] = pd .concat ([dataframes ["citations" ], citations ])
388- else : # add citations
389- dataframes ["citations" ] = citations
384+ # add relationships
385+ codex = relationshipsToDf (src , relatedType = "detectionstrategy" )
386+ dataframes .update (codex )
387+ # add relationship references
388+ dataframes ["detectionstrategies" ]["relationship citations" ] = _get_relationship_citations (
389+ dataframes ["detectionstrategies" ], codex
390+ )
391+ # add/merge citations
392+ if not citations .empty :
393+ if "citations" in dataframes : # append to existing citations from references
394+ dataframes ["citations" ] = pd .concat ([dataframes ["citations" ], citations ])
395+ else : # add citations
396+ dataframes ["citations" ] = citations
390397
391- dataframes ["citations" ].sort_values ("reference" )
398+ dataframes ["citations" ].sort_values ("reference" )
399+
400+ else :
401+ logger .warning ("No detection strategies found - nothing to parse" )
392402
393403 return dataframes
394404
0 commit comments