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

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

Visual Studio 2019 | Visual Studio 2022

Os recursos do Visual Studio Meu Trabalho e Revisão de Código dão suporte à alternância de contexto de um thread de trabalho para outro. Além disso, os membros da equipe podem facilmente trocar mensagens sobre alterações propostas no código. Este artigo ilustra esses recursos, continuando o tutorial do Dia na vida de um desenvolvedor de devops: Escrever um novo código para uma história de usuário.

Observação

Os recursos do Visual Studio Meu Trabalho e Revisão de Código estão disponíveis nas seguintes edições:

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

Este tutorial descreve como você pode suspender o trabalho em uma tarefa atual para corrigir imediatamente um bug que está bloqueando colegas de equipe em outro item de trabalho. Depois de corrigir o bug, você pode pedir aos colegas que revisem a correção e, depois que a revisão for aprovada, fazer check-in na correção e retomar o trabalho na tarefa original.

Suspenda o trabalho atual

Enquanto estiver trabalhando em um item de lista de pendências, você pode descobrir sobre um bug em outro item que está bloqueando colegas de equipe. Se for uma área com a qual você está familiarizado, você pode criar uma tarefa para corrigir o bug e atribuí-la a si mesmo para trabalhar imediatamente.

Antes de começar a trabalhar no novo bug, você deseja certificar-se de que o trabalho atual é permitido em um local seguro no servidor da equipe. No Team Explorer do Visual Studio, na página Meu Trabalho, escolha Suspender para salvar no servidor:

  • 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, arraste a nova tarefa de Itens de Trabalho Disponíveis para Trabalho em Andamento. Você está pronto para pesquisar e escrever a correção.

Observação

O contexto de trabalho é vinculado 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

Alterne seu contexto de trabalho:

  1. Se você ainda não estiver conectado ao projeto que deseja trabalhar, conecte ao projeto.

  2. Na Página Inicial do Team Explorer, escolha Meu Trabalho.

  3. Na página Meu Trabalho, na seção Trabalho em andamento, escolha Suspender.

  4. Na caixa que aparecer, especifique o nome que você deseja fornecer a esse conjunto de trabalhos suspensos e então selecione Suspender. O item aparece em Trabalho Suspenso.

    Captura de tela da suspensão de algum trabalho.

  5. Arraste um item de trabalho de Itens de Trabalho Disponíveis para Trabalho em Andamento. Ou, você pode alternar para um item de trabalho que você suspendeu anteriormente, arrastando-o do Trabalho Suspenso.

    Se o item de trabalho que você deseja atribuir a si mesmo não aparecer em Itens de Trabalho Disponíveis, você poderá:

    • Criar uma nova tarefa ou outro item de trabalho escolhendo Novo.
    • Selecionar uma consulta diferente selecionando Abrir Consulta.

Dica

Os itens de Trabalho em andamento são vinculados para suas alterações de código e estado atuais 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 Trabalho em andamento quando você alternar de uma tarefa para outra.

Investigar o bug

Abra o novo bug e leia a descrição. Neste exemplo, a descrição por um membro da equipe de teste indica que uma fatura paga é, às vezes, sinalizada incorretamente como não paga. Um ambiente de laboratório instantâneo é anexado ao item de trabalho de bug. Você pode abrir as máquinas virtuais (VM) em que o teste foi executado, consultar a fatura incorreta e retroceder através do registro de IntelliTrace. Você pode rastrear 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, você vê que às vezes o método retorna falso porque os parâmetros diferem por uma quantidade extremamente pequena. Você sabe que o arredondamento de erros desse tipo é inevitável 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 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, adicione um teste que demonstra a presença deste erro:

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

Execute o teste, que falha conforme esperado.

Captura de tela do Gerenciador de Testes de Unidade mostrando o teste reprovado para igual.

Fazer os testes passarem

Corrigir 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:

Captura de tela do Gerenciador de Testes de Unidade mostrando o teste aprovado para igual.

Solicitar uma análise do código

Quando estiver satisfeito com a correção do bug, não faça o check-in seu trabalho ainda. As equipes usam revisões de código para aumentar a qualidade geral do código e reduzir o risco de criar mais bugs. Use o Team Explorer para solicitar revisões de código de colegas de equipe.

