【问题标题】:Read dotCover total coverage output from GitLab CI从 GitLab CI 读取 dotCover 总覆盖率输出
【发布时间】:2018-01-13 09:26:09
【问题描述】:

我将 dotCover 配置为从我们的 GitLab CI 服务器运行。 它正确运行测试,生成所需的输出,并且 CI 配置为将覆盖范围 HTML 输出存储在 GitLab 工件中。这完美无缺。

我要做的是从 dotCover.exe 控制台运行程序读取总覆盖率输出并在 gitlab CI 中解析它。我阅读了 dotCover documentation 但我没有找到将包含覆盖范围的行输出到控制台的方法。 Gitlab CI 只能从 ci 作业的 sdout 中读取覆盖率值,并将其与自定义正则表达式匹配。

这是我的config.xml

<?xml version="1.0" encoding="utf-8"?>
<AnalyseParams>
    <TargetExecutable>C:\NUnit\nunit3-console.exe</TargetExecutable>
    <TargetArguments>--agents=1 MyDll.Spec.dll MyDll2.Spec.dll</TargetArguments>
    <Output>cover/AppCoverageReport.html</Output>
    <ReportType>html</ReportType>
    <Scope>
        <ScopeEntry>MyApp\bin\x86\Release\net461\MyApp.*.dll</ScopeEntry>
        <ScopeEntry>MyApp\bin\x86\Release\net461\*.exe</ScopeEntry>
    </Scope>
    <Filters>
        <ExcludeFilters>
            <FilterEntry>
                <ModuleMask>*.Spec</ModuleMask>
            </FilterEntry>
        </ExcludeFilters>
    </Filters>
</AnalyseParams>

我用 .gitlab-ci.yml 运行它:

C:\dotCover\dotCover.exe analyse config.xml /TargetWorkingDir=.

有没有办法在 GitLab CI 中查看这个值?我错过了什么明显的东西吗?

谢谢

【问题讨论】:

  • 我对 jacoco 也有同样的问题。它还创建了一个包含覆盖文件的 HTML 文件,我用xmllint(在 Linux 下)对其进行了解析。我强烈建议在涉及 xml/html 时避免使用正则表达式。
  • @YanFoto 感谢您的输入,这个特殊的 HTML 很容易解析,总覆盖范围在 JS 部分的开头,所以我使用了一个非常简单的正则表达式:/= \[\["Total",\d+\.?\d+/,但我没有根本不喜欢这个解决方案。我会尝试使用更好的解析工具,dotCover 仅适用于 Windows。

标签: gitlab-ci dotcover


【解决方案1】:

我最终阅读了dotCover 的 HTML 输出文件并解析了输出。 幸运的是,总覆盖率位于输出文件的一个易于解析的部分。覆盖正则表达式是

'/= \[\["Total",\d+\.?\d+/'

这是我的最后一个.gitlab-ci.yml 文件(对于 Windows 运行器,dotCover 仅适用于 Windows):

my_job:
  # your job configuration
  # ...
  scripts:
    # build the solution here, ...
    - dotCover.exe analyse dotCover.xml /TargetWorkingDir=.
    - type cover\AppCoverageReport.html
  coverage: '/= \[\["Total",\d+\.?\d+/'

不是一个非常长期的解决方案,但它现在有效,至少在我更新 dotCover 之前。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-06-11
    • 1970-01-01
    • 1970-01-01
    • 2017-12-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多