2017-08-05 95 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

相關問題