secreport
Render security findings into text, JSON, JSONL, SARIF, and Markdown.
Why
Every scanner outputs findings in a different shape, but operators need consistent output for dashboards, tickets, and review. secreport standardizes that final step with pluggable formats: text, JSON, JSONL, SARIF, and Markdown.
It accepts both the canonical secfinding::Finding and any type that implements Reportable, so you can keep custom data models while still producing unified artifacts.
Quick Start
use ;
use ;
Features
- Shared render entry points:
renderforFinding,render_anyfor anyReportabletype. - Formats:
Text,Json,Jsonl,Sarif,Markdown. emitfor stdout/file emission in one call.- Human-friendly colorized text summaries plus severity breakdown.
- Reusable with any type implementing
Reportable, including customrule_id, CWE/CVE lists, confidence, tags, and exploit hints.
TOML Configuration
secreport does not use TOML configuration.
API Overview
Format: output format selector.render: formatVec<Finding>.render_any: format genericReportabletypes.emit: print to stdout or write file path.
Examples
1) Produce JSON for API pipelines
use Finding;
use ;
let findings: = Vecnew;
let json = render;
println!;
2) Build Markdown report for issue triage
use ;
use ;
let findings = vec!;
let md = render;
emit.unwrap;
3) Render your own finding type
use ;
use ;
let findings = vec!;
let out = render_any;
println!;
4) Run the bundled examples
Traits
secreport does not define traits, but your reporting integration usually depends on secfinding::Reportable (rendered through render_any).
Related Crates
License
MIT, Corum Collective LLC
Docs: https://docs.rs/secreport
Santh ecosystem: https://santh.io