Использование 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 не будут импортированы.
Пожалуйста, дайте мне знать, если это работает!