问题描述
我正在尝试收集覆盖信息并将其发布到 SonarCloud 以用于我的 C# 项目,使用 GitHub 操作作为我的 CI 管道。执行很简单,基本上就是尝试对所有项目执行测试,合并所有覆盖文件:
run: |
.\.sonar\scanner\dotnet-sonarscanner begin /k:"LanguageDev_Yoakke" /o:"languagedev" /d:sonar.login="${{ secrets.soNAR_TOKEN }}" /d:sonar.host.url="https://sonarcloud.io" /d:sonar.cs.opencover.reportsPaths="CoverageResults/coverage.opencover.xml" /d:"sonar.verbose=true"
dotnet build
dotnet test /p:CollectCoverage=true /p:Coverletoutput="../CoverageResults/" /p:MergeWith="../CoverageResults/coverage.json" /p:CoverletoutputFormat=\"opencover,json\" /maxcpucount:1
.\.sonar\scanner\dotnet-sonarscanner end /d:sonar.login="${{ secrets.soNAR_TOKEN }}"
请注意,我确实需要以 opencover
和 json
格式输出。 coverlet
似乎只能正确合并,因为 json
是输出格式之一,因此它可以最终将其转换为 opencover
。
问题是,这不会在 CI 上生成覆盖信息 - 下载工件不显示生成的文件夹或文件。但是,如果只是通过 /p:CoverletoutputFormat=opencover
,所有覆盖信息都会在 CI 上生成 - 但由于没有 json
输出而无法正确合并。
本地,命令
dotnet test /p:CollectCoverage=true /p:Coverletoutput="../CoverageResults/" /p:MergeWith="../CoverageResults/coverage.json" /p:CoverletoutputFormat=\"opencover,json\" /maxcpucount:1
可能是什么问题,为什么它不适用于为 CI 指定的两种覆盖格式?最初我以为我不知道在 YAML 中转义引号,但这里似乎并非如此。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)