我正在尝试在使用mono的macOS上的Xamarin项目上使用SonarQube Scanner for MSBuild。由于MSBuild 15.0现在随Xamarin一起提供,我认为这实际上可行。
我可以使用单声道成功运行扫描仪的“开始”,如下所示:
.sonarqube/conf/SonarQubeAnalysisConfig.xml
.sonarqube/conf/SonarQubeRoslyn-cs.ruleset
.sonarqube/conf/cs/SonarLint.xml
该命令创建以下文件:
<Import Project="/Users/someuser/.local/share/Microsoft/MSBuild/14.0/Microsoft.Common.targets/ImportBefore/SonarQube.Integration.ImportBefore.targets" />
在运行MSBuild之前,我已将以下导入添加到我的解决方案的csproj文件中:
msbuild /t:Rebuild
我正在使用:
运行MSBuild"/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]
现在构建正确启动但最终以两个错误终止:
{{1}}
两个文件都存在于文件系统中,第一个文件是在扫描程序的开始调用中创建的,第二个文件是在MSBuild执行期间创建的。
为什么MSBuild无法找到/访问这两个文件?有什么可以做的吗?
答案 0 :(得分:0)
在与负责MSBuild的人员核实后,此Github issue thread已提供解决方案:
引用Github问题的激进评论:
您可以通过传递/p:CscToolExe=csc.exe /p:CscToolPath=/Library/Frameworks/Mono.framework/Versions/4.8.0/lib/mono/msbuild/15.0/bin/Roslyn尝试使用csc构建/到msbuild
不幸的是,即使MSBuild使用上述调整,SonarQube也会失败。我将跟进SonarQube人员,看看是否可以解决这个问题。