1use crate::report::{FileMetrics, Finding};
2
3pub trait Emitter {
4 fn emit(&mut self, finding: Finding);
5
6 fn record_metrics(&mut self, _metrics: FileMetrics) {}
7}
8
9#[derive(Default)]
10pub struct ReportEmitter {
11 pub findings: Vec<Finding>,
12 pub metrics: Vec<FileMetrics>,
13}
14
15impl ReportEmitter {
16 #[must_use]
17 pub fn new() -> Self {
18 Self {
19 findings: Vec::new(),
20 metrics: Vec::new(),
21 }
22 }
23}
24
25impl Emitter for ReportEmitter {
26 fn emit(&mut self, finding: Finding) {
27 self.findings.push(finding);
28 }
29
30 fn record_metrics(&mut self, metrics: FileMetrics) {
31 self.metrics.push(metrics);
32 }
33}