Skip to content
Fallow home
All docs pages

fallow report

Analyze once, then produce every CI output from the saved result. Fallow report renders saved JSON results as CI artifacts, summaries, PR comments, or inline-review envelopes without re-running analysis.

Run the analysis one time, and produce each CI output from that one result. fallow report renders a saved --format json results file in another format without re-running analysis. The JSON file stays the record of what the run found, and each CI output comes from it.

fallow dead-code --type-aware --format json -o results.json
fallow report --from results.json --format github-annotations
fallow report --from results.json --format pr-comment-github > comment.md
fallow report --from results.json --format review-github > review.json

fallow report reads the kind field of the saved envelope, so it can render any saved fallow result: dead-code, dupes, health, audit, security, or the bare combined run. The supported targets are:

  • github-annotations and github-summary
  • codeclimate and sarif
  • pr-comment-github and pr-comment-gitlab
  • review-github and review-gitlab

The PR-comment and review targets keep the saved audit conclusion, diff positions, ownership grouping, and repository path prefix. For type-aware dead-code and audit results, fallow renders the final findings after semantic refinement, and not the earlier syntactic candidates. When the run requires semantic evidence and the evidence is incomplete, the analysis run fails closed. It does not save a result that only looks clean.

A re-render also repeats the verdicts of the saved envelope, so a rendered body says what the run said:

  • The PR-comment and review bodies repeat the baseline advisory, the gate verdicts, and the request outcomes.
  • github-summary and github-annotations repeat the gate verdicts and the request outcomes.

The comment and review targets also report a diff filter that did not apply during the re-render. These bodies use the diff that you give fallow report. They do not use the diff of the analysis run.

The combined pull-request comment of the bare fallow run (--format pr-comment-github or pr-comment-gitlab) also shows the status note, for example a diff filter that did not apply. The review summary body of the bare run (--format review-github or review-gitlab) shows the same note. For a saved combined envelope, fallow report --from renders the generic body with the same note.

Finding levels

fallow report keeps the level that the analysis run gave each finding. It reads the effective_severity field of each dead-code finding, each complexity finding, and each prop-drilling, thin-wrapper, and duplicate-prop-shape finding. The github-annotations, sarif, and codeclimate levels are therefore the same as in the direct run. See Levels in CI formats.

A saved report from an older version has no effective_severity:

  • Complexity findings keep the earlier levels from the band.
  • The other findings take their levels from the base rules of the config. When fallow finds no config for this fallback, it prints a note on stderr. It also prints the note when the SARIF default levels of the default rules differ from the saved levels. Pass --config with the config of the original run to use its rules. --quiet removes both notes.

A saved --group-by dead-code envelope with no findings has an empty groups list. fallow report --from renders zero findings for it and exits 0.

GitHub annotations and summaries go to the job log, so they work on fork PRs without a write token. PR-comment and review envelopes still need the posting step for your provider. See CI integration.

Options

FlagDescription
--from <PATH>Path to a fallow JSON results file from --format json (required)
-f, --format <FORMAT>Target format: github-annotations, github-summary, codeclimate, sarif, pr-comment-github, pr-comment-gitlab, review-github, or review-gitlab
-r, --root <ROOT>Project root directory. Fallow uses it to rebase paths to the repository root
-q, --quietSuppress progress output on stderr

Exit code

fallow report exits 0, also when the saved file contains findings. The analysis run that wrote the file does the gating, with --fail-on-issues or the audit verdict. In CI, use the exit code of that run, and use report only to render.

An unsupported --format value exits with code 2.

See also