我一直在尝试使用Jenkins获得声纳中的代码覆盖率。我已经提供了.run设置文件来覆盖ms测试代码,但仍然无法显示声纳仪表板。
我在jenkins管道中运行这些命令。 /d:sonar.cs.vscoveragexml.reportsPaths = *。coverage“
我如何生成codecoveragexml文件?请您帮我一下。
答案 0 :(得分:0)
您必须使用正确的参数在构建服务器上运行 dotnet test
命令才能生成覆盖文件。在 Jenkins 中添加以下作为批处理步骤。
dotnet test --logger "trx;LogFileName=[You project name].trx" --collect "Code Coverage"
--results-directory:"[Your project path]\TestResults"
请注意,上述命令中的 "Code Coverage"
文本应与 frieldlyName
文件的 DataCollector
标记的 run.settings
属性匹配。
当上面的命令运行时,它会创建一个 .coverage
文件,您需要将其转换为 .coveragexml
。但是生成的文件会有一个随机的名字,所以需要先重命名。
ren *.coverage [Your project name].coverage
以下命令执行从 .coverage
到 .coveragexml
的转换。
CodeCoverage analyze /output:[Your project name].coveragexml [Your project name].coverage
最后,将此 .coveragexml
文件的路径提供给 Sonar:
sonar.cs.vscoveragexml.reportsPaths=[Your project name].coveragexml
PS:您也可以将 .trx
文件提供给您在第一步中创建的 Sonar。然后声纳会告诉您更多有关您进行的测试数量、通过率和其他内容的信息。
sonar.cs.vstest.reportsPaths=[Your project name].trx