Ferramenta para identificar revisores em potencial para uma mudança proposta

8

Existe uma ferramenta que usa como entrada um patch proposto e um repositório git e identifica os desenvolvedores como os melhores candidatos para revisar o patch? Usaria o histórico do git para identificar os autores que têm mais experiência com os arquivos / seções de código que estão sendo alterados.

Edit: O caso de uso é um grande projeto de código aberto ( OpenStack Compute ), onde as propostas de mesclagem entram, e vejo uma proposta de mesclagem em um pedaço de código com o qual não estou familiarizado, e quero adicionar o nome de outra pessoa ao lista de revisores sugeridos para que a pessoa receba uma notificação para examinar a proposta de mesclagem.

Lorin Hochstein
fonte
É ruim (totalmente errada) ideia para sugerir código-macaco comum como revisor de código baseado em arquivo-história
preguiçoso Badger
1
@ Lazy: Por quê? O que há de errado com o que o OP está procurando e por que "É ruim (totalmente errado) ..."? Eu vejo essa ferramenta como sendo muito útil no meu local de trabalho.
mattnz
4
Desculpe -diferença nas idéias de revisão de código - não empregamos "macacos de código". No meu local de trabalho, todos somos iguais (alguns podem ser mais iguais que outros). A revisão de código é usada para fins de ensino e também para a qualidade do código; portanto, espera-se que todos sejam revisores e que todos sejam revisados.
mattnz
1
Como você deseja quantificar a "maior experiência"? A maioria das linhas de código? Edições mais recentes? Se eu escrevi um arquivo / módulo inteiro há um ano e não o toquei, e alguém fez algumas pequenas alterações na semana passada, quem é adequado? Eu não sei como você pode determinar automaticamente os melhores candidatos com qualquer quantidade razoável de certeza ...
Thomas Owens
1
@ThomasOwens Adicionei mais detalhes à pergunta.
Lorin Hochstein

Respostas:

6

Não conheço nenhuma dessas ferramentas, mas uma linha de base é fácil de escrever:

(for file in $files_touched_by_patch; do
    git blame -p "$file"
done) \
  | grep '^author ' | sed 's/^author *//' \
  | sort | uniq -c | sort -nrk 1

listará as pessoas que tocaram $files_touched_by_patchpela última vez , classificadas por quantas de suas linhas de código sobrevivem na versão atual.

Fred Foo
fonte