Использование Sonar MSBuild Runner с /p:IsPackaging=True

У меня есть определение сборки Visual Studio Team Services, содержащее задачу сборки Visual Studio, окруженную задачами Sonar Begin Analysis и End Analysis. Visual Studio Build упаковывает размещенную надстройку поставщика SharePoint с помощью свойства /p:IsPackaging=True. Если это свойство установлено, я получаю следующую ошибку от Sonar Build Runner:

2015-11-27T13:23:05.9534586Z WARNING: Duplicate project GUID: "31ef7995-fdbc-4307-9024-a3d640fdf987". 
Check that the project is only being built for a single platform/configuration and that that 
the project guid is unique. The project will not be analyzed by SonarQube. 

Конечно, я мог бы сначала построить решение без /p:IsPackaging=True и выполнить анализ этого, а на втором шаге выполнить упаковку, но это кажется пустой тратой ресурсов, чтобы дважды создавать решения.

Любая идея, как я могу упаковать надстройку, размещенную в поставщике SharePoint и использовать ту же задачу для анализа кода с Sonar?

Используемая версия сонара - 5.1.2. И версия MSBuild.SonarQube.Runner, используемая задачей VSTS, - 1.0.1.

1 ответ

Решение

Извиняюсь за ответ с такой большой задержкой!

Я посмотрел на это, и кажется, что цели SharePoint msbuild вызывают дважды цель "Сборка" - один раз часть обычной сборки и один раз часть процесса упаковки. Чтобы анализ SonarQube отслеживал все артефакты сборки, мы ввели некоторую логику, которая зависит от задачи Build, и теперь эта логика вызывается дважды, и вы получаете проблему "Duplicate project GUID".

Вот обходной путь, который я попробовал на простом проекте SharePoint - сохранить фактическую сборку и упаковку как отдельные шаги. Таким образом, ваше определение сборки будет:

  • SonarQube Begin
  • MSBuild (без / p: IsPackaging = true)
  • SonarQube End
  • MSBuild your_SP_project.csproj /t: пакет

Обратите внимание, что второй вызов msbuild необходимо выполнить в вашем проекте sharepoint - вызов /t: пакет в решении не будет работать, поскольку цели SharePoint не будут импортированы.

Пожалуйста, дайте мне знать, если это работает!

Другие вопросы по тегам