Para solicitar uma análise do código

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

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

    Captura de tela que mostra a página Solicitar Revisão de Código.

    • No campo Inserir o nome de um revisor, especifique um ou mais revisores e pressione Enter após cada seleção.
    • No próximo campo, altere o nome da revisão, se desejar.
    • No próximo campo, verifique se o caminho de área correto é exibido.
    • No próximo campo, digite uma descrição opcional.
  2. Escolha Enviar Solicitação.

Os revisores serão notificados da solicitação por e-mail.

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 Source Control Explorer e clique no botão Histórico.

Faça uma revisão de código

Um revisor pode aceitar a solicitação de revisão de código. O revisor revisa o código, escreve alguns comentários em níveis de arquivo e do bloco de código e depois envia a revisão do código de volta a você. Um revisor solicitado que está muito ocupado para revisar o código pode recusar a revisão.

Nos comentários, o revisor 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

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.

Fazer uma revisão de código

  1. Na página Meu Trabalho no Team Explorer, clique com o botão direito do mouse em revisão de código na seção Revisões de Código e selecione Abrir.

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

    Captura de tela da página Revisão de Código.

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

    • Escolher Adicionar Revisor para adicionar outros revisores à solicitação de revisão de código.

    • Selecione cada link de arquivo para ver as alterações nos arquivos que foram atualizados para este item de trabalho.

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

      Para adicionar comentários:

      • Escolha Adicionar Comentário Geral para adicionar um comentário geral à revisão.
      • Ao exibir um arquivo, selecione uma linha ou bloco de código, clique com o botão direito do mouse e selecione Adicionar comentário.

      Depois de adicionar cada comentário, selecione Salvar ou pressione Ctrl+Enter.

  3. Quando terminar de inserir comentários, selecione Enviar Comentários para tornar suas contribuições visíveis para o autor e outros revisores.

Responder a uma análise do código

Você recebe e responde à revisão de código dos revisores. Você e os revisores podem trocar comentários com a frequência que desejar. A revisão termina quando você a fecha.

Para responder a uma análise do código

  1. No Team Explorer, na página Meu Trabalho, vá para a seção Revisões de Código e clique duas vezes na solicitação ou clique com o botão direito do mouse na solicitação e escolha Abrir.

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

    Captura de tela de resposta a uma revisão de código.

  2. Na seção Comentários , leia os comentários e responda conforme necessário. Para responder a um comentário, selecione Responder, digite seu comentário na caixa que aparece e, em seguida, escolha OK.

  3. Para exibir um arquivo e ver os blocos de código que têm comentários, ou editar ou comentar em um arquivo, vá para a subseção Arquivos. Clique com o botão direito do mouse no arquivo e escolha:

    • Comparar (Somente Leitura)
    • Editar arquivo local, ou
    • Adicionar Comentário de Arquivo

    Você também pode selecionar a caixa de seleção ao lado de um comentário para indicar que o comentário foi endereçado.

  4. Para enviar seus comentários, escolha Enviar Comentários.

  5. Quando você e outros revisores terminarem de responder aos comentários uns dos outros, você estiver pronto para fechar a revisão, selecione Fechar 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 revisão, você pode corrigir o teste de unidade conforme sugerido. Agora o teste falhará. Isso mostra o código que ainda não está correto.

Você 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 é aprovado mais uma vez.

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.

Você 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

Você faz check-in no código fixo e nos testes de unidade. O estado de bug é definido automaticamente para Resolvido, e o valor Atribuído para é 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

  1. No Team Explorer, na página Meu Trabalho, escolha Check-In para abrir a página Alterações Pendentes.

    captura de tela de Check-in em uma atualização para corrigir um bug.

  2. Na página Alterações Pendentes, certifique-se de que:

    • 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. Selecione Check-in.

Retomar o trabalho em uma tarefa

Retome o trabalho em sua tarefa original. Você 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 inspeção.

Para retomar o trabalho em uma tarefa

  • No Team Explorer, na página Meu Trabalho, selecione seu item de trabalho original em Trabalho Suspenso e selecione Retomar.

    Captura de tela da retomada de uma tarefa.

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

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