github - SonarQube Github 插件没有写问题来拉取请求

标签 github sonarqube teamcity sonarqube-msbuild-runner

问题描述

我已经设置了我们的 CI 工具 (Teamcity),每次在 Github 中发出拉取请求时,都会对项目进行 SonarQube 预览分析。为了测试一切是否正常,我在提交拉取请求之前向代码库添加了一些问题。预览分析运行没有任何问题,拉取请求更新为摘要中的以下内容:

“sonarqube — SonarQube 未报告任何问题”

问题是我在代码库中引入的新问题都没有写成拉取请求的内联注释。

调试步骤和日志

我第二次运行预览分析,将 sonar.verbose 属性设置为 true 以将日志级别设置为 DEBUG。

我用来使用 Teamcity 的 MSBuild Runner 执行分析的命令如下:

MSBuild.SonarQube.Runner.exe begin /k:<project_key> /n:"<project_name>" /v:%build.number% /d:sonar.analysis.mode=preview /d:sonar.github.oauth="<personal_access_token>" /d:sonar.github.pullRequest="<hard_coded_PR_no>" /d:sonar.github.repository="<organization>/<repo_name>" /d:sonar.issuesReport.console.enable=true /d:sonar.verbose=true

当分析运行时,我可以从日志中看到问题被 SonarQube 发现(见下面的日志)。因此,post-job Github Pull Request Issue Publisher 似乎存在问题。以下是日志的摘录:
Working dir: D:\BuildAgent\work\<some_hash>\.sonarqube\out\.sonar
[08:57:01][Step 8/11] INFO: Source encoding: UTF-8, default locale: en_US
[08:57:01][Step 8/11] INFO: Sensor XmlFileSensor
[08:57:01][Step 8/11] INFO: Sensor XmlFileSensor (done) | time=0ms
[08:57:01][Step 8/11] INFO: Load server issues
[08:57:01][Step 8/11] INFO: Load server issues (done) | time=117ms
[08:57:01][Step 8/11] INFO: Performing issue tracking
[08:57:01][Step 8/11] INFO: 552/552 components tracked
[08:57:01][Step 8/11] INFO: Console report is deprecated. Use SonarLint CLI to have local reports of issues
[08:57:01][Step 8/11] INFO: 
[08:57:01][Step 8/11] 
[08:57:01][Step 8/11] -------------  Issues Report  -------------
[08:57:01][Step 8/11] 
[08:57:01][Step 8/11]        +15 issues
[08:57:01][Step 8/11] 
[08:57:01][Step 8/11]         +4 blocker
[08:57:01][Step 8/11]         +1 critical
[08:57:01][Step 8/11]        +10 major
[08:57:01][Step 8/11] 
[08:57:01][Step 8/11] -------------------------------------------
[08:57:01][Step 8/11] 
[08:57:01][Step 8/11] 
[08:57:01][Step 8/11] INFO: ANALYSIS SUCCESSFUL
[08:57:01][Step 8/11] INFO: Executing post-job GitHub Pull Request Issue Publisher
[08:57:02][Step 8/11] INFO: ------------------------------------------------------------------------
[08:57:02][Step 8/11] INFO: EXECUTION SUCCESS
[08:57:02][Step 8/11] INFO: ------------------------------------------------------------------------
[08:57:02][Step 8/11] INFO: Total time: 35.242s
[08:57:02][Step 8/11] INFO: Final Memory: 48M/172M
[08:57:02][Step 8/11] INFO: ------------------------------------------------------------------------
[08:57:03][Step 8/11] The SonarQube Scanner has finished
[08:57:03][Step 8/11] 08:57:03.022  Creating a summary markdown file...
[08:57:03][Step 8/11] 08:57:03.023  Analysis results: http://<sonarqube_server>/dashboard/index/<project_name>
[08:57:03][Step 8/11] Post-processing succeeded.
[08:57:03][Step 8/11] Process exited with code 0

Github 设置

我在我的用户上添加了一个个人访问 token ,该 token 被用作 sonar.github.oauth 属性的输入。我的用户拥有相关存储库的所有权限。该 token 已被赋予“public_repo”范围,以便能够根据 documentation 编写内联注释和更新拉取请求。 - 只有前者永远不会完成。

插件和工具的版本
  • SonarQube 5.6
  • C# 插件(版本 5.3.2)
  • MSBuild Runner 插件(1.1 版)
  • Github 插件(1.3 版)
  • TeamCity(版本 9.1.7)
  • Github Enterprise(2.7 版)

  • 我错过了什么?我还没有尝试过的一件事是创建一个专门的技术 Github 用户,而不是使用我自己的用户和个人访问 token 。这可能是导致问题的原因吗?

    最佳答案

    使用 TeamCity 和 SonarQube 设置 PR 集成时,我遇到了同样的问题。最后发现问题在于 TeamCity 如何提取源代码并将其复制到构建代理。

    确保已完成以下操作:

  • 在 VCS 高级设置下,确保 VCS checkout 模式设置为始终 checkout 代理上的文件。
  • 身份验证方法需要设置为密码。
  • 获取 URL 需要设置为 https 而不是 git。这是因为我们需要使用密码身份验证方法直接在构建代理上执行 git pull。
  • 确保未选中允许在默认分支中构建,并选中从其他分支排除默认分支更改。 (这不是必需的,但可以确保您不会构建除 PR 分支之外的任何内容。
  • JDK 8 安装在 TeamCity 构建代理上(确保在安装后重新启动构建代理)

  • 我不确定这是否会解决您的问题,但这对我们有用。

    关于github - SonarQube Github 插件没有写问题来拉取请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38802203/

    相关文章:

    html - 如何摆脱 github 托管网站上 header 中的顶部 float 。

    java - 为什么 SonarQube 在类序列化时给出 transient /私有(private)错误?

    Node.js 和 TeamCity

    docker - 可以登录到 docker-registry 但不能推送图像(github)

    meteor - 如何将 meteor 应用程序部署到 DigitalOcean

    xcode - 如何从 Xcode 8 上的先前提交中恢复?

    Hudson + Maven + Emma/Sonar = 构建周期运行 2 倍

    java - Sonarqube - 使用 Lombok @data 删除此未使用的私有(private)字段 Code Smell

    visual-studio - FSharp 构建在 MSBuild 中失败,但在 Visual Studio 中工作正常

    gradle - 如何仅限制安装了gradle的teamcity代理的构建?