次の方法で共有


Devops 開発者の一日: 作業の中断、バグの修正、コード レビューの実施

Azure DevOps Services |Azure DevOps Server |Azure DevOps Server 2022 |Azure DevOps Server 2020

Visual Studio 2019 |Visual Studio 2022

Visual Studio のマイ ワークコード レビュー の機能は、ある作業スレッドから別のスレッドへのコンテキスト切り替えをサポートします。 また、チーム メンバーは、コードに対する提案された変更に関するメッセージを簡単に交換できます。 この記事では、 Devops 開発者の生活の中で「ユーザー ストーリーの新しいコードを記述する」のチュートリアルを続けて、これらの機能について説明します。

Visual Studio のマイ ワークコード レビュー の機能は、次のエディションで利用できます。

  • Visual Studio 2022: Visual Studio Community、Visual Studio Professional、Visual Studio Enterprise
  • Visual Studio 2019: Visual Studio Professional と Visual Studio Enterprise

このチュートリアルでは、現在のタスクの作業を中断して、別の作業項目のチームメイトをブロックしているバグを直ちに修正する方法について説明します。 バグを修正した後、修正プログラムをレビューするよう同僚に依頼できます。レビューに合格したら、修正プログラムをチェックインし、元のタスクの作業を再開します。

現在の作業を中断する

バックログアイテムの作業中に、チームメイトをブロックしている別のアイテムのバグについて知る場合があります。 使い慣れた領域であれば、バグを修正するタスクを作成し、すぐに作業できるように自分に割り当てることができます。

新しいバグの作業を開始する前に、チームのサーバー上の安全な場所に現在の作業が確保されていることを確認する必要があります。 Visual Studio チーム エクスプローラーの [ マイ ワーク ] ページで、[ 中断 ] を選択してサーバーに保存します。

  • コード、テスト、その他のファイルの変更を含め、実行したすべての作業。

  • ソリューション、ウィンドウ、ブレークポイント、ウォッチ ウィンドウ変数、その他の Visual Studio 状態のビットを開きます。

ワークスペースがクリーンになったので、新しいタスクを [利用可能な作業項目] から [進行中の作業] にドラッグします。 修正プログラムを調査して記述する準備ができました。

作業コンテキストは、[マイ ワーク] ページ に [進行中 ] と表示される 作業 項目にリンクされます。 SuspendResume を使用すると、さまざまなタスクをすばやく切り替えることができます。 開いているソリューションとファイル、コードの変更、Visual Studio のレイアウトがすべて切り替わります。

現在の作業を中断し、別のタスクで作業を開始するには

作業コンテキストを切り替えます。

  1. 作業するプロジェクトにまだ接続していない場合は、 プロジェクトに接続します

  2. チーム エクスプローラーホーム ページで、[マイ ワーク] を選択します。

  3. [ マイ ワーク ] ページ の [進行中の作業 ] セクションで、[ 中断] を選択します。

  4. 表示されるボックスで、必要に応じて、この一連の中断された作業を行う名前を変更し、[ 中断] を選択します。 アイテムが [中断された作業] の下に表示されます。

    一部の作業を中断しているスクリーンショット。

  5. 作業項目を [利用可能な作業項目] から [進行中の作業] にドラッグします。 または、中断された作業からドラッグして、以前に中断した 作業項目に切り替えることもできます。

    自分で割り当てる作業項目が [利用可能な作業項目] に表示されない場合は、次のことができます。

    • [新規] を選択して、新しいタスクまたはその 他の作業項目を作成します。
    • [ クエリを開く] を選択して、別のクエリを選択します。

ヒント

進行中 の作業 項目は、現在のコードの変更と Visual Studio の状態へのリンクです。 Visual Studio が作業の整理に役立つよう、タスク間で切り替えるときに、適切な項目が 進行中の作業 状態であることを確認します。

バグを調査する

新しいバグを開き、説明を読みます。 この例では、テスト チームのメンバーによる説明では、有料の請求書が誤って未払いとしてフラグ付けされる場合があることを示しています。 ラボ環境のスナップショットがバグ作業項目にアタッチされます。 テストが実行された仮想マシン (VM) を開き、正しくない請求書を確認し、IntelliTrace ログをステップ バックします。 エラーをトレースするには、次の方法を使用します。

