Tipo de demo · 03

Revisão de código de um pull request

Use isto quando quiser conduzir alguém por uma mudança real — o que mudou e por que importa — usando linhas de diff coloridas, selos de risco e notas do revisor fixadas exatamente na linha a que se referem.

Este é um exemplar copiável. Pegue o widget de revisão abaixo (o bloco .pr + seu script) e leve-o para uma lição construída a partir de assets/lesson-template.html — mantenha os tokens de design e o padrão Simples → Técnico.

1

O que você está vendo


Um pull request é uma proposta: "aqui está uma mudança que eu gostaria de integrar (merge) ao código compartilhado." Revisá-lo significa ler a mudança linha por linha e decidir se é seguro aceitá-la.

A mudança abaixo adiciona um limite de taxa (rate limit) à página de login — um teto de 5 tentativas por minuto por endereço — para que um atacante não consiga adivinhar milhares de senhas. Linhas verdes foram adicionadas, linhas vermelhas foram removidas. As pílulas no topo são selos de risco — uma leitura rápida de para que lado cada propriedade se moveu. Os pontos cor de argila são notas do revisor fixadas a uma linha; clique numa linha pontilhada para ler uma.

Pense nisso como… marcar o rascunho de um colega. Você risca uma frase (vermelho), escreve uma melhor na margem (verde) e deixa bilhetes adesivos — "isto pode quebrar para visitantes recorrentes" — colados exatamente na linha a que se refere.

Como um revisor lê este diff

O cabeçalho de hunk @@ -14,6 +14,11 @@ significa: a partir da linha 14, o arquivo antigo tinha 6 linhas, o novo tem 11. Um diff unificado mostra linhas de contexto (inalteradas), remoções - e adições + intercaladas, para que você veja a intenção, não apenas o resultado.

Os selos de risco são o resumo de relance do revisor sobre a direção da mudança: a postura de segurança melhora (um vetor de força bruta se fecha), a latência de cauda fica praticamente estável (uma consulta a um contador em memória) e surge um novo modo de falha (usuários legítimos atrás de um NAT compartilhado podem ser limitados juntos). Nada disso está no texto do diff — é o julgamento que a revisão acrescenta por cima.

As notas carregam uma severidade: blocking precisa ser resolvida antes do merge, nit é um polimento opcional, praise reforça um bom padrão. Ancorar uma nota a um número de linha mantém a conversa precisa conforme o branch evolui.

2

A revisão


A mudança real, anotada. Clique em qualquer linha com um ponto cor de argila para abrir a nota do revisor.

ABERTO  #482 · aberto por p.mendes · branch fix/login-rate-limitmain
Adicionar limite de taxa ao endpoint de login

Limita tentativas de senha a 5 / minuto por IP em POST /auth/login para conter credential-stuffing. 1 arquivo alterado · +9 −2

Segurançavetor de força bruta fechado Latência~ estável (em memória) Modos de falharisco de bloqueio em NAT compartilhado Superfície de ataquetaxa de adivinhação limitada em 99%
src/routes/auth.ts+9−2
@@ -11,9 +11,16 @@ router.post('/auth/login', async (req, res) => {
1111 const { email, password } = req.body;
13+ const hits = await limiter.incr(key, { windowSec: 60 });
15+ return res.status(429).json({ error: 'too_many_attempts' });
16+ }
1217 const user = await db.users.findByEmail(email);
18+ const ok = user && await verify(password, user.hash);
19+ if (!ok) return res.status(401).json({ error: 'bad_credentials' });
1520 return res.json({ token: sign(user.id) });
0 / 4 notas abertas Aprovar com alterações

Cada linha com ponto cor de argila carrega uma nota. 1 é bloqueante e precisa ser corrigida antes do merge — veja se você consegue encontrá-la.

3

Como uma nota vira um selo


Cada selo no topo não é decoração — é a soma do que o revisor encontrou nas linhas. Leia da esquerda para a direita: uma linha levanta uma preocupação, o revisor julga sua direção e esse julgamento se consolida em um selo.

LINHA DO DIFF + if (hits > 5) return 429 limita adivinhações por IP + limiter.incr(key, 60s) uma consulta em memória key = login:${req.ip} NAT compartilhado → bloqueio em grupo JULGAMENTO ajuda? CONSOLIDA EM ▲ Segurança ≈ Latência ▲ Modos de falha
Leia da esquerda → direita: uma linha de diff levanta uma preocupação, o revisor julga sua direção e o julgamento se consolida em um selo.
4

Faça do seu jeito


Para ensinar uma mudança diferente, mantenha a estrutura e troque o conteúdo: