Я не могу воспроизвести вышеуказанную проблему. И это трудно устранить, поскольку вы не поделились своей конфигурацией для do tnet тестового задания или sonarqube подготовить задачу .
Я создал тестовый проект и покрытие было успешно опубликовано на моем сервере sonarqube. Ниже вы можете обратиться к моим шагам.
1, создать сервер sonarqube и настроить мои projectName и projectKey (я использую azure экземпляр контейнера sonarqube, проверьте здесь для получения подробной информации).
2, настроить подключение службы sonarqube в azure devops.
3, создать конвейер сборки. Я использую конвейер yaml.
В Задача подготовки конфигурации анализа , я выбираю Использовать автономный сканер , а Режим равен Вручную предоставить конфигурацию . И я установил переменную sonar.cs.opencover.reportsPaths="$(Agent.TempDirectory)/coverage.opencover.xml"
.
Ниже на скриншоте показана настройка задачи в классическом c пользовательском интерфейсе.
In my do tnet тестовое задание Я устанавливаю аргументы, как показано ниже, и специально выводю результат покрытия в папку $(Agent.TempDirectory)/
.
arguments: '--configuration $(buildConfiguration) /p:CollectCoverage=true /p:CoverletOutput=$(Agent.TempDirectory)/ /p:CoverletOutputFormat=opencover'
Ниже приведено полное содержимое моего azure -pipelines.yml файла.
trigger: none
jobs:
- job: 'Tests'
pool:
vmImage: windows-latest
variables:
buildConfiguration: 'Release'
continueOnError: true
steps:
- task: SonarQubePrepare@4
displayName: 'Prepare analysis on SonarQube'
inputs:
SonarQube: sonarlevi
scannerMode: CLI
configMode: manual
cliProjectKey: myproject2
cliProjectName: myproject2
extraProperties: |
sonar.cs.opencover.reportsPaths="$(Agent.TempDirectory)/coverage.opencover.xml"
- task: DotNetCoreCLI@2
inputs:
command: restore
projects: '**\*.csproj'
- task: DotNetCoreCLI@2
inputs:
command: custom
custom: tool
arguments: install --tool-path . dotnet-reportgenerator-globaltool
displayName: Install ReportGenerator tool
- task: DotNetCoreCLI@2
displayName: Test .NET
inputs:
command: test
projects: '**\*Test*.csproj'
publishTestResults: false
arguments: '--configuration $(buildConfiguration) /p:CollectCoverage=true /p:CoverletOutput=$(Agent.TempDirectory)/ /p:CoverletOutputFormat=opencover'
condition: succeededOrFailed()
- task: SonarQubeAnalyze@4
displayName: 'Run Code Analysis'
- task: SonarQubePublish@4
displayName: 'Publish Quality Gate Result'