Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Azure DevOps Services
Покрытие кода является важной метрикой качества и помогает оценить процент протестированного кода проекта. Чтобы гарантировать, что качество проекта улучшается с течением времени (или, по крайней мере, не регрессия), новый код, передаваемый в систему, должен быть хорошо протестирован. Когда разработчики создают запросы на вытягивание, знание о том, охватываются ли их изменения тестами, помогает устранить все пробелы в тестировании до объединения изменений в целевую ветвь. Владельцы репозитория также могут захотеть установить политики, чтобы предотвратить слияние больших непроверенных изменений.
Полное покрытие, покрытие диффа
Полный охват заключается в том, что покрытие измеряется для всей базы кода проекта. В контексте pull-запросов разработчики сосредоточены на изменениях, которые они вносят, и хотят знать, охвачены ли конкретные строки кода, которые они добавили или изменили. Этот тип покрытия — это покрытие diff.
Предварительные требования
Чтобы получить метрики покрытия для запроса на вытягивание, сначала настройте конвейер, который проверяет запросы на вытягивание. В этом конвейере настройте средство тестирования, используемое для сбора метрик покрытия кода. Затем результаты покрытия должны быть опубликованы на сервере для отчетности.
Дополнительные сведения о сборе и публикации результатов покрытия кода для выбранного языка см. в разделе "Экосистемы ". Например, соберите и опубликуйте покрытие кода для приложений .NET Core.
Примечание.
Хотя вы можете собирать и публиковать результаты покрытия кода для многих разных языков с помощью Azure Pipelines, покрытие кода для pull request'ов, обсуждаемое в этом документе, в настоящее время доступно только для проектов .NET и .NET core с использованием формата результатов покрытия кода Visual Studio (расширение файла .coverage). Поддержка других языков и форматов покрытия будет добавлена в будущие вехи.
Состояние покрытия, сведения и индикаторы
После настройки конвейера, который собирает и публикует покрытие кода, он публикует состояние покрытия кода при создании pull request. По умолчанию сервер проверяет наличие по крайней мере 70% измененных строк, охватываемых тестами. Целевое значение порога покрытия diff можно изменить на любое значение по вашему выбору. Для получения дополнительной информации см. раздел конфигурации параметров далее в этой статье.
Проверка состояния оценивает значение покрытия изменений (диффа) для всех исходных файлов в pull request. Если вы хотите просмотреть значение покрытия % diff для каждого из файлов, включите подробные сведения, как указано в разделе конфигурации. Включение данной функции размещает сведения в виде комментария в запросе на вытягивание.
В измененном представлении файлов в запросе на вытягивание измененные строки также аннотируются индикаторами покрытия, чтобы показать, охватываются ли эти строки.
Примечание.
Хотя вы можете создать код из широкого спектра систем управления версиями, поддерживаемых Azure Pipelines, покрытие кода для pull requests, рассмотренное в этом документе, на данный момент доступно только для Azure Repos.
Настройка параметров покрытия
Если вы хотите изменить настройки по умолчанию для опыта покрытия кода в запросах на вытягивание, необходимо добавить файл конфигурации YAML с именем azurepipelines-coverage.yml в корневую директорию вашего репозитория. Задайте требуемые значения в этом файле и будет использоваться автоматически при следующем запуске конвейера.
Параметры, которые можно изменить, :
Настройка | Описание | По умолчанию | Допустимые значения |
---|---|---|---|
статус | Указывает, следует ли публиковать проверку состояния покрытия кода на pull requests. Отключение не публикует никаких проверок покрытия, и заметки покрытия не отображаются в изменённом представлении файлов. |
включен | включено, выключено |
целевой объект | Целевое пороговое значение для покрытия диффа должно быть выполнено для успешного размещения состояния покрытия. | 70 % | Требуемое % числа |
комментарии | Указывает, должен ли комментарий, содержащий сведения об охвате для каждого файла кода, размещаться в пул-реквесте. | выключен | включено, выключено |
Пример конфигурации:
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. Это связано с тем, что параметры покрытия применяются к репозиторию и будут использоваться независимо от того, какой конвейер создает код. Это разделение также означает, что при использовании классических конвейеров сборки, основанных на дизайне, вы получите проверку статуса покрытия кода для pull-запросов.
Защита ветви с помощью политики покрытия кода
Проверка покрытия кода для запросов на вытягивание является лишь рекомендацией для разработчиков и не препятствует объединению запросов на вытягивание с низким уровнем покрытия кода в целевую ветвь. Чтобы предотвратить слияние изменений, которые не соответствуют пороговой отметке охвата, необходимо настроить политику ветви с помощью проверки состояния покрытия.
Совет
Состояние покрытия кода, размещенное из конвейера, следует соглашению {name-of-your-pipeline/codecoverage}
об именовании.
Примечание.
Политики ветви в Azure Repos (даже необязательные политики) не позволяют автоматически выполнять pull-запросы, если они не проходят проверку. Данное поведение не является специфичным для политики покрытия кода.
Вопросы и ответы
Какие средства покрытия и форматы результатов можно использовать для проверки покрытия кода в пул-реквестах?
Покрытие кода для pull-запросов в настоящее время доступно только для покрытия в Visual Studio Code, .coverage
, форматов. Используйте его при публикации покрытия кода с помощью задачи тестирования Visual Studio, команды тестирования задачи dotnet core и параметра TRX в задаче публикации результатов теста.
Поддержка других средств покрытия и форматов результатов будет добавлена в будущие вехи.
Если при создании pull request активируется несколько конвейеров, объединится ли покрытие между конвейерами?
Если несколько конвейеров активируются при возникновении запроса на вытягивание, покрытие кода не объединяется. В настоящее время эта функция предназначена для одного конвейера, который собирает и публикует покрытие кода для pull-реквестов. Если необходимо объединить данные покрытия по конвейерам, отправьте запрос функции на Сообщество разработчиков.
Справка и поддержка
- См. нашу страницу по устранению неполадок
- Получите советы по Stack Overflow и получите поддержку через Сообщество разработчиков