SonarQube Scanner for Jenkins -SonarQube MSBuild 集成失败:SonarQube 无法收集有关您的项目的所需信息

SonarQube Scanner for Jenkins -The SonarQube MSBuild integration failed: SonarQube was unable to collect the required information about your projects

安装信息是...
sonarqube-6.7.1 |声纳扫描仪-3.0.3.778 |声纳扫描仪-msbuild-4.0.2.892|构建 14 | Java SE 开发套件 8 | .NET 框架 4.6.2

我制作了 windows 批处理文件来构建和扫描(声纳)。但有些项目还可以。但有些项目失败了。 批处理文件是...

step 1 . SonarQube Scanner for MSBuild - Begin Analysis

step 2 . call "C:\Program Files (x86)\Jenkins\workspace\CSS_SQ\trunk\Build\build.bat"

我们的 Build.bat 是定制的,我试过只使用 Build.bat 不包括 SonarQube,它工作正常。

step 3 . SonarQube Scanner for MSBuild - End Analysis

错误信息是...

C:\Program Files (x86)\Jenkins\workspace\CSS_SQ>退出 0 [CSS_SQ] $ "C:\Program Files(x86)\Jenkins\tools\hudson.plugins.sonar.MsBuildSQRunnerInstallation\SonarQube_Scanner_for_MSBuild\MSBuild.SonarQube.Runner.exe" 结束 /d:sonar.login=****** *********
适用于 MSBuild 4.0.2 的 SonarQube 扫描器
默认属性文件位于 C:\Program Files(x86)\Jenkins\tools\hudson.plugins.sonar.MsBuildSQRunnerInstallation\SonarQube_Scanner_for_MSBuild\SonarQube.Analysis.xml
从 C:\Program Files (x86)\Jenkins\tools\hudson.plugins.sonar.MsBuildSQRunnerInstallation\SonarQube_Scanner_for_MSBuild\SonarQube.Analysis.xml
加载分析属性 Post-处理开始。

The SonarQube MSBuild integration failed: SonarQube was unable to collect the required information about your projects. Possible causes:
1. The project has not been built - the project must be built in between the begin and end steps
2. An unsupported version of MSBuild has been used to build the project. Currently MSBuild 14.0 upwards are supported
3. The begin, build or end steps have not all been launched from the same folder

声纳属性文件生成失败。无法完成 SonarQube 分析。
14:36:16.988 创建摘要降价文件...
14:36:16.989 Post-处理失败。退出代码:1
错误:执行 MSBuild 的 SonarQube 扫描器失败(退出代码 1)
已完成:失败

关于可能的原因,我已经检查了1和2,它是正确的,但我不确定3。我猜测.sonarqube文件应该与.sln文件在同一个文件夹中,然后当我设置我需要在附加参数列中设置路径的批处理文件。但我找不到任何线索来设置它。是什么导致此错误消息?我该怎么办?

第三个选项意味着 "begin" 和 "end" 命令必须来自同一文件夹的 运行,例如运行执行命令时当前文件夹应该相同(如果在扫描仪命令之前执行cd,打印的路径应该相同)。

编辑: 这个特殊问题似乎是因为构建正在执行旧版本的 MSBuild。请确保您的分析版本中 运行 MSBuild 14 或 15。

较早的建议(仍然普遍有效)

我们刚刚调查了 这是由 Slave Agent 服务通过身份验证的用户引起的。要检查您的是否相同,运行 扫描仪的 begin 步骤 /d:sonar.verbose=true 并且在输出中您应该看到如下行:

12:34:56.479  Installed SonarQube.Integration.ImportBefore.targets to C:\...
12:34:56.482  Installed SonarQube.Integration.ImportBefore.targets to C:\...

如果末尾的路径是 C:\Windows 的子文件夹,那么您需要将 Jenkins 从属代理的 Windows 服务用户更改为域用户(而不是本地系统):