.net Sonar vNext:未报告代码覆盖率,但找到覆盖率文件

.net Sonar vNext:未报告代码覆盖率,但找到覆盖率文件,.net,sonarqube,sonarqube-scan,.net,Sonarqube,Sonarqube Scan,我遇到了一个问题,Sonar没有报告在vNext构建期间正在分析的应用程序的代码覆盖率。TFS和Sonar都托管在prem上,我使用的是Sonar 6.0。我环顾了一下这里,没有看到任何帖子有完全相同的问题,所以我想我会发帖子看看是否有人有任何想法 在构建过程中,运行单元测试套件,生成一个trx文件、一个覆盖率文件和一个覆盖率XML文件。在sonar properties字段中,我将其指向那些用于分析的文件 /d:sonar.cs.vscoveragexml.reportsPaths="$(C

我遇到了一个问题,Sonar没有报告在vNext构建期间正在分析的应用程序的代码覆盖率。TFS和Sonar都托管在prem上,我使用的是Sonar 6.0。我环顾了一下这里,没有看到任何帖子有完全相同的问题,所以我想我会发帖子看看是否有人有任何想法

在构建过程中,运行单元测试套件,生成一个trx文件、一个覆盖率文件和一个覆盖率XML文件。在sonar properties字段中,我将其指向那些用于分析的文件

 /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

但是当你在Sonar中查看应用程序时,没有显示代码覆盖范围。我可以打开coveragexml文件,看起来里面确实有覆盖率数据。我还让应用程序的工程师在运行测试套件后在VisualStudio中向我显示覆盖率结果,并且肯定会报告覆盖率。我只是不明白为什么这些数据没有被转换成声纳

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


无论如何,如果有人能提供任何关于为什么Sonar没有收集覆盖范围文件中的数据的见解,我将非常感谢。如果您需要任何其他信息,请让我知道。

我能够解决未报告保险范围的问题,但这可能是针对我的情况,我仍然不确定为什么会解决此问题

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

我检查以确保一个构建的输出没有覆盖另一个构建,也没有


修复方法是创建一个单独的vNext构建,其特定目的是向Sonar报告,并且只构建主要解决方案并运行其测试套件。他们的测试套件只涉及与主要解决方案相关的代码,因此在这种情况下,这对开发人员来说很好。

我能够解决未报告覆盖率的问题,但这可能是针对我的情况的,我仍然不确定为什么会解决这个问题

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

我检查以确保一个构建的输出没有覆盖另一个构建,也没有


修复方法是创建一个单独的vNext构建,其特定目的是向Sonar报告,并且只构建主要解决方案并运行其测试套件。他们的测试套件只涉及与主要解决方案相关的代码,因此在这种情况下,这对开发人员来说很好。

我知道这个问题很老,但我刚刚遇到了类似的问题,也许有人会碰到这个线程,这可能会有所帮助

问题不在于声纳,而在于vstest和.netcore的代码覆盖率问题。覆盖率文件是空的,这就是为什么它没有被提取出来进行分析

要解决此问题,您需要向所有csproj文件(包括测试和产品)中添加以下代码段:

 <PropertyGroup>
    <TargetFramework>netcoreapp1.1</TargetFramework> 
    <!-- Required in both test/product projects. This is a temporary workaround for https://github.com/microsoft/vstest/issues/800 -->
    <DebugType>pdbonly</DebugType>
  </PropertyGroup>

netcoreapp1.1
pdbonly
根据:应该是固定的,但对此有不同的看法


此外,我需要将解决方案中的所有项目设置为x64,因为在runsettings中,我有
x64
我知道这个问题很老,但我刚刚遇到了类似的问题,也许有人会碰到这个线程,这可能会有所帮助

问题不在于声纳,而在于vstest和.netcore的代码覆盖率问题。覆盖率文件是空的,这就是为什么它没有被提取出来进行分析

要解决此问题,您需要向所有csproj文件(包括测试和产品)中添加以下代码段:

 <PropertyGroup>
    <TargetFramework>netcoreapp1.1</TargetFramework> 
    <!-- Required in both test/product projects. This is a temporary workaround for https://github.com/microsoft/vstest/issues/800 -->
    <DebugType>pdbonly</DebugType>
  </PropertyGroup>

netcoreapp1.1
pdbonly
根据:应该是固定的,但对此有不同的看法


此外,我需要将解决方案中的所有项目设置为x64,因为在runsettings中我遇到了
x64

这个问题。我现在想自己解决这个问题,所以如果我找到答案,我会让你知道。你有没有找到答案?我自己还在努力。我确实发现了一份关于声纳Jira的bug报告,其中提到了覆盖范围的问题,但提到的解决方案对我来说没有任何影响。我想无论如何我都会和你分享它,以防万一它对你有帮助:谢谢你的链接。我要试一试。自从我上一次发布以来,我甚至没有机会看到这个。如果我弄明白了,我会用解决方案更新帖子。快速更新:我尝试了链接建议的方法,但我已经使用路径$(Common.TestResultsDirectory),所以没有任何更改。是的,我也发现了这个问题,但我想这可能值得你尝试一下:)我也遇到了这个问题。我现在想自己解决这个问题,所以如果我找到答案,我会让你知道。你有没有找到答案?我自己还在努力。我确实在声纳Jira上发现了一个bug报告,其中提到了覆盖范围的问题,但提到的解决方案对他们没有任何影响