День в жизни разработчика devops: приостановка работы, исправление ошибки и проведение проверки кода

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

Visual Studio 2019 | Visual Studio 2022

Функции Проверки кода и работы Visual Studio поддерживают переключение контекста с одного потока работы на другой. Кроме того, участники группы могут легко обмениваться сообщениями о предлагаемых изменениях в коде. В этой статье показаны эти функции, продолжая учебник из Day в жизни разработчика devops: написание нового кода для истории пользователя.

Примечание.

Функции проверки кода и работы Visual Studio доступны со следующими выпусками:

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

В этом руководстве описывается, как приостановить работу с текущей задачей, чтобы немедленно устранить ошибку, которая блокирует товарищей по команде в другом рабочем элементе. После исправления ошибки вы можете попросить коллег просмотреть исправление и после прохождения проверки проверка в исправлении и возобновлении работы с исходной задачей.

Приостановка текущей работы

Хотя вы работаете над элементом невыполненной работы, вы можете узнать об ошибке в другом элементе, который блокирует товарищей по команде. Если это область, с которой вы знакомы, вы можете создать задачу, чтобы устранить ошибку и назначить ее себе, чтобы немедленно работать над ней.

Прежде чем начать работу с новой ошибкой, необходимо убедиться, что текущая работа отложена в безопасном месте на сервере команды. В visual Studio Team Обозреватель на странице "Моя работа" выберите "Приостановить", чтобы сохранить на сервере:

  • Все выполненные действия, включая изменения в коде, тестах и других файлах.

  • Открытые решения, окна, точки останова, переменные окна просмотра и другие биты состояния Visual Studio.

Теперь, когда рабочая область чиста, перетащите новую задачу из доступных рабочих элементов в "Выполняется работа". Вы готовы изучить и написать исправление.

Примечание.

Рабочий контекст связан с рабочими элементами, которые отображаются как "Ход выполнения " на странице "Моя работа ". С помощью приостановки и возобновления можно быстро переключаться между различными задачами. Открытые решения и файлы, изменения кода и макет Visual Studio переключаются вместе.

Приостановка текущей работы и начало работы с другой задачей

Переключите контекст работы:

  1. Если вы еще не подключены к проекту, в который вы хотите работать, подключитесь к проекту.

  2. На домашнейстранице команды Обозреватель выберите "Моя работа".

  3. На странице "Моя работа" в разделе "Ход выполнения работы" выберите "Приостановить".

  4. В появившемся поле при необходимости измените имя, которое вы хотите предоставить этому набору приостановленной работы, а затем нажмите кнопку "Приостановить". Элемент отображается в разделе "Приостановленная работа".

    Снимок экрана: приостановка некоторых работ.

  5. Перетащите рабочий элемент из доступных рабочих элементов в "Выполняется работа". Кроме того, можно переключиться на рабочий элемент, который вы ранее приостановили, перетащив его из приостановленной работы.

    Если рабочий элемент, который вы хотите назначить себе, не отображается в разделе "Доступные рабочие элементы", можно:

    • Создайте новую задачу или другой рабочий элемент, выбрав "Создать".
    • Выберите другой запрос, выбрав "Открыть запрос".

Совет

Ссылки на текущие изменения кода и состояние Visual Studio. Чтобы разрешить Visual Studio организовать работу, убедитесь, что соответствующие элементы находятся в состоянии "Выполняется работа " при переходе с одной задачи на другую.

Исследование ошибки

Откройте новую ошибку и прочитайте описание. В этом примере описание участником тестовой группы указывает, что платный счет иногда неправильно помечен как неоплаченный. Моментальный снимок среды лаборатории присоединен к рабочему элементу ошибки. Вы открываете виртуальную машину, на которой был запущен тест, увидите неверный счет и выполните шаг назад в журнале IntelliTrace. Вы можете отследить ошибку до следующего метода:

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

