SonarQube:无法导入测试覆盖率

SonarQube: Unable to import test coverage

我有一个 SonarQube 安装,并且 运行 它针对具有多个 xUnit 项目的 .Net 核心应用程序。 SonarQube 发现了错误并且闻起来很好,但像很多人一样,我无法完成代码覆盖。

目前,我正在使用以下命令生成 cobertura 覆盖率 XML 文件:

dotnet test --collect:"XPlat Code Coverage"

然后我将这些从每个测试项目复制到一个集中目录,并使用以下命令 run/import 文件:

dotnet SonarScanner begin /k:"my-project" /d:sonar.cs.vscoveragexml.reportsPaths=".\TestResults\*.xml"
dotnet build
dotnet SonarScanner end

根据日志,文件已找到但未提取。

INFO: Parsing the Visual Studio coverage XML report C:...\TestResults.coverage.cobertura.xml WARN: Could not import coverage report '..\TestResults.coverage.cobertura.xml' because 'Missing root element in C:...\TestResults.coverage.cobertura.xml at line 2'

我已确认文件包含有效 XML,看起来是正确的,但我什至不确定 SonarQube 是否应该接受 cobertura 报告。

以防将来有人遇到这个问题,我放弃了尝试使用 VS 中的内置覆盖并使用 DotCover。设置更简单一些,现在似乎可以正常工作了。

  • Download/extract点覆盖并将文件夹添加到路径
  • dotCover.exe --output=AppCoverageReport.html --reportType=HTML dotnet --test
  • dotnet SonarScanner begin /k:"my-project" /d:sonar.cs.dotcover.reportsPaths=AppCoverageReport.html
  • dotnet 构建
  • dotnet SonarScanner 结束

仍然有一个问题,即测试覆盖率收集似乎引入了太多内容,因此导致了错误。正在调查但与此问题无关。