Wie kann die Codeüberprüfung effizient überwacht werden?

28

Ich vermute, dass in meinem Team größere Codeüberprüfungen vertuscht wurden. Zu viele Code-Reviews werden ohne Kommentar zusammengeführt.

Mir scheint, es gibt keine Codeüberprüfung ohne einen einzigen Kommentar.

Wie kann ich als Teamleiter richtig überwachen, ob mein Team einen ordnungsgemäßen Codeüberprüfungsprozess durchführt, und wie kann ich ihnen helfen, die Vorteile des Prozesses zu maximieren?

Aktualisieren

Dachten die Leute möchten vielleicht etwas über Updates wissen. Ich habe viele Vorschläge ausprobiert, die hier gemacht wurden. Die meisten waren bereits in Gebrauch. einige haben ein bisschen geholfen. Das Problem blieb jedoch bestehen - einige Leute bekamen ständig schlechten Code, wenn ich nicht suchte.

Ich fand, dass die Überwachung der Codeüberprüfung nicht so hilfreich ist wie die Bereitstellung von Tools für mein Team, um den Code zunächst zu verbessern.

Also habe ich eine Bibliothek mit dem Namen "jscpd" hinzugefügt, um Kopierpasten zu erkennen. Die Erstellung von Kopierpasten ist fehlgeschlagen. Damit war ein Problem sofort behoben.

als nächstes werden wir versuchen, codeclimate.

Ich mache auch eine manuelle Überprüfung der alten Code-Überprüfungen einmal pro Sprint für einen halben Tag. Ich wandle todos in Ausgaben / Tickets um - wie ich herausgefunden habe, schreiben Leute sie, aber sie werden zu einem späteren Zeitpunkt nie mehr bearbeitet. Ich treffe mich auch mit den gesamten Teams, um den Code zu überprüfen, wenn es angebracht ist.

Im Allgemeinen fühlt es sich so an, als ob wir uns in die richtige Richtung bewegen.

Guy Mograbi
quelle
1
Wenn Sie TFS verwenden, können Sie es so konfigurieren, dass es den Namen des Code Reviewers enthält.
Krishnandu Sarkar
11
@gnat Ich stimme nicht zu. Es gibt einen Unterschied zwischen jemandem, der Code-Reviews nicht mag, und dem, worum es bei dieser Frage geht. Diese Frage kann aus der Perspektive der Rückverfolgbarkeit (Verknüpfen von Änderungen im Quellcode mit der Überprüfung oder von Fehlern / Verbesserungen / Berichten mit Überprüfungen dieser Implementierung usw.) oder aus der Perspektive der Prozessqualität und der Überwachung angegriffen werden. Beides hat Auswirkungen, auch wenn die Codeüberprüfung im Allgemeinen problemlos durchgeführt werden kann.
Thomas Owens
3
Nehmen Sie an einer dieser Bewertungen teil? Vielleicht ist es Zeit, einen zu besuchen? Zeigen Sie selbst ein paar Dinge auf und fragen Sie jeden Rezensenten einzeln, warum er sie alle verpasst hat.
Mawg
2
Finden Sie, dass offensichtliche Probleme bei der Überprüfung nicht entdeckt wurden? Hättest du (wichtige) Kommentare hinzugefügt?
usr

Antworten:

70

Ich werde eine andere Einstellung als meine Mitantwortenden anbieten. Sie haben Recht - seien Sie dabei, wenn Sie sehen möchten, wie die Dinge laufen. Wenn Sie mehr Rückverfolgbarkeit wünschen, gibt es Tools dafür.

Aber meiner Erfahrung nach vermute ich, dass noch etwas los ist.

Haben Sie gedacht, dass Ihr Team das Gefühl hat, dass der Prozess für die meisten Commits unterbrochen / dumm / ineffektiv ist? Denken Sie daran, dass der Prozess dokumentiert, was gut funktioniert, und nicht, dass Regeln befolgt werden müssen . Und als Teamleiter helfen Sie ihnen, die besten Ergebnisse zu erzielen und keine Regeln durchzusetzen.

