Un día en la vida de un desarrollador DevOps: suspender el trabajo, corregir un error y realizar una revisión de código

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

Visual Studio 2019 | Visual Studio 2022

Las características de Visual Studio Mi trabajo y Revisión de código permiten cambiar de contexto de un subproceso de trabajo a otro. Además, los miembros del equipo pueden intercambiar fácilmente mensajes sobre los cambios propuestos para el código. En este artículo se ilustran estas características como continuación del tutorial de Un día en la vida de un desarrollador de DevOps: escribir código nuevo para un caso de usuario.

Nota:

Las características Mi trabajo y Revisión del código de Visual Studio están disponibles con las ediciones siguientes:

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

En este tutorial se describe cómo puede suspender el trabajo en una tarea actual para corregir inmediatamente un error que está bloqueando la labor de los compañeros de equipo en otro elemento de trabajo. Después de corregir el error, puede pedir a los compañeros que revisen la corrección y, cuando la revisión tenga el visto bueno, proteger la corrección y reanudar el trabajo en la tarea original.

Suspender el trabajo actual

Mientras trabaja en un elemento de trabajo pendiente, es posible que descubra un error en otro elemento que bloquea la labor de los compañeros de equipo. Si es un área con la que está familiarizado, puede crear una tarea para corregir el error y asignársela a sí mismo para trabajar inmediatamente.

Antes de empezar a trabajar en el nuevo error, conviene asegurarse de que el trabajo actual que ha dejado momentáneamente se encuentra en un lugar seguro del servidor del equipo. En Visual Studio Team Explorer, en la página Mi trabajo, seleccione Suspender para guardar en el servidor:

  • Todo el trabajo que ha realizado, incluidos los cambios de código, las pruebas y otros archivos.

  • Las ventanas, los puntos de interrupción, las variables de la ventana Inspección, las soluciones abiertas y otros elementos de estado de Visual Studio.

Ahora que el área de trabajo está limpia, arrastre la nueva tarea desde Elementos de trabajo disponibles hasta Trabajo en curso. Está preparado para investigar y escribir la corrección.

Nota:

El contexto de trabajo está vinculado a los elementos de trabajo que se muestran con el estado En curso en la página Mi trabajo. Si usa Suspender y Reanudar, puede cambiar rápidamente entre diferentes tareas. Las soluciones y archivos abiertos, los cambios de código y el diseño de Visual Studio se cambian a la vez.

Para suspender el trabajo actual y comenzar a trabajar en una tarea diferente

Cambie el contexto de trabajo:

  1. Si aún no está conectado al proyecto en el que quiere trabajar, conéctese al proyecto.

  2. En la página Inicio de Team Explorer, seleccione Mi trabajo.

  3. En la página Mi trabajo, en la sección Trabajo en curso, seleccione Suspender.

  4. En el cuadro que se abre, cambie si lo desea el nombre que quiera asignar a este conjunto de trabajo suspendido y seleccione Suspender. El elemento aparece en Trabajo suspendido.

    Captura de pantalla de suspensión de un trabajo

  5. Arrastre un elemento de trabajo desde Elementos de trabajo disponibles hasta Trabajo en curso. También puede cambiar a un elemento de trabajo que haya suspendido anteriormente; para ello, arrástrelo desde Trabajo suspendido.

    Si el elemento de trabajo que quiere asignar no aparece en Elementos de trabajo disponibles, puede hacer lo siguiente:

    • Crear una tarea u otro elemento de trabajo; para ello, seleccione Nuevo.
    • Seleccionar otra consulta; para ello, seleccione Abrir consulta.

Sugerencia

Los elementos Trabajo en curso vinculan a los cambios del código actual y al estado de Visual Studio. Para que Visual Studio le ayude a organizar el trabajo, asegúrese de que los elementos correspondientes tienen el estado Trabajo en curso cuando cambie entre una tarea y otra.

Investigar el error

Abra el nuevo error y lea la descripción. En este ejemplo, la descripción escrita por un miembro del equipo de pruebas señala que una factura pagada a veces aparece marcada incorrectamente como no pagada. Junto al elemento de trabajo de error se adjunta una instantánea del entorno de laboratorio. Abre las máquinas virtuales en las que se ejecutó la prueba, consulta la factura incorrecta y retrocede a través del registro de IntelliTrace. Podemos rastrear dónde está el error del método:

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

