我的问题是,由于某种原因,Sonar 中没有显示代码覆盖率。单元测试的结果已正确执行并显示,但不是代码覆盖的结果。该项目由 Jenkins 构建。我已经按照某些线程中的建议注册了 opencover.profiler.dll 文件,但我仍然没有得到任何结果。执行构建时,我在 Jenkins 中都没有收到任何错误消息。
我将不胜感激有关该做什么的任何提示。
最好的问候丹
我认为发生这种情况是因为您的 Jenkins 服务作为“本地系统帐户”运行,但 Sonar 运行 OpenCover 时使用了 -register:user 开关。您应该能够通过将 Jenkins 服务作为普通用户帐户运行来绕过此问题,或者修补 Sonar-runner 以省略 -register:user 开关。
然而,事实证明是 PDB 文件导致了这些问题。它们包含在存储库中,并且由于某种原因没有被 Jenkins 中的构建重新创建。因此,PDB 文件包含实际代码文件的错误路径。
谢谢您的帮助!
检查 OpenCover 和 Gallio 插件之间的版本冲突。
我发现 OPenCover 的更高版本(从版本 4.0.1229 开始)在 coverage-report.xml 文件中插入了一个新标签 - Gallio 插件无法理解。当我回滚到旧版本的 OpenCover (4.0.804) 时,覆盖范围再次起作用。您可以在http://sonar.15.n6.nabble.com/coverage-report-xml-is-generated-but-sonar-says-coverage-is-0-td5008850.html上找到更多详细信息
看起来Gallio插件已经更新了,但我还没有追求过(想先确认这是问题的原因)。