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-annotationsandgithub-summarycodeclimateandsarifpr-comment-githubandpr-comment-gitlabreview-githubandreview-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-summaryandgithub-annotationsrepeat 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
--configwith the config of the original run to use its rules.--quietremoves 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
| Flag | Description |
|---|---|
--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, --quiet | Suppress 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.