DevOps geliştiricisinin yaşam süresi: işi askıya alma, bir hatayı çözme ve kod incelemesi yürütme

Azure Repos | Azure DevOps Server 2020 | Azure DevOps Server 2019 | TFS 2018 | TFS 2017 | TFS 2015 | VS 2017 | VS 2015 | VS 2013

çalışma bağlamını bir iş parçacığından diğerine geçirmek için güçlü bir tek tıklama yolu Visual Studio Premium ve Team Foundation Server ile Visual Studio Ultimate mevcuttur. Ayrıca, takım üyeleri kodda önerilen değişikliklerle ilgili iletileri kolayca değiş tokuş edebilir. Bu konuda, bir gün boyunca kurgusal çevik ekibin üyelerini takip eden bir öğreticiye devam eden bu özellikler gösterilmektedir.

Peter, bir biriktirme öğesi görevinin yerine getirilmesi için bazı kod yazma meşguldü. Ancak, iş arkadaşları onları engelleyen bir hata bulmuştur ve hemen düzeltilmesi istemektedir. Yaptığı işi askıya alır ve hatayı düzeltir. Julia 'nın bu çözümü gözden geçirmesini ve gözden geçirme işleminden sonra, düzeltilmesi ve özgün görevindeki çalışmayı devam etmesini ister.

Not

Peter 'in kullandığı çalışmam ve kod inceleme özellikleri yalnızca Visual Studio Premium ve Visual Studio Ultimate kullanılabilir.

Geçerli işi askıya al

Peter, bir biriktirme listesi öğesinde çalıştığından, Julia tarafından bloke olan bir hatayı tartışın. Bu, Peter 'ın alışkın olduğu bir alandır. bu nedenle, hatayı düzeltemedi ve onu hımself 'e atar. Düzeltilme üzerinde çalışmaya hemen başlamak ister.

Yeni hata üzerinde çalışmaya başlamadan önce Peter, geçerli işinin ekibin sunucusunda güvenli bir yerde ayarlandığından emin olmak istiyor. Iş alanım sayfasında, Peter kaydetmek Için askıya al (Team Foundation Server) öğesini seçer:

  • Kod, test ve diğer dosyalardaki değişiklikler dahil olmak üzere yaptığı tüm işler.

  • çözümler, pencereler, kesme noktaları, izleme penceresi değişkenleri ve diğer Visual Studio durum bitlerini açın.

Çalışma alanı temizleyene kadar, Peter yeni görevi kullanılabilir Iş öğelerindendevam eden işe sürükliyor. Araştırmaya ve bu hatayı yazmaya hazırlanın.

Not

Çalışma içeriğiniz, çalışmam sayfasında devam eden olarak görünen iş öğelerine bağlanır. Askıya al ve Duraklat ' ıkullanarak, farklı görevler arasında hızlıca geçiş yapabilirsiniz. açık çözümleriniz ve dosyalarınız, kod değişiklikleriniz ve Visual Studio düzeni birlikte değiştirilir.

Geçerli işi askıya almak ve farklı bir görevde çalışmaya başlamak için

Bazı işleri askıya alma

  1. Bağlan: Üzerinde çalışmak istediğiniz projeye zaten bağlı değilseniz, projeye bağlanın:

    1. Takım Gezgini, Giriş simgesigiriş' i seçin ve sonra çalışmam simgesiniseçin.
  2. Geçerli görevinizi askıya alın :

    1. Devam eden iş bölümünde beklet' i seçin.

    2. Görüntülenen kutuda, bu askıya alınmış çalışma kümesine vermek istediğiniz adı belirtin ve ardından beklet düğmesini seçin. Varsayılan ad şu anda devam eden iş öğesidir.

  3. Yeni bir görev, hata veya diğer iş öğesi üzerinde iş başlatın:

    1. Bir iş öğesini seçmeden önce şunları yapmak isteyebilirsiniz:

      • Kullanılabilir Iş öğelerialtında Yeni ' ye tıklayarak yeni bir görev veya başka bir iş öğesi oluşturun; veya

      • Kullanılabilir Iş öğelerialtında farklı bir sorgu seçin.

    2. Kullanılabilir Iş öğelerinden bir Iş öğesini devam etmekte olaniş öğesine sürükleyin.

      Alternatif olarak, askıya alınmış çalışmaaltına sürükleyerek daha önce askıya aldığınız bir iş öğesine geçebilirsiniz.