In Ihren Rückblicke (wenn agil) oder Einzelgesprächen (wenn Sie ein Manager sind) oder in zufälligen spontanen Besprechungen (wenn Sie ein nicht agiler Teamleiter sind und ein anderer Manager Einzelgespräche führt) sollten Sie dies ansprechen . Fragen Sie, was die Leute über den Codeüberprüfungsprozess denken. Wie funktioniert es Wie ist es nicht Sagen Sie, Sie denken, es nützt dem Team vielleicht nicht so viel, wie es könnte. Stellen Sie sicher, dass Sie zuhören .

Sie können sich in diesen Meetings für Code-Überprüfungen einsetzen, aber es ist besser, sich das Feedback anzuhören. Höchstwahrscheinlich werden Sie feststellen, dass entweder Ihr Team der Meinung ist, dass der "richtige" Prozess angepasst werden muss, oder dass es eine Grundursache gibt (Zeitdruck, Mangel an Überprüfern, Bob schreibt einfach seinen Code fest, warum können wir das nicht?) .

Wenn Sie ein Werkzeug auf einen unterbrochenen Prozess zwingen, wird der Prozess nicht besser.

Telastyn
quelle
5
+1 für die richtige Herangehensweise an dieses (und viele andere!) Problem
Olivier Dulac
7
+1 für den letzten Satz. Dies ist etwas, das fast niemand versteht, aber äußerst wichtig ist.
JohnEye
1
Gute Antwort. Versuchte das. Mein Team sagt, "das Unternehmen macht die Dinge falsch. Wir brauchen mehr Qa. Und lassen Entwickler sich entwickeln." seitdem der code in guter qualität ist, werden qa nicht mehr benötigt.
Guy Mograbi
43

Ich poste keine einzeiligen Antworten, aber diese scheint angemessen zu sein:

Beteiligen Sie sich am Prozess.

Blrfl
quelle
15
Ich mag auch keine Zeilenantworten. Zum Glück hast du zwei Zeilen genommen - und meine Antwort. +1
Mawg
1
Ich bin. aber wenn ich nicht bin ... passiert sowas. Genau das hat mich in erster Linie misstrauisch gemacht. Ich fing an, die Bewertung anderer erneut zu überprüfen und fand böse Sachen heraus.
Guy Mograbi
6

Holen Sie sich ein Tool wie ReviewBoard oder das Codereview- Plugin von Redmine . Dann wird jede Überprüfung als Aufgabe erstellt, die von jemandem geschlossen oder kommentiert werden muss (genau wie ein Fehlerticket). Anschließend können Sie nachvollziehen, wer das Überprüfungsticket erstellt und wer es geschlossen hat. Sie können Review-Tickets mit Source-Code-Checkins verknüpfen, dh das Ticket aus einer Revision erstellen.

gbjbaanb
quelle
2

Ein paar Dinge (um ehrlich zu sein, die meisten davon werden in den Antworten behandelt, aber ich wollte sie an einem einzigen Ort platzieren)

  • Sie können Prozesse und Regeln festlegen, um sicherzustellen, dass eine Codeüberprüfung durchgeführt wird, aber es ist ziemlich unmöglich, sie einzufügen, sodass die Codeüberprüfung eigentlich mehr ist als nur ein Kästchen. Letztendlich muss das Team den Nutzen des Prozesses erkennen, wenn es sinnvoll damit umgehen will

  • Mit gutem Beispiel vorangehen. Nimm an Reviews teil. Als Entwickler fühle ich mich schlecht, wenn mein Manager (jetzt kein Entwickler) Dinge entdeckt, die ich nicht finde. Markieren Sie Probleme, die (ohne Vorwürfe) in der Überprüfung hätten berücksichtigt werden sollen. Wenn ein Produktionsproblem auftritt oder Probleme während der Qualitätssicherung auftreten (wenn Sie einen separaten Qualitätssicherungsprozess haben), markieren Sie, wo sie möglicherweise in der Codeüberprüfung aufgefangen wurden. Besprechen Sie mit dem Team, wie wir sicherstellen können, dass solche zukünftigen Probleme aufgefangen werden

  • Besprechen Sie mit dem Team, was der Prozess tun soll. Wenn sie keinen Grund dafür sehen (wie am Anfang), verwenden Sie die Produktionsprobleme und erforderlichen Korrekturen als Beweis für den Nutzen

  • Verwenden Sie eine automatische Code-Überprüfungssoftware wie Sonarqube, damit sich Code-Überprüfungen auf Probleme wie unverständlichen Code, logische Fehler, fehlende Dokumentation usw. konzentrieren können, die nicht automatisch erkannt werden können.

