SkillProgramaçãoQA

Address Sanitizer e Outros Sanitizers

Usa AddressSanitizer, UBSan, MSan e afins para pegar bugs de memória e comportamento indefinido cedo — em dev, testes e fuzzing. Indicada para código C/C++/Rust/Go que manipula memória diretamente.

Ações
PerfilDev
ProfundidadeMédia
IdiomaInglês (skill original)
Objetivo

Em uma frase.

Capturar bugs de memória e comportamento indefinido em tempo de execução, antes que cheguem à produção. Sanitizers pegam use-after-free, buffer overflow, memória não inicializada e UB que escapam dos testes unitários, e vêm de graça com a toolchain.

Aplicação

Quando
faz sentido.

Usar
  • Bases de código C/C++ que lidam com memória diretamente
  • Blocos unsafe em Rust
  • Código Go usando cgo
  • Durante desenvolvimento, em testes e especialmente em fuzzing
Não usar
  • Código puramente em linguagem gerenciada, sem essa classe de bugs de memória
  • Builds de produção, já que o overhead do sanitizer é de cerca de 2 a 3x em runtime e memória
Prompt

Instruções
para a IA.

### Catálogo de sanitizers

Escolha o sanitizer conforme a classe de bug. O AddressSanitizer (ASan, -fsanitize=address) pega overflows de heap/stack/global, use-after-free, double-free e leaks (com LSan). O UBSan (-fsanitize=undefined) captura overflow de inteiro, ponteiro desalinhado, divisão por zero e null deref. O MemorySanitizer (MSan, só Clang) detecta leituras de memória não inicializada. O ThreadSanitizer (TSan) encontra data races.

### Como habilitar

No CMake, adicione -fsanitize=address,undefined -fno-omit-frame-pointer às flags. Em Rust nightly, use RUSTFLAGS="-Z sanitizer=address" cargo +nightly test. Em Go, basta go test -race.

### Combinações e CI

ASan, UBSan e LSan são compatíveis e rodam juntos; MSan e TSan precisam rodar isolados. No CI, faça o build da variante com sanitizer junto do build normal, rode a suíte de testes sobre ela e falhe o pipeline em qualquer report. Para fuzzing, sempre rode com sanitizers. A saída esperada é um build sanitizado integrado ao CI com relatório de findings.
Constelação

Onde
ela vive.

Execução

Como usar
com IA.

  1. 01Copie a skill (botão "Copiar skill para IA", no topo): o texto copiado já é a skill completa, não um resumo.
  2. 02Abra o Claude ou Claude Code e cole — a IA recebe todas as instruções e fica pronta para a tarefa.
  3. 03Prefere usar como arquivo reutilizável? Baixe o .zip e coloque o SKILL.md em .claude/skills/ (Claude Code) ou anexe o arquivo no Claude (claude.ai).