Coverlet 生成的 cover.cobertura.xml 文件名中的空源完整路径

发布于 2025-01-17 12:33:22 字数 1538 浏览 5 评论 0原文

它在我的大多数项目中工作正常,但我有一个 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

还在原地等你 2025-01-24 12:33:22

我通过深入研究被单的来源弄清楚了这一点。我认为是这一行:

noreferrer " 我的项目只包含一个要分析的类,看起来确定基本路径的过程至少需要 2 个类。

我将:

  • 从测试覆盖范围中删除当前对其中一个类的排除,
  • 将当前正在分析的唯一类一分为二;或者
  • 在生成报告后添加一个简单的 sed 命令来“修复它”

我已向项目中的现有问题添加了注释,以了解它是否应该被视为错误以及我们是否/如何可能会改进它的处理方式(可能只允许参数/参数对进行“硬编码”)。

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:

  • remove an exclusion I currently have in place for one of the classes from test coverage
  • split the only class currently being analysed in two; or
  • add a simple 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.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文