Giorno della vita di uno sviluppatore devops: sospendere il lavoro, correggere un bug e condurre una revisione del codice

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

Visual Studio 2019 | Visual Studio 2022

Le funzionalità di Visual Studio My Work and Code Review supportano il passaggio del contesto da un thread di lavoro a un altro. Inoltre, i membri del team possono facilmente scambiare messaggi sulle modifiche proposte al codice. Questo articolo illustra queste funzionalità, continuando l'esercitazione di Day nella vita di uno sviluppatore devops: Scrivere nuovo codice per una storia utente.

Nota

Le funzionalità di Visual Studio My Work e Code Review sono disponibili con le edizioni seguenti:

  • Visual Studio 2022: Visual Studio Community, Visual Studio Professional e Visual Studio Enterprise
  • Visual Studio 2019: Visual Studio Professional e Visual Studio Enterprise

Questa esercitazione descrive come sospendere il lavoro su un'attività corrente per correggere immediatamente un bug che blocca i colleghi in un altro elemento di lavoro. Dopo aver corretto il bug, è possibile chiedere ai colleghi di esaminare la correzione e, dopo la revisione, controllare la correzione e riprendere il lavoro sull'attività originale.

Sospendere il lavoro corrente

Mentre si sta lavorando a un elemento backlog, è possibile che si verifichi un bug in un altro elemento che blocca i compagni di squadra. Se si ha familiarità con un'area, è possibile creare un'attività per correggere il bug e assegnarla a se stessi per lavorare immediatamente.

Prima di iniziare a lavorare sul nuovo bug, assicurarsi che il lavoro corrente venga messo da parte in un luogo sicuro sul server del team. In Visual Studio Team Explorer, nella pagina Lavoro personale scegliere Sospendi per salvare nel server:

  • Tutto il lavoro svolto, incluse le modifiche apportate al codice, ai test e ad altri file.

  • Aprire soluzioni, finestre, punti di interruzione, variabili della finestra di controllo e altri bit dello stato di Visual Studio.

Ora che l'area di lavoro è pulita, trascinare la nuova attività da Elementi di lavoro disponibili a Lavoro in corso. Sei pronto a cercare e scrivere la correzione.

Nota

Il contesto di lavoro è collegato agli elementi di lavoro visualizzati come In corso nella pagina Lavoro personale . Usando Sospendi e riprendi, è possibile passare rapidamente da un'attività all'altra. Le soluzioni e i file aperti, le modifiche al codice e il layout di Visual Studio vengono tutti uniti.

Per sospendere il lavoro corrente e iniziare a lavorare su un'attività diversa

Cambiare il contesto di lavoro:

  1. Se non si è già connessi al progetto in cui si vuole lavorare, connettersi al progetto.

  2. Nella home page di Team Explorer scegliere Lavoro personale.

  3. Nella sezione Lavoro in corso della pagina Lavoro personale scegliere Sospendi.

  4. Nella casella visualizzata modificare facoltativamente il nome che si desidera assegnare a questo set di lavoro sospeso e quindi selezionare Sospendi. L'elemento viene visualizzato in Lavoro sospeso.

    Screenshot della sospensione di alcune operazioni.

  5. Trascinare un elemento di lavoro da Elementi di lavoro disponibili in Lavoro in corso. In alternativa, è possibile passare a un elemento di lavoro sospeso in precedenza trascinandolo da Lavoro sospeso.

    Se l'elemento di lavoro da assegnare non viene visualizzato in Elementi di lavoro disponibili, è possibile:

    • Creare una nuova attività o un altro elemento di lavoro scegliendo Nuovo.
    • Selezionare una query diversa selezionando Apri query.

Suggerimento

Collegamento Elementi di lavoro in corso alle modifiche al codice corrente e allo stato di Visual Studio. Per consentire a Visual Studio di organizzare il lavoro, assicurarsi che gli elementi appropriati si trovino nello stato Lavoro in corso quando si passa da un'attività a un'altra.

Analizzare il bug

Aprire il nuovo bug e leggere la descrizione. In questo esempio, la descrizione da parte di un membro del team di test indica che una fattura a pagamento viene talvolta contrassegnata erroneamente come non pagata. Uno snapshot dell'ambiente lab è collegato all'elemento di lavoro del bug. Aprire la macchina virtuale (VM) in cui è stato eseguito il test, vedere la fattura non corretta e tornare indietro nel log IntelliTrace. È possibile tracciare l'errore con il metodo seguente:

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

