【问题标题】:CodeCoverage using SonarQube scanner and NET5使用 SonarQube 扫描仪和 NET 5 的代码覆盖率
【发布时间】:2022-02-18 13:05:31
【问题描述】:

我有两个 NET5 xUnit 测试项目。在构建服务器上,我使用coverlet 生成代码覆盖率报告。这些报告根据here 指导连接到 SonarQube 扫描仪

步骤如下

开始步骤

dotnet "C:\SonarQubeScanners\sonar-scanner-msbuild-5.1.0.28487-net5.0\SonarScanner.MSBuild.dll" begin /k:"IM" /d:sonar.host.url="http://myhost.com" /d:sonar.login="xxxxxxx" /d:sonar.cs.opencover.reportsPaths="%WORKSPACE%\Tests\MyProject1.UnitTests\TestResults\**\coverage.cobertura.xml,%WORKSPACE%\Tests\MyProject2.UnitTests\TestResults\**\coverage.cobertura.xml"

构建解决方案

dotnet build "%WORKSPACE%\My.sln" -nr:false

为两个项目运行单元测试并收集数据

dotnet test "%WORKSPACE%\Tests\MyProject1.UnitTests\MyProject1.UnitTests.csproj" --collect:"XPlat Code Coverage"
dotnet test "%WORKSPACE%\Tests\MyProject2.UnitTests\MyProject2.UnitTests.csproj" --collect:"XPlat Code Coverage"

结束步骤

dotnet "C:\SonarQubeScanners\sonar-scanner-msbuild-5.1.0.28487-net5.0\SonarScanner.MSBuild.dll" end /d:sonar.login="xxxxxxx"

问题

  1. 每次运行单元测试时,它都会在TestResults 下创建新文件夹(带有 Guid 名称)
    • 如何让 SonarScanner 使用最新报告?
    • 或者如何在每次运行前清理TestResult文件夹,dotnet test命令是否有参数?
  2. SonarScanner 在解析生成的报告时也会抛出错误

无法导入覆盖率报告“D:\Jenkins\im\workspace\Tests\MyProject1.UnitTests\TestResults\9c4d50ae-4113-4018-97bb-30d919a9b1e7\coverage.cobertura.xml”,因为“缺少根元素 <CoverageSession>在 D:\Jenkins\im\workspace\Tests\MyProject1.UnitTests\TestResults\9c4d50ae-4113-4018-97bb-30d919a9b1e7\coverage.cobertura.xml 第 2 行'

【问题讨论】:

标签: .net-core sonarqube code-coverage sonarqube-scan xunit.net


【解决方案1】:

这是我为使其正常工作所做的步骤

1>扫描开始前先删除testresult文件夹
rmdir /s /q "%WORKSPACE%\Tests\MyProject1.UnitTests\TestResults"

2>修改--collect参数如下,生成opencover格式的覆盖率报告

dotnet "C:\sonar-scanner-msbuild-5.5.3.43281-net5.0\SonarScanner.MSBuild.dll" begin /k:"IM" /d:sonar.host.url="myhost.com" /d:sonar.login="xxxxxxx" /d:sonar.cs.opencover.reportsPaths="%WORKSPACE%\Tests\**\TestResults\*\coverage.opencover.xml"

dotnet build "%WORKSPACE%\IM.sln" -nr:false

dotnet test --no-build "%WORKSPACE%\Tests\MyProject1.UnitTests\MyProject.UnitTests.csproj" --collect:"XPlat Code Coverage" -- DataCollectionRunSettings.DataCollectors.DataCollector.Configuration.Format=opencover

dotnet "C:\sonar-scanner-msbuild-5.5.3.43281-net5.0\SonarScanner.MSBuild.dll" end /d:sonar.login="xxxxxxx"

【讨论】:

    猜你喜欢
    • 2020-12-29
    • 2018-01-11
    • 1970-01-01
    • 2021-07-09
    • 2017-01-25
    • 2022-11-08
    • 1970-01-01
    • 2016-06-22
    • 2017-02-20
    相关资源
    最近更新 更多