İpucu

şu anda devam eden iş öğeleri geçerli kod değişiklerinizin ve Visual Studio durumunun bağlantısına bağlanır. Visual Studio çalışmanızı düzenlemenize yardımcı olması için, bir görevden diğerine geçiş yaparken uygun öğelerin devam ediyor durumunda olduğundan emin olun.

Hatayı araştır

Peter açılır ve hata iş öğesini okur. Test takımının bir üyesi tarafından yazılan açıklamaya göre, ücretli bir fatura bazen yanlışlıkla ücretsiz olarak işaretlenir. Hata iş öğesine eklenmiş bir laboratuar ortamı anlık görüntüsü var. Peter, testin çalıştırıldığı sanal makineleri açabilir, yanlış faturaya ve IntelliTrace günlüğünden geri dönerek ilerleyebiliyor. Hatayı aşağıdaki yönteme izluyor:

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

Peter, IntelliTrace günlüğünden bazen yöntemin yanlış döndürdüğünden, parametreler son derece küçük bir miktarda farklılık gösterdiğinden. Peter, bu türden yuvarlama hatalarının kayan nokta aritmetiği açısından kaçınılmaz olduğunu ve kayan nokta numaralarını eşitlik için test etmek için kötü bir uygulama olduğunu bilir.

Hatayı göstermek için testleri artırmak

Bir hata bulunduğunda, birim testlerinde bir boşluk olduğunu veya testin, kullanıcıların gerçek gereksinimleriyle eşleşmemesi olduğunu gösterir. Bu nedenle, hatayı düzeltmeden önce, Peter bu hatanın varlığını gösteren bir test ekler.

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

Testi çalıştırır ve beklendiği gibi başarısız olur.

Eşit için başarısız testi gösteren birim test Gezgini

Testleri başarılı yap

Peter kodu düzeltir:

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

Şimdi test geçirilir:

Eşit için geçilen testi gösteren birim test Gezgini

Kod incelemesi isteme

Peter, hatanın düzeltmesine karşı karşılandı, ancak işini henüz iade etmiyor. Ekibi, genel kod kalitesini artırmak ve daha fazla hata oluşturma riskini azaltmak için kod İncelemeleri kullanır. bu nedenle Peter, arkadaşlarınızla Julia ve adam 'dan bir kod incelemesi istemek için Takım Gezgini kullanır.

Kod incelemesi istemek için

Çalışma sayfası-Istek gözden geçirme bağlantısı. Yeni kod Incelemesi sayfası-gözden geçiren listesinin adını girin, bir açıklama (isteğe bağlı) metin kutusu, Istek Gönder düğmesini girin.

  1. Takım Gezgini, çalışmam sayfasında, Gözden geçirme iste' yi seçin.

    Yeni kod incelemesi sayfası görüntülenir.

  2. Gözden geçiren Bir veya daha fazla gözden geçiren belirtin.

  3. Kod incelemesi İncelemenin adını belirtin.

  4. Alan yolu Alan yolunu belirtin.

  5. Açıklama Gözden geçirenlere bir açıklama belirtin.

  6. Isteği gönder' i seçin.

Gözden geçirenler isteği e-posta ile bilgilendirilir.

Ayrıca, askıya alınmış iş, raf kümesi veya değişiklik kümesi için kod incelemesi de isteyebilirsiniz. Değişiklik kümelerinin bir listesini görmek için Kaynak Denetim Gezgini açın ve geçmiş düğmesini seçin.

