共用方式為


ALM 開發人員的一日生活:暫停工作、修復 Bug 和進行程式碼檢閱

一個功能強大的點擊方法以將您的工作內容從一工作之執行緒切換至令一個在Team Foundation Server Visual Studio Premium 和 Visual Studio Ultimate 中可利用的執行緒。 此外,小組成員可以輕鬆有關建議變更的交換訊息給程式碼。 本主題將說明這些功能,接著的教學課程將跟隨虛擬輕鬆的小組成員度過一天。

Peter 忙於撰寫一些程式碼以完成待處理項目的工作。 不過,他的同事找到一個阻礙他們的 Bug,他想要立即修正它。 他暫止其完成的工作並修正錯誤 (bug)。 這些要求茱莉檢閱此修正,並在檢閱之後,登錄此修正並繼續處理其原來的工作。

注意事項注意事項

Peter 使用的 [我的工作] 和 [程式碼檢閱] 功能只能在 Visual Studio Premium 和 Visual Studio Ultimate被使用。

本主題內容

  • 暫止目前的工作並開始錯誤 (bug) 的工作

  • 調查錯誤 (bug)

  • 要求程式碼檢閱 。

  • 接受並執行 (或拒絕) 程式碼檢閱。

  • 接收並回應程式碼檢閱。

  • 修正測試和程式碼

  • 簽入修正。

  • 在任務中繼續工作。

暫止目前的工作

當 Peter 於處理待處理項目,茱莉討論封鎖她的 Bug。 它位於 Peter 熟悉的區域,所以他建立工作以便修正錯誤 (bug) 並將它指派給自己。 這些決定立即開始修正工作。

在開始處理新的 Bug 之前,Peter 想確定他目前的工作位在佇列的小組伺服器的安全的位置下。 在 [我的工作] 頁面上, Peter 選取 [暫停] 以儲存(在 Team Foundation Server):

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

  • 開啟方案、視窗、中斷點、監看式視窗變數和其他 Visual Studio 狀態。

現在他的工作區是乾淨的,從 [可用的工作項目] Peter 將新工作加入至 [進行中的工作]。 他已準備好研究並寫入此修正。

注意事項注意事項

您運作的內容會連結至工作項目並正在 [我的工作] 頁面上顯示為 [進行中]。使用 [暫停] 和 [繼續],您可以快速切換不同工作。您的開啟方案和檔案、程式碼變更並設定 Visual Studio 完整一起進行交換。

Hh474795.collapse_all(zh-tw,VS.110).gif暫止目前的工作並開始在不同任務的工作

暫停某些工作

  1. **連接 :**如果您尚未連接至要處理的 Team 專案,請連接到 Team 專案

    1. 在 [Team Explorer] 中,選擇 [首頁圖示首頁],然後選擇 [我的工作圖示暫存的變更]。
  2. 暫停 您目前的工作:

    1. 在 [進行中的工作] 區段中,選取 [暫停]。

    2. 在出現的方塊中,指定您想要給這一組暫止工作的名稱,然後選取 [暫停] 按鈕。 預設名稱是您目前正在進行中的工作項目。

  3. 開始新的工作、Bug,或其他工作項目:

    1. 在選取工作項目之前,您可能要:

      • 藉由在 [可用的工作項目] 下選取 [新增] 以建立新的工作或其他工作項目;或

      • 選取在 [可用的工作項目] 之下不同的查詢。

    2. 從 [可用的工作項目] 拖曳的工作項目加入至 [進行中的工作]。

      或者,您也可以切換至您先前從 [暫停的工作] 底下拖曳出來的逾時工作項目。

提示

目前進行中的工作項目與您目前的程式碼變更和 Visual Studio 狀態連接。若要讓 Visual Studio 可以協助您組織您的工作,而當您從某個工作之間切換時,請確定適當的項目處於進行中狀態。

調查錯誤 (bug)

