react_auditor/formatters/
json.rs1use crate::formatters::Formatter;
2use crate::rules::Severity;
3use crate::scanner::ScanResult;
4
5pub struct JsonFormatter;
6
7impl Formatter for JsonFormatter {
8 fn format(&self, results: &[ScanResult], _quiet: bool) -> String {
9 let entries: Vec<serde_json::Value> = results
10 .iter()
11 .flat_map(|r| {
12 r.violations.iter().map(|v| {
13 serde_json::json!({
14 "file": v.file_path,
15 "line": v.line,
16 "column": v.column,
17 "ruleId": v.rule_id,
18 "message": v.message,
19 "severity": match v.severity {
20 Severity::Error => "error",
21 Severity::Warning => "warning",
22 Severity::Off => "off",
23 },
24 })
25 })
26 })
27 .collect();
28
29 serde_json::to_string_pretty(&entries).unwrap_or_default()
30 }
31}