gpt4 book ai didi

MsTest 的 SonarQube 测试覆盖率

转载 作者:行者123 更新时间:2023-12-02 09:14:02 30 4
gpt4 key购买 nike

我一直在尝试让 SonarQube 使用一个简单的点网应用程序。我已经成功地启动并运行了它,但代码覆盖率不起作用。

当 SonarQube 通过 Gallio 停止支持许多“go to”覆盖工具(例如 DotCover 和 OpenCover)时,似乎许多其他人也遇到了这个问题。

Examples which I have followed are:

我尝试了一些 VS 命令行工具来生成 .coverage 文件

vstest.console.exe .\UnitTestProject1\bin\Debug\UnitTestProject1.dll /EnableCodeCoverage

CodeCoverage.exe collect /output:DynamicCodeCoverage.coverage .\UnitTestProject1\bin\Debug\UnitTestProject1.dll

并编写了一些代码,例如将其转换为 here 中的 .coveragexml 文件。

获取以下 XML:

<?xml version="1.0" standalone="yes"?>
<CoverageDSPriv>
<Module>
<ModuleName>unittestproject1.dll</ModuleName>
<ImageSize>32768</ImageSize>
<ImageLinkTime>0</ImageLinkTime>
<LinesCovered>12</LinesCovered>
<LinesPartiallyCovered>0</LinesPartiallyCovered>
<LinesNotCovered>0</LinesNotCovered>
<BlocksCovered>9</BlocksCovered>
<BlocksNotCovered>0</BlocksNotCovered>
<NamespaceTable>
<BlocksCovered>9</BlocksCovered>
<BlocksNotCovered>0</BlocksNotCovered>
<LinesCovered>12</LinesCovered>
<LinesNotCovered>0</LinesNotCovered>

甚至还提供了可供 SonarQube 运行程序使用的 XSLT 样式表

<?xml version="1.0" encoding="utf-8"?>
<results>
<modules>
<module name="unittestproject1.dll" path="unittestproject1.dll" block_coverage="100" line_coverage="100" blocks_covered="9" blocks_not_covered="0" lines_covered="12" lines_partially_covered="0" lines_not_covered="0">
<functions>
<function name="Setup" type_name="UnitTest1" block_coverage="100" line_coverage="100" blocks_covered="1" blocks_not_covered="0" lines_covered="2" lines_partially_covered="0" lines_not_covered="0">
<ranges>
<range source_id="1" covered="yes" start_line="13" start_column="9" end_line="13" end_column="10" />
<range source_id="1" covered="yes" start_line="15" start_column="9" end_line="15" end_column="10" />
</ranges>
</function>

when I run Sonar

  1. MSBuild.SonarQube.Runner.exe Begin
  2. MSBuild
  3. MSBuild.SonarQube.Runner.exe end

I get errors like Caused By: unknown XML Node, Expect Coverage but got Results

这是因为它不喜欢我的 XML 结构,但我不确定会发生什么,以及我需要对覆盖文件做多少工作才能将其转换为 Sonar 喜欢的格式

希望我走错了路,有一种简单的方法可以将 VS Coverage 或 coveragexml 文件集成到 Sonar 中,而无需太多工作

Extra Information on my Sonar plugins are

  1. c# = 4.1
  2. Generic Coverage = 1.1

最佳答案

C# 4.1 插件支持 OpenCover 和 dotCover 报告。分别为这两个工具设置 sonar.cs.dotcover.reportsPathssonar.cs.opencover.reportsPaths 属性以导入代码覆盖率。

Gallio 并不完全是首选工具:该项目自 2013 年以来一直处于非事件状态。依赖于 Gallio 的 SonarQube C# Plugin 2.x 插件的主要问题是它自行启动 Gallio - 不允许结束 -用户自定义如何启动测试和收集覆盖率。

现在情况容易多了:启动您最喜欢的代码覆盖率工具,要求它生成报告,并将其提供给 MSBuild SonarQube Runner。

如果您使用的是 Team Foundation Server 2013,则启用代码覆盖率就像在生成定义中选择启用代码覆盖率 选项一样。

现在,非常不幸和令人困惑的是,Microsoft 有两种不同的 .coveragexml 格式,并且 SonarQube C# 插件仅支持其中一种(即,目前。请参阅 http://jira.sonarsource.com/browse/SONARNTEST-3 ) .

在等待该票证修复时,以下是生成预期 .coveragexml 报告的步骤(注意:将 14 替换为 12) > 如果您使用 VS 2013 而不是 2015,则在各个路径中):

  1. MSBuild.SonarQube.Runner 开始/k:SonarQube_Project_Key/n:SonarQube_Project_Name/v:1.0/d:sonar.cs.vscoveragexml.reportsPaths=%CD%\VisualStudio.coveragexml
  2. msbuild
  3. “C:\Program Files (x86)\Microsoft Visual Studio 14.0\Team Tools\Dynamic Code Coverage Tools\CodeCoverage.exe”collect/output:VisualStudio.coverage“C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\IDE\CommonExtensions\Microsoft\TestWindow\vstest.console.exe""UnitTestProject1\bin\Debug\UnitTestProject1.dll"
  4. “C:\Program Files (x86)\Microsoft Visual Studio 14.0\Team Tools\Dynamic Code Coverage Tools\CodeCoverage.exe”分析/output:VisualStudio.coveragexml VisualStudio.coverage
  5. MSBuild.SonarQube.Runner 结束

我不建议使用 XSLT 来转换代码覆盖率报告格式,而是使用 CodeCoverage.exe Microsoft 工具。

关于MsTest 的 SonarQube 测试覆盖率,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31803605/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com