Peter 開啟並讀取 Bug 工作項目。 根據測試小組的成員所撰寫的描述,已支付的發票在某些情況下會不正確地標示為未支付。 具有實驗室環境快照附加至 Bug 工作項目。 Peter 可以開啟測試所執行的虛擬機器,透過 IntelliTrace 記錄檔以查看無效的發票和步驟回復。 他呼叫下列方法來追蹤錯誤:

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

從 IntelliTrace 記錄,Peter 看見方法有時會傳回錯誤,因為參數有極小的不同。 Peter 確認此類進位錯誤在浮點算術中是無法避免,並且測試浮點數相等是不好的測試。

Hh474795.collapse_all(zh-tw,VS.110).gif擴大測試以顯示錯誤

當發現 Bug,它會在單元測試中顯示一段間距,或者此測試不符合使用者的實際需求。 因此,在修正 Bug之前,Peter 增加一項示範這個錯誤出現的測試。

 
        // Added 2012-02-02 for bug 654321:
        /// <summary>
        /// Make sure that number equality test allows for 
        /// small rounding errors.
        /// </summary>
        [TestMethod]
        public void TestDoublesEqual()
        {
            // We 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));
        }

他執行測試,並如預期般失敗。

顯示失敗之測試的 [單元測試總管],這些測試是比較是否相同的測試。

Hh474795.collapse_all(zh-tw,VS.110).gif這樣會通過測試。

Peter 修正程式碼:

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

現在測試成功:

顯示成功之測試的 [單元測試總管],這些測試是比較是否相同的測試。

要求程式碼檢閱 。

Peter 滿足這些 Bug 的修正,但尚未簽入他的工作。 小組使用程式碼檢閱將整個程式碼品質提高和減少建立更多 Bug 的風險,因此Peter 使用 小組總管要求小組夥伴茱莉和亞當的程式碼檢閱。

Hh474795.collapse_all(zh-tw,VS.110).gif要求程式碼檢閱

要求程式碼檢閱

  1. 在 [Team 總管][我的工作] 頁面上,選取 [要求檢閱]。

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

  2. 檢閱者 指定一個或多個檢閱者。

  3. 程式碼檢閱 請指定檢閱的名稱。

  4. 區域路徑 指定區域路徑。

  5. 註解 指定註解給檢閱者。

  6. 選取 [送出要求]。

檢閱者被以電子郵件告知要求訊息。

您也可以被要求暫止工作、擱置集或變更集的程式碼檢閱。

接受或拒絕一程式碼檢閱

茱莉收到程式碼檢閱要求並接受。 他檢閱程式碼,在文件和程式碼區塊層級撰寫一些註解,然後將程式碼檢閱送回給 Peter。 亞當太忙碌而無法檢視程式碼並拒絕。

在他的註解中,茱莉指出測試是錯誤的。 允許的錯誤應該是輸入值的指定分數,不是一個常數。 因此測試應該乘以錯誤的值。

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

提示

請注意小組成員使用測試做為相關討論的焦點。如果測試無誤且已足夠,程式碼也將如此。不同於程式碼,每個測試都代表一個獨立的情況。因此,測試通常比程式碼易於進行討論。

Hh474795.collapse_all(zh-tw,VS.110).gif執行程式碼檢閱

接受並回應程式碼檢閱執行程式碼檢閱

  1. 在 [Team 總管],在 [我的工作] 頁,請在 [My Code 檢閱 & 要求] 部分並開啟需求。

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

    • 選取 [接受] 或 [拒絕] 以通知作者您是否要執行檢閱。

    • 選取 [加入檢閱者] 加入其他檢閱者對程式碼檢閱的需求。

    • 檢視針對此工作項目更新的每個檔案之變更。

    • 展開 [註解] 與作者和其他檢閱者討論變更。

      • 選取 [加入整個註解。]

        -或-

        選取程式碼區塊然後從捷徑功能表選取 [加入註解] 。

      • 選取 [傳送意見] 讓作者和其他檢閱者看得見你的貢獻。
    • 選取 [傳送並完成。] 完成您的檢閱,表示程式碼是否需要更多工作。

