@@ -13,7 +13,7 @@ def alert_key(alert: dict) -> tuple:
13
13
return (
14
14
alert ["type" ],
15
15
alert ["severity" ],
16
- alert [ "category" ] ,
16
+ alert . get ( "category" ) ,
17
17
Dedupe .normalize_file_path (alert .get ("file" )),
18
18
alert .get ("start" ),
19
19
alert .get ("end" )
@@ -25,7 +25,7 @@ def alert_identity(alert: dict) -> tuple:
25
25
return (
26
26
alert ["type" ],
27
27
alert ["severity" ],
28
- alert [ "category" ] ,
28
+ alert . get ( "category" ) ,
29
29
Dedupe .normalize_file_path (alert .get ("file" )),
30
30
alert .get ("start" ),
31
31
alert .get ("end" )
@@ -39,21 +39,29 @@ def alert_identity(alert: dict) -> tuple:
39
39
40
40
for alert in pkg .get ("alerts" , []):
41
41
identity = alert_identity (alert )
42
- file = Dedupe .normalize_file_path (alert .get ("file" ))
43
42
44
43
if identity not in alert_map :
45
- alert_map [identity ] = {
44
+ # Build alert dict with only fields that exist in the original alert
45
+ consolidated_alert = {
46
46
"key" : alert ["key" ], # keep the first key seen
47
47
"type" : alert ["type" ],
48
48
"severity" : alert ["severity" ],
49
- "category" : alert ["category" ],
50
- "file" : file ,
51
- "start" : alert .get ("start" ),
52
- "end" : alert .get ("end" ),
53
49
"releases" : [release ],
54
50
"props" : alert .get ("props" , []),
55
51
"action" : alert ["action" ]
56
52
}
53
+
54
+ # Only include optional fields if they exist in the original alert
55
+ if "category" in alert :
56
+ consolidated_alert ["category" ] = alert ["category" ]
57
+ if "file" in alert :
58
+ consolidated_alert ["file" ] = Dedupe .normalize_file_path (alert ["file" ])
59
+ if "start" in alert :
60
+ consolidated_alert ["start" ] = alert ["start" ]
61
+ if "end" in alert :
62
+ consolidated_alert ["end" ] = alert ["end" ]
63
+
64
+ alert_map [identity ] = consolidated_alert
57
65
else :
58
66
if release not in alert_map [identity ]["releases" ]:
59
67
alert_map [identity ]["releases" ].append (release )
0 commit comments