<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由于某些原因错过...答案 0 :(得分:1)
这是SonarQube Mercurial Plugin的限制。它目前希望在basedir中准确找到.hg文件夹。其他插件,如SVN,其中updated在父文件夹中递归查找。
我们不再积极开发Mercurial插件,但可以随意提交拉取请求以解决问题。
作为一种变通方法,您可以在开始步骤中使用/d:sonar.scm.provider=hg
强制执行SCM。