【发布时间】:2015-10-26 12:33:13
【问题描述】:
我一直在尝试让SonarQube 使用一个简单的 dot net 应用程序。我已成功启动并运行它,但代码覆盖率不起作用。
当 SonarQube 停止支持许多“转到”覆盖工具(例如 DotCover and OpenCover via Gallio)时,看起来许多其他人都面临过这个问题
我遵循的示例是:
我尝试了一些 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>
甚至使用 XSLT 样式表提供了一个可供 SonarQube 运行器使用的样式表
<?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>
当我运行声纳时
- MSBuild.SonarQube.Runner.exe 开始
- MSBuild
- MSBuild.SonarQube.Runner.exe 结束
我收到类似 Caused By:
unknown XML Node, Expect Coverage 但 得到了结果
这是因为它不喜欢我的 XML 的结构,但我不确定预期的内容以及我必须对覆盖文件做多少工作才能将其转换为 Sonar 喜欢的格式
希望我走错了路,有一种简单的方法可以将 VS Coverage 或 coveragexml 文件集成到 Sonar 中而无需太多工作
关于我的
Sonar plugins的额外信息是
- c# = 4.1
- 通用覆盖率 = 1.1
【问题讨论】:
标签: sonarqube code-coverage mstest vstest