Dia na vida de um desenvolvedor devops: suspender o trabalho, corrigir um bug e realizar uma revisão de código

Azure DevOps Services | Azure DevOps Server 2020 | Azure DevOps Server 2019 | TFS 2018

Visual Studio 2022 | Visual Studio | 2019 Visual Studio 2017 | Visual Studio 2015 | Visual Studio 2013

Uma maneira poderosa de alternar seu contexto de trabalho de um thread de trabalho para outro está disponível em Visual Studio Premium e Visual Studio Ultimate com 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.

{1>Peter estava ocupado escrevendo qualquer código para atender a uma tarefa de item da lista de pendências.<1} No entanto, seus colegas encontraram um bug que os está bloqueando, e ele quer corrigi-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.

Observação

Os recursos my work and code review que Peter usa estão disponíveis apenas em Visual Studio Premium e Visual Studio Ultimate.

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 quer ter certeza de que seu trabalho atual está reservado em um lugar seguro no servidor da equipe. Na página Meu Trabalho, Pedro 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 workspace está limpo, Peter arrasta a nova tarefa de Itens de Trabalho Disponíveis para o Trabalho em Andamento. Ele está pronto para pesquisar e escrever a correção.

Observação

O contexto de funcionamento é associado aos itens de trabalho que são mostrados como Em andamento na página Meu Trabalho. Usando 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

Suspending some work

  1. Conexão: se você ainda não estiver conectado ao projeto no qual deseja trabalhar, conecte-se ao projeto:

    1. No Team Explorer, escolha Home iconPágina Inicial e escolha My Work iconMeu Trabalho.
  2. Suspender sua tarefa atual:

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

    2. Na caixa exibida, especifique o nome que você deseja dar a esse conjunto de trabalho suspenso e escolha o botão Suspender . O nome padrão é o item de trabalho atualmente em andamento.

  3. Inicie o trabalho em uma nova tarefa, bug ou outro item de trabalho:

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

      • Criar 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 dos itens de trabalho disponíveis para o trabalho em andamento.

      Como alternativa, você pode alternar para um item de trabalho que você suspendeu anteriormente arrastando-o em 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 do 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 que havia uma lacuna nos testes de unidade ou que o teste não correspondia às necessidades reais dos usuários. 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.

Unit Test Explorer showing failed test for equal

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:

Unit Test Explorer showing passed test for equal

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. Sua equipe usa revisões de código para aumentar a qualidade geral do código e reduzir o risco de criar mais bugs, então Peter usa o Team Explorer para solicitar uma revisão de código de seus companheiros 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 Revisão de Solicitação.

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

  2. Reviewer Especifique um ou mais revisores.

  3. Code Review Especifique o nome da revisão.

  4. Area path Especifique o caminho da área.

  5. Comment Especifique um comentário para 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 de Controle do Código-Fonte e escolha o 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.

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

  2. Na página Revisão de Código , você pode:

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

    • Escolha Adicionar Revisor para adicionar outros revisores à solicitação de revisão de 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.

      • Escolher Adicionar Comentário Geral

        - ou -

        Selecione um bloco de código e, em seguida, 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 sua 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 Solicitação de Revisões & de Código e clique duas vezes na solicitação.

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

  2. Leia os comentários e responda-os, conforme necessário. Para responder a um comentário, escolha Responder, insira seu comentário na caixa exibida e escolha OK. Para enviar seus comentários, escolha Enviar Comentários.

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

  4. Quando você e os outros revisores terminarem de responder aos comentários um do outro e estiverem prontos para fechar a revisão, clique em Fechar Revisão e escolha:

    • Concluir para indicar que a revisão foi concluída.

    • - ou -

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

Corrigir o teste e o código

Tendo lido os comentários de Julia, Peter conserta seu teste de unidade como 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:

Unit Test Explorer showing passed test for equal

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 do bug é definido automaticamente como Resolvido e o valor 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

Checking in an update to fix a bug

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

  2. Examine 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 estão listados em Itens de Trabalho Relacionados.

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

  4. Escolha 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 workspace 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

Resuming and completing a task

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

    • Se você quiser retomar o trabalho suspenso e suspender automaticamente as alterações pendentes no workspace, escolha Retomar.

    • Se você quiser mesclar o trabalho suspenso com alterações pendentes já em seu workspace, escolha Mesclar com Em Andamento.

Ao retomar seu trabalho

Panes affected by suspending a work item.Quando você retoma seu trabalho, 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