Giornata di uno sviluppatore ALM: sospendere il lavoro, risolvere un bug e condurre una revisione del codice

Un metodo efficace con un clic per passare contesto di lavoro da un thread di lavoro ad un altra, è disponibile in Visual Studio Premium e in Visual Studio Ultimate con Team Foundation Server.Inoltre, i membri del team possono facilmente scambiarsi messaggi sulle modifiche proposte al codice.In questo argomento vengono illustrate queste funzionalità, continuando il tutorial che segue i membri di un team agile e fittizio per un giorno.

Peter è stato impegnato a scrivere il codice per eseguire un'attività di backlog. Tuttavia, i suoi colleghi hanno trovato un'errore che lo sta bloccando e vogliono correggerlo immediatamente.Egli sospende il lavoro che sta facendo e corregge l'errore.Chiede a Julia di verificare la correzione e dopo la revisione, controlla la correzione e riprende a lavorare sull'attività originale.

[!NOTA]

Le mie funzionalità di lavoro e revisione del codice che Peter utilizza sono disponibili solo in Visual Studio Premium e in Visual Studio Ultimate.

In questo argomento

  • Sospendere l'attività corrente e iniziare lavoro a un errore

  • Provare a utilizzare l'errore

  • Richiesta di una revisione del codice .

  • Accettare ed eseguire (o rifiutare) una revisione del codice

  • Ricevere e rispondere ad una revisione del codice

  • Correggere il test e il codice

  • Controllare la correzione

  • Riprendere il lavoro nell'esecuzione di un'attività

Sospendere l'attività corrente

Come Peter lavora sugli elementi di backlog, Julia viene a discutere di un errore che la sta bloccando.È in un'area familiare a Peter, cosi che si crea un'attività per correggere l'errore e se l'assegna a se stesso.Decide di avviare il lavoro sulla correzione dell'errore immediatamente.

Prima d'iniziare a lavorare sul nuovo errore, Peter desidera assicurarsi che l'attività corrente sia accantonata in una posizione sicura sul server del team.Nella pagina Lavoro, Peter sceglie Sospendi per salvare (in Team Foundation Server):

  • Tutto il lavoro che ha eseguito, incluse le modifiche al codice, i test e altri file.

  • Soluzioni aperte, finestre, punti di interruzione, finestra di controllo sulle variabili e altri bit di stato di Visual Studio.

Ora che la sua area di lavoro è pulita, Peter trascina la nuova attività da Elementi di lavoro disponibili a Lavoro in corso.È pronto a ricercare e scrivere la correzione.

[!NOTA]

Il contesto di lavoro è collegato agli elementi di lavoro, che illustrano lo stato di avanzamento nella pagina del lavoro personale.Utilizzando Sospendi e Riprendi, è possibile passare rapidamente tra le diverse attività.Aprendo soluzioni e file, le modifiche al codice e il layout di Visual Studio sono tutti attivati insieme.

Hh474795.collapse_all(it-it,VS.110).gifPer sospendere l'attività in corso e avviare un lavoro in una attività differente

Sospensione di lavoro

  1. Connetti: Se non si è già connessi al progetto del team al quale si vuole lavorare, allora Connettere al progetto del team:

    1. In Team Explorer, scegliere Icona HomeHome, quindi scegliere Icona LavoroLavoro.
  2. Sospendi l'attività corrente:

    1. Nella sezione Lavoro in corso, scegliere Sospendi.

    2. Nella casella visualizzata, specificare il nome che si desidera assegnare al lavoro sospeso e quindi scegliere il bottone Sospendi.Il nome predefinito è quello dell'attuale elemento di lavoro in corso.

  3. Avvia lavoro in in una nuova attività, errore, o un altro elemento di lavoro:

    1. Prima di selezionare un elemento di lavoro, è necessario:

      • Creare una nuova attività o altri elementi di lavoro scegliendo Nuovo in Elementi di lavoro disponibili; oppure

      • Selezionare una query diversa in Elementi di lavoro disponibili.

    2. Trascinare un elemento di lavoro da Elementi di lavoro disponibili a Lavoro in corso.

      In alternativa, è possibile passare a un elemento di lavoro precedentemente sospeso trascinandolo da Lavoro sospeso.

SuggerimentoSuggerimento

Gli attuali elementi di lavoro in corso sono collegati alle modifiche del proprio codice e allo stato corrente di Visual Studio.Per consentire a Visual Studio di facilitare l'organizzazione di lavoro, verificare che gli elementi appropriati siano nello stato corrente di avanzamento quando si passa da un'attività ad un'altra.

Analisi dell'errore

