Skip to content

Output formats

alint check renders the same findings in eight output formats. Select one with --format <name>.

A single Report fans out to each format:

FormatAliasesFor
humanpretty, textThe default. Colorized, grouped by file, for reading in a terminal.
jsonStable machine shape behind schema_version: 1. General-purpose integration.
sarifSARIF 2.1.0, for GitHub code scanning and other SARIF consumers.
githubgithub-actionsGitHub Actions workflow commands (inline annotations on a run).
markdownmdGitHub-flavored Markdown, for posting as a PR comment.
junitjunit-xmlJUnit XML, for CI test-report viewers.
gitlabgitlab-codequality, code-qualityGitLab Code Quality report.
agentagentic, aiLLM-shaped JSON with a templated agent_instruction per violation.

Each format is shown by example in the quickstart. The agent format has its own reference because its shape is purpose-built for AI coding agents.

sarif and gitlab attach a stable per-finding fingerprint (SARIF partialFingerprints, GitLab fingerprint) to every run — not only when a --baseline is active. SARIF’s is the canonical violation_fingerprint, the same identity the baseline file records, so an alert keeps one identity across SARIF and the baseline. A finding with a unique fingerprint carries that same identity in GitLab too; GitLab additionally disambiguates genuine within-report duplicates (two findings with byte-identical content), because GitLab Code Quality drops entries that share a fingerprint. GitHub Code Scanning uses the SARIF fingerprint to correlate alerts across runs — dedupe, and track a finding as fixed or reopened — with no --baseline required.

When a run is filtered through a baseline, suppression marks findings rather than deleting them, and only two formats surface those marks:

  • sarif carries suppressions: [{ "kind": "external" }] and baselineState (unchanged for suppressed, new for live) on each result — so GitHub Code Scanning keeps grandfathered alerts open-but-dismissed instead of flapping fixed-then-reopened. (The stable partialFingerprints identity is emitted on every run, baseline or not — see above.)
  • json omits suppressed findings from results and records a summary.baselined_suppressed count in the envelope.

The other six formats receive the already-filtered live report and are baseline-oblivious. The global --show-baselined flag lists the suppressed findings in full, in any format; the exit code is gated on the live (new) findings only, in every format.