无法通过 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.
中的步骤顺序
- 调用InvokeProcess构建activity(WorkingDirecotry设置为包含要编译的VS Solution文件的目录如
C:\Builds\...\ClassLibrary3
调用MSBuild.SonarQube.Runner.exe begin ...
(MSBuild SonarQube Runner版本1.0.1 )
- 调用Microsoft MSBuild activity编译1个或多个VS解决方案如
C:\Builds\...\ClassLibrary3\ClassLibrary3.sln
- 调用 InvokeProcess 构建 activity(将 WorkingDirecotry 设置为包含先前编译的 VS 解决方案文件的目录)调用
MSBuild.SonarQube.Runner.exe end
问题是即使编译了多个VS Solution,我也只能分析一个编译好的VS Solution。这是因为调用MSBuild.SonarQube.Runner.exe
和MSBuild
时工作目录必须相同。 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 任务的行为方式。
我按照 "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.
中的步骤顺序- 调用InvokeProcess构建activity(WorkingDirecotry设置为包含要编译的VS Solution文件的目录如
C:\Builds\...\ClassLibrary3
调用MSBuild.SonarQube.Runner.exe begin ...
(MSBuild SonarQube Runner版本1.0.1 ) - 调用Microsoft MSBuild activity编译1个或多个VS解决方案如
C:\Builds\...\ClassLibrary3\ClassLibrary3.sln
- 调用 InvokeProcess 构建 activity(将 WorkingDirecotry 设置为包含先前编译的 VS 解决方案文件的目录)调用
MSBuild.SonarQube.Runner.exe end
问题是即使编译了多个VS Solution,我也只能分析一个编译好的VS Solution。这是因为调用MSBuild.SonarQube.Runner.exe
和MSBuild
时工作目录必须相同。 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 任务的行为方式。