secfinding
A typed security finding. Instead of passing around JSON blobs with maybe-there-maybe-not fields, you get a struct with a builder, proper severity levels, evidence types, and a trait that lets any scanner's output type plug into the reporting pipeline.
use ;
let f = builder
.title
.detail
.cve
.tag
.build;
The Reportable trait
You probably already have your own finding type. You don't need to switch to ours. Implement Reportable and your type works with secreport for SARIF/JSON/Markdown output:
use ;
Four required methods. Everything else has defaults. Your type now gets free SARIF output, JSON serialization, Markdown reports.
Severity
Five levels: Info, Low, Medium, High, Critical. Ordered, comparable, serializable. Parse from strings:
use Severity;
let s = from; // from &str
let s = from; // from number (0=Info, 4=Critical)
let s: Severity = "critical".into;
Evidence
Typed proof attached to findings. HTTP responses, code snippets, DNS records, banners:
use Evidence;
let ev = HttpResponse ;
Filtering
Filter findings by severity, scanner, tags:
use ;
let config = FindingFilter ;
let filtered = filter;
Contributing
Pull requests are welcome. There is no such thing as a perfect crate. If you find a bug, a better API, or just a rough edge, open a PR. We review quickly.
License
MIT. Copyright 2026 CORUM COLLECTIVE LLC.