xamarin - SonarQube 扫描仪适用于 macOS 上的 MSBuild,使用 mono

标签 xamarin msbuild mono sonarqube-msbuild-runner

我正在尝试使用 Mono 在 macOS 上的 Xamarin 项目上使用 SonarQube Scanner for MSBuild。由于 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 无法找到/访问这两个文件?有什么办法可以解决吗?

最佳答案

与负责 MSBuild 的人员核实后,此解决方案已在 Github issue thread 中提供。 :

引用来自 Github 问题的 Radial 评论:

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 人员跟进,看看是否可以解决这个问题。

关于xamarin - SonarQube 扫描仪适用于 macOS 上的 MSBuild,使用 mono,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42613757/

相关文章:

iOS 分享扩展如何支持 *.wav 文件

msbuild - 使用 MSBuild 覆盖属性

.net - 让 .NET Framework 项目引用 .NET Standard 程序集需要什么?

encoding - Elasticsearch将变音符号显示为 “??”

Android 调试器错误 (MonoDroid)

c# - 如何使用 C# 在 xamarin android 中将字节数组转换为 pdf?

msbuild - WiX热: Pre-build event fires too early on build server

c - 从另一个进程中加载​​的 dylib 读取数据字段

android - 如何在 JNI 中从 C# 将参数传递给 Java 方法

c# - PCL 的单元测试 - LINQ 方法失败