Peter apre e legge l'errore nell'elemento di lavoro.Secondo la descrizione fatta da un membro di test del team, una fattura pagata è contrassegnata talvolta erroneamente come non pagata.È uno snapshot dell'ambiente lab, connesso all'errore nell'elemento di lavoro.Peter può aprire le macchine virtuali in cui il test è stato eseguito, vedere la fattura errate e tornare indietro nel registro di IntelliTrace.Tiene traccia dell'errore al seguente metodo:

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

Dal registro IntelliTrace, Peter vede che a volte il metodo restituisce false, poiché i parametri differiscono di una quantità estremamente piccola.Peter sa che gli errori di arrotondamento di questo tipo sono inevitabili nell'aritmetica in virgola mobile e che è una prassi sbagliata testare numeri in virgola mobile per verificarne l'uguaglianza.

Hh474795.collapse_all(it-it,VS.110).gifAumentare le prove per visualizzare l'errore

Quando un bug viene trovato, viene illustrato che è presente una lacuna nello unit test, oppure che il test non corrisponde alle necessità effettive degli utenti.Pertanto, prima di corregge un bug, Peter aggiunge un test che illustrerà la presenza di questo errore.

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

Egli esegue il test e non ottiene i risultati previsti.

Esplora unit test con test non superato per uguale

Hh474795.collapse_all(it-it,VS.110).gifScegliere la sessione di test

Peter corregge 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 ora viene eseguito con successo

Esplora unit test con test superato per uguale

Richiesta di una revisione del codice .

Peter è soddisfatto della correzione del bug ottenuta, ma il suo lavoro non è n'ancora archiviato.Il team utilizza le revisioni del codice per aumentare la qualità generale del codice e ridurre il rischio di creazione di altri bug, pertanto Peter utilizza il Team Explorer per richiedere una revisione del codice a i suoi compagni di squadra Julia e Adam.

Hh474795.collapse_all(it-it,VS.110).gifRichiesta di una revisione del codice .

Richiesta di una revisione del codice

  1. In Team Explorer, nella pagina Lavoro, scegliere Richiesta revisione.

    Viene visualizzata la pagina Nuova revisione del codice.

  2. Revisore Specificare uno o più revisori.

  3. Revisione del codice Specificare il nome della revisione.

  4. Percorso area Specificare l'area di percorso.

  5. Commento Consente di specificare un commento per i revisori.

  6. Scegliere Invia richiesta.

I revisori vengono notificati della richiesta tramite posta elettronica.

È inoltre possibile richiedere una revisione del codice di lavoro sospeso, un shelveset, oppure un'insieme di modifiche.

Accettare o rifiutare una revisione di codice

Julia riceve la richiesta di revisione del codice e la accetta.Esamina il codice, produce un commento al file e a livello di codice e rinvia la revisione del codice a Peter.Adam è troppo occupato per esaminare il codice e non accetta la richiesta.

Nei commenti, Julia indica che il test non è corretto.L'errore presente deve essere specificato con una frazione di valori in input, non con una quantità costante.Pertanto il test deve 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
SuggerimentoSuggerimento

Si noti che i membri del team utilizzano il test come un punto di riferimento per instaurare una discussione.Se le prove sono corrette e sufficienti, lo sarà anche il codice.A differenza del codice, ogni test rappresenta un caso separato.Per questo motivo, i test sono spesso più semplici per discutere rispetto al codice.

Hh474795.collapse_all(it-it,VS.110).gifPer eseguire una revisione del codice

Accettazione e risposta a una revisione del codiceEsecuzione di una revisione del codice

  1. In Team Explorer, nella pagina Lavoro, passare alla sezione Revisioni del codice e richieste e aprire la richiesta.

  2. Nella pagina Revisione del codice, è possibile:

    • Scegliere Accetta o Rifiuta per notificare all'autore se si eseguirà la revisione.

    • Scegliere Aggiungi revisore per aggiungere altri revisori alla richiesta della revisione.

    • Visualizzare le modifiche a ogni file che è stato aggiornato per questo elemento di lavoro.

    • Espandere Commenti per discutere le modifiche all'autore e altri revisori.

      • Scegliere Aggiungi commento generale

        In alternativa

        Selezionare un blocco di codice e quindi scegliere Aggiungi commento dal menu di scelta rapida.

      • Scegliere Invia commenti per generare i contributi visibili all'autore e altri revisori.
    • Scegliere Invia e Completa per completare la revisione, indicando se il codice richiede un ulteriore lavoro.

Rispondere ad una revisione del codice

Peter riceve e risponde alla revisione del codice fatta da Julia.

