Coverlet 生成的 cover.cobertura.xml 文件名中的空源完整路径
它在我的大多数项目中工作正常,但我有一个 coverage.cobertura.xml
生成如下:
<?xml version="1.0" encoding="utf-8"?>
<coverage line-rate="1" branch-rate="0.8" version="1.9" timestamp="1648222473" lines-covered="17" lines-valid="17" branches-covered="8" branches-valid="10">
<sources>
<source>/</source>
</sources>
<packages>
<package name="LoggerService" line-rate="1" branch-rate="0.8" complexity="10">
<classes>
<class name="Tickett.ObjectRenderer" filename="builds/tickett_dlls/logger_service/LoggerService/ObjectRenderer.cs" line-rate="1" branch-rate="0.8" complexity="10">
而不是类似:
<?xml version="1.0" encoding="utf-8"?>
<coverage line-rate="1" branch-rate="0.8" version="1.9" timestamp="1648222473" lines-covered="17" lines-valid="17" branches-covered="8" branches-valid="10">
<sources>
<source>/builds/tickett_dlls/logger_service/</source>
</sources>
<packages>
<package name="LoggerService" line-rate="1" branch-rate="0.8" complexity="10">
<classes>
<class name="Tickett.ObjectRenderer" filename="LoggerService/ObjectRenderer.cs" line-rate="1" branch-rate="0.8" complexity="10">
我的命令看起来像:
dotnet test -v=normal /p:CollectCoverage=true --logger "junit;LogFilePath=TestOutput.xml" --collect:"XPlat Code Coverage
我已经比较了我能想到的所有内容但我无法弄清楚是什么导致了这种微妙的差异(我认为这导致 GitLab 无法解释该报告)
It works fine in most of my projects, but I have one where the coverage.cobertura.xml
is generating like:
<?xml version="1.0" encoding="utf-8"?>
<coverage line-rate="1" branch-rate="0.8" version="1.9" timestamp="1648222473" lines-covered="17" lines-valid="17" branches-covered="8" branches-valid="10">
<sources>
<source>/</source>
</sources>
<packages>
<package name="LoggerService" line-rate="1" branch-rate="0.8" complexity="10">
<classes>
<class name="Tickett.ObjectRenderer" filename="builds/tickett_dlls/logger_service/LoggerService/ObjectRenderer.cs" line-rate="1" branch-rate="0.8" complexity="10">
Instead of something like:
<?xml version="1.0" encoding="utf-8"?>
<coverage line-rate="1" branch-rate="0.8" version="1.9" timestamp="1648222473" lines-covered="17" lines-valid="17" branches-covered="8" branches-valid="10">
<sources>
<source>/builds/tickett_dlls/logger_service/</source>
</sources>
<packages>
<package name="LoggerService" line-rate="1" branch-rate="0.8" complexity="10">
<classes>
<class name="Tickett.ObjectRenderer" filename="LoggerService/ObjectRenderer.cs" line-rate="1" branch-rate="0.8" complexity="10">
My command looks like:
dotnet test -v=normal /p:CollectCoverage=true --logger "junit;LogFilePath=TestOutput.xml" --collect:"XPlat Code Coverage
I've compared everything I can think of but can't for the life of me figure out what's causing this subtle difference (which I think is causing GitLab not to be able to interpret the report)
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
我通过深入研究被单的来源弄清楚了这一点。我认为是这一行:
noreferrer " 我的项目只包含一个要分析的类,看起来确定基本路径的过程至少需要 2 个类。
我将:
我已向项目中的现有问题添加了注释,以了解它是否应该被视为错误以及我们是否/如何可能会改进它的处理方式(可能只允许参数/参数对
源
进行“硬编码”)。I figured it out by digging into the source of coverlet. I think it's this line:
https://github.com/coverlet-coverage/coverlet/blob/ebbf0424495de04e334beaabf626244fe9b80b06/src/coverlet.core/Reporters/CoberturaReporter.cs#L189
The tldr; my project only contains a single class to be analysed and it looks like the process of determining the base path requires at least 2 classes.
I will either:
sed
command after the report is generated to "fix it up"I have added a note to an existing issue in the project to see whether it should be considered a bug and if/how we might improve the way it's handled (potentially just allowing an argument/parameter to "hardcode" the
source
.