Объем протестированного кода для запросов на вытягивание

Azure DevOps Services

Объем протестированного кода — это важная метрика качества, которая помогает измерить процент протестированного кода проекта. Чтобы качество проекта с течением времени повышалось (или, по крайней мере, не падало), новый код, который был добавлен в систему, должен быть хорошо протестирован. Когда разработчики вызывают запросы на вытягивание, знание того, охвачены ли их изменения тестами, помогает устранить все проверочные отверстия, прежде чем изменения будут объединены в целевую ветвь. Владельцам репозиториев также может потребоваться задать политики, чтобы предотвратить слияние больших непроверенных изменений.

Полное покрытие, diff покрытие

Полный охват — это когда измеряется охват всей базы кода проекта. Однако в контексте запросов на вытягивание разработчики сосредоточены на изменениях, которые они вносят, и хотят знать, охвачены ли конкретные строки кода, которые они добавили или изменили. Этот тип покрытия является diff покрытия.

Предварительные требования

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

Дополнительные сведения о сборе и публикации результатов покрытия кода для выбранного языка см. в разделе Экосистемы . Например, соберите и опубликуйте объем протестированного кода для приложений .NET Core.

Примечание

Хотя с помощью Azure Pipelines можно собирать и публиковать результаты протестированного кода для разных языков, функция покрытия кода для запросов на вытягивание , описанная в этом документе, в настоящее время доступна только для проектов .NET и .NET Core с использованием формата результатов покрытия кода Visual Studio (расширение .coverage). Поддержка других языков и форматов охвата будет добавлена в будущих вехах.

Состояние покрытия, сведения и индикаторы

После настройки конвейера, который собирает и публикует объем протестированного кода, он публикует состояние покрытия кода при вызове запроса на вытягивание. По умолчанию сервер проверяет наличие 70 % измененных строк, охватываемых тестами. Целевое значение порогового значения diff покрытия можно изменить на выбранное значение. Дополнительные сведения см. в разделе конфигурации параметров ниже.

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

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

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

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

Снимок экрана: индикаторы покрытия.

Примечание

Хотя вы можете создавать код из широкого спектра систем управления версиями, поддерживаемых Azure Pipelines, функция покрытия кода для запросов на вытягивание, описанная в этом документе, в настоящее время доступна только для Azure Repos.

Настройка параметров покрытия

Если вы хотите изменить параметры по умолчанию в интерфейсе покрытия кода для запросов на вытягивание, необходимо включить YAML-файл конфигурации с именем azurepipelines-coverage.yml в корне репозитория. Задайте нужные значения в этом файле, и они будут использоваться автоматически при следующем запуске конвейера.

Параметры, которые можно изменить:

Параметр Описание Значение по умолчанию Допустимые значения
status Указывает, следует ли публиковать проверка состояния покрытия кода в запросах на вытягивание.
Отключение этого параметра не приведет к публикации проверок покрытия, а заметки о покрытии не будут отображаться в измененном представлении файлов.
on on, off
target Целевое пороговое значение для diff охвата должно быть достигнуто для успешного размещения состояния покрытия. 70 % Требуемое % число
comments Указывает, следует ли публиковать в запросе на вытягивание комментарий, содержащий сведения о покрытии для каждого файла кода. off on, off

Пример конфигурации:

coverage:
  status:           # Code coverage status will be posted to pull requests based on targets defined below.
    comments: on    # Off by default. When on, details about coverage for each file changed will be posted as a pull request comment. 
    diff:           # Diff coverage is code coverage only for the lines changed in a pull request.
      target: 60%   # Set this to a desired percentage. Default is 70 percent

Дополнительные примеры с подробными сведениями можно найти в репозитории примеров YAML для покрытия кода.

Примечание

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

Совет

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

Защита ветви с помощью политики покрытия кода

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

Совет

Состояние покрытия кода, размещенное из конвейера, соответствует соглашению {name-of-your-pipeline/codecoverage}об именовании .

Примечание

Политики ветви в Azure Repos (даже необязательные политики) не позволяют автоматически выполнять запросы на вытягивание в случае сбоя. Это поведение не зависит от политики покрытия кода.

Начиная с сентября 2023 г. политика покрытия кода не будет переопределена на Сбой в случае сбоя сборки. Эта функция будет включена для всех клиентов.

Вопросы и ответы

Какие средства покрытия и форматы результатов можно использовать для проверки объема протестированного кода в запросах на вытягивание?

Покрытие кода для возможности запросов на вытягивание в настоящее время доступно только для форматов покрытия кода Visual Studio (.coverage). Это можно использовать, если вы публикуете объем протестированного кода с помощью задачи "Тест" в Visual Studio, команды тестирования задачи dotnet core и параметра TRX задачи публикации результатов теста. Поддержка других средств покрытия и форматов результатов будет добавлена в будущих вехах.

Если при вызове запроса на вытягивание активируется несколько конвейеров, будет ли покрытие объединено между конвейерами?

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

Справка и поддержка