SonarQube Scanner for MSBuild on macOS using mono

SonarQube Scanner for MSBuild on macOS using mono

我正在尝试在 macOS 上使用单声道的 Xamarin 项目上使用 SonarQube Scanner for MSBuild。由于 MSBuild 15.0 现在随 Xamarin 一起提供,我认为这确实可行。

我可以像这样使用单声道成功 运行 扫描仪的 "begin":

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

在 运行ning 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 无法找到/访问这两个文件?有什么办法可以解决吗?

在与负责 MSBuild 的人员核实后,此 Github issue thread:

中提供了解决方案

引用 radical 在 Github 问题上的评论:

You could try building with csc by passing /p:CscToolExe=csc.exe /p:CscToolPath=/Library/Frameworks/Mono.framework/Versions/4.8.0/lib/mono/msbuild/15.0/bin/Roslyn/ to msbuild

不幸的是,即使 MSBuild 可以进行上述调整,SonarQube 之后也会失败。我将跟进 SonarQube 人员,看看是否可以解决这个问题。