Прочтите вывод полного покрытия dotCover из GitLab CI

Я настроил dotCover для запуска с нашего сервера GitLab CI. Он правильно запускает тесты, выдает требуемый вывод, а CI настроен для хранения вывода HTML-кода покрытия в артефактах GitLab. Это работает безупречно.

Что я пытаюсь сделать, так это прочитать общий вывод покрытия от средства запуска консоли dotCover.exe и проанализировать его в gitlab CI. Я прочитал документацию dotCover, но не нашел способа вывести строку содержащий покрытие для консоли. Gitlab CI может только считывать значения покрытия из sdout задания ci, сопоставляя его с настраиваемым регулярным выражением.

Это мой 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? Я упускаю что-то очевидное?

Спасибо


person aghidini    schedule 05.08.2017    source источник
comment
У меня была такая же проблема с жакоко. Он также создал HTML-файл с файлами покрытия, который я проанализировал с помощью xmllint (под Linux). Я настоятельно рекомендую избегать регулярных выражений, когда дело касается xml / html.   -  person Yan Foto    schedule 06.08.2017
comment
@YanFoto Спасибо за ваш вклад, этот конкретный HTML-код легко анализировать, полное покрытие указано в начале в разделе JS, поэтому я использовал очень простое регулярное выражение: /= \[\["Total",\d+\.?\d+/, но мне это решение совсем не нравится. Я попробую использовать более качественный инструмент синтаксического анализа, dotCover только для Windows.   -  person aghidini    schedule 06.08.2017


Ответы (1)


В итоге я прочитал выходной HTML-файл dotCover и проанализировал его. К счастью, полное покрытие находится в легко анализируемой части выходного файла. Регулярное выражение покрытия

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

Это мой последний .gitlab-ci.yml файл (для Windows runner 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.

person aghidini    schedule 07.08.2017