Skip to main content

react_auditor/formatters/
compact.rs

1use crate::formatters::Formatter;
2use crate::rules::Severity;
3use crate::scanner::ScanResult;
4
5pub struct CompactFormatter;
6
7impl Formatter for CompactFormatter {
8    fn format(&self, results: &[ScanResult], quiet: bool) -> String {
9        let mut output = String::new();
10
11        for result in results {
12            for v in &result.violations {
13                if quiet && v.severity != Severity::Error {
14                    continue;
15                }
16
17                let severity_str = match v.severity {
18                    Severity::Error => "E",
19                    Severity::Warning => "W",
20                    Severity::Off => continue,
21                };
22
23                output.push_str(&format!(
24                    "{sev}  {file}:{line}:{col}  {rule}  {msg}\n",
25                    sev = severity_str,
26                    file = v.file_path,
27                    line = v.line,
28                    col = v.column,
29                    rule = v.rule_id,
30                    msg = v.message,
31                ));
32            }
33        }
34
35        output
36    }
37}