共用方式為


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 開發人員的一天,為用戶故事撰寫新程式碼

備註

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的 [My Work] 頁面上,選擇 [暫停],以儲存在伺服器上:

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

  • 開啟解決方案、視窗、斷點、監視視窗中的變數,以及其他 Visual Studio 狀態的部分。

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

備註

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

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

切換您的工作內容:

  1. 如果您尚未連線到想參與的項目,連線到項目

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

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

  4. 在出現的方塊中,您可以變更您想為這組暫停工作提供的名稱,然後選取 暫停。 該項目會出現在 Suspended Work底下。

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

  5. 將工作專案從 [可用工作專案] 拖曳至 [正在進行的工作]。 或者,您可以切換至您先前暫停的工作專案,方法是將它從 Suspended Work拖曳。

    如果您想指派給自己的工作專案沒有出現在 [可用的工作專案] 底下,您可以:

    • 選擇 新增以建立新的任務或其他工作項目。
    • 選取 [開啟查詢]來選取不同的查詢。

小提示

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

調查錯誤

開啟新的 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的 [My Work] 頁面上,右鍵點選 [程式碼檢查] 區段中的程式碼檢查,然後選取 [開啟]。

    程式代碼檢閱 頁面隨即出現。

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

  2. 程式代碼檢閱的 頁面上,您可以:

    • 選擇 新增檢閱者,將其他檢閱者新增至程式碼檢閱請求中。

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

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

      若要新增批註:

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

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

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

回應程式碼審查

您會收到檢閱者的程式碼審查並進行回應。 您和評論者可以隨時交換批注。 當您關閉檢閱時,檢閱會結束。

回應程式碼檢閱

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

    程式代碼檢閱 頁面隨即出現。

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

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

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

    • 比較 (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;
}

測試再次通過。

小提示

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

您現在將注意力集中在發現 Bug 的測試案例上。 測試案例工作專案中清楚說明重現 Bug 的步驟。 您按照步驟進行,並發現發票正確地列出了。

簽入修正程式

您會簽入修正過的程式碼與單元測試。 Bug 的狀態會自動設定為 Resolved,且 指派到 的欄位值會自動重新指定給發現 Bug 的測試小組成員。 該小組成員會確認 Bug 已修正並關閉工作專案。

簽入修正程式

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

    檢查更新以修正 Bug 的螢幕快照。

  2. 在 [待處理的變更 頁面上,確定:

    • 所有相關變更都會列在內含變更

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

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

  4. 選取 [簽入

繼續處理任務

繼續處理原始工作。 您可以快速恢復工作,因為所有程式碼變更、以及開啟視窗、斷點和監看視窗中的變數等重要的狀態資訊都已恢復到您的工作空間。

若要繼續進行一項任務

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

    繼續工作的螢幕快照。

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

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

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