matt freake
quelle
2

Sie können dokumentieren, was das Team in Codeüberprüfungen wünscht, die Sie mit Entwicklern besprochen und vereinbart haben. Einige Dinge, die Sie als Teil der Codeüberprüfung in Betracht ziehen könnten, sind:

  • Überprüfen Sie, ob der Code das tut, was er tun soll, dh die Anforderungen erfüllt

  • Codestil, um sicherzustellen, dass Entwickler einen konsistenten Stil verwenden

  • Optimierung zB Anzahl der Funktionsaufrufe

  • Architektur und Wiederverwendbarkeit

  • Ausnahmebehandlung und Protokollierung

  • Technische Schulden: Befindet sich der Code in einem besseren Zustand als zu dem Zeitpunkt, als der Entwickler damit begann, daran zu arbeiten?

  • Schauen Sie sich den Code an und erstellen Sie ihn. (Ich finde das nützlich, aber andere Entwickler in meinem Team überlassen das lieber den Testern.)

  • Verwenden eines automatisierten Tools (ich habe SonarQube verwendet ). Ich finde es nützlich, dies in Ihren Erstellungsprozess zu integrieren, um Verbesserungen am Code durchzusetzen, z. B. die Testabdeckung zu erhöhen

Einige der oben genannten Schritte können von einem automatisierten Tool ausgeführt werden, aber während Sie versuchen, die Codeüberprüfung zu verbessern, lohnt es sich wahrscheinlich, sowohl das Tool als auch die Augapfelüberprüfung zu verwenden. Die wichtigsten Schritte zur Vermeidung von technischen Schulden (Architektur und Wiederverwendbarkeit) können jedoch nicht vollständig automatisiert werden.

Wenn Ihr Team dies nicht konsequent anwendet, können Sie versuchen, nur den Entwicklern, die die Codeüberprüfung ordnungsgemäß durchführen, Zusammenführungsrechte zu gewähren. Zum Beispiel möchten Sie vielleicht nur mit dem leitenden Entwickler des Teams beginnen. Der Nachteil dieses Ansatzes besteht darin, dass diese Entwickler zu einem Engpass im Entwicklungsprozess werden können. Daher müssen Sie und das Team entscheiden, ob Sie dies möchten. Persönlich würde ich diesen Kompromiss akzeptieren und durch die Codeüberprüfungen die Disziplin im gesamten Team erhöhen. Wenn Sie dazu bereit sind, können Sie die Anzahl der Entwickler mit Zusammenführungsrechten erhöhen.

Schließlich lohnt es sich, die Bewertungen zu überprüfen. Treffen Sie sich also einmal pro Woche mit den Entwicklern und diskutieren Sie konstruktiv die Reviews und Verbesserungsmöglichkeiten.

br3w5
quelle
ist das eine Werbung für SonarQube? Ich habe es ausprobiert - ich würde es nicht empfehlen, viel zu schmerzhaft, um loszulegen, und während "Open Source" für alle nützlichen Teile kostet.
gbjbaanb
Es läuft gut in meinem aktuellen Team und war nicht allzu schwierig einzurichten und es hilft - es ist keine Werbung, aber es ist das einzige Tool dieser Art, mit dem ich Erfahrung habe. Würden Sie dasselbe für Redmine Codereview und ReviewBoard sagen?
br3w5
Wir setzen SonarQube in unseren Teams ein und betreuen über 70 Projekte von 10.000 bis 3 Millionen lokalen Standorten. Obwohl einige Teams ihre Berichte einfach ignorieren, verwenden die meisten sie, um Refactoring-Prozesse zu steuern. Es funktioniert gut, obwohl ich persönlich einfache, nicht integrierte Tools wie Findbugs bevorzuge.
Dibbeke,
Und hier dachte ich, dass die
Codeüberprüfung die
1
Danke, das mache ich in der Zwischenzeit. Ich werde in ein paar Wochen aktualisieren, wie es sich ausgewirkt hat.
Guy Mograbi
0

