Использование файлов Cobertura для покрытия кода с SonarQube из Azure DevOps Pipelines - PullRequest
0 голосов
/ 01 мая 2020

У меня точечная net базовая версия: «3.0.100», основанная на «Ubuntu 16.04», и я пытаюсь получить покрытие кода, толкающее наш собственный SonarQube.

Я использовал Coverlet для генерации файлов Cobertura, которые затем можно использовать PublishCodeCoverageResults@1 для публикации sh в программе просмотра покрытия кода конвейеров Devops.

Мне не удалось собрать sh cobertura. xml файл в sonarqube.

Я прочитал это , и мне кажется, что единственное упоминание о cobertura - это python и flex. Можно ли использовать этот файл для покрытия моего C# проекта?

Я играл со следующим, но подозреваю, что то, что у меня есть в extraProperties, неверно.

- task: SonarQubePrepare@4
  inputs:
    SonarQube: 'My SonarQube'
    scannerMode: 'MSBuild'
    projectKey: 'dcap'
    projectName: 'DCAP'
    extraProperties: 'sonar.flex.cobertura.reportPaths=**/DCAP.Testing.Unit/TestResults/*/coverage.cobertura.xml'

Спасибо: -)

1 Ответ

1 голос
/ 04 мая 2020

Можно ли использовать этот файл для покрытия моего C# проекта?

Боюсь, что нет такого готового свойства, чтобы покрыть C# проект с Cobertura format.

Так же, как вы читаете, cobertura предназначен для python и flex. Для C# нам нужно использовать sonar.cs.dotcover.reportsPaths или sonar.cs.opencover.reportsPaths с форматом dotCover или OpenCover.

. Чтобы решить эту проблему, вы можете попробовать использовать собственный сценарий powershell, предоставленный Chameera Dulanga в качестве обходного пути:

$Env:DOTNET_ROOT= (Get-Command dotnet).Path.Replace('dotnet.exe','sdk\2.1.300')
dotnet tool install dotnet-reportgenerator-globaltool --tool-path . --version 4.0.12
dotnet tool install coverlet.console --tool-path . --version 1.4.1
mkdir .\reports
$testDll = gci -Recurse | ?{ $_.FullName -like ("*bin\{0}\{1}" -f "$(BuildConfiguration)", "$(TestDllFile)") }
$coverlet = "$pwd\coverlet.exe"
& $coverlet $testDll.FullName --target "dotnet" --targetargs ("vstest {0} --logger:trx" -f $testDll.FullName) --format "cobertura"
gci -Recurse |
?{ $_.Name -eq "coverage.cobertura.xml"} |
%{ &"$pwd\reportgenerator.exe" ("-reports:{0}" -f $_.FullName) "-targetdir:reports" "-reportstypes:HTMLInline;HTMLChart" }

Вы можете проверить его блог Запуск ASP. NET Тесты NUnit в Azure DevOps Создать конвейер и опубликовать результаты в Sonar Cloud для некоторые детали.

Надеюсь, это поможет.

...