Мой конвейер yaml Azure Devops содержит следующее:
stages:
- stage: 'Build'
displayName: 'Build, Test, Publish'
jobs:
- job: build
displayName: Build
steps:
- task: NuGetAuthenticate@1 # needed to authenticate for private NuGet feed
- script: |
dotnet build --configuration Release
- task: DotNetCoreCLI@2
displayName: Test
inputs:
command: test
projects: '**/*[Tt]ests/*.csproj'
arguments: '--configuration release --collect "Code coverage" --no-build'
Это автоматически добавляет проверку статуса покрытия кода в мои запросы на включение.
Однако разочаровывает то, что показатель покрытия включает сторонние библиотеки DLL из NuGet, из-за чего покрытие моего кода кажется низким:
Боюсь, что проверка статуса покрытия кода в запросе на включение не будет автоматически исключать сторонние библиотеки.
Проверка состояния покрытия кода в запросе на включение будет полностью отражать результаты покрытия кода в соответствующем конвейере.
Как я могу заставить его сообщать только о покрытии моего кода?
Чтобы удовлетворить ваши требования, вы можете добавить файл .runsettings
в свой проект и использовать его для исключения библиотек Microsoft DLL при сборе покрытия кода в тестовой задаче dotnet.
Вот пример:
<?xml version = "1.0" encoding = "utf-8" ?>
<RunSettings>
<DataCollectionRunSettings>
<DataCollectors>
<DataCollector friendlyName = "Code Coverage">
<Configuration>
<CodeCoverage>
<ModulePaths>
<Exclude>
<CompanyName>.*microsoft.*</CompanyName>
</Exclude>
</ModulePaths>
</CodeCoverage>
</Configuration>
</DataCollector>
</DataCollectors>
</DataCollectionRunSettings>
</RunSettings>
Когда вы используете тестовую задачу dotnet, вы можете добавить аргумент: --settings filename.runsettings
Например:
- task: DotNetCoreCLI@2
displayName: Test
inputs:
command: test
projects: '**/*[Tt]ests/*.csproj'
arguments: '--configuration release --collect "Code coverage" --settings filename.runsettings --no-build'
В этом случае из результата покрытия кода в Pipeline будут исключены библиотеки DLL третьих сторон, а при проверке состояния покрытия кода будет получен отчет, который не содержит библиотеки DLL третьих сторон.
Для получения более подробной информации вы можете обратиться к этому документу: Настройка анализа покрытия кода