回應程式碼檢閱。

Peter 接收回應來自茱莉的程式碼檢閱。

Hh474795.collapse_all(zh-tw,VS.110).gif回應程式碼檢閱

程式碼檢閱者的和作者可以隨心所欲地多次交換註解。 當作者關閉檢閱,則檢閱結束。 每個貢獻被討論時,會透過電子郵件通知其他參與者。

回應程式碼檢閱

  1. 在 [Team 總管],在 [我的工作] 頁,請在 [程式碼檢閱 & 要求] 部分並按兩下需求。

    您也可以開啟要求的捷徑功能表並選取 [開啟]。

  2. 讀取註解並依需要回覆它們。 若要回覆註解,請選取 [回覆],輸入您在顯示的方塊中輸入註解,然後選取 [確定]。 若要傳送您的註解,請選取 [傳送意見]。

  3. 若要檢視檔案並查看具有註解的程式碼區塊,或是編輯檔案,請移至 [註解] 部分。 在 [檔案] 區段,請開啟檔案的捷徑功能表並選取 [比較 (唯讀)] 或 [編輯檔案。]。

  4. 當您和其他檢閱者已完成回應彼此的註解時,並且已準備好要結束檢閱,請按一下 [關閉檢閱] ,然後選擇:

    • [完成] 表示檢閱完成。

    • -或-

    • [Abandon] 表示您取消檢閱。

修正測試和程式碼

讀取茱莉的註解後,Peter 依據她的建議修正單元測試。 這項測試現在失敗。 這表示,程式碼還是不正確的。

Peter 修正程式碼:

        /// <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,請依照在程式碼開發裡的作法。寫一個會失敗的測試然後讓測試成功執行。只有在測試成功時,簽入程式碼和測試。

Peter 現在將它們的注意力加入到發現 Bug 的測試案例。 重現 Bug 的步驟在測試案例工作項目中有清楚的說明。 他跟隨這些步驟並發現發票被正確地列出。

簽入修正。

Peter 登錄修正的程式碼和單元測試。 將 Bug 的狀態會自動設定為, [已解析],並 [指派給] 值自動重新指派給發現 Bug 測試小組的成員。 該小組成員驗證 Bug 已修正並關閉工作項目。

Hh474795.collapse_all(zh-tw,VS.110).gif簽入修正

簽入更新以修正 Bug

  1. 在 [Team 總管][我的工作] 頁面上,選取 [簽入]。

  2. 檢閱 [暫存的變更] 網頁的內容,以確定:

    • 所有相關的變更被列在 [包含的變更] 上

    • 任何相關的工作項目被列在 [相關工作項目] 。

  3. 當他們查看已變更的檔案和資料夾的版本控制記錄時,請指定 [註解] 協助小組了解這些變更的目的。

  4. 選擇簽入

在任務中繼續工作。

Peter 繼續處理他的工作。 它能夠快速回到工作,因為他所有的程式碼變更隨著重要的狀態,如視窗、中斷點、監看式視窗變數,被儲存至他的工作區。

Hh474795.collapse_all(zh-tw,VS.110).gif復原任務上的工作

繼續並完成工作

  • 在 [小組總管],在 [我的工作] 網頁,尋找 [暫止的 & 擱置的工作] 清單。 開啟項目的捷徑功能表。 您有兩種選擇 :

    • 如果您在工作區中要復原暫止的工作和自動暫止任何暫止的變更,請選取 [繼續]。

    • 如果您想要在您的工作區中要合併暫停的工作與暫止的變更時,請選取 [與進行中項目合併]。

Hh474795.collapse_all(zh-tw,VS.110).gif當您復原您的工作

暫停工作項目時受到影響的窗格。

當您復原您的工作時, Visual Studio 會還原:

  • 您的開啟方案

  • 您的程式碼變更

  • 開啟視窗的狀態下和位置

  • 中斷點

  • 監看式視窗變數和運算式

  • 書籤