Suspender o trabalho, corrigir um Bug e conduza uma revisão de código

Uma maneira eficiente de alterar seu contexto de trabalho de um thread de trabalho para outro está disponível no Visual Studio Premium e no Visual Studio Ultimate com o Team Foundation Server. Além disso, os membros da equipe podem facilmente trocar mensagens sobre alterações propostas no código. Este tópico ilustra esses recursos, continuando um tutorial que segue os membros de uma equipe agile fictícia por um dia.

Peter estava ocupado escrevendo qualquer código para preencher uma tarefa de item de lista de pendências. No entanto, seus colegas encontraram um bug bloqueando-os e ele deseja consertá-lo imediatamente. Ele suspende o trabalho que está fazendo e corrige o bug. Ele pede a Julia que examine a correção e, depois da revisão, verifica a correção e retoma o trabalho em sua tarefa original.

Dica

Os recursos Meu Trabalho e Análise do Código que Peter usa estão disponíveis somente no Visual Studio Premium e no Visual Studio Ultimate.

Neste tópico

  • Suspender o trabalho atual e começar a trabalhar em um bug

  • Investigar o bug

  • Solicitar uma análise do código

  • Aceitar e executar (ou recusar) uma análise do código

  • Recebe e responda a uma análise do código

  • Corrigir o teste e o código

  • Verifique a correção

  • Retomar o trabalho em uma tarefa

Suspenda o trabalho atual

Conforme o Peter trabalha em um item de retorno, Julia discute um bug que a está bloqueando. Está em uma área com que Peter está familiarizado, então ele cria uma tarefa para corrigir o bug e a atribui a ele mesmo. Ele decide começar a trabalhar na correção imediatamente.

Antes de começar a trabalhar no novo bug, Peter deseja certificar-se de que o trabalho atual é permitido em um local seguro no servidor da equipe. Na página Meu Trabalho, Peter escolhe Suspender para salvar (em Team Foundation Server):

  • Todo o trabalho feito, incluindo alterações no código, em testes e outros arquivos.

  • Abra soluções, janelas, pontos de interrupção, variáveis da janela de observação, e outros bit de estado do Visual Studio.

Agora que seu espaço de trabalho está limpo, Peter arrasta a nova tarefa de Itens de Trabalho Disponíveis para Trabalho em Andamento. Ele está pronto para pesquisar e escrever a correção.

Dica

O contexto de funcionamento é associado aos itens de trabalho que são mostrados como Em andamento na página Meu Trabalho.Ao usar Suspender e Retomar, você pode alternar rapidamente entre diferentes tarefas.Suas soluções e arquivos abertos, alterações de código, e layout do Visual Studio são trocados todos juntos.

Para suspender o trabalho atual e iniciar o trabalho em uma tarefa diferente

Suspender um trabalho

  1. Conectar: Se você ainda não estiver conectado ao projeto de equipe no qual deseja trabalhar, conecte-se ao projeto da equipe:

    1. No Team Explorer, escolha Ícone da home page Página Inicial e Ícone Meu trabalho Meu Trabalho.
  2. Suspender sua tarefa atual:

    1. Na seção Trabalho em Andamento, escolha Suspender.

    2. Na caixa que aparecer, especifique o nome que você deseja fornecer a esse conjunto de trabalhos suspensos e então escolha o botão Suspender. O nome padrão é o item de trabalho atualmente em andamento.

  3. Trabalho de Início em uma nova tarefa, bugs, ou outro item de trabalho:

    1. Antes de selecionar um item de trabalho, você pode desejar:

      • Crie uma nova tarefa ou outro item de trabalho escolhendo Novo em Itens de Trabalho Disponíveis; ou

      • Selecione uma consulta diferente em Itens de Trabalho Disponíveis.

    2. Arraste um item de trabalho de Itens de Trabalho Disponíveis para Trabalho em Andamento.

      Como alternativa, você pode alternar para um item de trabalho que você suspendeu anteriormente, arrastando-o do Trabalho Suspenso.

Dica

Os itens de trabalho atualmente em andamento são vinculados para suas alterações de código e estado atual do Visual Studio.Para permitir que o Visual Studio ajude você a organizar seu trabalho, certifique-se de que os itens apropriados estejam no estado "em andamento" quando você alternar de uma tarefa para outra.

Investigar o bug

