use camino::Utf8PathBuf;
use serde::{Deserialize, Serialize};
#[derive(Clone, Debug, Serialize, Deserialize)]
pub struct AdviseReport {
pub schema: String,
pub findings: Vec<AdviseFinding>,
}
impl AdviseReport {
#[must_use]
pub fn empty() -> Self {
Self {
schema: crate::schema::CORDANCE_ADVISE_REPORT_V1.into(),
findings: vec![],
}
}
}
#[derive(Clone, Debug, Serialize, Deserialize)]
pub struct AdviseFinding {
pub id: String,
pub severity: Severity,
pub summary: String,
pub doctrine_anchor: Utf8PathBuf,
pub project_paths: Vec<Utf8PathBuf>,
pub remediation: String,
}
#[derive(Clone, Copy, Debug, Eq, PartialEq, Hash, Serialize, Deserialize)]
#[serde(rename_all = "lowercase")]
pub enum Severity {
Error,
Warning,
Info,
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn empty_report_has_schema() {
let r = AdviseReport::empty();
assert_eq!(r.schema, crate::schema::CORDANCE_ADVISE_REPORT_V1);
assert!(r.findings.is_empty());
}
}