Sonar 上未显示团队城市代码覆盖率和单元测试结果

Team City Code Coverage and Unit Test results not showing on Sonar

我正在尝试将单元测试和 dotCover 代码分析结果从 TeamCity 上传到 Sonar 服务器。它在 TeamCity 中显示代码覆盖率和单元测试结果,但在 Sonar 上没有代码 coverage/unit 测试。

TeamCity 单元测试步骤:

后面是 Powershell 脚本:

我在 Sonar Runner 步骤中有以下附加参数:

Dsonar.cs.vstest.reportsPaths=TestResults.trc Dsonar.cs.dotcover.reportsPaths='%sonar.coverageReport%'

有谁知道如何解决这个问题?

谢谢。

在第 3 步中使用以下脚本设法解决了问题:

$Files= Get-ChildItem %system.teamcity.build.tempDir% ` 
    -Filter coverage_dotcover*.data ` 
    | where-object {$_.length -gt 50} ` 
    | Select-Object -ExpandProperty FullName 

$snapshot =[string]::Join(";",$Files) 

& %teamcity.tool.dotCover%\dotCover.exe merge ` 
  /Source=$snapshot ` 
  /Output=%env.TEMP%\dotCoverReport.dcvr` 


& %teamcity.tool.dotCover%\dotCover.exe report ` 
  /Source=%env.TEMP%\dotCoverReport.dcvr ` 
  /Output=%sonar.coverageReport% ` 
  /ReportType=HTML

您的 TeamCity 是什么版本?在 TeamCity 9.1.1 中,有一个 bug 导致测试报告文件写入构建临时目录。在这种情况下,希望 trx 文件位于结帐目录中的 Sonar 插件找不到它。 有几种解决方法:第一种是升级到TeamCity 9.1.2及以上版本,第二种是将绝对路径传递给report paths变量:

-Dsonar.cs.vstest.reportsPaths=%system.teamcity.build.tempDir%/TestResults.trc

第三种方法是将指向结帐目录的绝对路径传递给 mstest 运行器的结果文件字段:

%system.teamcity.build.checkoutDir%/TestResults.trc