В журнале IntelliTrace показано, что иногда метод возвращает значение false, так как параметры отличаются крайне небольшим количеством. Вы знаете, что округление ошибок такого рода неизбежно в арифметике с плавающей запятой, и что это плохая практика для проверки чисел с плавающей запятой для равенства.

Расширение тестов для отображения ошибки

При обнаружении ошибки показано, что в модульных тестах был разрыв или что тест не соответствовал фактическим потребностям пользователей. Поэтому перед исправлением ошибки добавьте тест, демонстрирующий наличие этой ошибки:

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

Запустите тест, и он завершается ошибкой, как ожидалось.

Снимок экрана: модульное тестирование Обозреватель с ошибкой теста для равного.

Прохождение тестов

Исправление кода:

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

Теперь тест проходит:

Снимок экрана: Обозреватель модульного теста, показывающий пройденный тест для равного.

Запрос проверки кода

Когда вы удовлетворены исправлением ошибки, еще не проверка в работе. Teams используют проверки кода для повышения общего качества кода и снижения риска создания дополнительных ошибок. Используйте командную Обозреватель, чтобы запросить проверки кода от товарищей по команде.

Запрос проверки кода

  1. В команде Обозреватель на странице "Моя работа" в разделе "Работа по ходу выполнения" выберите "Проверка запроса".

    Откроется страница "Проверка кода".

    Снимок экрана: страница проверки кода запроса.

    • Введите имя поля рецензента, укажите один или несколько рецензентов и нажмите клавишу ВВОД после каждого выбора.
    • В следующем поле измените имя проверки, если хотите.
    • В следующем поле убедитесь, что отображается правильный путь к области.
    • В следующем поле введите необязательное описание.
  2. Выберите "Отправить запрос".

Рецензенты уведомляются о запросе по электронной почте.

Вы также можете запросить проверку кода приостановленной работы, набора полок или набора изменений. Чтобы просмотреть список наборов изменений, откройте элемент управления версиями Обозреватель и нажмите кнопку "Журнал".

Проверка кода

Рецензент может принять запрос на проверку кода. Рецензент проверяет код, записывает некоторые комментарии на уровнях файлов и блоков кода, а затем отправляет отзыв кода вам. Запрашиваемый рецензент, который слишком занят, чтобы проверить код, может отказаться от проверки.

В комментариях рецензент указывает на то, что тест неправ. Допустимая ошибка должна быть указанной частью входных значений, а не константным количеством. Поэтому тест должен умножить ошибку на значение.

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

Совет

Участники команды используют тесты в качестве фокуса для обсуждения. Если тесты являются правильными и достаточными, код будет также. В отличие от кода, каждый тест представляет отдельный случай. По этой причине тесты часто проще обсуждать, чем код.

Выполнение проверки кода

  1. На странице "Моя работа" в команде Обозреватель щелкните правой кнопкой мыши проверку кода в разделе "Проверки кода" и выберите "Открыть".

    Откроется страница проверки кода.

    Снимок экрана: страница проверки кода.

  2. На странице "Проверка кода" можно:

    • Нажмите кнопку "Добавить рецензента ", чтобы добавить других рецензентов в запрос проверки кода.

    • Выберите каждую ссылку на файл, чтобы просмотреть изменения в файлах, которые были обновлены для этого рабочего элемента.

    • Используйте комментарии для обсуждения изменений с автором и другими рецензентами.

      Чтобы добавить примечания, выполните приведенные далее действия.

      • Нажмите кнопку "Добавить общий комментарий", чтобы добавить общий комментарий к обзору.
      • При просмотре файла выберите строку или блок кода, щелкните правой кнопкой мыши и выберите " Добавить комментарий".

      После добавления каждого комментария нажмите кнопку "Сохранить " или нажмите клавиши CTRL+ВВОД.

  3. Когда вы завершите ввод комментариев, нажмите кнопку "Отправить примечания ", чтобы сделать ваши вклады видимыми для автора и других рецензентов.

Реагирование на проверку кода

Вы получаете и отвечаете на проверку кода от рецензентов. Вы и рецензенты могут обмениваться комментариями так же часто, как вам нравится. Проверка заканчивается при закрытии.