Hh474795.collapse_all(it-it,VS.110).gifPer rispondere a una revisione del codice

I revisori e l'autore del codice possono scambiare spesso i commenti a piacere.La revisione termina quando un autore la chiude.Ogni supporto per la discussione, viene comunicato agli altri partecipanti tramite posta elettronica.

Risposta a una revisione del codice

  1. In Team Explorer, nella pagina Lavoro, passare alla sezione Revisioni e richieste codice e fare doppio clic sulla richiesta.

    È inoltre possibile aprire il menu di scelta rapida per la richiesta e scegliere Apri.

  2. Leggere i commenti e rispondere in caso di necessità.Per rispondere a un commento, scegliere Rispondi, inserire il commento nella casella che appare e quindi scegliere OK.Per inviare i commenti, scegliere Invia commenti.

  3. Per visualizzare un file e visualizzare i blocchi di codice che hanno dei commenti, o modificare un file, andare nella sezione Commenti.Nella sottosezione File, aprire il menu di scelta rapida per il file e scegliere Confronta (Sola lettura) o Modifica file.

  4. Quando tu a altri revisori completate di rispondere a i commenti di ciascuno e si è pronti a chiudere la revisione, fare clic Chiudi revisionequindi scegliere:

    • Operazione completata per indicare che la revisione è stata completata.

    • -oppure-

    • Interrompere per indicare l'annullamento della revisione.

Correggere il test e il codice

Leggendo i commenti di Julia, Peter corregge lo unit test come gli viene suggerito.A questo punto il test ha esito negativo.Ciò indica che il codice non può essere corretto.

Peter corregge 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 passa nuovamente:

Esplora unit test con test superato per uguale

SuggerimentoSuggerimento

Per correggere un bug, seguire la stessa prassi utilizzata nello sviluppo del codice.Scrivere un test che fallisce e quindi far superare il test.Archiviare il codice e i test solamente quando i test vengono superati.

Peter ora rivolge la sua intenzione ai test case in cui è stato rilevato il bug.La procedura per riprodurre il bug è chiaramente descritta nell'elemento di lavoro nel caso di test.Seguire i passaggi, rileva che le fatture sono elencate correttamente.

Controllare la correzione

Peter controlla il codice corretto e gli unit test.Lo stato del bug è automaticamente impostato su Risolto, e il valore Assegnato A viene riassegnato automaticamente al membro del team di test che ha rilevato il bug.Tale membro del team verificherà che il bug sia stato corretto e che l'elemento di lavoro sia chiuso.

Hh474795.collapse_all(it-it,VS.110).gifPer archiviare la soluzione

Archiviazione di un aggiornamento per correggere un bug

  1. In Team Explorer, nella pagina Lavoro, scegliere Archivia.

  2. Esaminare il contenuto della pagine Modifiche in sospeso per verificare che:

    • Tutte le modifiche rilevante siano elencate nelle Modifiche incluse

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

  3. Specificare un Commento per aiutare il team a comprendere lo scopo di queste modifiche quando guardano la cronologia di controllo delle versioni dei file e delle cartelle modificate.

  4. Scegliere Archiviazione gestita.

Riprendere il lavoro nell'esecuzione di un'attività

Peter riprende il lavoro alla sua attività.Può tornare a lavorare rapidamente perché tutte le modifiche al codice sono state ripristinate nella sua area di lavoro insieme a i bit più importanti di stato come le finestre aperte, i punti d'interruzione e la finestra di controllo delle variabile.

Hh474795.collapse_all(it-it,VS.110).gifPer riprendere il lavoro di un'attività

Ripresa e completamento di un'attività

  • In Team Explorer, nella pagina Lavoro, individuare l'elenco Sospesi e sottoposti a shelving.Aprire il menu di scelta rapida per un elemento.Ora abbiamo a disposizione due opzioni.

    • Se si desidera riattivare il lavoro sospeso e automaticamente sospendere qualsiasi modifica dell'area di lavoro, scegliere Riprendi.

    • Se si desidera unire il lavoro sospeso con le modifiche in sospeso già presenti nell'area di lavoro, scegliere Unione con lo stato di avanzamento.

Hh474795.collapse_all(it-it,VS.110).gifQuando si riattiva il lavoro

Riquadri interessati dalla sospensione di un elemento di lavoro.

Quando si riattiva il lavoro, Visual Studio ripristina:

  • La soluzione aperta

  • Le modifiche del codice.

  • Lo stato e la posizione delle finestre aperte

  • Punti di interruzione

  • La finestra di controllo delle variabili e le espressioni

  • Segnalibri