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

时间:2015-10-26 22:25:50

标签: msbuild sonarqube tfs2012

我按照" SonarQube安装指南(针对.NET用户)和#34; (http://redirect.sonarsource.com/doc/sq-setup-guide-for-dotnet-users.html)设置SonarQube 5.1.2服务器并与TFS 2012集成。尽管该文档描述了如何将SonarQube与TFS 2013 XAML构建和TFS 2015 Build vNext集成,但我能够将其与TFS进行某种程度的集成。 2012年XAML构建。以下是TFS 2012 XAML中的一系列步骤。

  1. 调用InvokeProcess构建活动(将WorkingDirecotry设置为包含要编译的VS解决方案文件的目录,例如MSBuild.SonarQube.Runner.exe begin ...以调用C:\Builds\...\ClassLibrary3\ClassLibrary3.sln(MSBuild SonarQube Runner版本1.0.1)
  2. 调用Microsoft MSBuild活动以编译一个或多个VS解决方案,例如MSBuild.SonarQube.Runner.exe end
  3. 调用InvokeProcess构建活动(将WorkingDirecotry设置为包含先前编译的VS解决方案文件的目录)以调用MSBuild.SonarQube.Runner.exe
  4. 问题是即使编译了多个VS解决方案,我也只能分析一个已编译的VS解决方案。这是因为调用MSBuildMSBuild.SonarQube.Runner.exe时工作目录必须相同。 MSBuild活动的工作目录设置为VS解决方案文件所在的位置,但每个VS解决方案编译后都会有所不同,但{{1}}只能指定一个工作目录。有没有办法分析多个VS解决方案?我认为没有办法改变MSBuild活动的工作目录吗? THX。

1 个答案:

答案 0 :(得分:0)

最好的方法是在SonarQube中为每个解决方案安装一个项目,并使用Portfolio Management插件(商业)在服务器端执行所有这些项目的聚合,以提供全局。见http://www.sonarsource.com/products/plugins/governance/portfolio-management/&在Nemo上如何集成所有Apache项目,例如:http://nemo.sonarqube.org/dashboard/index?id=Apache

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

另一种我不建议的方法是为您构建的每个解决方案调用MSBuild.SonarQube.Runner,然后将每个.sonarqube\out文件夹的内容电影转换为单个文件夹(聚合它),并从该位置调用MSBuild.SonarQube.Runner结束。

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