2017-08-05 31 views
0

我配置了dotCover从我们的GitLab CI服务器运行。 它正确运行测试,生成所需的输出,并且配置CI以将覆盖HTML输出存储在GitLab构件中。这工作完美无瑕。读取来自GitLab CI的dotCover总覆盖率输出

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

这是我​​3210:

<?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这个值?我错过了明显的东西吗?

谢谢

+1

我和jacoco有同样的问题。它还创建了一个带有覆盖文件的HTML文件,我用'xmllint'(在Linux下)解析。强烈建议在xml/html时避免使用regexp。 –

+0

@YanFoto感谢您的输入,这个特定的HTML很容易解析,总的覆盖范围是在JS部分的开头,所以我使用了一个非常简单的正则表达式:'/ = \ [\ [“Total”,\ d + \ 。\ d + /',但我根本不喜欢这个解决方案。我会尝试更好的解析工具,'dotCover'是仅限Windows的。 – aghidini

回答

0

我结束了读书的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

相关问题