Dal log di IntelliTrace si noterà che a volte il metodo restituisce false perché i parametri differiscono per una quantità estremamente piccola. Si sa che gli errori di arrotondamento di questo tipo sono inevitabili nell'aritmetica a virgola mobile e che è consigliabile testare i numeri a virgola mobile per verificarne l'uguaglianza.

Aumentare i test per visualizzare l'errore

Quando viene rilevato un bug, viene mostrato che si è verificato un gap negli unit test o che il test non corrisponde alle esigenze effettive degli utenti. Pertanto, prima di correggere il bug, aggiungere un test che dimostri la presenza di questo errore:

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

Eseguire il test e non riesce come previsto.

Screenshot di Unit Test Explorer che mostra il test non riuscito per uguale.

Effettuare il superamento dei test

Correggere il codice:

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

Il test viene ora superato:

Screenshot di Esplora unit test che mostra il test superato per uguale.

Richiedere una revisione del codice

Quando si è soddisfatti della correzione per il bug, non archiviare ancora il lavoro. I team usano le revisioni del codice per aumentare la qualità complessiva del codice e ridurre il rischio di creare altri bug. Usare Team Explorer per richiedere revisioni del codice dai compagni di squadra.

Per richiedere una revisione del codice

  1. In Team Explorer, nella pagina Lavoro personale in Lavoro in corso scegliere Richiedi revisione.

    Verrà visualizzata la pagina Nuova revisione codice.

    Screenshot che mostra la pagina Richiesta di revisione codice.

    • Nel campo Immettere il nome di un revisore specificare uno o più revisori e premere INVIO dopo ogni selezione.
    • Nel campo successivo modificare il nome della revisione se si desidera.
    • Nel campo successivo verificare che venga visualizzato il percorso dell'area corretto.
    • Nel campo successivo digitare una descrizione facoltativa.
  2. Scegliere Invia richiesta.

I revisori ricevono una notifica tramite posta elettronica della richiesta.

È anche possibile richiedere una revisione del codice di lavoro sospeso, un set di scaffali o un insieme di modifiche. Per visualizzare un elenco di insiemi di modifiche, aprire Esplora controllo del codice sorgente e scegliere il pulsante Cronologia .

Eseguire una revisione del codice

Un revisore può accettare la richiesta di revisione del codice. Il revisore esamina il codice, scrive alcuni commenti a livello di file e blocchi di codice e quindi invia di nuovo la revisione del codice. Un revisore richiesto che è troppo occupato per esaminare il codice può rifiutare la revisione.

Nei commenti, il revisore indica che il test non è corretto. L'errore consentito deve essere una frazione specificata dei valori di input, non una quantità costante. Il test deve quindi moltiplicare l'errore per il valore .

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

Suggerimento

I membri del team usano i test come obiettivo per la discussione. Se i test sono corretti e sufficienti, anche il codice sarà. A differenza del codice, ogni test rappresenta un caso separato. Per questo motivo, i test sono spesso più facili da discutere rispetto al codice.

Per eseguire una revisione del codice

  1. Nella pagina Lavoro personale in Team Explorer fare clic con il pulsante destro del mouse sulla revisione del codice nella sezione Revisioni codice e scegliere Apri.

    Verrà visualizzata la pagina Revisione codice.

    Screenshot della pagina Revisione codice.

  2. Nella pagina Revisione codice è possibile:

    • Scegliere Aggiungi revisore per aggiungere altri revisori alla richiesta di revisione del codice.

    • Selezionare ogni collegamento al file per visualizzare le modifiche apportate ai file aggiornati per questo elemento di lavoro.

    • Usare Commenti per discutere le modifiche con l'autore e altri revisori.

      Per aggiungere commenti:

      • Scegliere Aggiungi commento complessivo per aggiungere un commento complessivo alla recensione.
      • Quando si visualizza un file, selezionare una riga o un blocco di codice, fare clic con il pulsante destro del mouse e scegliere Aggiungi commento.

      Dopo aver aggiunto ogni commento, selezionare Salva o premere CTRL+INVIO.

  3. Al termine dell'immissione dei commenti, selezionare Invia commenti per rendere visibili i contributi all'autore e ad altri revisori.

