# Doctor: diagnóstico local e remoto

Inspecione arquivos, dependências e respostas HTTP com códigos de diagnóstico e saídas para CI.

Requer WU CLI `1.2.0` e WU Framework `4.0.0` para as APIs das aplicações. Confira `wu --version` e as dependências do projeto.

```sh
wu info
wu doctor --json
wu doctor --url https://example.com --route /guide/ --entry /apps/cart/entry.js --json
```

`wu info` mostra a configuração efetiva. Doctor local usa o binário nativo; o remoto usa Node `>=20` e faz GET sem cookies ou credenciais. Não executa JavaScript nem repara arquivos. A saída JSON não inclui ANSI ou avisos de atualização. O modo local JSON não consulta a porta `3000`; a saída humana mantém essa verificação antiga.

| Código | Verificação |
| --- | --- |
| `WU_D000` | Projeto não encontrado. |
| `WU_D001` | Diretórios das aplicações. |
| `WU_D002` | Entrada ou build do shell. |
| `WU_D003` | Faixas consistentes e compatíveis com a versão alvo do Framework no catálogo. |
| `WU_D004` | Overrides por diretório e toolchains. |
| `WU_D005` | Colisões de portas. |
| `WU_D006` | Arquivos sensíveis na saída pública. |
| `WU_D007` | Cabeçalhos de segurança e handlers inline. |
| `WU_D008` | Orientação de verificação HTTP ou resposta local. |
| `WU_D009` | Framework usado por várias apps ausente em `shared`. |

Relatórios incluem `schemaVersion: 1`, `tool`, `mode`, `ok`, `checks`, `problems` e `diagnostics`; os locais também incluem `version`. Cada diagnóstico tem `code`, `severity` e `message`. Uma categoria pode gerar vários achados. Avisos podem permanecer com saída `0`; erros produzem `1`. Opções inválidas ou falhas de execução remota produzem `2`.

`WU_D003` aceita faixas limitadas ao major do Framework no catálogo, como `^4.0.0`, `4.x`, `4.2.3` ou `>=4 <5`. Rejeita faixas incompatíveis, malformadas, vazias ou abertas a outro major, como `^3 || ^4` e `>=4`. As declarações do shell e das apps devem coincidir; dependências locais mantêm suas verificações de destino.

<span id="alcance-del-escaneo-remoto"></span>

<span class="section-anchor" id="section-1"></span>

## Escopo do exame remoto

`--url` seleciona HTTP ou HTTPS. Repita `--route` para páginas e `--entry` para módulos ou origens externas explicitamente incluídas. `--timeout` vale `5000` ms por resposta, incluindo o corpo, e aceita `100`–`30000`. O exame segue referências estáticas; imports calculados e apps descobertas em execução exigem testes de navegador.

O exame limita recursos a 32, requisições a 40, redirecionamentos a 3 por recurso, respostas a 2 MiB e tempo total a 30 segundos. Uma inspeção incompleta é um erro. Os diagnósticos distinguem status HTTP, MIME incorreto, CSP inline, fallback HTML para assets, falhas de rede e origens externas omitidas. Divida sites grandes em percursos específicos.

<span id="integridad-de-un-despliegue"></span>

<span class="section-anchor" id="section-2"></span>

## Integridade de uma implantação

```sh
wu doctor --url https://example.com --integrity --pubkey keys/deploy.pub.json --json
```

`--integrity` verifica `wu-integrity.json`, criado por `wu build --sign`, e compara assinatura, bytes, MIME, CSP e import maps publicados. `--pubkey` aceita PEM ou JWK confiável. Sem essa opção, a chave incluída prova apenas consistência e gera `WU_INTEGRITY_UNPINNED`. Este modo tem limites próprios: até 10000 arquivos, manifesto de 32 MiB e arquivos de 64 MiB; não usa o limite de 32 recursos do escaneamento normal.

O escaneamento local verifica CSP em todas as páginas de `dist/`; o remoto também descobre apps em `#wu-apps`. Nenhum substitui montar as apps no navegador. Para assinar e publicar, consulte [build](/pt/docs/cli/build/).

<span id="referencia-de-implementación"></span>

<span class="section-anchor" id="section-3"></span>

## Referência de implementação

- `wu-cli/src/commands/doctor.zig`
- `wu-cli/src/commands/doctor-remote.cjs`
- `wu-cli/tests/doctor-policy.test.cjs`
- `wu-cli/tests/doctor-remote-apps.test.cjs`
- `wu-cli/tests/build-deploy.test.cjs`