Peter abre e lê o item de trabalho com bug. De acordo com a descrição que foi identificada por um membro da equipe de teste, uma fatura paga é, às vezes, sinalizada incorretamente como por pagar. Há um instantâneo de ambiente de laboratório anexado ao item de trabalho de bug. Peter pode abrir as máquinas virtuais em que o teste foi executado, consultar a fatura incorreta e retroceder através do registro de IntelliTrace. Ele rastreia a falha para o seguinte método:

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

No registro do IntelliTrace, Peter vê que às vezes o método retorna false porque os parâmetros diferem por uma quantidade extremamente pequena. Peter sabe que o arredondamento de erros desse tipo são inevitáveis em aritmética de ponto flutuante, e que é prática incorreta testar números de ponto flutuante para obter igualdade.

Aumente os testes para mostrar o erro

Quando um bug é encontrado, ele mostra houve um intervalo nos testes de unidade, ou que o teste não correspondeu às necessidades reais dos usuário. Portanto, antes de corrigir o bug, Peter adiciona um teste que demonstra a presença deste erro.

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

Ele executa o teste, que falha conforme esperado.

O Gerenciador de testes de unidade mostrando com falha testar a igualdade

Fazer os testes passarem

Peter corrige o código:

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

O método de teste agora passa:

O Gerenciador de testes de unidade mostrando passado testar igualdade

Solicitar uma análise do código

Peter ficou satisfeito com a correção do bug, mas não fez check-in de seu trabalho ainda. A equipe dele usa análises de código para aumentar a qualidade geral do código e reduzir o risco de criar mais bugs. Portanto, Peter usa o Team Explorer para solicitar uma análise de código de seus colegas de equipe Julia e Adam.

Para solicitar uma análise do código

My Work page - Request Review link. New Code Review page - Enter the name of a reviewer dropdown, Enter a description (optional) textbox, Submit Request button.

  1. No Team Explorer, na página Meu Trabalho, escolha Solicitar Revisão.

    A página Nova Revisão do Código é exibida.

  2. Revisor Especifique um ou mais revisores.

  3. Análise do Código Especifique o nome da revisão.

  4. Caminho de área Especifique o caminho de área.

  5. Comentário Especifica um comentário a seus revisores.

  6. Escolha Enviar Solicitação.

Os revisores serão notificados da solicitação por email.

Você também pode solicitar uma análise do código do trabalho suspenso, de um check-in particular ou de um conjunto de alterações. Para ver uma lista de conjuntos de alterações, abra o Gerenciador do Controle do Código-Fonte e clique no botão Histórico.

Aceitar ou executar uma análise do código

Júlia recebe a solicitação de análise do código e a aceita. Ela revisa o código, escreve alguns comentários em níveis de arquivo e do bloco de código e, depois envia a análise do código de volta a Peter. Adam é muito ocupado para conseguir examinar o código e recusa.

Nos comentários, Júlia indica que o teste está incorreto. O erro permitido deve ser uma fração especificada dos valores de entrada, não uma quantidade constante. Assim, o teste deve multiplicar o erro pelo valor.

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

Dica

Observe que os membros da equipe usam os testes como um foco para discussão.Se os testes estiverem corretos e forem suficientes, o código também será.Diferentemente do código, cada teste representa um caso separado.Por esse motivo, os testes são geralmente mais fáceis de discutir do que o código.

Para executar uma análise do código

My Work page - code review item. Code Review page - Decline link, Comment, Decline button.Diff window. Code Review page - Accept link, Overall comment, code block comment

  1. No Team Explorer, na página Meu Trabalho, vá para a seção Minhas Revisões de Código e Solicitações e abra a solicitação.

  2. Na página de Análise do Código, você pode:

    • Escolha Aceitar ou Recusar para notificar o autor se você executará ou não a revisão.

    • Escolha Adicionar Revisor para adicionar outros revisores à solicitação de análise do código.

    • Exibir as alterações para cada arquivo que foi atualizado para este item de trabalho.

    • Expanda Comentários para discutir as alterações com o autor e outros revisores.

      • Escolha Adicionar comentários gerais

        -ou-

        Selecione um bloco de código e depois escolha Adicionar Comentário no menu de atalho.

      • Escolha Enviar Comentários para tornar suas contribuições visíveis para o autor e outros revisores.
    • Escolha Enviar e Concluir para concluir a revisão, indicando se o código precisa de mais trabalho.

Responder a uma análise do código

Peter receber e responde a análise do código de Julia.

