Devops 開發人員的一生中的一天:暫停工作、修正 Bug,以及進行程式代碼檢閱
Azure DevOps Services | Azure DevOps Server 2022 - Azure DevOps Server 2019
Visual Studio 2019 |Visual Studio 2022
Visual Studio My Work 和 Code Review 功能支援從某一個工作線程切換到另一個線程的內容。 此外,小組成員可以輕鬆地交換有關程式代碼建議變更的訊息。 本文說明這些功能,請繼續進行 Devops開發人員生活中的Day教學課程:撰寫用戶劇本的新程序代碼。
注意
Visual Studio My Work 和 Code 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狀態的位。
現在您的工作區已清除,請將新工作從 [可用的工作專案 ] 拖曳至 [進行中工作]。 您已準備好研究並撰寫修正程式。
注意
您的工作內容會連結到 [我的工作] 頁面上顯示為 [進行中] 的工作專案。 藉由使用 Suspend 和 Resume,您可以在不同的工作之間快速切換。 您開啟的解決方案和檔案、程式代碼變更和 Visual Studio 版面配置都會一起切換。
若要暫停目前的工作,並開始處理不同的工作
切換您的工作內容:
如果您尚未連線到您想要使用的專案,請 連線至專案。
從 [Team Explorer] 的 [首頁] 中選擇 [我的工作]。
在 [ 我的工作] 頁面上的 [進行中工作 ] 區段中,選擇 [ 暫停]。
在出現的方塊中,選擇性地變更您想要提供這組暫停工作的名稱,然後選取 [ 暫停]。 專案會出現在 [暫停的工作] 底下。
將工作專案從 [可用的工作專案 ] 拖曳至 [進行中工作]。 或者,您可以將它從 [暫停的工作] 拖曳至您先前暫停的工作專案。
如果您想要指派的工作專案不會出現在 [可用的工作專案] 底下,您可以:
- 選擇 [新增] 以建立新工作或其他工作專案。
- 選取 [開啟查詢] 以選取 不同的查詢。
提示
[ 進行中工作 ] 專案會連結至您目前的程式代碼變更和 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 向小組成員要求程式代碼檢閱。
要求程式代碼檢閱
在 [Team Explorer] 的 [進行中工作] 下的 [我的工作] 頁面上,選擇 [要求檢閱]。
[ 新增程式代碼檢閱] 頁面隨即出現。
- 在 [ 輸入檢閱者 的名稱] 字段中,指定一或多個檢閱者,然後在每個選取項目之後按 Enter。
- 在下一個字段中,如果您想要變更檢閱的名稱。
- 在下一個字段中,確定會出現正確的區域路徑。
- 在下一個字段中,輸入選擇性描述。
選擇 [ 提交要求]。
檢閱者會透過電子郵件收到要求通知。
您也可以要求程式代碼檢閱暫停的工作、擱置集或變更集。 若要查看變更集的清單,請開啟 原始檔控制總管 ,然後選擇 [ 歷程記錄] 按鈕。
進行程式代碼檢閱
檢閱者可以接受程式代碼檢閱要求。 檢閱者會檢閱程式碼、在檔案和程式代碼區塊層級撰寫一些批注,然後將程式代碼檢閱傳回您。 要求檢閱者太忙碌而無法檢閱程式代碼,可能會拒絕檢閱。
在批注中,檢閱者指出測試錯誤。 允許的錯誤應該是輸入值的指定分數,而不是常數數量。 因此,測試應該將錯誤乘以 值。
// 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
提示
小組成員會使用測試作為討論的重點。 如果測試正確且足夠,程式代碼也會是 。 不同於程式代碼,每個測試都代表個別的案例。 因此,測試通常比程式代碼更容易討論。
若要進行程式代碼檢閱
在 Team Explorer 的 [我的工作] 頁面上,以滑鼠右鍵按兩下 [程式代碼檢閱] 區段中的程式代碼檢閱,然後選取 [開啟]。
[程序 代碼檢閱] 頁面隨即出現。
在 [ 程序代碼檢閱] 頁面上,您可以:
選擇 [新增檢閱者 ] 將其他檢閱者新增至程式代碼檢閱要求。
選取每個檔案連結,以查看已針對此工作專案更新之檔案的變更。
使用 批注 與作者和其他檢閱者討論變更。
若要新增批註:
- 選擇 [新增整體批注] 以將整體批註 新增至檢閱。
- 檢視檔案時,請選取程式代碼行或區塊,以滑鼠右鍵按兩下,然後選取[ 新增批註]。
新增每個批注之後,請選取 [ 儲存] 或按 Ctrl+Enter。
當您完成輸入批注時,請選取 [ 傳送批注 ],讓作者和其他檢閱者看到您的貢獻。
回應程式代碼檢閱
您會收到並回應檢閱者的程式代碼檢閱。 您和檢視需要經常交換批注。 當您關閉檢閱時,檢閱會結束。
回應程式代碼檢閱
在 Team Explorer 的 [ 我的工作] 頁面上,移至 [程序代碼檢閱 ] 區段,然後按兩下要求,或以滑鼠右鍵按下要求,然後選擇 [ 開啟]。
[程序 代碼檢閱] 頁面隨即出現。
在 [ 批注] 區段底下,閱讀批注並視需要回復。 若要回復批注,請選擇 [回復],在出現的方塊中輸入您的批注,然後選擇 [ 確定]。
若要檢視檔案,並查看具有批注的程式代碼區塊,或編輯或批注檔案,請移至 [檔案 ] 子區段。 以滑鼠右鍵按下列,然後選擇下列其中一項:
- 比較 (唯讀)
- 編輯本機檔案,或
- 新增檔案批注
您也可以選取批注旁的複選框,以指出已處理批注。
若要傳送您的批注,請選擇 [ 傳送批注]。
當您和其他檢閱者完成彼此的批注回應,並準備好關閉檢閱時,請選取 [關閉檢閱],然後選取:
- 完成 以指出檢閱已完成,或
- 放棄 以指出您正在取消檢閱。
修正測試和程序代碼
閱讀評論批注之後,您可以依照建議來修正單元測試。 測試現在會失敗。 這會顯示程式代碼尚未正確。
您可以修正程式代碼:
/// <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 已修正並關閉工作專案。
簽入修正程式
在 [Team Explorer] 的 [我的工作] 頁面上,選擇 [簽到] 以開啟 [擱置的變更] 頁面。
在 [ 擱置的變更 ] 頁面上,確定:
所有相關變更都會列在包含的變更中
所有相關的工作項目都會列在 [相關工作專案] 中。
輸入批 注 ,以協助小組瞭解這些變更的目的,當他們查看變更檔案和資料夾的版本控制歷程記錄時。
選取 [簽到]。
繼續工作
繼續處理原始工作。 您可以快速返回工作,因為所有程式碼變更都會還原到您的工作區,以及開啟視窗、斷點和監看視窗變數等重要狀態位。
若要繼續工作
在 [Team Explorer] 的 [我的工作] 頁面上,選取 [暫停的工作] 底下的原始工作專案,然後選取 [繼續]。
或者,如果您想要合併暫停的工作與工作區中暫止的變更,請選擇 [合併與進行中]。
當您繼續工作時,Visual Studio 會還原:
- 您的開啟解決方案
- 您的程式代碼變更
- 開啟視窗的狀態和位置
- 中斷點
- 監看視窗變數和表達式
- 書籤