2016-11-04 93 views
1

我在Sonar没有报告在vNext构建期间正在分析的应用程序的代码覆盖率问题。 TFS和Sonar都在本地托管,我正在使用Sonar 6.0。我在这里环顾四周,没有看到任何有完全相同问题的帖子,所以我想我会张贴看看有没有人有任何想法。Sonar vNext:代码覆盖率未报告,但已发现覆盖文件

在构建过程中,会运行一个单元测试套件,它会生成一个trx文件,一个coverage文件和一个coveragexml文件。在声纳性能领域,我把它指向那些文件用于分析

/d:sonar.cs.vscoveragexml.reportsPaths="$(Common.TestResultsDirectory)\*.coveragexml" /d:sonar.cs.vstest.reportsPaths="$(Common.TestResultsDirectory)\*.trx" 

当生成日志来看,它在完成分析步骤拿起这两个文件:

2016-10-28T14:31:01.5800405Z 10:31:01.463 Attempting to locate a test results (.trx) file... 

2016-10-28T14:31:01.5800405Z 10:31:01.463 Located a test results file: E:\agent\_work\24\TestResults\tfsbuildagent_BUILD1 2016-10-28 10_30_52.trx 

2016-10-28T14:31:15.7254549Z INFO: Parsing the Visual Studio coverage XML report E:\agent\_work\24\TestResults\tfsbuildagent_BUILD1 2016-10-28 10_30_52\In\BUILD1\tfsbuildagent_BUILD1 2016-10-28 10_30_38.coveragexml 

2016-10-28T14:31:15.9254749Z INFO: Adding this code coverage report to the cache for later reuse: E:\agent\_work\24\TestResults\tfsbuildagent_BUILD1 2016-10-28 10_30_52\In\BUILD1\tfsbuildagent_BUILD1 2016-10-28 10_30_38.coveragexml 

但是,当您在Sonar中查看应用程序时,没有显示代码覆盖范围。我可以打开coveragexml文件,看起来确实有覆盖数据。我还让应用工程师在运行测试套件后向我展示了视觉工作室的覆盖率结果,并且确实报道了覆盖率。我只是无法弄清楚为什么这些数据没有被翻译成Sonar。

这也提出了一个问题:Sonar如何使用测试结果文件和覆盖率XML文件中的数据?它是直接从这些文件中获取数据并仅将这些数字作为其结果的一部分,还是将这些数据和数据的组合用于分析代码以计算最终统计数据?我从来没有能够在网上找到明确的答案,甚至没有在Sonar的网站上找到答案。我觉得对这个过程有更好的理解也有助于解决这个问题。

无论如何,如果任何人都可以提供任何洞察,可能为什么Sonar没有拿起覆盖率文件中的数据,我真的很感激。如果您需要任何其他信息,请告诉我。

+0

我也遇到过这个问题。我目前正在寻找解决它自己,所以如果我知道我会让你知道。 –

+0

你有没有设法解决这个问题?我仍然在自己挣扎。我确实发现了一个关于Sonars Jira的错误报告,提到了覆盖范围的问题,但是提到的解决方案对我来说没有什么不同。我想我会分享给你无论如何,以防万一它可以帮助你:https://jira.sonarsource.com/browse/SONARMSBRU-262 –

+1

感谢您的链接。我会给它一个镜头。自从我上次发布以来,我甚至没有机会看这个。如果我弄明白了,我会用解决方案更新帖子。 –

回答

1

我能够解决未报告的覆盖问题,但它可能是特定于我的情况,我仍然不确定为什么这可以解决问题。

作为构建过程的一部分,我必须为这些特定的应用程序构建2个解决方案。其中一个解决方案包含一个测试项目,但另一个不包含。看起来这两个项目正在建设中,只有一个项目正在进行测试。

我检查,以确保一个构建的输出不覆盖另一个以及它不是。

解决的办法是创建一个单独的vNext构建,其具体目的是向Sonar报告,并只构建主要解决方案并运行其测试套件。他们的测试套件只能达到与主要解决方案相关的代码,所以在这种情况下,这对开发人员来说工作得很好。

相关问题