@@ -109,19 +109,19 @@ def generate_bom_diff(bom: BomDicts, commons: BomDicts, common_refs: Dict) -> Di
109
109
diff_summary ["components" ]["other_components" ].append (i .to_dict ()) #type: ignore
110
110
diff_summary ["misc_data" ] = (bom .misc_data - commons .misc_data ).to_dict ()
111
111
diff_summary ["components" ] = filter_empty (bom .options .include_empty , diff_summary ["components" ]) #type: ignore
112
- return filter_empty ( commons . options . include_empty , diff_summary )
112
+ return diff_summary
113
113
114
114
115
115
def generate_csaf_diff (csaf : CsafDicts , commons : CsafDicts , common_refs : Dict [str , Set ]) -> Dict :
116
116
return {
117
- csaf .filename : filter_empty ( commons . options . include_empty , {
118
- "document" : (csaf .document - commons .document ).to_dict (),
119
- "product_tree" : (csaf .product_tree - commons .product_tree ).to_dict (),
120
- "vulnerabilities" : [
121
- i .to_dict () for i in csaf .vulnerabilities
122
- if i .title not in common_refs ["vulnerabilities" ]
123
- ]
124
- })
117
+ csaf .filename : {
118
+ "document" : (csaf .document - commons .document ).to_dict (),
119
+ "product_tree" : (csaf .product_tree - commons .product_tree ).to_dict (),
120
+ "vulnerabilities" : [
121
+ i .to_dict () for i in csaf .vulnerabilities
122
+ if i .title not in common_refs ["vulnerabilities" ]
123
+ ]
124
+ }
125
125
}
126
126
127
127
@@ -223,7 +223,7 @@ def parse_purls(deps: List[Dict], regex: re.Pattern) -> List[Dict]:
223
223
def perform_bom_diff (bom_1 : BomDicts , bom_2 : BomDicts ) -> Tuple [int , Dict ]:
224
224
b1 , b2 = order_documents (bom_1 , bom_2 )
225
225
common_bom = b1 .intersection (b2 , "common_summary" )
226
- output = common_bom .to_summary ()
226
+ output = filter_empty ( common_bom .options . include_empty , common_bom . to_summary () )
227
227
status , diffs = summarize_bom_diffs (b1 , b2 , common_bom )
228
228
output |= {"diff_summary" : diffs }
229
229
return status , output
@@ -243,6 +243,7 @@ def report_results(status: int, diffs: Dict, options: Options, j1: BomDicts, j2:
243
243
logger .info ("No differences found." )
244
244
else :
245
245
logger .info ("Differences found." )
246
+ diffs = sort_dict (diffs , options .sort_keys )
246
247
if options .preconfig_type :
247
248
report_file = options .output .replace (".json" , "" ) + ".html"
248
249
if options .preconfig_type == "bom" :
@@ -292,7 +293,8 @@ def summarize_bom_diffs(bom_1: BomDicts, bom_2: BomDicts, commons: BomDicts) ->
292
293
summary_1 = generate_bom_diff (bom_1 , commons , common_refs )
293
294
summary_2 = generate_bom_diff (bom_2 , commons_2 , common_refs )
294
295
status = max (get_bom_status (summary_1 ), get_bom_status (summary_2 ))
295
- return status , {bom_1 .filename : summary_1 , bom_2 .filename : summary_2 }
296
+ return status , {bom_1 .filename : filter_empty (bom_1 .options .include_empty , summary_1 ),
297
+ bom_2 .filename : filter_empty (bom_1 .options .include_empty , summary_2 )}
296
298
297
299
298
300
def summarize_csaf_diffs (csaf_1 : CsafDicts , csaf_2 : CsafDicts , commons : CsafDicts ) -> Tuple [int , Dict ]:
@@ -302,4 +304,4 @@ def summarize_csaf_diffs(csaf_1: CsafDicts, csaf_2: CsafDicts, commons: CsafDict
302
304
diff_summary = generate_csaf_diff (csaf_1 , commons , common_refs )
303
305
diff_summary |= generate_csaf_diff (csaf_2 , commons_2 , common_refs )
304
306
status = max (get_csaf_status (diff_summary [csaf_1 .filename ]), get_csaf_status (diff_summary [csaf_2 .filename ]))
305
- return status , diff_summary
307
+ return status , filter_empty ( csaf_1 . options . include_empty , diff_summary )
0 commit comments