# Validate. Scan. Ask why.

The Swift Analyzer CLI turns a prepared compiler snapshot into canonical reachability results you can inspect, automate, and explain.

> Unavailable as a public binary · account-free guide · exact validated profile

[Run your first scan](https://swift-analyzer.com/en/cli/#quick-start)

[Understand the model](https://swift-analyzer.com/en/product/)

## Prepare one exact snapshot

Build the selected SwiftPM executable or library product outside Swift Analyzer. Preserve the compiler-produced Index Store and create a manifest for that exact repository revision, product, target closure, build variant, and toolchain.

The current guide is bounded to the validated apple-swift-6.3.3-macos-arm64 profile. Swift Analyzer consumes the prepared evidence; it does not orchestrate the build or silently substitute a different snapshot.

## Four commands, one evidence chain

Each command keeps the same manifest and capability boundary in view. Help is available without a manifest; analysis commands preserve structured outcomes instead of collapsing every run into success or failure.

### doctor

Validate manifest structure, the exact toolchain and build identity, compiler data, worlds, and requested capability quality.

### stats

Inspect admitted fact and symbol statistics without treating an incomplete snapshot as a closed world.

### scan

Build the advisory reachability view and publish human results or canonical JSON.

### why

Explain one exact declaration or SCC identity from a scan against the same immutable manifest.

## Run the shortest useful sequence

Validate first, read the report, then scan. The commands below are documented grammar, not a claim that a public binary can be downloaded from this site. Preserve the JSON report and process exit code together.

```sh
swift-analyzer doctor --manifest snapshot.json --format human
swift-analyzer scan --manifest snapshot.json --format json
```

## Preserve every outcome

Automation must branch on the documented exit meaning. A produced report and a zero finding count do not override an incomplete capability or failed policy operation.

### Exit 0 · complete

The command completed and every capability requested for that invocation was satisfied.

### Exit 3 · incomplete

The command produced an incomplete capability result. Exit 3 is not a clean scan.

### Other exits stay distinct

Gate failure, invalid input, unusable acquisition data, an invariant failure, and cancellation retain separate exit outcomes.

## Explain an exact result

Take the canonical subject identity from scan JSON and ask why against the same manifest. Name, USR, and source-location selectors are not accepted as substitutes, so the explanation cannot silently attach to a different declaration.

```sh
swift-analyzer why --manifest snapshot.json \
  --scope repository \
  --subject '<copy-the-exact-identifier>' \
  --dimension code --format human
```

## Keep uncertainty explicit

The absence of known references does not prove that code is unused. A mismatched profile, incomplete source or index membership, an unclosed world, or unmodeled dynamic behavior keeps the affected conclusion unknown.

Correct the snapshot or extend the evidence before relying on a negative result. The current contract authorizes advisory review, not automatic deletion, autofix, or a default blocking findings gate.

---
Language: en
Canonical: https://swift-analyzer.com/en/cli/
Source revision: aaccde765dee97b46d111bd5f6493e17f55d086e
Catalog revision: 4558458d
Availability: local advisory preview; hosted service planned and unavailable.
