Pular para o conteúdo

Atrito na revisão de PRs do Sentry

Análise baseada em evidências do atrito de revisão em getsentry/sentry — 500 PRs ao longo de 90 dias, com análise aprofundada de comentários e propostas de ADRs.

Este estudo mede onde o atrito de revisão de código se concentra em getsentry/sentry e identifica quais Architecture Decision Records (ADRs) poderiam reduzir ciclos repetidos de discussão. Diferentemente de um despejo superficial de métricas, vamos além dos números agregados: lemos as threads reais de comentários de PRs de alto atrito, classificamos os temas recorrentes de discussão com evidências e propomos ADRs fundamentados em exemplos reais.

ParâmetroValor
Repositóriogetsentry/sentry
Janela90 dias (encerrando em abril de 2026)
PRs mergeados analisados500
PRs fechados sem merge analisados500
PRs abertos amostrados251
Análise aprofundada de comentários60 PRs de alto atrito (50 mergeados + 10 fechados sem merge)
Total de comentários analisados965 (604 não-bot)
  1. A mediana do tempo até o merge é de 4,98 horas, mas o P90 chega a 70,54 horas — um multiplicador de 14x. PRs grandes (≥10 arquivos ou ≥400 de churn) têm uma mediana de tempo até o merge de 22,52 horas contra 1,66 hora para PRs minúsculos.

  2. O tamanho do PR é o preditor de atrito mais forte. PRs grandes atingem o quartil de alto atrito 57,4% das vezes. PRs minúsculos atingem apenas 9,8% das vezes. PRs de funcionalidade (feat) têm a maior taxa de atrito, em 38,6%, quase o dobro dos PRs de correção (17,6%).

  3. Os 9 principais temas de discussão em PRs de alto atrito, identificados a partir de 604 comentários não-bot em 60 PRs:

    • Design de API e valores padrão — 38,3% dos PRs de alto atrito
    • Evidência de testes e cobertura — 38,3%
    • Padrões de componentes e estilização — 35,0%
    • Gerenciamento de estado e fluxo de dados — 35,0%
    • Documentação de código — 31,7%
    • Segurança de tipos e tratamento de erros — 30,0%
    • Follow-up e scope creep — 25,0%
    • Segurança e permissões — 20,0%
    • Nomenclatura e consistência — 11,7%
  4. Revisores automatizados encontram bugs reais — mas as mesmas categorias de bug se repetem entre os PRs. Revisores bot (sentry[bot], sentry-warden[bot], cursor[bot]) representam 23,7% dos comentários substantivos de revisão e aparecem em 68,3% dos PRs de alto atrito. Ler as conclusões reais revela pelo menos 10 padrões recorrentes (manipuladores DoesNotExist ausentes, .filter().first() com except inalcançável, acesso direto a dict em respostas de API, divergências de chaves de opção, listas companheiras esquecidas etc.) que deveriam ser promovidos da revisão agêntica cara para verificações determinísticas baratas (regras de Ruff/Semgrep, modo strict do mypy, registros tipados). Um PR (#111522) teve o mesmo padrão sinalizado 4 vezes em uma única passagem de revisão — exatamente o caso em que uma única regra de lint compensa para sempre.

  5. PRs abandonados sinalizam ambiguidade de decisão não resolvida. 12 PRs fechados sem merge (2,4%) tiveram ≥10 itens de discussão. Esses PRs abandonados tiveram 2x a mediana do tempo até o merge e 2,5x a mediana de eventos de revisão em comparação com PRs de alto atrito mergeados.

  6. 92 PRs abertos estão parados há 14+ dias, sendo 33 parados há 30+ dias. O PR parado mais discutido tem 55 eventos de revisão e está aberto há mais de 760 horas.

Todos os dados e scripts são publicados para auditoria:

Terminal window
# Reproduce the full pipeline
python analyze_sentry_prs.py collect --repo getsentry/sentry --days 90 --limit 500
python analyze_sentry_prs.py analyze
python analyze_sentry_prs.py report