2015-09-04 139 views
0

我被要求将另一个项目(C#)集成到SonarQube中。我们使用TFS 2013,SonarQube 5.1.2和Sonar.MSBuild.Runner 1.0。 构建过程模板是旧的(不支持预发布和后发布的Powershell脚本)并且它是自定义的。 Visual Studio 2013无法编辑旧的构建过程模板。运行没有TFS构建的SonarQube?

我试着只做静态代码分析,并用start参数运行MSBuild.SonarQube.Runner,第二次运行结束参数而不在两者之间进行构建(代码覆盖率对他们来说并不重要) 。但后来我得到错误"No ProjectInfo.xml files were found. Check that the analysis targets are referenced by the MSBuild projects being build"?

我有什么选择将此项目集成到SonarQube?

+0

您对构建控制器/代理程序有何种版本的TFS? – ds19

+0

这也是TFS 2013. – tobre

回答

1

要在命令行中使用的MSBuild SonarQube亚军,你必须:

  1. 准备环境:MSBuild.SonarQube.Runner.exe begin /k:SQ_project_key /n:SQ_project_name /v:SQ_project_version(接任意SonarQube项目的关键,名称和版本)
  2. 运行构建:msbuild
  3. 上传分析结果:MSBuild.SonarQube.Runner.exe end

的MSBuild的SonarQube亚军与MSBuild的集成,并在收集因为它构建了您的项目:您必须在beginend调用期间运行构建,否则此强制性信息将不可用,并且MSBuild SonarQube Runner将失败并显示您报告的消息。 MSBuild集成与MSBuild版本4.0,12和14兼容。

关于与TFS XAML构建的集成,如果您使用的是自定义构件,则必须对其进行自定义以便将调用集成到MSBuild SonarQube Runner的命令beginend

使用默认构建定义模板在TFS 2013上支持代码覆盖率,您只需运行启用覆盖率的测试即可。如果这不适用于您,请参阅以下链接以了解如何手动传递代码覆盖率结果路径属性:http://docs.sonarqube.org/x/CoBh

+0

msbuild如何知道运行SonarQube.Integration.targets? – WiSeeker

+0

在'MSBuild.SonarQube.Runer.exe开始'期间,引导程序'.targets'文件被部署到一个特殊的MSBuild'ImportsBefore'文件夹中,请参阅https://github.com/SonarSource/sonar-msbuild-runner/blob/ 1.1/SonarQube.TeamBuild.PreProcessor/TargetsInstaller.cs - 如果引导文件“.targets”存在于当前目录的“.sonarqube”子文件夹中,它将包含“SonarQube.Integration.targets”文件。请参阅https://github.com/SonarSource/sonar-msbuild-runner/blob/1.1/SonarQube.MSBuild.Tasks/Targets/SonarQube.Integration.ImportBefore.targets –

+0

如果由于某些原因需要自定义,请另外发布问题任何这样的逻辑:我们不希望发生这种情况,并且几乎在每个版本中都会对这些目标文件进行更改。改变它们将会使你更难以在将来更新版本,所以如果还不是这样的话,那么你的使用案例可能会被覆盖。 –