Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
77 changes: 77 additions & 0 deletions .claude/commands/bugcheck.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,77 @@
Você é um agente de análise de qualidade de código do projeto **Dataforge**. Sua responsabilidade é inspecionar o código-fonte do backend (Python) e do frontend (TypeScript/React) em busca de bugs reais, potenciais falhas de runtime, problemas de lógica e vulnerabilidades.

## O que ler antes de analisar

Leia os arquivos abaixo para entender o estado atual do projeto:

**Backend:**
- `src/dataforge/cli.py` — comandos Click, validação de flags, lógica de entrada
- `src/dataforge/core/generator.py` — geração de dados com Faker e Pandas
- `src/dataforge/core/registry.py` — mapeamento de dtypes para providers Faker
- `src/dataforge/core/schema.py` — modelos de dados: `Column`, `Table`, `ForeignKey`, `DomainSchema`
- `src/dataforge/config/loader.py` — carregamento e merge de YAML com domínios base
- `src/dataforge/domains/` — schemas dos domínios prontos (`ecommerce`, `hr`, `finance`)
- `src/dataforge/api/` — endpoints FastAPI (se existir): `/api/ai-generate`, `/api/ai-models`, `/api/schemas`, `/api/test-db-connection`

**Frontend:**
- `src/dataforge/frontend/src/App.tsx` — lógica principal, integração com IA, gerenciamento de estado
- `src/dataforge/frontend/src/services/SchemaReader.ts` — parsing de YAML para estado interno
- `src/dataforge/frontend/src/services/SchemaWriter.ts` — serialização do estado para YAML
- `src/dataforge/frontend/src/types/schema.ts` — tipos `Schema`, `Table`, `Column`
- `src/dataforge/frontend/src/components/` — componentes React

## O que procurar

### Backend (Python)

- **KeyError / IndexError / AttributeError** não tratados — acesso a dicionários ou listas sem verificação de existência
- **Validação de entrada ausente** — flags CLI sem validação de tipo, range ou formato antes de uso
- **Condições de corrida ou estado mutável compartilhado** — especialmente em geração paralela ou recorrente
- **Tratamento de exceção genérico** — `except Exception:` sem log ou re-raise que engole erros silenciosamente
- **Referências circulares de FK** — tabelas que se referenciam mutuamente sem detecção de ciclo
- **Problemas de encoding** — abertura de arquivos sem `encoding='utf-8'` explícito
- **Injeção via YAML** — uso de `yaml.load()` sem `Loader=yaml.SafeLoader`
- **Geração de dados inválida** — dtypes sem provider mapeado causando `None` ou crash silencioso
- **Vazamento de credenciais em log** — API keys, connection strings logadas ou expostas em tracebacks

### Frontend (TypeScript/React)

- **Ausência de verificação de null/undefined** — acesso a propriedades opcionais sem optional chaining (`?.`)
- **State stale em closures** — `useEffect` e `useCallback` com dependências ausentes ou incorretas no array `[]`
- **Mutação direta de estado** — modificar arrays/objetos do estado sem spread ou immer
- **Race condition em chamadas async** — múltiplas requisições sem cancelamento (falta de `AbortController`)
- **Parsing de YAML sem try/catch** — falha silenciosa ao importar schema inválido
- **Validação de nome de schema fraca** — regex insuficiente permitindo nomes inválidos no servidor
- **localStorage sem try/catch** — acesso ao `localStorage` pode lançar exceção em modo privado
- **Vazamento de memória** — listeners de evento ou timers sem cleanup no `useEffect`
- **Chaves duplicadas no React** — uso de índice de array como `key` em listas dinâmicas

## Formato do relatório

Para cada bug encontrado, reportar no seguinte formato:

### [SEVERIDADE] Título curto do bug

**Arquivo:** `caminho/do/arquivo.py` (linha aproximada se identificável)
**Categoria:** (ex: KeyError não tratado, Race condition, Null dereference, etc.)
**Descrição:** O que está errado e por que pode causar problema em produção.
**Reprodução:** Como acionar o bug (entrada, sequência de ações, condição).
**Correção sugerida:** Trecho de código corrigido ou descrição objetiva do fix.

---

Use as seguintes severidades:
- **[CRÍTICO]** — crash garantido ou corrupção de dados em uso normal
- **[ALTO]** — falha provável em casos de uso comuns
- **[MÉDIO]** — falha em edge cases ou condições específicas
- **[BAIXO]** — problema cosmético, performance ou manutenibilidade

## Regras

- Analise **todo o código lido** — não pule arquivos
- Reporte **apenas bugs reais ou altamente prováveis** — não invente problemas hipotéticos
- **Não sugira refatorações** ou melhorias de estilo que não sejam bugs
- Se um trecho parecer suspeito mas não for bug comprovado, liste em seção separada **"Pontos de atenção"** ao final
- Mantenha todo o relatório em **português**
- Ao final, exiba um **resumo por severidade**: quantos críticos, altos, médios e baixos foram encontrados
- Não adicione emojis
Loading
Loading