Реагирование на проверку кода

  1. В команде Обозреватель на странице "Моя работа" перейдите в раздел "Проверки кода" и дважды щелкните запрос или щелкните правой кнопкой мыши запрос и нажмите кнопку "Открыть".

    Откроется страница проверки кода.

    Снимок экрана: ответ на проверку кода.

  2. В разделе "Комментарии" прочитайте комментарии и ответьте на них по мере необходимости. Чтобы ответить на комментарий, нажмите кнопку "Ответить", введите комментарий в появившемся поле и нажмите кнопку "ОК".

  3. Чтобы просмотреть файл и просмотреть блоки кода, имеющие комментарии, или изменить или закомментировать файл, перейдите в подраздел "Файлы ". Щелкните файл правой кнопкой мыши и выберите один из следующих вариантов:

    • Сравнение (только для чтения)
    • Изменение локального файла или
    • Добавление комментария к файлу

    Вы также можете выбрать проверка box рядом с комментарием, чтобы указать, что комментарий был устранен.

  4. Чтобы отправить комментарии, нажмите кнопку "Отправить комментарии".

  5. Когда вы и другие рецензенты завершают отвечать на комментарии друг друга, и вы готовы закрыть проверку, нажмите кнопку "Закрыть проверку", а затем выберите:

    • Завершено , чтобы указать, что проверка завершена или
    • Отказаться, чтобы указать, что вы отменяете проверку.

Исправление теста и кода

После чтения примечаний к рецензированием вы можете исправить модульный тест, как показано. Теперь тест завершается ошибкой. В этом примере показано, что код еще не исправен.

Исправлен код:

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

Тест проходит еще раз.

Совет

Чтобы устранить ошибку, выполните ту же практику, что и в разработке кода. Напишите тест, который завершается сбоем, а затем выполните тестовый проход. Проверьте код и тесты только в том случае, если тесты проходят.

Теперь обратите внимание на тестовый случай, в котором обнаружена ошибка. Действия по воспроизведению ошибки четко описаны в рабочем элементе тестового дела. Выполните действия и обнаружите, что счета указаны правильно.

Проверка исправления

Вы проверка в фиксированном коде и модульных тестах. Состояние ошибки автоматически устанавливается в значение "Разрешено", а значение "Назначенный кому " автоматически переназначается участнику тестовой группы, обнаруживавшей ошибку. Этот член группы проверяет, исправлена ли ошибка и закройте рабочий элемент.

Проверка в исправлении

  1. В команде Обозреватель на странице "Моя работа" нажмите кнопку "Войти", чтобы открыть страницу "Ожидающие изменения".

    Снимок экрана: проверка обновления для исправления ошибки.

  2. На странице "Ожидающие изменения" убедитесь, что:

    • Все соответствующие изменения перечислены в включенных изменениях

    • Все соответствующие рабочие элементы перечислены в связанных рабочих элементах.

  3. Введите комментарий, чтобы помочь вашей команде понять цель этих изменений при просмотре журнала управления версиями измененных файлов и папок.

  4. Нажмите кнопку "Войти".

Возобновление работы над задачей

Возобновление работы над исходной задачей. Вы можете быстро вернуться к работе, так как все изменения кода восстанавливаются в рабочей области вместе с важными битами состояния, такими как открытые окна, точки останова и переменные окна просмотра.

Возобновление работы над задачей

  • В команде Обозреватель на странице "Моя работа" выберите исходный рабочий элемент в разделе "Приостановленная работа" и выберите "Возобновить".

    Снимок экрана: возобновление задачи.

    Или, если вы хотите объединить приостановленную работу с ожидающих изменений в рабочей области, выберите "Слияние с выполнением".

При возобновлении работы Visual Studio восстанавливает следующее:

  • Открытое решение
  • Изменения кода
  • Состояние и положение открытых окон
  • Точки останова
  • Просмотр переменных и выражений окна
  • Закладки