Checker Report Infrastructure
include/Checker/Framework/ and lib/Checker/Framework/ implement the shared
bug-reporting layer used by all Lotus checkers.
Main components:
BugReportandBugDiagStepstore findings and diagnostic traces.BugReportMgris the central aggregation and emission entry point.BugTypesdefines checker-visible bug categories and metadata.SuppressionManagerfilters findings by suppression rules.SARIFsupport emits standardized machine-readable reports.
Every major checker family routes its output through this layer so tools can share JSON, SARIF, and summary reporting.
BugReportMgr aggregates reports within one checker invocation. It does
not combine reports emitted by separate lotus-check --engine=... runs; when
multiple engines are run separately, preserve the engine value and options with each export
and triage overlapping findings as separate evidence.
Reporting workflow
A checker creates a BugReport with a stable category and attaches
BugDiagStep entries as it reconstructs the relevant path. It submits the
report to BugReportMgr, which applies suppressions and selects the output
format. Keep report construction separate from detection logic so a checker
can emit the same finding to a human-readable summary and a SARIF consumer
without maintaining two output paths.
See also Checker Framework and Bug Detection with Lotus.