Ich werde Ihnen erzählen, wie mein Team die Codeüberprüfung schnell in seinen Workflow integriert hat.

Lassen Sie mich zunächst eine Frage stellen. Verwenden Sie ein Versionskontrollsystem (zB Mercurial, Git)?

Wenn Sie mit Ja geantwortet haben, fahren Sie fort.

  1. Verbieten Sie jedem , irgendetwas (auch kleine Korrekturen) direkt in den Hauptzweig (Stamm) zu schieben *
  2. Entwickeln Sie neue Funktionen (oder Fehlerbehebungen) in separaten Zweigen
  3. Wenn Entwickler der Meinung sind, dass der Zweig in den Master integriert werden kann, erstellen sie eine "Pull-Anfrage".
  4. verbieten, dass jeder seine eigene Pull-Anfrage zusammenführt *
  5. Lassen Sie einen anderen Entwickler die Pull-Anforderung auswerten und den neuen Code überprüfen
  6. Wenn der Code die Überprüfung besteht, kann die Pull-Anforderung zusammengeführt werden, andernfalls können Korrekturen angewendet werden
  7. Wiederholen Sie Schritt 6, bis der Code ausreichend ausgereift ist (ohne erneut zu beginnen). **
  8. Wenn Sie fertig sind, wird Ihr neuer Code (zumindest kurz) von jemandem mit einem Namen überprüft

Jetzt haben Sie einen genauen Punkt in Ihrem Workflow, an dem die Codeüberprüfung durchgeführt wird.

Handle dort.

* kann mit serverseitigen Hooks automatisch erzwungen werden

** Dieses Verfahren wird (unter anderem) von GitHub voll unterstützt und ist recht einfach zu verwenden. Probieren Sie es aus

Agostino
quelle
2
Sogar bei einem solchen Prozess (von dem ich angenommen habe, dass er aus der Beschreibung in der Frage hervorgeht) denken Entwickler manchmal: "Ah, ich vertraue meinem Kollegen genug und habe zu viel zu tun, also füge ich es einfach zusammen, ohne es tatsächlich zu lesen die Details, oder sogar kommentieren ". (Wir haben einen ähnlichen Prozess in unserem Team, mit zwei erforderlichen Genehmigungen (von anderen Personen als dem PR-Autor), bevor er zusammengeführt werden kann. Dennoch werden Änderungen manchmal ohne gründliche Überprüfung durchgeführt.)
Paŭlo Ebermann
1
@ PaŭloEbermann Ich verstehe. Ich fürchte, das ist ein unvermeidliches Ergebnis der Umstände. Wenn Sie nicht genug Zeit haben, um alles zu tun, was Sie brauchen, leidet die Qualität auf die eine oder andere Weise. Sill, wenn es "manchmal" nicht funktioniert, heißt das, es funktioniert "meistens", nein?
Agostino
1
Ja, es hat ein wenig geholfen, indem die Zusammenführung nur einer begrenzten Anzahl von Personen gestattet wurde, die die Aufgabe hatten, zu überprüfen, ob die eigentliche Überprüfung richtig durchgeführt wurde.
Paŭlo Ebermann,
Ich hatte ein ähnliches Verbot und es erübrigt sich zu erwähnen: Die Entwicklung hörte fast auf. Diese Regel dauerte ganze 2 Wochen, danach mussten die Manager ihre Pläne anpassen.
Freitag,
@ BЈовић hat Ihr Team zuvor regelmäßig Codeüberprüfungen durchgeführt ? Diese Technik wird von vielen verwendet, insbesondere im Open Source-Ökosystem. Die Tatsache, dass es für Ihr Team nicht funktioniert hat, bedeutet nicht, dass Sie nicht für andere arbeiten können.
Agostino
-2

Ich denke, Sie sollten eine Vorlage erstellen und Ihre Teammitglieder bitten, diese bei jeder Codeüberprüfung zu aktualisieren. Aber auch dann sollten Sie zunächst am Überprüfungsprozess teilnehmen.

user85
quelle