コードレビューを効率的に監視する方法は?


28

私のチームでは、主要なコードレビューが隠蔽されていると考えています。コメントなしでマージされたコードレビューが多すぎます。

単一のコメントなしにコードレビューのようなものはないように思えます。

チームリーダーとして、チームが適切なコードレビュープロセスを行っていることを適切に監視し、プロセスのメリットを最大化するためにチームを支援するにはどうすればよいですか?

更新

人々はアップデートについて知りたいと思うかもしれません。ここで与えられた多くの提案を試みました。ほとんどはすでに使用されていました。一部は少し助けた。しかし、問題は残りました-私が見ていなかったときに、一部の人々は絶えず悪いコードを得ました。

コードレビューの監視は、チームツールを提供してコードを改善することほど有用ではないことがわかりました。

そこで、コピーペーストを検出するために「jscpd」という名前のライブラリを追加しました。コピーペーストでビルドが失敗しました。これにより、1つの問題がすぐに解消されました。

次に、codeclimateを試します。

また、半日スプリントで1回、古いコードレビューの手動レビューを行っています。私はtodosを問題/チケットに変換しています-人々がそれらを書いていることがわかりましたが、後で処理されることはありません。また、適切なときにコードをレビューするために、チーム全体と会議を行っています。

一般的に、正しい方向に進んでいるように感じます。


1
TFSを使用している場合は、Code Reviewer's Nameを組み込むように構成できます。
クリシュナンドゥサルカル


11
@gnat私は同意しません。コードレビューを嫌う人と、この質問が尋ねているものとの間には違いがあります。この質問は、トレーサビリティの観点(ソースコードの変更をレビューにリンクするか、欠陥/機能強化/ストーリーをその実装のレビューにリンクするなど)またはプロセスの品質と監査の観点から攻撃できます。人々が一般にコードレビューを行うのに問題がないとしても、両方とも意味を持ちます。
トーマスオーエンズ

3
これらのレビューに参加しますか?たぶん、それに立ち寄る時ですか?いくつかのことを自分で指摘し、各レビューアに個別に質問してください。
-Mawg

2
レビューで明らかな問題が発見されていないことはありますか?思いますが(重要な)コメントを追加していますか?
usr

回答:


70

他の回答者とは異なるテイクを提供します。彼らは正しい-あなたが物事がどのように行くかを確認したい場合は関与してください。より多くのトレーサビリティが必要な場合、そのためのツールがあります。

しかし、私の経験では、何か他のことが起こっていると思います。

あなたのチームは、ほとんどのコミットに対してプロセスが壊れている/愚かな/効果がないと感じるかもしれないと考えましたか?プロセスは、従うべき規則ではなく、うまく機能するものを文書化していることを忘れないでください。そして、チームのリーダーとして、あなたは彼らがルールを執行するのではなく、彼らのベストになるように支援します。

そのため、レトロスペクティブ(アジャイルの場合)または1対1(マネージャーの場合)またはランダムな即席の廊下ミーティング(アジャイルでないチームリーダーで、他のマネージャーが1対1で行う場合) 。コードレビュープロセスについて人々がどう思うかを尋ねます。どのように機能しますか?どうですか?チームにできる限りの利益をもたらしていないと思います。必ず聞いてください

これらの会議でコードレビューを支持することもできますが、フィードバックを聞く方が良いでしょう。最も適切なのは、「適切な」プロセスを調整する必要があるとチームが考えているか、何らかの根本的な原因(時間のプレッシャー、レビュー担当者の不足、ボブがコードをコミットしているために対処できない理由)があることです。 。

破損したプロセスの上にツールを強制しても、プロセスは改善されません。


5
この(および他の多くの!)問題への正しいアプローチに対して+1
オリビエデュラック

7
最後の文に+1。これはほとんど誰も理解していないものですが、非常に重要です。
ジョンアイ

