Devops 開發人員的一生中的一天:暫停工作、修正 Bug,以及進行程式代碼檢閱

Azure DevOps Services | Azure DevOps Server 2022 - Azure DevOps Server 2019

Visual Studio 2019 |Visual Studio 2022

Visual Studio My WorkCode Review 功能支援從某一個工作線程切換到另一個線程的內容。 此外,小組成員可以輕鬆地交換有關程式代碼建議變更的訊息。 本文說明這些功能,請繼續進行 Devops開發人員生活中的Day教學課程:撰寫用戶劇本的新程序代碼。

注意

Visual Studio My WorkCode Review 功能適用於下列版本:

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

本教學課程說明如何暫停目前工作的工作,以立即修正封鎖另一個工作專案中的小組成員的錯誤。 修正 Bug 之後,您可以要求同事檢閱修正程式,並在檢閱通過之後,簽入修正程式並繼續處理原始工作。

暫停目前的工作

在處理待辦專案時,您可能會發現另一個封鎖小組成員的專案有 Bug。 如果是您熟悉的區域,您可以建立工作來修正 Bug,並將它指派給自己立即處理。

開始處理新 Bug 之前,您想要確定目前的工作已放在小組伺服器上的安全位置。 在 Visual Studio Team Explorer 的 [ 我的工作] 頁面上,選擇 [ 暫停 ] 以儲存在伺服器上:

  • 您完成的所有工作,包括程式碼、測試和其他檔案的變更。

  • 開啟方案、視窗、斷點、監看視窗變數,以及其他Visual Studio狀態的位。

現在您的工作區已清除,請將新工作從 [可用的工作專案 ] 拖曳至 [進行中工作]。 您已準備好研究並撰寫修正程式。

注意

您的工作內容會連結到 [我的工作] 頁面上顯示為 [進行中] 的工作專案。 藉由使用 SuspendResume,您可以在不同的工作之間快速切換。 您開啟的解決方案和檔案、程式代碼變更和 Visual Studio 版面配置都會一起切換。

若要暫停目前的工作,並開始處理不同的工作

切換您的工作內容:

  1. 如果您尚未連線到您想要使用的專案,請 連線至專案

  2. 從 [Team Explorer] 的 [首頁] 中選擇 [我的工作]。

  3. 在 [ 我的工作] 頁面上的 [進行中工作 ] 區段中,選擇 [ 暫停]。

  4. 在出現的方塊中,選擇性地變更您想要提供這組暫停工作的名稱,然後選取 [ 暫停]。 專案會出現在 [暫停的工作] 底下

    暫停某些工作的螢幕快照。

  5. 將工作專案從 [可用的工作專案 ] 拖曳至 [進行中工作]。 或者,您可以將它從 [暫停的工作] 拖曳至您先前暫停的工作專案。

    如果您想要指派的工作專案不會出現在 [可用的工作專案] 底下,您可以:

    • 選擇 [新增] 以建立新工作或其他工作專案。
    • 選取 [開啟查詢] 以選取 不同的查詢

提示

[ 進行中工作 ] 專案會連結至您目前的程式代碼變更和 Visual Studio 狀態。 若要讓 Visual Studio 協助您組織工作,請確定當您從某個工作切換到另一項工作時,適當的專案處於 [進行中工作 ] 狀態。

調查 Bug

開啟新的 Bug 並讀取描述。 在此範例中,測試小組成員的描述指出付費發票有時會錯誤地標示為未付款。 實驗室環境快照集會附加至 Bug 工作專案。 您可以開啟執行測試的虛擬機 (VM),查看不正確的發票,然後逐步執行 IntelliTrace 記錄。 您可以將錯誤追蹤至下列方法:

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

從 IntelliTrace 記錄檔中,您會看到此方法有時會傳回 false,因為參數的差異極小。 您知道這種四捨五入的錯誤在浮點算術中是不可避免的,而且測試浮點數是否相等是錯誤的作法。

擴大測試以顯示錯誤

找到 Bug 時,它會顯示單元測試中有差距,或測試不符合用戶的實際需求。 因此,在修正 Bug 之前,請新增測試,以示範此錯誤是否存在:

// 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;
}

測試現在通過:

單元測試總管的螢幕快照,其中顯示已通過的測試是否相等。

要求程式代碼檢閱

當您對 Bug 的修正感到滿意時,請尚未簽入您的工作。 Teams 會使用程式代碼檢閱來增加整體程式代碼品質,並降低建立更多 Bug 的風險。 使用 Team Explorer 向小組成員要求程式代碼檢閱。