Para responder a uma análise do código

Os revisores e o autor do código podem trocar comentários com a frequência que desejarem. A revisão será encerrada quanto o autor fechá-la. Com cada contribuição para a discussão, os outros participantes serão notificados por email.

My Work page - code review item. Code Review page - Overall comment, file comment, Close Review link.

  1. No Team Explorer, na página Meu Trabalho, vá para a seção Revisões de Código e Solicitações e clique duas vezes na solicitação.

    Você também pode abrir o menu de atalho da solicitação e escolher Abrir.

  2. Leia os comentários e responda-os, conforme necessário. Para responder a um comentário, selecione Responder, digite seu comentário na caixa que aparece e, em seguida, clique em OK. Para enviar seus comentários, selecione Enviar Comentários.

  3. Para exibir um arquivo e ver os blocos de código que têm comentários, ou editar um arquivo, vá até seção Comentários. Na seção de Arquivos, abra o menu de atalho para o arquivo e escolha Comparar (Somente Leitura) ou Editar arquivo.

  4. Quando você e outros revisores terminarem de responder aos comentários uns dos outros, você estará pronto para fechar a revisão, clique em Feche a Revisão e, em seguida, selecione:

    • Concluído para indicar que a revisão está concluída.

    • —ou—

    • Abandonar para indicar que você está cancelando a revisão.

Corrigir o teste e o código

Depois de ler os comentários de Julia, Peter corrige o teste de unidade conforme ela sugere. Agora o teste falhará. Isso mostra o código que ainda não está correto.

Peter corrige o código:

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

O teste passa mais uma vez:

O Gerenciador de testes de unidade mostrando passado testar igualdade

Dica

Para corrigir um bug, siga a mesma prática do desenvolvimento de código.Escrever um teste que falha e faça o teste passar.Fazer check-in no código e nos testes somente quando os testes passarem.

Peter agora volta sua atenção para o caso de teste no qual o bug foi descoberto. As etapas para reproduzir o bug são descritas claramente no item de trabalho da situação de teste. Ele segue as etapas e descobre que as faturas estão listadas corretamente.

Verifique a correção

Peter verifica no código fixo e nos testes de unidade. O estado de bug é definido automaticamente para Resolvido, e o valor de Atribuído a é reatribuído automaticamente ao membro da equipe de teste que descobriu o bug. Esse membro da equipe verificará se o bug foi corrigido e fechará o item de trabalho.

Para verificar a correção

Fazer check-in de uma atualização para corrigir um bug

  1. No Team Explorer, na página Meu Trabalho, escolha Fazer Check-in.

  2. Analise o conteúdo da página Alterações Pendentes para verificar se:

    • Todas as alterações relevantes são listadas em Alterações Incluídas

    • Todos os itens de trabalho relevantes são listados em Itens de Trabalho Relacionados.

  3. Especifique um Comentário para ajudar sua equipe a entender a finalidade dessas alterações quando verificarem o histórico do controle de versão dos arquivos e pastas alterados.

  4. Escolha Fazer Check-in.

Retomar o trabalho em uma tarefa

Peter retoma o trabalho de sua tarefa. Ele pode voltar ao trabalho rapidamente porque todas as alterações de código são restauradas para seu espaço de trabalho junto com bits importantes do estado, como janelas abertas, pontos de interrupção e variáveis da janela de observação.

Para retomar o trabalho em uma tarefa

Reiniciando e concluir uma tarefa

  • No Team Explorer, na página Meu Trabalho, localize a lista Trabalho Suspenso e com Check-in Privado. Abra o menu de atalho do item. Você tem duas opções:

    • Se você deseja retomar o trabalho suspenso e suspender automaticamente qualquer alteração pendente em seu espaço de trabalho, escolha Retomar.

    • Se você deseja mesclar o trabalho suspenso com alterações pendentes que já estejam em seu espaço de trabalho, escolha Mesclar com Em Andamento.

Ao retomar seu trabalho

Painéis afetados por suspender um item de trabalho.

Ao retomar o seu trabalho, o Visual Studio restaura:

  • Sua solução aberta

  • Suas alterações de código

  • O estado e a posição das janelas abertas

  • Pontos de interrupção

  • Observar as variáveis e expressões da janela

  • Indicadores

Verificar que o bug se foi

Se o bug foi encontrando pela equipe de teste, eles conectarão alguns casos de tese ao bug, com que irão reexecutar. Saiba mais.