Kod incelemesini kabul etme veya reddetme

Julia, kod incelemesi isteğini alır ve kabul eder. Kodu inceler, dosya ve kod bloğu düzeylerinde bazı açıklamalar yazar ve ardından kod incelemesini kemal 'e geri gönderir. Adam, kodu gözden geçirmek için çok meşgul ve reddederse.

Açıklamalarında, Julia testin yanlış olduğunu gösterir. İzin verilen hata, giriş değerlerinin sabit bir sayı değil, belirtilen bir kesri olmalıdır. Bu nedenle, test hatayı değeri ile çarpmalıdır.

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

İpucu

Ekip üyelerinin, tartışmalar için testleri bir odak olarak kullandığına dikkat edin. Sınamalar doğru ve yeterli ise, kod de olur. Kodun aksine, her bir test ayrı bir durumu temsil eder. Bu nedenle, testlerin, koddan daha kolay tartışılması genellikle daha kolaydır.

  1. Takım Gezgini, çalışmam sayfasında, My Code İncelemeleri istekleri bölümüne gidin ve isteği açın.

  2. Kod incelemesi sayfasında şunları yapabilirsiniz:

    • Gözden geçirmeyi gerçekleştirip gerçekleştirmeyeceğinizi bildirmek için kabul et veya Reddet ' i seçin.

    • Kod gözden geçirme isteğine başka gözden geçirenler eklemek için Gözden geçiren ekle ' yi seçin.

    • Bu iş öğesi için güncelleştirilmiş her bir dosyanın değişikliklerini görüntüleyin.

    • Yazar ve diğer gözden geçirenler ile değişiklikleri tartışmak için açıklamalar ' ı genişletin.

      • Genel Açıklama Ekle ' yi seçin

        -veya-

        Bir kod bloğu seçin ve sonra kısayol menüsünden Açıklama Ekle ' yi seçin.

      • Katkılarınızı yazar ve diğer gözden geçirenler için görünür hale getirmek üzere Yorum Gönder ' i seçin.
    • Kodun daha fazla iş gerekip gerekmediğini belirten, incelemenizi tamamlamaya yönelik Gönder ve son ' u seçin.

Kod incelemeye yanıt verme

Peter, Julia 'dan kod incelemesini alır ve yanıtlar.

Kod incelemeye yanıt vermek için

Kod gözden geçirenler ve yazar, yorumları benzer şekilde değiş tokuş edebilir. İnceleme, yazar tarafından kapandığında sona erer. Tartışmanın her katkısıyla, diğer katılımcılara e-posta ile bildirim gönderilir.

Çalışma sayfam-kod inceleme öğesi. Kod Incelemesi sayfası-genel açıklama, dosya yorumu, gözden geçirme kapatma bağlantısı.

  1. Takım Gezgini, çalışmam sayfasında, kod İncelemeleri isteği bölümüne gidin ve isteğe çift tıklayın.

    Ayrıca, isteğin kısayol menüsünü açıp ' ı seçebilirsiniz.

  2. Açıklamaları okuyun ve gerektiğinde bunları yanıtlayın. Bir yorumu yanıtlamak için Yanıtla' yı seçin, görüntülenen kutuya açıklamanızı girin ve Tamam' ı seçin. Açıklamalarınızı göndermek için Yorum Gönder' i seçin.

  3. Bir dosyayı görüntülemek ve açıklama içeren kod bloklarını görmek ya da bir dosyayı düzenlemek için, açıklamalar bölümüne gidin. Dosyalar alt bölümünde, dosyanın kısayol menüsünü açın ve Compare (salt okunurdur) ya da dosyayı Düzenleseçeneğini belirleyin.

  4. Siz ve diğer gözden geçirenler birbirlerine yönelik açıklamalara yanıt vermeyi tamamladığınızda ve gözden geçirmeyi kapatmaya hazırsanız, gözden geçirmeyi kapat' a tıklayın ve aşağıdakilerden birini seçin:

    • İncelemesinin bittiğini göstermek için tamamlanmıştır .

    • -veya-

    • Gözden geçirmeyi iptal ettiğiniz olduğunu göstermek için iptal edin.