En el registro de IntelliTrace, nos fijamos en que, en ocasiones, el método devuelve false porque los parámetros difieren en una cantidad extremadamente pequeña. Sabemos que los errores de redondeo de este tipo son inevitables en la aritmética de punto flotante y que no es aconsejable comprobar la igualdad en los números de punto flotante.

Aumentar las pruebas para mostrar el error

Cuando se detecta un error, indica que o no se había cubierto un aspecto en las pruebas unitarias, o que la prueba no se ajustaba a las necesidades reales de los usuarios. Por lo tanto, antes de corregir el error, agregamos una prueba que sirva para demostrar la presencia de este error:

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

Ejecutamos la prueba y se produce el error esperado.

Captura de pantalla del Explorador de pruebas unitarias donde se muestra que la prueba Equal tiene errores

Conseguir que se superen las pruebas

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

Ahora la prueba se supera:

Captura de pantalla del Explorador de pruebas unitarias donde se muestra que la prueba Equal se supera

Solicitar una revisión de código

Cuando esté satisfecho con la corrección del error, no proteja el trabajo aún. Los equipos usan las revisiones de código para aumentar la calidad general del código y reducir el riesgo de que se produzcan más errores. Use Team Explorer para solicitar revisiones de código de compañeros de equipo.

Para solicitar una revisión de código

  1. En Team Explorer, en la página Mi trabajo de Trabajo en curso, seleccione Solicitar revisión.

    Se abre la página Nueva revisión de código.

    Captura de pantalla de la página Nueva revisión de código

    • En el campo Escriba el nombre de un revisor, especifique uno o varios revisores y presione Entrar después de cada selección.
    • En el campo siguiente, cambie el nombre de la revisión si así lo desea.
    • En el campo siguiente, asegúrese de que aparece la ruta de acceso de área correcta.
    • En el campo siguiente, escriba una descripción opcional.
  2. Seleccione Enviar solicitud.

Los revisores reciben una notificación de la solicitud por correo electrónico.

También puede solicitar una revisión del código de un trabajo suspendido, un conjunto de cambios aplazados o un conjunto de cambios. Para ver una lista de los conjuntos de cambios, abra el Explorador de control de código fuente y seleccione el botón Historial.

Realización de una revisión de código

Un revisor puede aceptar la solicitud de revisión de código. El revisor revisa el código, escribe algunos comentarios en los niveles de bloque de archivo y bloque de código y le envía la revisión de código de vuelta. Un revisor que está demasiado ocupado para revisar el código puede rechazar la revisión.

En los comentarios, el revisor señala que la prueba es incorrecta. El error permitido debe ser una fracción especificada de los valores de entrada, no una cantidad constante. Por lo tanto, la prueba debe multiplicar el error por el 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

Sugerencia

Los miembros del equipo usan las pruebas como tema de discusión. Si las pruebas son correctas y suficientes, el código también lo será. A diferencia del código, cada prueba representa un caso distinto. Por este motivo, normalmente resulta más fácil discutir sobre las pruebas que sobre el código.

Para realizar una revisión de código

  1. En la página Mi trabajo de Team Explorer, haga clic con el botón derecho en la revisión de código en la sección Revisiones de código y seleccione Abrir.

    Se abre la página Revisión de código.

    Captura de pantalla de la página Revisión de código

  2. En la página Revisión de código, puede hacer lo siguiente:

    • Seleccionar Agregar revisor para agregar otros revisores a la solicitud de revisión de código

    • Seleccionar cada vínculo de archivo para ver los cambios en los archivos que se actualizaron para el elemento de trabajo

    • Expandir la sección Comentarios para comentar los cambios con el autor y los demás revisores

      Para agregar comentarios:

      • Seleccione Agregar comentario global para agregar un comentario general a la revisión.
      • Mientras consulta un archivo, seleccione una línea o bloque de código, haga clic con el botón derecho y seleccione Agregar comentario.

      Después de agregar cada comentario, seleccione Guardar o presione Ctrl+Entrar.

  3. Cuando haya terminado de escribir comentarios, seleccione Enviar comentarios para que las contribuciones sean visibles para el autor y otros revisores.

