@@ -260,15 +260,24 @@ fn extract_issues(output: &Value) -> Vec<Value> {
260260 if field == & "vulnerable_dependencies" && !arr. is_empty ( ) {
261261 let mut flat = Vec :: new ( ) ;
262262 for dep in arr {
263- let dep_name = dep. get ( "name" ) . and_then ( |v| v. as_str ( ) ) . unwrap_or ( "unknown" ) ;
263+ let dep_name = dep
264+ . get ( "name" )
265+ . and_then ( |v| v. as_str ( ) )
266+ . unwrap_or ( "unknown" ) ;
264267 let dep_version = dep. get ( "version" ) . and_then ( |v| v. as_str ( ) ) . unwrap_or ( "?" ) ;
265- let language = dep. get ( "language" ) . cloned ( ) . unwrap_or ( serde_json:: Value :: Null ) ;
268+ let language = dep
269+ . get ( "language" )
270+ . cloned ( )
271+ . unwrap_or ( serde_json:: Value :: Null ) ;
266272 if let Some ( vulns) = dep. get ( "vulnerabilities" ) . and_then ( |v| v. as_array ( ) ) {
267273 for vuln in vulns {
268274 let mut entry = vuln. clone ( ) ;
269275 if let Some ( obj) = entry. as_object_mut ( ) {
270276 obj. insert ( "package" . to_string ( ) , serde_json:: json!( dep_name) ) ;
271- obj. insert ( "package_version" . to_string ( ) , serde_json:: json!( dep_version) ) ;
277+ obj. insert (
278+ "package_version" . to_string ( ) ,
279+ serde_json:: json!( dep_version) ,
280+ ) ;
272281 obj. insert ( "language" . to_string ( ) , language. clone ( ) ) ;
273282 }
274283 flat. push ( entry) ;
@@ -698,18 +707,29 @@ pub fn compress_tool_output_cli(
698707 // Handle dependency-map outputs (e.g. {"dependencies": {...}, "total": N})
699708 // These aren't issues/findings — compress by summarizing the dep map
700709 if let Some ( deps_obj) = output. get ( "dependencies" ) . and_then ( |v| v. as_object ( ) ) {
701- let total = output. get ( "total" ) . and_then ( |v| v. as_u64 ( ) ) . unwrap_or ( deps_obj. len ( ) as u64 ) ;
710+ let total = output
711+ . get ( "total" )
712+ . and_then ( |v| v. as_u64 ( ) )
713+ . unwrap_or ( deps_obj. len ( ) as u64 ) ;
702714
703715 // Build a compact summary: counts by source, license distribution
704- let mut by_source: std:: collections:: HashMap < String , usize > = std:: collections:: HashMap :: new ( ) ;
705- let mut by_license: std:: collections:: HashMap < String , usize > = std:: collections:: HashMap :: new ( ) ;
716+ let mut by_source: std:: collections:: HashMap < String , usize > =
717+ std:: collections:: HashMap :: new ( ) ;
718+ let mut by_license: std:: collections:: HashMap < String , usize > =
719+ std:: collections:: HashMap :: new ( ) ;
706720 let mut dev_count = 0usize ;
707721 let mut prod_count = 0usize ;
708722
709723 for dep in deps_obj. values ( ) {
710- let source = dep. get ( "source" ) . and_then ( |v| v. as_str ( ) ) . unwrap_or ( "unknown" ) ;
724+ let source = dep
725+ . get ( "source" )
726+ . and_then ( |v| v. as_str ( ) )
727+ . unwrap_or ( "unknown" ) ;
711728 * by_source. entry ( source. to_string ( ) ) . or_default ( ) += 1 ;
712- let license = dep. get ( "license" ) . and_then ( |v| v. as_str ( ) ) . unwrap_or ( "Unknown" ) ;
729+ let license = dep
730+ . get ( "license" )
731+ . and_then ( |v| v. as_str ( ) )
732+ . unwrap_or ( "Unknown" ) ;
713733 * by_license. entry ( license. to_string ( ) ) . or_default ( ) += 1 ;
714734 if dep. get ( "is_dev" ) . and_then ( |v| v. as_bool ( ) ) . unwrap_or ( false ) {
715735 dev_count += 1 ;
@@ -1033,10 +1053,7 @@ mod tests {
10331053
10341054 let json = parsed. unwrap ( ) ;
10351055 // Must contain CLI-syntax retrieval hint
1036- let hint = json
1037- . get ( "retrieval_hint" )
1038- . and_then ( |v| v. as_str ( ) )
1039- . unwrap ( ) ;
1056+ let hint = json. get ( "retrieval_hint" ) . and_then ( |v| v. as_str ( ) ) . unwrap ( ) ;
10401057 assert ! (
10411058 hint. contains( "sync-ctl retrieve" ) ,
10421059 "Hint should use CLI syntax, got: {}" ,
0 commit comments