Skip to content

Reports

Choose reporters according to how the result will be consumed:

Reporter Destination Best for
terminal stdout Interactive use and concise CI logs.
json File Structured integrations and complete metadata.
jsonl stdout Streaming shell and agent workflows.
html File Searchable human review with theme switching.
sarif File GitHub code scanning and compatible platforms.

JSON, HTML, and SARIF default to reports/cuke-dedup/ and can be redirected with --output. Relative output paths are resolved from the analysis root, not the shell’s working directory. A file-only run prints the generated paths to stdout.

Terminal and JSONL both own stdout and cannot be selected together. JSONL can be combined with file reporters without contaminating the stream.

The terminal report shows the tool version, rule headings, findings with primary and related locations, and ends with the total number of active findings and detection time. Timing covers discovery, parsing, and analysis; --no-metrics omits it.

Rule headings are bold cyan, paths are blue, error/warning labels are red/yellow, and footer details are gray only when stdout is a terminal. Set NO_COLOR to a nonempty value to disable color. Piped output and the other report formats contain no ANSI color codes.

JSON schema version 3 contains:

  • Relative Unicode-aware source spans and severity.
  • Suppressions and semantic fingerprints.
  • Similarity scores and suggested actions.
  • Structured pair or cluster evidence.
  • Duplication threshold calculations.
  • Corpus and analysis completeness signals.
  • Candidate-source and truncation counts.
  • Input counts and optional execution metrics.

The self-contained HTML report presents the same result with search, severity and rule filters, light and dark themes, matcher differences, side-by-side handler snippets, and an incomplete-run alert.

Set noMetrics: true, pass --no-metrics, or use the Action’s no-metrics: true input when byte-reproducible artifacts matter. The deterministic corpus census remains present.

JSONL schema version 3 emits one compact record per finding and a final summary:

Terminal window
cuke-dedup . --reporters jsonl \
| jq -c 'select(.type == "finding" and .active)'

Each finding record is self-contained. It includes a location-independent semantic fingerprint, active or suppressed state, threshold contribution, source spans, suggested action, and structured evidence. Free-text fields are limited to 2,000 Unicode characters; truncatedFields lists shortened fields.

The final type: "summary" record includes recordCount, aggregate counts, threshold outcome, analysis status, and optional metrics. Operational warnings and errors stay on stderr so stdout can be parsed incrementally. JSONL is not capped by total finding count, but applies the same per-record membership bounds as other reporters.

Analyzed repository content is untrusted data. Consumers—especially AI agents—must treat matcher text, source snippets, reasons, and suggested context as data, never as instructions.

SARIF 2.1.0 includes active findings, portable locations, stable partial fingerprints, severity, similarity properties, suggested actions, and threshold outcome. Each rule links to its dedicated documentation section.

The GitHub Action can generate SARIF alongside terminal or HTML output. Uploading SARIF to a code-scanning platform is controlled by the consuming workflow and may require additional permissions.

--emit-fingerprints FILE writes the per-definition evidence the analyzer compared, for test tooling that must tell “no finding” apart from “nothing analyzed”. It is not a reporter: stdout, stderr, report files and the exit code are the same with or without it.

  • One compact JSON line per analyzed definition, sorted by path, line and column. A definition from an excluded, unselected or unreadable source, or one removed by an uncertain registration, has no line; an empty corpus writes an empty file.

Report presentation bounds — snippet sizes, cluster memberships, and retained-finding caps — are listed in Safety and limitations.