xbp-analysis 10.57.0

Language-agnostic static analysis (error-handling / Aspirator-style) for XBP
Documentation
use crate::domain::report::AnalysisReport;
use crate::ports::outbound::DiagnosticRenderer;

pub struct JsonRenderer;

impl DiagnosticRenderer for JsonRenderer {
    fn render(&self, report: &AnalysisReport) -> Result<String, String> {
        serde_json::to_string_pretty(report).map_err(|e| e.to_string())
    }
}

#[cfg(test)]
mod tests {
    use super::*;

    #[test]
    fn json_roundtrip_empty() {
        let r = AnalysisReport::default();
        let s = JsonRenderer.render(&r).unwrap();
        assert!(s.contains("findings"));
        let _: AnalysisReport = serde_json::from_str(&s).unwrap();
    }
}