Tool zur Identifizierung potenzieller Prüfer für eine vorgeschlagene Änderung

8

Gibt es ein Tool, das einen vorgeschlagenen Patch und ein Git-Repository als Eingabe verwendet und feststellt, dass die Entwickler die besten Kandidaten für die Überprüfung des Patches sind? Es würde den Git-Verlauf verwenden, um die Autoren zu identifizieren, die die meiste Erfahrung mit den Dateien / Codeabschnitten haben, die geändert werden.

Bearbeiten: Der Anwendungsfall ist ein großes Open-Source-Projekt ( OpenStack Compute ), bei dem Zusammenführungsvorschläge eingehen. Ich sehe einen Zusammenführungsvorschlag für einen Codeabschnitt, mit dem ich nicht vertraut bin, und möchte dem Namen eines anderen hinzufügen Liste der vorgeschlagenen Prüfer, damit die Person eine Benachrichtigung erhält, um den Zusammenführungsvorschlag zu prüfen.

Lorin Hochstein
quelle
Es ist eine schlechte (völlig falsche) Idee, einen gewöhnlichen Code-Affen als Prüfer von Code vorzuschlagen, der auf dem Dateiversionsverlauf basiert
Lazy Badger
1
@ Lazy: Warum? Was ist falsch an dem, wonach das OP sucht, und warum ist "Es ist schlecht (völlig falsch) ..."? Ich sehe ein solches Werkzeug an meinem Arbeitsplatz als sehr nützlich an.
Mattnz
4
Entschuldigung - Unterschiede in den Ideen zum Zweck der Codeüberprüfung - wir verwenden keine "Code-Affen". An meinem Arbeitsplatz sind wir alle gleich (einige sind möglicherweise gleichberechtigter als andere). Die Codeüberprüfung wird zum Zweck des Unterrichts sowie der Codequalität verwendet. Von allen wird erwartet, dass sie Überprüfer sind, und von allen wird erwartet, dass sie überprüft werden.
Mattnz
1
Wie wollen Sie "die meiste Erfahrung" quantifizieren? Die meisten Codezeilen? Letzte Änderungen? Wenn ich vor einem Jahr eine ganze Datei / ein ganzes Modul geschrieben habe und es nicht sinnvoll angefasst habe und jemand anderes letzte Woche ein paar kleinere Änderungen vorgenommen hat, wer ist dann geeignet? Ich bin mir nicht sicher, wie Sie automatisch die besten Kandidaten mit angemessener Sicherheit ermitteln können ...
Thomas Owens
1
@ThomasOwens Ich habe der Frage weitere Details hinzugefügt.
Lorin Hochstein

Antworten:

6

Mir ist kein solches Tool bekannt, aber ein Baseline-Tool ist einfach zu schreiben:

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

listet die Personen auf, die zuletzt berührt haben $files_touched_by_patch, sortiert nach der Anzahl der Codezeilen, die in der aktuellen Version erhalten sind.

Fred Foo
quelle