1
いい答えだ。それを試してみた。私のチームは「会社は間違ったやり方をしている。もっとqaを必要とし、開発者に開発を任せる」と言い、会社は「開発者に良質のコードを提出してほしい。qaチームの分散を目指している」コードが高品質になると、qaは不要になります。.......最終的に起こったのは、悪いコードを受け取った人々が継続的に解雇され、チームを再構築したことです。
男mograbi

43

私は1行の回答を投稿することを嫌いますが、これは適切なようです。

プロセスに参加します。


15
私も1行の回答が嫌いです。幸いなことに、あなたは2つの行を取りました-私の答え。+1
Mawg

1
わたし。しかし、私がそうでないとき..何かが起こります。それがまさにそもそも私を疑った理由です。私は他の人のレビューを再検討し始め、厄介なものを見つけました。
男mograbi

6

ReviewBoardRedmineのcodereviewプラグインなどのツールを入手してください。次に、各レビューは、誰かによって閉じられるかコメントされる必要があるタスクとして作成されます(バグチケットのように)。その後、誰がレビューチケットを作成し、誰がそれをクローズしたかを追跡できます。レビューチケットをソースコードチェックインと結び付ける、つまり、リビジョンからチケットを作成できます。


2

いくつかのこと(正直なところ、これらのほとんどは回答全体にわたってカバーされていますが、私はそれらを単一の場所に置きたかったです)

  • コードレビューが確実に行われるようにプロセスとルールを配置できますが、実際にコードレビューがボックスティックの練習以上のものになるようにそれらを配置することは非常に不可能です。最終的に、チームは、プロセスに有益にアプローチする場合、プロセスの利点を理解する必要があります。

  • 例でリード。レビューに参加してください。開発者として、マネージャー(現在は開発者ではない)が私が見つけていないものを見つけたら、気分が悪いです。レビューでキャッチされるはずの問題を強調します(非難しない方法で)。生産上の問題が発生した場合、QA中に問題が発生した場合(別のQAプロセスがある場合)、コードレビューでそれらが検出された可能性がある場所を強調表示します。することができますどのようにチームと話し合う我々はそのような今後の課題がキャッチされていることを確認することができます

  • チームがプロセスで何をしたいかを話し合います。(最初に発生する可能性がありますが)何らかの点が見当たらない場合は、本番の問題と必要な修正をその利点の証拠として使用します

  • Sonarqubeのような自動化されたコードチェックソフトウェアを使用して、コードレビューが、理解できないコード、論理エラー、ドキュメントの欠如など、自動的に発見できない問題に集中できるようにします。


2

開発者と話し合って合意したコードレビューで、チームが望むものを文書化できます。コードレビューの一部として考慮することができるものは次のとおりです。

  • コードが想定どおりに機能すること、つまり要件を満たしていることを確認します

  • 開発者が一貫したスタイルにコーディングすることを保証するコードスタイル

  • 最適化(関数呼び出しの数など)

  • アーキテクチャと再利用性

  • 例外処理とロギング

  • 技術的負債:開発者が作業を開始したときよりも状態の良いコードです

  • コードをチェックアウトしてビルドします(これは便利ですが、チームの他の開発者はこれをテスターに​​任せることを好みます)

  • 自動化ツールを使用(SonarQubeを使用しました)。これをビルドプロセスに統合して、コードの改善を実施すること(テストカバレッジの向上など)が役立つと思います

上記の手順の一部は自動化されたツールでカバーできますが、コードのレビュー方法や改善方法を改善しようとしているときは、おそらくツールと眼球レビューの両方を使用する価値があります。ただし、技術的な負債(アーキテクチャと再利用性)を防ぐための最も重要な手順は完全に自動化することはできません。

あなたのチームがこれを適用することに一貫性がない場合、コードレビューを適切に実行している開発者にのみマージ権を許可することを試みることができます。たとえば、チームの主任開発者から始めたい場合があります。このアプローチとのトレードオフは、これらの開発者が開発プロセスのボトルネックになる可能性があるため、あなたとチームがこれを望むかどうかを決定する必要があるということです。個人的にはこのトレードオフを受け入れ、コードレビューを通じてチーム全体の規律を高め、準備ができたらマージ権を持つ開発者の数を増やすことができます。

