Skip to content
Arxo Arxo

Report Formats

The engine can emit analysis results in several formats. You choose the format via ReportConfig (from arxo-types::config::schema) and, when using the Rust API, trigger reporting via OrchestrationResult::report_with_options.

report:
format: "json" # console | json | html | sarif | snapshot | yaml | msgpack
file: "out/report.json" # optional; required for html/snapshot/sarif file output
metric_timings: true # include per-metric run time in reports (default: false)
estimated_timings: false # show estimated run time in console (default: false)
  • format (string): One of the formats below. Default is console.
  • file (optional string): Output file path. Used by json, html, snapshot, yaml, sarif, and msgpack when writing to a file. If omitted, JSON/msgpack may print to stdout.
  • metric_timings: When true, reports can include per-metric duration (e.g. in JSON).
  • estimated_timings: When true, console output can show estimated run times.
FormatDescriptionTypical use
consoleHuman-readable terminal outputInteractive runs, quick checks
jsonStructured JSON (metrics, violations, metadata)APIs, tooling, dashboards
htmlInteractive web reportBrowsable results, sharing
sarifStatic Analysis Results Interchange Format (SARIF 2.1)IDE/CI integration, GitHub Code Scanning
snapshot / yamlMachine-readable YAML snapshotBaselines, diffs, automation
msgpackBinary MessagePack (same structure as JSON)Compact storage, fast parsing

After Orchestrator::run, you get an OrchestrationResult. You can:

  1. Emit a report (writes file or stdout depending on report.file and format):
// result is OrchestrationResult
result.report_with_options(quiet)?;
  1. Use the result in memory without going through a report:
  • result.resultsVec<MetricResult> (all metric results).
  • result.violations — policy violations.
  • result.import_graph — import graph for grouping/visualization.
  • result.report_config — the report config used.
  • result.build_timings — optional build timings.

So you can build your own JSON, custom UI, or pipeline from result.results and result.violations without using a built-in report format.

  • No file needed; output goes to stdout/stderr.
  • Human-readable sections for metrics, findings, and policy violations.
  • Optional per-metric duration when metric_timings is true.
  • Full result structure: metric results (id, values, findings, UI schema), policy violations, optional changed files, build timings.
  • Use report.file to write to a file; otherwise the engine may print JSON to stdout.
  • Suitable for parsing by other tools or your own dashboard.
  • Requires report.file (path where the HTML file will be written).
  • Single-file or linked assets for an interactive report (graphs, metrics, violations).
  • Requires report.file for file output; can also print to stdout.
  • SARIF 2.1; policy violations and metric findings appear as results with locations where applicable.
  • project_path on the result is used for artifact URIs so viewers can resolve file paths.
  • Requires report.file for file output.
  • YAML snapshot of key metrics and structure for baselines or diffing over time.
  • Same logical structure as JSON, encoded as MessagePack.
  • Use report.file to write to a file; otherwise may print to stdout.
  • Good for compact storage and fast parsing in supported languages.

When using the FFI, you typically pass a JSON config string. Set report.format and optionally report.file in that config. The engine returns or writes the chosen format; for JSON you often get the result string directly from the FFI.