Покрытие теста SonarQube с MsTest
Я пытался получить SonarQube
работа с простым приложением dot net. У меня был некоторый успех в его запуске, но покрытие кода не работает.
похоже, что многие другие люди столкнулись с этой проблемой, когда SonarQube прекратил поддержку многих инструментов покрытия "перейти к", таких как DotCover and OpenCover
via Галлио
примеры, которым я следовал:
я попробовал несколько инструментов командной строки VS для создания
vstest.console.exe .UnitTestProject1binDebugUnitTestProject1.dll /EnableCodeCoverage
и
CodeCoverage.exe collect /output:DynamicCodeCoverage.coverage .UnitTestProject1binDebugUnitTestProject1.dll
и написал какой-то код, чтобы скрыть его в С здесь
To получите следующий XML:
<?xml version="1.0" standalone="yes"?>
<CoverageDSPriv>
<Module>
<ModuleName>unittestproject1.dll</ModuleName>
<ImageSize>32768</ImageSize>
<ImageLinkTime>0</ImageLinkTime>
<LinesCovered>12</LinesCovered>
<LinesPartiallyCovered>0</LinesPartiallyCovered>
<LinesNotCovered>0</LinesNotCovered>
<BlocksCovered>9</BlocksCovered>
<BlocksNotCovered>0</BlocksNotCovered>
<NamespaceTable>
<BlocksCovered>9</BlocksCovered>
<BlocksNotCovered>0</BlocksNotCovered>
<LinesCovered>12</LinesCovered>
<LinesNotCovered>0</LinesNotCovered>
и даже используется XSLT stylesheet обеспечивают в одном, который может быть использован SonarQube runner
<?xml version="1.0" encoding="utf-8"?>
<results>
<modules>
<module name="unittestproject1.dll" path="unittestproject1.dll" block_coverage="100" line_coverage="100" blocks_covered="9" blocks_not_covered="0" lines_covered="12" lines_partially_covered="0" lines_not_covered="0">
<functions>
<function name="Setup" type_name="UnitTest1" block_coverage="100" line_coverage="100" blocks_covered="1" blocks_not_covered="0" lines_covered="2" lines_partially_covered="0" lines_not_covered="0">
<ranges>
<range source_id="1" covered="yes" start_line="13" start_column="9" end_line="13" end_column="10" />
<range source_id="1" covered="yes" start_line="15" start_column="9" end_line="15" end_column="10" />
</ranges>
</function>
когда я запускаю Сонар
- MSBuild.SonarQube.Бегун.exe начать
- MSBuild
- MSBuild.SonarQube.Бегун.ехе конец
Я получаю ошибки, вызванные:
unknown XML Node
, ожидал покрытие но полученный результаты
это потому, что его не нравится структура моего XML, но я не уверен, что ожидает и сколько работы мне нужно сделать над файлом покрытия, чтобы преобразовать его в формат, который нравится Sonar
надеюсь, я шел по неправильному пути, и есть простой способ интегрировать покрытие VS или coveragexml
файлы в Сонар без слишком много работы
дополнительная информация о my
Sonar plugins
are
- c# = 4.1
- Общее Покрытие = 1.1
1 ответов
отчеты OpenCover и dotCover поддерживаются плагином C# 4.1. Установите sonar.cs.dotcover.reportsPaths
или sonar.cs.opencover.reportsPaths
свойство соответственно для обоих инструментов для импорта покрытия кода.
Gallio не совсем инструмент перехода: проект неактивен с 2013 года. Основная проблема с плагином SonarQube C# 2.плагин x, который полагался на Gallio, заключается в том, что он запускал Gallio сам по себе, не позволяя конечному пользователю настраивать, как должны быть запущены тесты и покрытие собранный.
теперь ситуация намного проще: Запустите свой любимый инструмент покрытия кода, попросите его создать отчет и передать его в MSBuild SonarQube Runner.
если вы используете Team Foundation Server 2013, включение покрытия кода - это выбор Enable Code Coverage
опция в определении сборки.
теперь, это очень прискорбно и запутанно, что Microsoft имеет два различных .coveragexml
форматы, и что плагин SonarQube C# поддерживает только один из них (то есть пока. см.http://jira.sonarsource.com/browse/SONARNTEST-3).
ожидая, что билет будет исправлен, вот шаги, чтобы произвести ожидаемое .coveragexml
отчет (Примечание: замените 14
by 12
в различных путях, если вы используете VS 2013 вместо 2015):
MSBuild.SonarQube.Runner begin /k:SonarQube_Project_Key /n:SonarQube_Project_Name /v:1.0 /d:sonar.cs.vscoveragexml.reportsPaths=%CD%\VisualStudio.coveragexml
msbuild
"C:\Program Files (x86)\Microsoft Visual Studio 14.0\Team Tools\Dynamic Code Coverage Tools\CodeCoverage.exe" collect /output:VisualStudio.coverage "C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\IDE\CommonExtensions\Microsoft\TestWindow\vstest.console.exe" "UnitTestProject1\bin\Debug\UnitTestProject1.dll"
"C:\Program Files (x86)\Microsoft Visual Studio 14.0\Team Tools\Dynamic Code Coverage Tools\CodeCoverage.exe" analyze /output:VisualStudio.coveragexml VisualStudio.coverage
MSBuild.SonarQube.Runner end
Я бы не рекомендуется использовать XSLTs для преобразования форматов отчетов покрытия кода, используйте CodeCoverage.exe
Microsoft tool вместо этого.