SonarQube MSBuild runner和scm root

时间:2017-03-30 11:50:11

标签: msbuild sonarqube

美好的一天 今天我设置了sonarqube与ms build runner和mercurial scm提供程序 我有下一个存储库结构(原理图):

<ROOT>
-.hg
-src
----prj.infrastructure 
----prj.domain
----prj.application
----prj.sln

我使用next命令进行运行分析:

"%env.SonarMsBuildRunner%\MSBuild.SonarQube.Runner" begin /n:prj /k:prj /v:1.0
"%env.MsBuildLocation%\msbuild" src\prj.sln /p:Configuration=Debug
"%env.SonarMsBuildRunner%\msbuild.sonarqube.runner" end

所有分析都运行良好,但scm不起作用(我看到消息如&#34;缺少以下文件的责备信息:&#34;)

当我看到生成的sonar-project.properties时,我看到问题出现在projectBaseDir中 - 它为解决方案中的每个项目单独生成

我尝试在命令行中指定如/d:sonar.projectBaseDir = ...但没有更改 - 它完全被忽略

所以我的问题是 - 我可以使用ms build runner和scm provider以及我的存储库结构吗?

更新1 我awas在我的脚本中添加了详细的标志.. 现在我用下一个命令运行分析:

MSBuild.SonarQube.Runner begin /n:projectName /k:projectKey /v:1.0 /d:sonar.scm.enabled=true /d:sonar.scm.provider=hg /d:sonar.projectBaseDir=d:\work\project1 /d:sonar.verbose=true
msbuild project1\src\solution.sln /p:Configuration=Debug
msbuild.sonarqube.runner end

在日志中我可以看到这样的消息:

[14:18:20] :     [Step 4/4] 14:18:20.403 DEBUG: Working directory: D:\work\project1\src\
[14:18:20] :     [Step 4/4] 14:18:20.416 DEBUG: Executing: hg blame -w -v --user --date --changeset API/AssignmentsController.cs
[14:18:20] :     [Step 4/4] 14:18:20.423 DEBUG: Executing: hg blame -w -v --user --date --changeset API/Commands/ImportCommand.cs
[14:18:20] :     [Step 4/4] 14:18:20.424 DEBUG: Executing: hg blame -w -v --user --date --changeset API/Dto/Assignment.cs
[14:18:20] :     [Step 4/4] 14:18:20.600 DEBUG: The mercurial blame command [hg blame -w -v --user --date --changeset API/AssignmentsController.cs] failed: abort: no repository found in 'D:\work\project1\src\' (.hg not found)!
[14:18:20] :     [Step 4/4] 

这是正确的 - 在文件夹d:\ work \ project1 \ src no .hg目录中,因为它位于d:\ work \ project1

UPDATE2

好吧,最后我找到了比我的错误...在构建机器文件夹.hg由于某些原因错过...

1 个答案:

答案 0 :(得分:1)

这是SonarQube Mercurial Plugin的限制。它目前希望在basedir中准确找到.hg文件夹。其他插件,如SVN,其中updated在父文件夹中递归查找。

我们不再积极开发Mercurial插件,但可以随意提交拉取请求以解决问题。

作为一种变通方法,您可以在开始步骤中使用/d:sonar.scm.provider=hg强制执行SCM。