Testi ve kodu düzeltir

Julia 'nın yorumlarını okumaktan, Peter kendi birim testini önerdikçe düzeltir. Test şimdi başarısız olur. Bu, kodun henüz doğru değil olduğunu gösterir.

Peter kodu düzeltir:

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

Test bir kez daha geçer:

Eşit için geçilen testi gösteren birim test Gezgini

İpucu

Bir hatayı onarmak için, kod geliştirmeyle aynı yöntemi izleyin. Başarısız olan bir test yazın ve ardından test geçişini yapın. Kodu ve testleri yalnızca testler başarılı olduğunda iade edin.

Peter artık hatanın keşfedildiği test çalışmasına dikkat eder. Hatayı yeniden oluşturma adımları, test çalışması iş öğesinde açıkça açıklanmaktadır. Adımları izler ve faturaların doğru şekilde listelendiğini bulur.

Çözümü iade et

Peter, sabit kod ve birim testlerinde denetim gerçekleştirir. Hatanın durumu otomatik olarak çözüldüolarak ayarlanır ve atanan değeri otomatik olarak hatayı bulan test takımının üyesine yeniden atanır. Bu takım üyesi, hatanın düzeltildiğini doğrular ve iş öğesini kapatır.

Bu hatayı denetlemek için

Bir hatayı onarmak için bir güncelleştirmeyi iade etme

  1. Takım Gezgini, çalışmam sayfasında iade et' i seçin.

  2. Aşağıdakileri sağlamak için bekleyen değişiklikler sayfasının içeriğini gözden geçirin:

    • Tüm ilgili değişiklikler, dahil edilen değişikliklere göre listelenmiştir

    • Tüm ilgili iş öğeleri Ilgili çalışma öğelerindelistelenmiştir.

  3. Takımınızın, değiştirilen dosya ve klasörlerin sürüm denetim geçmişine baktıkları zaman bu değişikliklerin amacını anlamasına yardımcı olmak için bir Açıklama belirtin.

  4. Iade et 'i seçin.

Bir görevde çalışmayı sürdürür

Peter, görevi üzerinde çalışmaya devam eder. Tüm kod değişiklikleri çalışma alanına geri yüklendiğinden ve açık pencereler, kesme noktaları ve izleme penceresi değişkenleri gibi önemli bir durum ile birlikte çalışmaya hızla başlayabiliyor.

Bir görevde çalışmayı sürdürmesini sağlamak için

Bir görevi sürdürme ve tamamlama

  • Takım Gezgini, çalışmam sayfasında, askıya alınmış rafa kaldırılmış iş listesini bulun. Öğe için kısayol menüsünü açın. İki seçeneğiniz vardır:

    • Askıya alınmış çalışmayı sürdürmek ve çalışma alanınızdaki tüm bekleyen değişiklikleri otomatik olarak askıya almak istiyorsanız, yeniden et' i seçin.

    • Askıya alınmış çalışmayı çalışma alanınızda zaten bekleyen değişikliklerle birleştirmek istiyorsanız, devam eden Ile Birleştir' i seçin.

Çalışmanızı sürdürdüğünüzde

Çalışma öğesini askıya alarak etkilenen bölmeler. çalışmanızı sürdürdüğünüzde Visual Studio geri yükler:

  • Açık çözümünüz

  • Kodunuz değişiyor

  • Açık pencerelerin durumu ve konumu

  • Kesme noktaları

  • izleme penceresi değişkenleri ve ifadeleri

  • Yer işaretleri