1use thiserror::Error;
4
5#[derive(Debug, Error)]
9pub enum CodeIngestError {
10 #[error("findings.json must be a JSON object with required field findings: array")]
11 InvalidRoot,
12
13 #[error("missing required field {path}")]
14 MissingField { path: &'static str },
15
16 #[error("field {path} must be {expected}")]
17 InvalidType {
18 path: String,
19 expected: &'static str,
20 },
21
22 #[error("invalid {field} {value:?}; valid: {valid}")]
23 InvalidValue {
24 field: &'static str,
25 value: String,
26 valid: &'static str,
27 },
28
29 #[error("finding {id:?} with severity {severity:?} requires non-empty failure_scenario")]
30 MissingFailureScenario { id: String, severity: String },
31
32 #[error(
33 "invalid evidence at findings[{finding_index}].evidence[{evidence_index}]; valid: string or object with path,line,description"
34 )]
35 InvalidEvidence {
36 finding_index: usize,
37 evidence_index: usize,
38 },
39
40 #[error("invalid source_run; provide options.source_run or audit.date and audit.commit")]
41 MissingSourceRun,
42
43 #[error("json parse: {0}")]
44 Json(#[from] serde_json::Error),
45}