public class LocalMath
{
    public static bool EqualTo(double a, double b)
    {
        return a == b;
    }

IntelliTrace ログから、パラメーターが非常に少量異なるため、メソッドから false が返されることがあります。 この種の丸めエラーは浮動小数点演算では避けられません。また、浮動小数点数の等価性をテストするのは不適切な方法です。

テストを拡張してエラーを表示する

バグが見つかると、単体テストにギャップがあったか、テストがユーザーの実際のニーズと一致しなかったことが示されます。 したがって、バグを修正する前に、このエラーの存在を示すテストを追加します。

// Added 2022-02-02 for bug 654321:
/// <summary>
/// Make sure that number equality test allows for 
/// small rounding errors.
/// </summary>
[TestMethod]
public void TestDoublesEqual()
{
    // Allow a rounding error of 1 in 1000000:
    TestEqual(1, 1e-7, true); // Less than allowed error
    TestEqual(1, 1e-5, false); // More than allowed error
    TestEqual(1000, 1e-7, true); // Less than allowed error
    TestEqual(1000, 1e-5, false); // More than allowed error
}
private void TestEqual(double value, double error, bool result)
{
    // Try different combinations of error and value:
    Assert.IsTrue(result == LocalMath.EqualTo(value + error, value));
    Assert.IsTrue(result == LocalMath.EqualTo(value, value + error));
    Assert.IsTrue(result == LocalMath.EqualTo(value - error, value));
    Assert.IsTrue(result == LocalMath.EqualTo(value, value - error));
}

テストを実行すると、期待どおりに失敗します。

等しいテストの失敗を示す単体テスト エクスプローラーのスクリーンショット。

テストを成功させる

コードを修正します。

public static bool EqualTo(double a, double b)
{
    // Allow for rounding errors.
    // For example, a == 2.0 and b = 1.99999999999

    const double allowedError = 1/1000000;
    return System.Math.Abs(a - b) < allowedError;
}

これで、テストは次の手順に合格します。

等しいテストに合格したことを示す単体テスト エクスプローラーのスクリーンショット。

コード レビューを要求する

バグの修正に満足したら、まだ作業をチェックインしないでください。 チームはコード レビューを使用して全体的なコード品質を向上させ、より多くのバグを作成するリスクを軽減します。 チーム エクスプローラーを使用して、チームメイトにコード レビューを要求します。

コード レビューを要求するには

  1. チーム エクスプローラーの [進行中の作業] の [マイ ワーク] ページ、[レビューの要求] を選択します。

    [ 新しいコード レビュー] ページが表示されます。

    [コード レビューの要求] ページを示すスクリーンショット。

    • [ 校閲者の名前を入力 ] フィールドで、1 人以上の校閲者を指定し、各選択の後に Enter キーを押します。
    • 次のフィールドで、必要にじてレビューの名前を変更します。
    • 次のフィールドで、正しいエリア パスが表示されていることを確認します。
    • 次のフィールドに、省略可能な説明を入力します。
  2. [ 要求の送信] を選択します

レビュー担当者には、電子メールで要求が通知されます。

中断された作業、シェルブセット、または変更セットのコード レビューを要求することもできます。 変更セットの一覧を表示するには、 ソース管理エクスプローラー を開き、[ 履歴 ] ボタンを選択します。

コード レビューを行う

校閲者は、コード レビュー要求を受け入れます。 校閲者はコードをレビューし、ファイル レベルとコード ブロック レベルでコメントをいくつか書き込んでから、コード レビューを送信します。 要求されたレビュー担当者が、コードを確認できない場合は、レビューを辞退できます。

コメントでは、校閲者はテストが間違っていることを指摘します。 許容されるエラーは、一定の数量ではなく、入力値の指定された割合である必要があります。 そのため、テストではエラーに値を乗算する必要があります。

// We allow a rounding error of 1 in 1000000
// as a fraction of the value:
TestEqual(1, 1e-7, true); // Less than allowed error
TestEqual(1, 1e-5, false); // More than allowed error
TestEqual(1000, 1000*1e-7, true); // Less than allowed error
TestEqual(1000, 1000*1e-5, false); // More than allowed error

ヒント

チーム メンバーは、ディスカッションの焦点としてテストを使用します。 テストが正しく、十分な場合は、コードも作成されます。 コードとは異なり、各テストは個別のケースを表します。 このため、多くの場合、テストはコードよりも簡単に説明できます。

コード レビューを行うには

  1. チーム エクスプローラーの [マイ ワーク] ページで、[コード レビュー] セクションでコード レビューを右クリックし、[開く] を選択します。

    [コード レビュー] ページが表示されます。

    [コード レビュー] ページのスクリーンショット。

  2. [コード レビュー] ページでは、次のことができます。

    • [ レビュー担当者の追加] を選択して、他のレビュー担当者をコード レビュー要求に追加します。

    • 各ファイル リンクを選択すると、この作業項目に対して更新されたファイルに対する変更が表示されます。

    • コメントを使用して、作成者や他の校閲者と変更について話し合います。

      コメントを追加するには:

      • [ 全体コメントの追加] を選択して、全体的なコメントをレビューに追加します。
      • ファイルを表示するときに、コードの行またはブロックを選択し、右クリックして[ コメントの追加]を選択します。

      各コメントを追加した後、[ 保存] を選択するか、Ctrl キーを押しながら Enter キーを押します。

  3. コメントの入力が完了したら、[ コメントの送信 ] を選択して、作成者や他の校閲者に投稿を表示します。

コード レビューに応答する

校閲者からコード レビューを受け取り、返信します。 あなたと校閲者は、好きな頻度でコメントを交換できます。 レビューは、閉じると終了します。

コード レビューに応答するには

  1. チーム エクスプローラーの [マイ ワーク] ページで、[コード レビュー] セクションに移動し、要求をダブルクリックするか、要求を右クリックして [開く] を選択します。

    [コード レビュー] ページが表示されます。

    コード レビューに応答するスクリーンショット。

  2. [ コメント ] セクションで、コメントを読み、必要に応じて返信します。 コメントに返信するには、[ 返信] を選択し、表示されるボックスにコメントを入力して、[ OK] を選択します。

  3. ファイルを表示し、コメントがあるコード ブロックを表示したり、ファイルを編集またはコメントしたりするには、[ ファイル ] サブセクションに移動します。 ファイルを右クリックし、次のいずれかを選択します。

    • 比較 (Read-Only)
    • ローカル ファイルの編集、または
    • ファイル コメントの追加

    コメントの横にあるチェック ボックスをオンにして、コメントがアドレス指定されたことを示すこともできます。

  4. コメントを送信するには、[コメントの送信] を選択 します

  5. 自分と他の校閲者がお互いのコメントへの返信を完了し、レビューを閉じる準備ができたら、[レビューを 閉じる] を選択し、次を選択します。

    • レビューが完了したことを示す [完了] または
    • レビューを取り消していることを示す場合は、破棄します。

テストとコードを修正する

レビューのコメントを読んだ後は、提案どおりに単体テストを修正できます。 これでテストは失敗します。 これは、コードがまだ正しくないことを示しています。

次のコードを修正します。

/// <summary>
/// Returns true if two numbers are equal.
/// </summary>
public static bool EqualTo(double a, double b)
{
    // Allow for rounding errors.
    const double allowedErrorMultiple = 1/1000000;
    double allowedError = (System.Math.Abs(a) + System.Math.Abs(b)) * allowedErrorMultiple/2;
    return System.Math.Abs(a - b) < allowedError;
}

テストは再び成功します。

ヒント

バグを修正するには、コード開発と同じプラクティスに従います。 失敗したテストを記述し、テストに合格します。 テストに合格した場合にのみ、コードとテストをチェックインします。

ここで、バグが検出されたテスト ケースに注意を向けます。 バグを再現する手順は、テスト ケースの作業項目で明確に説明されています。 手順に従って、請求書が正しく一覧表示されていることを確認します。

修正プログラムをチェックインする

固定コードと単体テストをチェックインします。 バグの状態は自動的に [解決済み] に設定され、[ 割り当て 先] の値は、バグを検出したテスト チームのメンバーに自動的に再割り当てされます。 そのチーム メンバーは、バグが修正されたことを確認し、作業項目を閉じます。

修正プログラムをチェックインするには

  1. チーム エクスプローラーの [マイ ワーク] ページで、[チェックイン] を選択して [保留中の変更] ページを開きます。

    バグを修正するための更新プログラムのチェックインのスクリーンショット。

  2. [ 保留中の変更] ページで、次の点を確認します。

    • 関連するすべての変更は、[含まれる変更] に一覧表示されます

    • 関連するすべての作業項目は、 関連する作業項目に一覧表示されます。

  3. コメントを入力すると、変更されたファイルとフォルダーのバージョン 管理履歴をチームが確認するときに、これらの変更の目的を理解しやすくなります。

  4. [ チェックイン] を選択します。

タスクの作業を再開する

元のタスクの作業を再開します。 すべてのコード変更が、開いているウィンドウ、ブレークポイント、ウォッチ ウィンドウ変数などの重要な状態のビットと共にワークスペースに復元されるため、すぐに作業に戻ることができます。

タスクの作業を再開するには

  • チーム エクスプローラーの [マイ ワーク] ページで、[中断された作業] で元の作業項目を選択し、[再開] を選択します

    タスクの再開のスクリーンショット。

    または、中断した作業をワークスペース内の保留中の変更とマージする場合は、[ 進行中の作業とマージ] を選択します。

作業を再開すると、Visual Studio によって次の内容が復元されます。

  • 開いているソリューション
  • コードの変更
  • 開いているウィンドウの状態と位置
  • Breakpoints
  • ウォッチ ウィンドウの変数と式
  • Bookmarks