最後に、レビューをレビューする価値があります。そのため、週に一度、開発者と協力して、レビューとそれらを改善する方法について建設的に話し合います。


これはSonarQubeの広告ですか?私はそれを試しました-私はそれをお勧めしません、あまりにも痛みを伴いすぎて行くことができず、すべての有用なビットの「オープンソース」コストがかかります。
gbjbaanb

私の現在のチームでは問題なく動作しており、セットアップするのもそれほど難しくなく、助けになっています。広告ではありませんが、この種のツールとしては唯一の経験があります。RedmineのcodereviewとReviewBoardについても同じことを言いますか?
br3w5

チームでSonarQubeを使用しており、100,000から3M LOCまでの約70以上のプロジェクトにサービスを提供しています。一部のチームはレポートを無視しますが、ほとんどのチームはリファクタリングプロセスを指示するためにそれを使用します。個人的にはFindbugsなどのシンプルで統合されていないツールの方が好きですが、それはうまくいきます。
ディベッケ

そして、ここで私は、コードレビューがコードが設計ドキュメントと一致するかどうかをチェックすることを含むと考えていました:-/
Mawg

1
おかげで、これは私がその間にやっていることです。数週間以内に、それがどのように影響するかを更新します。
男mograbi

0

私のチームがコードレビューをワークフローにすばやく統合した方法を説明します。

まず、質問させてください。バージョン管理システム(Mercurial、Gitなど)を使用していますか?

答えが「はい」の場合、次に進みます。

  1. マスターブランチ(トランク)にもが(小さな修正であっても)何もプッシュすることを禁止します *
  2. 別のブランチで新機能(または修正)を開発する
  3. 開発者がブランチをマスターに統合する準備ができていると考えると、彼らは「プルリクエスト」を作成します
  4. 誰もが自分のプルリクエストをマージすることを禁止します *
  5. 別の開発者にプルリクエストを評価して、新しいコードをレビューしてもらう
  6. コードがレビューに合格した場合、良い、プルリクエストをマージできます。そうでなければ修正を適用できます
  7. コードが十分に成熟するまで手順6を繰り返します(最初からやり直すことなく実行できます)**
  8. すべての新しいコードは、名前を持つ誰かによって(少なくとも要約的に)レビューされます

これで、コードレビューが行われるワークフローの正確なポイントができました。

そこに行動する。

*サーバー側のフックを使用して、自動的に実施できます

**この手順は(とりわけ)GitHubによって完全にサポートされており、かなり使いやすいので、チェックしてください。


2
そのようなプロセス(質問の説明から実際に起こると思われます)でさえ、開発者に「ああ、同僚を十分に信頼し、自分でやることが多すぎるので、実際に読まずにそれをマージします。詳細、またはコメントすることもできます」。(私たちのチームには同様のプロセスがあり、マージする前に2つの承認が必要です(PR作成者以外の人から)。それでも完全なレビューなしに変更が行われることがあります。)
PaŭloEbermann

1
@PaŭloEbermannなるほど。状況の必然的な結果だと思います。必要なことをすべて行うのに十分な時間がないと、品質が何らかの形で損なわれます。シル、それが「時々」機能しない場合、それは「ほとんどの時間」動作することを意味しますか?
アゴスティーノ

1
はい、実際のレビューが正しく行われたかどうかを確認するタスクを持っている限られた人々にのみマージを許可することで、少し助けになりました。
パエロエベルマン

同様の禁止事項がありましたが、言うまでもなく、開発はほぼ停止しました。このルールは2週間続き、その後マネージャーは計画を調整する必要がありました。
BЈовић

@BЈовићは以前、定期的コードレビューを行っていましたか?この手法は、特にオープンソースエコシステムで多くの人が使用しています。あなたのチームにとってうまくいかなかったという事実は、他の人にとってうまくいかないという意味ではありません。
アゴスティーノ

-2

テンプレートを作成し、チームメンバーにコードレビューを行うたびに更新するよう依頼する必要があると思います。ただし、その場合でも、最初にレビュープロセスに参加する必要があります。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.