@@ -145,31 +145,49 @@ pub async fn pipeline_failure(
145
145
HashMap :: new ( ) ;
146
146
147
147
for result in sast_results {
148
- let summary_without_commit = result[ "summary" ]
149
- . clone ( )
150
- . to_string ( )
151
- . split ( "\n \n Commit:" )
152
- . collect :: < Vec < & str > > ( ) [ 0 ]
153
- . to_string ( ) ;
148
+ let summary_without_commit = result
149
+ . get ( "summary" )
150
+ . and_then ( |s| Some ( s. as_str ( ) ) )
151
+ . map ( |s| s. split ( "\n \n Commit:" ) . collect :: < Vec < & str > > ( ) [ 0 ] . to_string ( ) )
152
+ . unwrap_or_else ( || "No summary available" . to_string ( ) ) ;
153
+
154
+ let package_version = match ( result. get ( "package" ) , result. get ( "version" ) ) {
155
+ ( Some ( package) , Some ( version) ) => format ! ( "{}@{}" , package, version) ,
156
+ _ => "Unknown package@version" . to_string ( ) ,
157
+ } ;
158
+
159
+ let severity = result
160
+ . get ( "severity" )
161
+ . cloned ( )
162
+ . unwrap_or_else ( || "Unknown severity" . into ( ) ) ;
163
+ let cwe_id = result
164
+ . get ( "cwe_id" )
165
+ . cloned ( )
166
+ . unwrap_or_else ( || "Unknown CWE ID" . into ( ) ) ;
167
+ let aliases = result
168
+ . get ( "aliases" )
169
+ . cloned ( )
170
+ . unwrap_or_else ( || "No aliases" . into ( ) ) ;
171
+
154
172
let vuln_record = format ! (
155
173
"\n \n Package: {}\n Severity: {}\n Summary: {}\n CWE ID: {}\n Aliases: {}" ,
156
- format!( "{}@{}" , result[ "package" ] , result[ "version" ] ) ,
157
- result[ "severity" ] ,
158
- summary_without_commit,
159
- result[ "cwe_id" ] ,
160
- result[ "aliases" ]
174
+ package_version, severity, summary_without_commit, cwe_id, aliases
161
175
) ;
176
+
162
177
let hashed_message = common:: hash_text ( & vuln_record) ;
163
178
164
179
// Collect messages and their hashes along with other details
165
180
message_to_hash. insert (
166
181
hashed_message,
167
182
(
168
- format ! ( "{}@{}" , result[ "package" ] , result[ "version" ] ) ,
169
- result[ "severity" ] . clone ( ) ,
170
- result[ "summary" ] . clone ( ) ,
171
- result[ "cwe_id" ] . clone ( ) ,
172
- result[ "aliases" ] . clone ( ) ,
183
+ package_version,
184
+ severity,
185
+ result
186
+ . get ( "summary" )
187
+ . cloned ( )
188
+ . unwrap_or_else ( || "No summary available" . into ( ) ) ,
189
+ cwe_id,
190
+ aliases,
173
191
) ,
174
192
) ;
175
193
}
0 commit comments