Rispondere a una revisione del codice

Si riceve e risponde alla revisione del codice dai revisori. L'utente e i revisori possono scambiare commenti con la stessa frequenza desiderata. La revisione termina al termine della chiusura.

Per rispondere a una revisione del codice

  1. Nella pagina Lavoro personale in Team Explorer passare alla sezione Revisioni codice e fare doppio clic sulla richiesta oppure fare clic con il pulsante destro del mouse sulla richiesta e scegliere Apri.

    Verrà visualizzata la pagina Revisione codice.

    Screenshot della risposta a una revisione del codice.

  2. Nella sezione Commenti leggere i commenti e rispondere a tali commenti in base alle esigenze. Per rispondere a un commento, scegliere Rispondi, immettere il commento nella casella visualizzata e quindi scegliere OK.

  3. Per visualizzare un file e visualizzare i blocchi di codice con commenti o per modificare o commentare un file, passare alla sottosezione File . Fare clic con il pulsante destro del mouse sul file e scegliere:

    • Confronto (sola lettura)
    • Modifica file locale o
    • Aggiungi commento file

    È anche possibile selezionare la casella di controllo accanto a un commento per indicare che il commento è stato risolto.

  4. Per inviare i commenti, scegliere Invia commenti.

  5. Quando l'utente e gli altri revisori terminano a rispondere ai commenti degli altri e si è pronti per chiudere la recensione, selezionare Chiudi revisione e quindi selezionare:

    • Completa per indicare che la revisione è stata completata o
    • Abbandonare per indicare che si sta annullando la revisione.

Correggere il test e il codice

Dopo aver letto i commenti della recensione, è possibile correggere lo unit test come suggerito. Il test ha esito negativo. Ciò mostra che il codice non è ancora corretto.

È possibile correggere il codice:

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

Il test viene superato di nuovo.

Suggerimento

Per correggere un bug, seguire la stessa procedura di sviluppo del codice. Scrivere un test che ha esito negativo e quindi effettuare il superamento del test. Archiviare il codice e i test solo quando i test superano.

Ora si rivolge l'attenzione al test case in cui è stato individuato il bug. I passaggi per riprodurre il bug sono chiaramente descritti nell'elemento di lavoro del test case. Seguire i passaggi e individuare che le fatture sono elencate correttamente.

Archiviare la correzione

È possibile archiviare il codice fisso e gli unit test. Lo stato del bug viene impostato automaticamente su Risolto e il valore Assegnato a viene automaticamente riassegnato al membro del team di test che ha individuato il bug. Il membro del team verificherà che il bug sia stato corretto e chiuda l'elemento di lavoro.

Per archiviare la correzione

  1. In Team Explorer, nella pagina Lavoro personale scegliere Archivia per aprire la pagina Modifiche in sospeso.

    Screenshot dell'archiviazione di un aggiornamento per correggere un bug.

  2. Nella pagina Modifiche in sospeso verificare che:

    • Tutte le modifiche rilevanti sono elencate in Modifiche incluse

    • Tutti gli elementi di lavoro pertinenti sono elencati in Elementi di lavoro correlati.

  3. Immettere un commento per aiutare il team a comprendere lo scopo di queste modifiche quando esaminano la cronologia del controllo della versione dei file e delle cartelle modificati.

  4. Selezionare Archivia.

Riprendere il lavoro in un'attività

Riprendere il lavoro sull'attività originale. È possibile tornare al lavoro rapidamente perché tutte le modifiche al codice vengono ripristinate nell'area di lavoro insieme a bit importanti di stato, ad esempio finestre aperte, punti di interruzione e variabili della finestra di controllo.

Per riprendere il lavoro in un'attività

  • In Team Explorer, nella pagina Lavoro personale selezionare l'elemento di lavoro originale in Lavoro sospeso e selezionare Riprendi.

    Screenshot della ripresa di un'attività.

    In alternativa, se si vuole unire il lavoro sospeso con le modifiche in sospeso nell'area di lavoro, scegliere Unisci con in corso.

Quando si riprende il lavoro, Visual Studio ripristina:

  • Soluzione aperta
  • Modifiche al codice
  • Stato e posizione delle finestre aperte
  • Punti di interruzione
  • Espressioni ed variabili della finestra di controllo
  • Segnalibri