SonarQube Scanner для MSBuild на macOS с использованием моно

Я пытаюсь использовать SonarQube Scanner для MSBuild в проекте Xamarin на macOS с использованием mono. Поскольку MSBuild 15.0 теперь поставляется с Xamarin, я решил, что это может сработать.

Я могу успешно запустить "начало" сканера, используя моно, например:

mono sonar-scanner-msbuild-2/SonarQube.Scanner.MSBuild.exe begin /k:"KEY"

Команда создает следующие файлы:

.sonarqube/conf/SonarQubeAnalysisConfig.xml
.sonarqube/conf/SonarQubeRoslyn-cs.ruleset
.sonarqube/conf/cs/SonarLint.xml

Перед запуском MSBuild я добавил следующий импорт в файлы csproj моего решения:

<Import Project="/Users/someuser/.local/share/Microsoft/MSBuild/14.0/Microsoft.Common.targets/ImportBefore/SonarQube.Integration.ImportBefore.targets" />

Я использую MSBuild, используя:

msbuild /t:Rebuild

Теперь сборка начинается правильно, но в итоге завершается с двумя ошибками:

"/Users/someuser/Project/Project.sln" (Rebuild target) (1) ->
"/Users/someuser/Project/Project.UI.iOS/Project.UI.iOS.csproj" (Rebuild target) (2) ->
"/Users/someuser/Project/Project.Core/Project.Core.csproj" (default target) (3:3) ->
(CoreCompile target) ->
  CSC : error CS2001: Source file `/additionalfile:/Users/someuser/Project/.sonarqube/conf/cs/SonarLint.xml' could not be found [/Users/someuser/Project/Project.Core/Project.Core.csproj]
  CSC : error CS2001: Source file `/additionalfile:/Users/someuser/Project/.sonarqube/conf/Project.Core_AnyCPU_Debug_1267/ProjectOutFolderPath.txt' could not be found [/Users/someuser/Project/Project.Core/Project.Core.csproj]

Оба файла существуют в файловой системе, первый файл был создан в начале вызова сканера, а второй файл был создан во время выполнения MSBuild.

Почему MSBuild не сможет найти / получить доступ к этим двум файлам? Есть ли что-нибудь, что можно с этим сделать?

1 ответ

Решение

После проверки с людьми, заботящимися о MSBuild, решение было предоставлено в этой теме Github:

Чтобы процитировать комментарий радикала из выпуска Github:

Вы можете попробовать собрать с помощью csc, передав /p:CscToolExe=csc.exe /p:CscToolPath=/Library/Frameworks/Mono.framework/Versions/4.8.0/lib/mono/msbuild/15.0/bin/Roslyn/ в msbuild

К сожалению, даже несмотря на то, что MSBuild работает с вышеуказанными настройками, SonarQube не работает впоследствии. Я свяжусь с людьми из SonarQube, чтобы посмотреть, можно ли обойти это.

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