Skip to content

Commit

Permalink
Fix empty sarif report
Browse files Browse the repository at this point in the history
  • Loading branch information
jgcrosta committed Jan 28, 2025
1 parent a0a411e commit c3f5ad4
Showing 1 changed file with 25 additions and 17 deletions.
42 changes: 25 additions & 17 deletions apps/cargo-scout-audit/src/output/report.rs
Original file line number Diff line number Diff line change
@@ -1,15 +1,19 @@
use super::{html, markdown, pdf, utils};
use crate::cli::OutputFormat;
use crate::finding::Finding as JsonFinding;
use crate::output::raw_report::RawReport;
use crate::output::table::Table;
use crate::scout::project_info::Project;
use crate::utils::detectors_info::{LintInfo, LintStore};
use crate::{
cli::OutputFormat,
finding::Finding as JsonFinding,
output::{raw_report::RawReport, table::Table},
scout::project_info::Project,
utils::detectors_info::{LintInfo, LintStore},
};
use anyhow::{Context, Result};
use serde::{Deserialize, Serialize};
use std::collections::HashMap;
use std::fs::File;
use std::path::{Path, PathBuf};
use std::{
collections::HashMap,
fs::File,
io::Write,
path::{Path, PathBuf},
};
use terminal_color_builder::OutputFormatter;

#[derive(Serialize, Deserialize, Debug)]
Expand Down Expand Up @@ -273,22 +277,26 @@ impl Report {
}
OutputFormat::Sarif => {
let sarif_path = output_path.unwrap_or_else(|| PathBuf::from("report.sarif"));

let mut sarif_file = File::create(&sarif_path)?;

let child = std::process::Command::new("clippy-sarif")
let mut child = std::process::Command::new("clippy-sarif")
.stdin(std::process::Stdio::piped())
.stdout(std::process::Stdio::piped())
.spawn()?;

for finding in findings {
std::io::Write::write_all(
&mut child.stdin.as_ref().unwrap(),
finding.rendered().as_bytes(),
)?;
{
let stdin = child.stdin.as_mut().unwrap();
for finding in findings {
writeln!(stdin, "{}", finding.json())?;
}
}

let output = child.wait_with_output()?;
if !output.status.success() {
return Err(anyhow::anyhow!("clippy-sarif failed to generate report"));
}

std::io::Write::write_all(&mut sarif_file, &child.wait_with_output()?.stdout)?;
std::io::Write::write_all(&mut sarif_file, &output.stdout)?;

Ok(Some(sarif_path))
}
Expand Down

0 comments on commit c3f5ad4

Please sign in to comment.