Responder a una revisión de código

Recibe la revisión de código de los revisores y responde a ella. Se pueden intercambiar comentarios con los revisores con la frecuencia que se quiera. La revisión finaliza cuando se cierra.

Para responder a una revisión de código

  1. En Team Explorer, en la página Mi trabajo, vaya a la sección Revisiones de código y haga doble clic en la solicitud, o bien haga clic con el botón derecho en la solicitud y seleccione Abrir.

    Se abre la página Revisión de código.

    Captura de pantalla de la respuesta a una revisión de código

  2. En la sección Comentarios, lea los comentarios y responda a ellos según sea necesario. Para responder a un comentario, seleccione Responder, escriba el comentario en el cuadro que aparece y después seleccione Aceptar.

  3. Para ver un archivo y echar un vistazo a los bloques de código que tienen comentarios, o si desea editar o comentar un archivo, vaya a la subsección Archivos. Haga clic con el botón derecho en el archivo y seleccione lo siguiente:

    • Comparación (solo lectura)
    • Editar archivo local
    • Agregar comentario de archivo

    También puede activar la casilla situada junto a un comentario para indicar que el comentario se ha atendido.

  4. Para enviar sus comentarios, seleccione Enviar comentarios.

  5. Cuando usted y los demás revisores terminen de responder a los comentarios de los demás y esté listo para cerrar la revisión, seleccione Cerrar revisión y, después, seleccione lo siguiente:

    • Completar, para indicar que la revisión ha finalizado.
    • Abandonar, para indicar que va a cancelar la revisión.

Corregir la prueba y el código

Después de leer los comentarios de revisión, puede corregir la prueba unitaria según lo sugerido. Ahora, la prueba no se realiza correctamente. Esto demuestra que el código sigue sin estar bien.

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

La prueba vuelve a superarse correctamente.

Sugerencia

Para corregir un error, siga el mismo procedimiento que en el desarrollo de código. Escriba una prueba que produzca un error y, a continuación, haga que la prueba se supere. Inserte en el repositorio el código y las pruebas solo cuando se superen las pruebas.

Ahora nos centramos en el caso de prueba donde se detectó el error. Los pasos para reproducir el error se describen con claridad en el elemento de trabajo del caso de prueba. Seguimos los pasos y vemos que las facturas aparecen correctamente.

Proteger la corrección

Protege el código corregido y las pruebas unitarias. El estado del error se establece automáticamente en Resuelto y el valor Asignado a se reasigna automáticamente al miembro del equipo de prueba que descubrió el error. Este miembro del equipo comprobará que el error se ha solucionado y cerrará el elemento de trabajo.

Para proteger la corrección

  1. En Team Explorer, en la página Mi trabajo, seleccione Proteger para abrir la página Cambios pendientes.

    Captura de pantalla de protección de una actualización para corregir un error

  2. En la página Cambios pendientes, asegúrese de lo siguiente:

    • Todos los cambios relevantes aparecen en Cambios incluidos.

    • Todos los elementos de trabajo relevantes aparecen en Elementos de trabajo relacionados.

  3. Escriba un Comentario para ayudar al equipo a comprender el propósito de estos cambios cuando examinen el historial del control de versiones en los archivos y carpetas modificados.

  4. Seleccione Insertar en el repositorio.

Reanudar una tarea

Reanude el trabajo de la tarea original. Puede volver al trabajo rápidamente gracias a que todos los cambios de código se restauran en el área de trabajo junto con otros elementos de estado importantes, como las ventanas abiertas, los puntos de interrupción y las variables de la ventana Inspección.

Para reanudar una tarea

  • En Team Explorer, en la página Mi trabajo, seleccione el elemento de trabajo original en Trabajo suspendido y seleccione Reanudar.

    Captura de pantalla de reanudación de una tarea

    Si lo que quiere es fusionar mediante combinación el trabajo suspendido con los cambios pendientes que hay en el área de trabajo, seleccione Fusionar mediante combinación con En curso.

Cuando reanude el trabajo, Visual Studio restaurará:

  • La solución abierta
  • Los cambios de código
  • El estado y la posición de las ventanas abiertas
  • Puntos de interrupción
  • Las variables y expresiones de la ventana Inspección
  • Marcadores