【问题标题】:SonarQube MSBuild runner and scm rootSonarQube MSBuild 运行器和 scm 根
【发布时间】:2017-08-24 07:58:46
【问题描述】:

美好的一天 今天我用 ms build runner 和 mercurial scm provider 设置了 sonarqube 我有下一个存储库结构(示意图):

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

我使用下一个命令进行运行分析:

"%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 不起作用(我看到类似“缺少以下文件的责任信息:”这样的消息)

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

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

所以我的问题是 - 我可以将 ms build runner 和 scm 提供程序与我的存储库结构一起使用吗?

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

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 中没有 .hg 目录,因为它位于 d:\work\project1

更新2

好的,最后我发现我的错误...在构建机器文件夹上 .hg 因某些原因丢失...

【问题讨论】:

  • 您的项目在哪里? SonarQube 根项目 baseDir 被计算为您的解决方案引用的所有项目的共同祖先。
  • 在每个 prj.* 位于 csproj 文件 foreach 模块中,我还找到了有关共同祖先的信息,但在生成的 .properties 文件中我可以看到 basedir 设置为 src\prj.infrastructure, src\prj .domain 等等...但事件共同祖先不是我的情况的答案 - 因为共同祖先是 src,而 .hg 目录位于 src 的父级...

标签: msbuild sonarqube


【解决方案1】:

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

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

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

【讨论】:

  • 我已经将此参数添加到命令中,但我收到“缺少以下文件的责任信息:”消息...
  • 完整的分析日志(/d:sonar.verbose=true)会有所帮助
猜你喜欢
  • 2015-10-21
  • 2015-11-18
  • 2017-03-22
  • 2017-01-05
  • 2016-05-09
  • 1970-01-01
  • 2015-08-09
  • 2017-03-24
  • 1970-01-01
相关资源
最近更新 更多