Программно преобразовать файл покрытия в coveragexml

#c# #code-coverage

#c# #code-покрытие

Вопрос:

Я использую Visual Studio для поиска покрытия кода. Я сгенерировал файл .coverage и могу открыть его в Visual Studio. Я хочу преобразовать его в файл .coveragexml. Я использую CoverageInfo, CoverageDS классы. Вот код, который я пытаюсь:

 CoverageInfo info = CoverageInfo.CreateFromFile(coverageFilePath, binaryPath,symbolPath);
CoverageDS dataSet = info.BuildDataSet();
dataSet.WriteXml(outfile);
 

Поскольку файл покрытия большой, вызов info.BuildDataSet выдает исключение нехватки памяти. Есть ли какой-либо альтернативный способ получить coveragexml?

Я ссылался на блог MSDN http://blogs.msdn.com/b/phuene/archive/2009/12/01/programmatic-coverage-analysis-in-visual-studio-2010.aspx в котором также упоминается этот случай. В этой статье упоминается об использовании ICoverageModule интерфейса для получения информации о модуле по модулю из CoverageInfo класса. Но как мне преобразовать информацию об этом модуле в XML? В блоге показан пример того, как информация о модуле может быть проанализирована и распечатана. Но я ищу преобразование этого в файл coveragexml.

Ответ №1:

Я столкнулся с тем же System.OutOfMemoryException при вызове CoverageInfo.BuildDataSet(...) . Чтобы обойти проблему, я изменил проект на 64-разрядное приложение, что позволяет процессу использовать гораздо больше памяти. Вам также потребуется ссылаться на 64-разрядные версии:

  • Microsoft.VisualStudio.Покрытие.Analysis.dll
  • Microsoft.VisualStudio.Покрытие.Interop.dll

Вы можете найти их в системе, в которой установлена TFS. Посмотрите C:Program FilesMicrosoft Team Foundation Server XX.0Application TierTFSJobAgentPlugins .

Ответ №2:

Вероятно, немного опоздал на вечеринку…

Но я создал инструмент dotnet для преобразования .coverage файлов в .coveragexml файлы для поддержки покрытия кода SonarCloud при использовании VSTest @ 2.

Смотрите эту ссылку для получения подробной информации: https://github.com/StefH/CoverageConverter