首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >声纳的TeamCity dotCover报告路径

声纳的TeamCity dotCover报告路径
EN

Stack Overflow用户
提问于 2012-11-01 12:02:37
回答 7查看 7.4K关注 0票数 12

我正在尝试将声纳分析集成到by TeamCity构建过程中。我有一个NUnit构建步骤,它运行我的单元测试,然后运行覆盖范围的dotCover。

我的下一步是声纳跑步器。当前存在的配置是;gallio.mode=dotCover,sonar.gallio.mode=reuseReport,但我还需要sonar.gallio.reports.path。

有人知道上一步生成的dotCover报告的路径吗?

EN

回答 7

Stack Overflow用户

回答已采纳

发布于 2012-11-02 18:08:00

我找不到使用内置的NUnit运行器来完成此任务的方法。通过使用powershell构建步骤手动调用所需的命令,我设法使其正常工作。

第一步是在dotCover封面呼叫中通过Gallio运行NUnit测试:

代码语言:javascript
复制
& dotCover cover `
/TargetExecutable="C:\Program Files\Gallio\bin\Gallio.Echo.exe" `
/TargetArguments="/report-type:XML /report-name-format:test-report /runner:IsolatedProcess /report-directory:.\Gallio .\Path\Test.dll" `
/Filters="+:WhatToCover" `
/Output=coverage.snapshot

然后,通过reuseReport,TeamCity自动检测测试结果,声纳可以拾取Gallio测试报告。

您可以通过将service message写入标准输出,让TeamCity直接处理覆盖率快照:

代码语言:javascript
复制
Write-Host "##teamcity[importData type='dotNetCoverage' tool='dotcover' path='coverage.snapshot']"

要将覆盖信息转换为声纳可用的格式,您需要使用dotCover report命令和undocumented report type TeamCityXML

代码语言:javascript
复制
& dotCover report /Source=coverage.snapshot /Output=coverage-report.xml /ReportType=TeamCityXML
票数 4
EN

Stack Overflow用户

发布于 2014-11-26 23:53:40

我花了一些时间在相同的问题上,但是随着更新的Sonar c#插件(v.2.3) - Gallio的支持已经被删除,但仍然需要报告。

为了直接回答这个问题,TeamCity将dotcover快照文件放入一个名为coverage_dotcover27574681205420364801.data (其中数字是随机的)的临时文件夹中。所以

具体步骤如下:

  1. 在Team City中创建一个测试和覆盖步骤之后,您可以使用命令行,如果您prefer

  1. 在临时文件夹中获取dotCover快照的完整名称
  2. 运行dotCover从快照生成超文本标记语言报告
    • 注意- Sonar (c# plugin v2.3)仅支持dotCover超文本标记语言Sonar

  1. 将生成的超文本标记语言报告传递给sonar

PowerShell脚本:

代码语言:javascript
复制
$snapshot = Get-ChildItem "%system.teamcity.build.tempDir%" `
     -Filter coverage_dotcover*.data `
     | select -ExpandProperty FullName -First 1

%teamcity.dotCover.home%\dotCover.exe report `
    /ReportType=HTML /Source="$snapshot" `
    /Output="%sonar.coverageReport%"

现在,您可以在sonnar runner中将报表指定为sonar.cs.dotcover.reportsPaths='%sonar.coverageReport%'

其中,%sonar.coverageReport%是TeamCity中定义的属性

票数 5
EN

Stack Overflow用户

发布于 2017-06-22 12:43:56

似乎TeamCity 2017不再创建coverage_dotcover*.data文件。相反,它会创建*.dcvr文件。

在创建报告之前,可能需要合并多个文件。因此,powershell需要更新。

因此,使用Oleksandr提供的步骤,只需将脚本更新为:

代码语言:javascript
复制
$snapshotfiles = Get-ChildItem "%system.teamcity.build.tempDir%" `
 -recurse -Filter *.dcvr `
 | select -ExpandProperty Name

$snapshots = $snapshotfiles -join ";"

%teamcity.dotCover.home%\dotCover.exe merge /Source=$snapshots 
/Output=dotcovermerge.dcvr

%teamcity.dotCover.home%\dotCover.exe report `
/ReportType=HTML /Source=dotcovermerge.dcvr `
/Output="%sonar.coverageReport%"

然后,可以将属性%sonar.coverageReport%传递给声音定位器扫描器。顺便说一句,你需要在TC中为%sonar.coverageReport%创建一个参数,例如"sonarcoverage.html“

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13170780

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档