Share a Ruff report as HTML
Ruff is fast enough that teams run it on everything, which is exactly how you end up with a backlog of a few thousand findings and no good way to talk about them. It has no HTML writer — but it has SARIF, and SARIF converts.
SARIF → HTML
pip install ruff sarif-tools
ruff check . --output-format=sarif > ruff.sarif || true
sarif html ruff.sarif --output ruff.html
SARIF keeps the rule id, severity and code region for every finding, so the converted page is a real triage surface rather than a flattened list.
Or JUnit → HTML
If your image already has junit2html for test reports, reuse it:
pip install junit2html
ruff check . --output-format=junit > ruff-junit.xml || true
junit2html ruff-junit.xml ruff.html
Less detail, one fewer dependency.
Either way || true matters — ruff check exits non-zero whenever it finds
anything, and you want the report on exactly those runs.
Publish it
Drag ruff.html into the app, or from CI:
curl -fsS -X PATCH "https://commareports.com/api/v1/reports/$REPORT_ID" \
-H "Authorization: Bearer $COMMA_API_TOKEN" \
-H "Content-Type: application/json" \
-d "$(jq -n --rawfile html ruff.html \
--arg title "Ruff — $GITHUB_REF_NAME" '{title: $title, html: $html}')"
Keep ruff check . as a separate, unmuted step if you want the build to fail;
the report step should never be the gate.
Turning the backlog into work
PATCH one report id per repo and you get a stable URL whose revision history is the cleanup record. Then:
- Anchored threads on a rule cluster — "we're disabling
ANNproject-wide, here's why" — recorded next to the findings instead of only inpyproject.toml. See commenting on HTML. - A routine that re-runs weekly, so the number moving is visible without anyone maintaining it.
Limits
- Entry HTML: 5 MB. Assets: 25 MB per file, 250 MB and 500 files total.
A first-run report on a big legacy codebase is the one that gets close —
scope it with
--selectfor the shareable view. - 60 requests/minute per token.
Try it
Comma is free — unlimited reports, unlimited commenters, unlimited revision history.