xbp-analysis 10.57.0

Language-agnostic static analysis (error-handling / Aspirator-style) for XBP
Documentation
//! Output format adapters.

mod github_actions;
mod json;
mod sarif;
mod terminal;

pub use github_actions::GithubActionsRenderer;
pub use json::JsonRenderer;
pub use sarif::SarifRenderer;
pub use terminal::TerminalRenderer;

use crate::domain::report::AnalysisReport;
use crate::domain::request::OutputFormat;
use crate::ports::outbound::DiagnosticRenderer;

pub fn render_report(report: &AnalysisReport, format: OutputFormat) -> Result<String, String> {
    let renderer: Box<dyn DiagnosticRenderer> = match format {
        OutputFormat::Terminal => Box::new(TerminalRenderer),
        OutputFormat::Json => Box::new(JsonRenderer),
        OutputFormat::Sarif => Box::new(SarifRenderer),
        OutputFormat::GithubActions => Box::new(GithubActionsRenderer),
    };
    renderer.render(report)
}