要求程式代碼檢閱

  1. [Team Explorer] 的 [進行中工作] 下的 [我的工作] 頁面上,選擇 [要求檢閱]。

    [ 新增程式代碼檢閱] 頁面隨即出現。

    顯示 [要求程式代碼檢閱] 頁面的螢幕快照。

    • 在 [ 輸入檢閱者 的名稱] 字段中,指定一或多個檢閱者,然後在每個選取項目之後按 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. 在 Team Explorer 的 [我的工作] 頁面上,以滑鼠右鍵按兩下 [程式代碼檢閱] 區段中的程式代碼檢閱,然後選取 [開啟]。

    [程序 代碼檢閱] 頁面隨即出現。

    [程序代碼檢閱] 頁面的螢幕快照。

  2. 在 [ 程序代碼檢閱] 頁面上,您可以:

    • 選擇 [新增檢閱者 ] 將其他檢閱者新增至程式代碼檢閱要求。

    • 選取每個檔案連結,以查看已針對此工作專案更新之檔案的變更。

    • 使用 批注 與作者和其他檢閱者討論變更。

      若要新增批註:

      • 選擇 [新增整體批注] 以將整體批註 新增至檢閱。
      • 檢視檔案時,請選取程式代碼行或區塊,以滑鼠右鍵按兩下,然後選取[ 新增批註]。

      新增每個批注之後,請選取 [ 儲存] 或按 Ctrl+Enter。

  3. 當您完成輸入批注時,請選取 [ 傳送批注 ],讓作者和其他檢閱者看到您的貢獻。

回應程式代碼檢閱

您會收到並回應檢閱者的程式代碼檢閱。 您和檢視需要經常交換批注。 當您關閉檢閱時,檢閱會結束。

回應程式代碼檢閱

  1. Team Explorer 的 [ 我的工作] 頁面上,移至 [程序代碼檢閱 ] 區段,然後按兩下要求,或以滑鼠右鍵按下要求,然後選擇 [ 開啟]。

    [程序 代碼檢閱] 頁面隨即出現。

    回應程式代碼檢閱的螢幕快照。

  2. 在 [ 批注] 區段底下,閱讀批注並視需要回復。 若要回復批注,請選擇 [回復],在出現的方塊中輸入您的批注,然後選擇 [ 確定]。

  3. 若要檢視檔案,並查看具有批注的程式代碼區塊,或編輯或批注檔案,請移至 [檔案 ] 子區段。 以滑鼠右鍵按下列,然後選擇下列其中一項:

    • 比較 (唯讀)
    • 編輯本機檔案,或
    • 新增檔案批注

    您也可以選取批注旁的複選框,以指出已處理批注。

  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;
}

測試再次通過。

提示

若要修正 Bug,請遵循與程式代碼開發相同的做法。 撰寫失敗的測試,然後讓測試通過。 只有在測試通過時,才簽入程式代碼和測試。

您現在將注意力轉向探索到 Bug 的測試案例。 測試案例工作專案中清楚說明重現 Bug 的步驟。 您可以依照步驟操作,並發現發票已正確列出。

簽入修正程式

您會簽入固定程式代碼和單元測試。 Bug 的狀態會自動設定為 [已解決],且 [指派給] 值會自動重新指派給探索 Bug 的測試小組成員。 該小組成員會確認 Bug 已修正並關閉工作專案。

簽入修正程式

  1. [Team Explorer] 的 [我的工作] 頁面上,選擇 [簽到] 以開啟 [擱置的變更] 頁面。

    簽入更新以修正 Bug 的螢幕快照。

  2. 在 [ 擱置的變更 ] 頁面上,確定:

    • 所有相關變更都會列在包含的變更中

    • 所有相關的工作項目都會列在 [相關工作專案] 中

  3. 輸入批 ,以協助小組瞭解這些變更的目的,當他們查看變更檔案和資料夾的版本控制歷程記錄時。

  4. 選取 [簽到]。

繼續工作

繼續處理原始工作。 您可以快速返回工作,因為所有程式碼變更都會還原到您的工作區,以及開啟視窗、斷點和監看視窗變數等重要狀態位。

若要繼續工作

  • [Team Explorer] 的 [我的工作] 頁面上,選取 [暫停的工作] 底下的原始工作專案,然後選取 [繼續]。

    繼續工作的螢幕快照。

    或者,如果您想要合併暫停的工作與工作區中暫止的變更,請選擇 [合併與進行中]。

當您繼續工作時,Visual Studio 會還原:

  • 您的開啟解決方案
  • 您的程式代碼變更
  • 開啟視窗的狀態和位置
  • 中斷點
  • 監看視窗變數和表達式
  • 書籤