use serde::Deserialize;
use serde::Serialize;
use crate::config::DiagnosticCode;
use crate::reporting::CompilerWarningFacts;
use crate::reporting::FixSupport;
use crate::reporting::Severity;
#[derive(Debug, Serialize, Deserialize)]
pub struct StoredReport {
pub version: u32,
#[serde(default)]
pub analysis_fingerprint: String,
#[serde(default)]
pub scope_fingerprint: String,
pub package_root: String,
#[serde(default)]
pub crate_root_file: String,
pub config_fingerprint: String,
pub findings: Vec<StoredFinding>,
#[serde(default)]
pub pub_use_fix_facts: Vec<StoredPubUseFixFact>,
#[serde(default, rename = "compiler_warnings")]
pub compiler_warning_facts: CompilerWarningFacts,
#[serde(default)]
pub use_sites: Vec<UseSite>,
}
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
pub struct UseSite {
pub target_def_path: String,
pub caller_module_def_path: String,
}
#[derive(Debug, Serialize, Deserialize)]
pub struct StoredFinding {
pub severity: Severity,
pub diagnostic_code: DiagnosticCode,
pub path: String,
pub line: usize,
pub column: usize,
pub highlight_len: usize,
pub source_line: String,
pub item: Option<String>,
pub message: String,
pub suggestion: Option<String>,
#[serde(default, rename = "fixability")]
pub fix_support: FixSupport,
#[serde(default)]
pub related: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub item_def_path: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub narrower_scope_def_path: Option<String>,
}
#[derive(Debug, Serialize, Deserialize)]
pub struct StoredPubUseFixFact {
pub child_path: String,
pub child_line: usize,
pub child_item_name: String,
pub parent_path: String,
pub parent_line: usize,
pub child_module: String,
}