无法通过 SonarQube 与 TFS 2012 构建集成来分析多个 VS 解决方案

Cannot analyze multple VS Solutions via SonarQube integrated with TFS 2012 build

我按照 "SonarQube Setup Guide for .NET Users" (http://redirect.sonarsource.com/doc/sq-setup-guide-for-dotnet-users.html) 上的说明设置了 SonarQube 5.1.2 服务器并与 TFS 2012 集成。尽管文档描述了如何将 SonarQube 与 TFS 2013 集成 XAML 构建和 TFS 2015 构建 vNext,我能够将它与 TFS 2012 XAML 构建在某种程度上集成。以下是 TFS 2012 XAML.

中的步骤顺序
  1. 调用InvokeProcess构建activity(WorkingDirecotry设置为包含要编译的VS Solution文件的目录如C:\Builds\...\ClassLibrary3调用MSBuild.SonarQube.Runner.exe begin ...(MSBuild SonarQube Runner版本1.0.1 )
  2. 调用Microsoft MSBuild activity编译1个或多个VS解决方案如C:\Builds\...\ClassLibrary3\ClassLibrary3.sln
  3. 调用 InvokeProcess 构建 activity(将 WorkingDirecotry 设置为包含先前编译的 VS 解决方案文件的目录)调用 MSBuild.SonarQube.Runner.exe end

问题是即使编译了多个VS Solution,我也只能分析一个编译好的VS Solution。这是因为调用MSBuild.SonarQube.Runner.exeMSBuild时工作目录必须相同。 MSBuild activity 的工作目录设置为 VS 解决方案文件所在的位置,但对于编译的每个 VS 解决方案都会有所不同,但 MSBuild.SonarQube.Runner.exe 只能指定一个工作目录。有没有办法分析多个 VS 解决方案?我认为没有办法更改 MSBuild activity 的工作目录吗?谢谢

最好的方法是在 SonarQube 中为您的每个解决方案创建一个项目,并使用 Portfolio Management 插件(商业)在服务器端执行所有这些项目的聚合以提供全局。参见 http://www.sonarsource.com/products/plugins/governance/portfolio-management/ & on Nemo how it integrates all Apache projects for example: http://nemo.sonarqube.org/dashboard/index?id=Apache

另一种方法是制作一个 *.proj 文件,其中将包含所有其他要构建的项目。

我不推荐的另一种方法是为您构建的每个解决方案调用 MSBuild.SonarQube.Runner 开始,然后将每个 .sonarqube\out 文件夹的内容电影化到一个文件夹中(将其聚合) ),然后从该位置调用 MSBuild.SonarQube.Runner end。

另一种方法是升级到 TFS 2015,并检查其 MSBuild 任务的行为方式。