我遇到的问题是,由于某些原因,代码覆盖范围未在Sonar中显示。 执行单元测试的结果并正确显示,但不是代码覆盖的结果。该项目由詹金斯建立。我已按照某些线程中的建议注册了opencover.profiler.dll文件,但仍然没有结果。在执行构建时,我都没有在Jenkins中收到任何错误消息。
我会非常感谢有关该怎么做的任何提示。
最好的问候丹
答案 0 :(得分:2)
我认为这是因为您的Jenkins服务作为“本地系统帐户”运行,但Sonar正在使用-register:user开关运行OpenCover。您应该可以通过将Jenkins服务作为常规用户帐户运行来绕过此操作,或者修补Sonar-runner以省略-register:user开关。
答案 1 :(得分:0)
但事实证明,PDB文件导致了这些问题。它们被包含在存储库中,并且由于某种原因不能通过Jenkins中的构建重新创建。因此,PDB文件包含了实际代码文件的错误路径。
感谢您的帮助!
答案 2 :(得分:0)
检查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插件已经更新,但我还没有追求(想要首先确认这是导致问题的原因)。