ユーザーによるこの記事では、ほとんど知って遅い忙しい拡散の博士ミカエラGreilerから翻訳のMicrosoftのコードでは、職場でレビューどのように、Microsoftがコードレビューをして、関連する要約を行う方法を著者の研究チームを。大量のリソースを持つ元のリンクが、これは整理されていない、あなたは、元の買収に関連するリンクを表示することができます
あなたは今まで、世界最大のソフトウェア会社の一つが、コードレビューを通じて、高品質なコードを確保する方法である考えたことはありますか?
私もそうです。だから、私は、Microsoftがコードレビューどのように同僚と一緒に検討しました。彼らのアプローチは、一般的に行われていますか?開発者はコードレビューする必要があるかどうか?彼らはどのようなツールを使用していますか?私たちは、この記事で答えを見つけるしてみましょう。
まず第一に、私はあなたのために、マイクロソフトに関するいくつかの重要な情報を提供してみましょう。マイクロソフトの従業員約14万。そのうち約44%、または6万人の以上の従業員は、エンジニアです。エンジニアの何千人も同じコードベースの開発および他のOffice、Visual Studioまたは複数のWindows製品を使用中。
想像して、異なるチームによって開発されたコードは、子供は困難な作業となることができ完全に一緒に働くことを確認してください。マイクロソフトでは、コードレビューは、このような大規模な範囲で達成することができるスムーズな連携を確保する上で重要な役割を果たしています。
マイクロソフトのコードレビューは、開発プロセスの不可欠な部分であります
マイクロソフトでは、技術的手法のコードレビューは、広く使用されています。エンジニアの大半は、これは良いベストプラクティスだと思います。そして、最も高性能なチームがタイムコードレビューの多くを費やしてきました。
Microsoftのコードレビューの調査
コードレビューは、マイクロソフトの開発プロセスで重要な役割を果たしているので、それが私たちの深い研究で、実際にターゲット上で、このアプローチの長所と短所を理解しているので。行動のMicrosoftのコードの見直しに関する大規模な研究では、我々は900の以上の開発者のコードレビューの練習の、観察や調査をインタビュー。
私たちの目的は、どのようにマイクロソフトの正確なコードレビューを理解することです。私たちは、コードレビュー、コードレビュー、彼らは開発者がコードレビューの際に遭遇するこれらの課題を克服するために開発されたベストプラクティスを落とし穴かを知りたいです。
何が高校のMicrosoftの実践からコードをレビューすることができますか?
レッスンのほとんどは小さなチームや組織のために、または大規模なグループや組織のためかどうか、非常に貴重なものです。あなたのチームはコードレビューを実施していない場合、我々はあなたに私達の発見とコードレビューの利点を実証します。あなたは彼らの開発プロセスにこれを実践できるように、私はまた、コードレビューのライフサイクルを説明します。
あなたのチームはコードレビューを実施している場合、あなたのコードレビューの練習を練習することができますし、Microsoftを比較しました。あなたのコードレビューのライフサイクルは、何が違うように見えますか?次回の記事では、コードレビューとコードレビュートラップのベストプラクティスを紹介します。この情報を使用して、あなたはあなたのチームは、すべてのベストプラクティスを実施し、課題を克服するために私を導入しているかどうかを確認するために始めることができます。今すぐ始めましょう。
マイクロソフトのエンジニアはどのくらいの頻度でコードレビューを行いますか?
本研究では、開発者の36%は、彼らが繰り返しコードレビューの日実行しました。開発者の別の39%は、彼らは、少なくとも一日一回見直しをコーディングしました。コードの人々の12%週に数回のレビューでは、唯一の13%は、彼らは過去の週にコードレビューを行っていないと述べました。
これは、Microsoftの開発者はコードレビューに多くの時間を費やすことを意味します。したがって、過ごしたこの時間はそれだけの価値があることを確認することが重要です。だから、コードレビューのメリットは何ですか?
コードレビューのメリットは何ですか?
開発者は述べたように、最大の利点は、コードの品質のコードレビューとコードで発見された欠陥を改善することです。コードレビューのもう1つの重要な利点は、知識の伝達です。
知識移転は、コードベースのほとんどに精通しているであろう、それぞれ他のチームメンバーのコードを確認すること。これはまた、チーム内のコードレビューのベストプラクティスを形成し成長していることを意味します。もう一つの利点は、新しいチームメンバーとジュニアの開発者が表示したり、学習し、自分のコーディングスキルを向上させると同時に、フィードバックを得ることができるということです。
開発者はコードレビュー時の代替ソリューションを議論する場合には、それだけでなく、学習に関与している関係するすべての人のため、コードベースを改善されません。そのため、学習、指導、自己改善には、Microsoftコードレビュー慣行の理由として有益見られています。
開発者は通常、コードレビューを行いますか?
コードレビューは、様々な方法で行うことができます。開発者は、机と別の開発者が、あなたもチームでコードを確認することができますいくつかのコードを見て行くことができます。ただし、Microsoftのコードレビューは、状況に遭遇する可能性が最も高いときのツールを使用して行われたコードのレビューです。
マイクロソフトのコードレビューは、通常、内部ツールを介して行われます
そこ可能なコードレビューのさまざまなツールがあり、マイクロソフトは、チームが彼らのツールを自由に選択できます。2016年には、開発者の89%は言うCodeFlowコードレビューツールを使用することです。その後、私はこのコード検査ツールについて詳しく説明します。それ以来、Gitリポジトリの上昇に伴って、ツールの使用も変更されました。さんは、典型的な見直しを考えてみましょう:
私たちはのは、彼女のバラを呼びましょう当分の間、マイクロソフトの開発者を想像してみましょう。ローズは、単に機能の一部を完了し、現在フィードバック同僚を取得したいました。
どのようにマイクロソフトにコードレビューをローズ?
まあ、いくつかのフィードバックを得るために準備ができて上昇しました。だから、すべての最初の彼女は、コードを確認する準備ができています。このステップでは、彼女が開いコードチェックツール、コードのプレビューを変更することが含まれます。コードレビューツールは、いくつかの比較タスクを実行するために、ローズは、彼女が作った変更を正確にものを見ることができます助けます。
これらの変更を慎重に検討した後、彼女は彼女が行って、なぜていたもののレビューを伝え、いくつかの説明を用意しました。この説明は、レビューアが目的と動機コードの変更を理解するのに役立ちます。さて、あなたは査読にコードを送信することができます。
どのように適切なコードレビューアを選択ローズ?
多くの経験を積んだ開発者はコードレビューに参加すべき人を知っています。しかし、チームの新しいメンバーや仕事の新しい分野、彼らはトリッキーなことができました。ローズを追加すべきか分からない場合は、彼女は政策チームを表示したり、同僚に依頼することができます。彼女はまた彼女が査読を選択することができ、コードレビューツールの推奨機能を使用することができます。
関連するレビューアは誰ですか?
ローズは、彼女が、コードの査読の知識を貢献できると考えていることを選びました。レビュアーは、通常、他の開発者が、それはまた、このようなDEV-OPSエンジニア、UIや管理担当者などの他の利害関係者を含むことができます。査読が原因で彼らの専門知識を選択することができるが、それは彼らが今後の変化に遅れないようする必要があるかもしれません。
要件ローズレビューはフィードバックを提供
レビューアを選択すると、ローズは、コードレビュー要求を送信します。コードレビューツールが自動的にレビューアが新しいコードレビューを作成して通知する通知を送信します。通知は、すべてのレビューアに送信されます。しかし、一般的に、チームマネージャーやプロダクトマネージャーは、通知リストに追加され、自動的に各レビューのためにそれらを通知します。これらの通知は、関連する情報を理解するためにそれらを有効にしても、彼らは、監査を実行する必要はありません。
フィードバックを受けることは反復的なプロセスです
ローズの同僚が時間を持っていたら、彼らはコードレビューを見ていきます。各レビューには、コードにメモやコメントを追加することができます。レビューを完了した後、校閲者は、コードがローズに送り返されるアノテーションが付けられます。ローズは今、これらのコメントを処理し、コードの新しいバージョンを準備することができます。
査読は、多くの場合、情報の一部を表示:コードルック間違ってはありますか?アーキテクチャその上に問題がありますか?そのような説明の不足、スペルミスなど、いくつかのマイナーな問題は、ありますか?いないすべてのコメントは平等に価値があります。しかし、コードレビューコメントの価値を高めるために、いくつかのベストプラクティスがあります。
ローズは、コードの新しいバージョンを用意し
フィードバックに対処するための改正と和解の提案を通じて上昇しました。ローズは、いくつかの誤解や他の論争の問題が見つかった場合、彼女は同僚が一人で話し合うかもしれません。これは、ツールでより時々、簡単に、よりパーソナライズされています。
彼女はフィードバックのすべてが終了したら、どのような場合には、コードの新しいバージョンが審査に送られます。新しい改良バージョンがリビジョンと呼ばれています。
必要であれば、彼女はさらにフィードバックを受け取ることになります。この反復は、変更と質の種類に応じて、数回続けたかどうか。シンプルで小さなコードの変更、通常は一つのコードレビューの変更のため。または他のより複雑なためには、いくつかの反復を必要とするかもしれない質問の変更のコードを変更します。
コードレビューのフィードバックサイクルは、著者とコードのレビューとの議論を刺激するので、これは部分的には、完全に正常です。
すべてのレビューが承認され、ローズコードチェック
この審査期間の後、我々はOKとしてマークされたコードを確認し、その後、コードは共通のコードベースに確認することができローズ。
いくつかのチームは、開発者が実際にチェックインコードの前にレビューを完了できるようにするポリシーの数を開発しました。これは、非同期のレビューを許可し、開発をスピードアップするために、いくつかのマイナーな変更のために通常です。
すべてのチームが行うことで、私が説明したすべての手順は、Microsoftコードレビューの典型的なライフサイクルの一部です。チームの方針によると、チームの各ステップの要件がより厳格になります。
いないすべてのチームが同じです
あなたはMicrosoftが60,000エンジニアとチームをたくさん持っている、想像することができ、すべての統一基準に従って動作しません。Microsoftのチームは、ライフサイクルのいくつかの追加の手順やコード検査ツールが必要になる場合があります。私は、コードレビュープロセスのいくつかの余分なステップを追加するために、チームのいくつかを概説したいです。
コードレビューは、テストの結果が含まれています
あなたは、ほとんどの機能は、時間を節約するために、「自動検出」のエラーコードを介してもよいしたいです。私はあなたが自動テストを実行し、期待通りのコードが動作しないことを実現することができた場合、これはあなたが何をすべきかで、意味:レビュー前にテストを実行します。
これは、いくつかのチームは、各コードレビューの要件でテスト結果を提出している理由です。だから、誰もユニットテストを実行することを忘れないだろう。そして、それは、テストが実際の下に与えられたコードの変更によって実行されたことを確認することができます。
コードレビューツールを設定するには、いくつかの方法で、他のチームにも、さらに、各コードレビューを提出する開発者がビルドをトリガーします。このバージョンでは、正確な変更が含まれており、また、自動化された一連のテストを開始しました。これらのテストの結果を構築し、コードレビューに添付されます。このように構成された、あなたは、共通のコードライブラリコードの変更を使用して最新のコードがテストされたことを確認することができます。
これは、ユーザ・インタフェース・コードレビューが含まれています
変更がユーザーインターフェイスに影響を与える場合、それはまた、スクリーンショット良いアイデアを提出する開発者が必要です。このように、コードレビューアは、コードを実行することなく、コード変更の影響を見ることができます。あなたは、コードを実行したときに第二に、あなたのコンピュータ上で、コードレビューアは違いを見つけることができます。
静的解析は、コードレビューを含み
静的解析ツールは、スタイルの質問を符号化するという点で、あなたはタイムコードの校閲を大幅に節約することができます。マイクロソフトは、専用のロボットのレビューとして、いくつかのチーム静的および動的解析ツールを自動化します。これらのロボットは、コードスタイルやその他の静的な問題に関するコメントを与えます。したがって、それはより興味深いタスクを実行するための手動コードレビューのための時間を解放することができます。
マイクロソフトのコードレビューツール
年間の基準の一つは、Microsoftのコードレビューは、実際には内部ツールCodeFlowです。これにより、開発者を可能にし、コードレビューのすべてのステップを介してそれらを導く複雑なコードレビューツールです。コードの作成を支援CodeFlow、自動的に審査に通知し、コメントやディスカッション機能の富を持っています。
あなたは、次のスクリーンショットで見ることができ、CodeFlowは、WordまたはPowerPointに非常によく似て重いUIツールです。
CodeFlowインターフェイス説明
必要な場合は、この手順を省略することができ、あなたが興味を持っている場合、私はCodeFlowインタフェースを説明します。左(A)上のスクリーンショットを表示、あなたが影響を受けるすべての文書が表示されます。
また左側に、あなたは(たとえば、署名または保留中されています)(B)校閲のリストとそのステータスの現在見直しに割り当てられて表示されます。アクティブドキュメントは、編集長(C)に表示されます。下部には、あなたはすべての文書のコメント(D)のリストを見ることができます。
一方、アクティブなドキュメント(F)で唯一のコメント。注釈(すなわちワード線)とコードのこの特定のセクションでは、関連性があります。最後に、一番上に、あなたは、全体的なステータスコードレビューが表示され、完了状態はスクリーンショットです。異なるリビジョンのデジタル表現の前に。このレビューでは、5回の改正があります。
注釈
最高の機能のCodeFlow 1は、その注釈です。
コードレビューは、非常に正確に、彼女は、コードの一部をコメントにしたいかを選択できます。例えば、投稿者も一つの行または2つの文字を強調表示し、全体ではなく線を強調表示することができます。その後、レビューアは追加のコメントを選択することができます。
コメントは、コードまたは他のレビューの作者に送信されます、とコメントについての会話を開始することができます。
注釈
これは、ソーシャルメディアプラットフォームのようなTwitterやFacebookなどの問題に関するコメントのコメントのように感じています。そのため、非常に自然な経験でCodeFlowコメントは豊かな対話と議論することができます。もう一つの素敵な利点は、各コメントのスレッドの状態を割り当てることができるということです。ステータスが「解決」または、「解けない」ことができる「未解決。」
改訂されたコードレビューとの比較
便利な機能は、コードレビューの2つの異なるバージョンを選択し、両者の違いを比較する機能です。これは、あなたが行動規範コードレビューは、リビジョンとリビジョン間、別のコードレビューに変更を正確にものを見ることができることを意味します。監査追跡の進行状況は非常に簡単。
コードレビュー分析ツール
マイクロソフトでは、開発者はコードレビューに多くの時間を費やしています。これらの貴重な時間を費やしていることを確認するには、Microsoftが独自のコードレビュー分析プラットフォームを持っています。
すべてのコードの検査データは、コードで始まるプラットフォーム店は、関係する開発者のコードをチェックし、その後、すべてのコメントの開発者がチェックされます。でも、各リビジョンのためのコードの変更の日数インチ
これらのデータは、コードレビュー、いくつかの実証研究の基盤のためのMicrosoftのコードレビューです。多くの製品チームはまた、彼らの生産性を追跡するためにそれを使用して、独自のコードレビューの習慣を理解しています。また、私はすべての研究とコードレビューからのデータの分析のマイクロソフトのコードレビューへの洞察の数で、このブログの記事のシリーズを共有しています。
Micorsoft将来のコードレビュー
Micorsoftの参加や買収のGitHubで、いくつかの変更が避けられません。たとえば、Microsoftは広くGitのソースコードのバージョン管理ツールとして採用されています。一方、マイクロソフト、コードレビューが増加しているプル要求の形で行われます。