使用SonarCloud分析拉取请求

Ham*_*med 6 c# github pull-request sonar-runner sonarqube

我想使用SonarQube来分析对我的项目进行的任何拉取请求(PR).

几点快点:

  • 我的项目是在Github上托管的,它是公共的,是用C#编写的,我正在使用Appveyor进行持续集成(CI);
  • 我使用SonarCloud(的公共实例SonarQube)代码质量检查,而且它已经做了出色的工作,分析内部的PR(即从主存储库时,减贫战略例如,合并dev分支master的分支);
  • 我希望这可以分析外部PR(即,我的项目的任意分叉的PR),这可以使用SonarQube Github插件 ;
  • 最重要的是:我不会将我的API密钥放在任何公共文件上,而Appveyor也不会在公共PR上暴露我的安全令牌.

鉴于这些要点,这就是我所做的:

  • 创建了一个机器人,并给了我对我的仓库的写入权限(如这里所解释的);
  • 在sonarcloud和under Administration -> Settings -> Pull Requests (Alpha),我设置Authentication token机器人的令牌,并Repository identifier<Organization>/<Repo>格式设置我的回购地址;
  • 更新appveyor.yml我的项目文件,以便对所有PR运行SonarQube分析; 类似如下:

build_script:
choco install "msbuild-sonarqube-runner" -y
MSBuild.SonarQube.Runner.exe begin /k:"REPO" /o:"ORGANIZATION" /d:"sonar.host.url=https://sonarcloud.io" /d:"sonar.analysis.mode=preview"
MSBuild.exe /t:Rebuild
MSBuild.SonarQube.Runner.exe end 
Run Code Online (Sandbox Code Playgroud)

但是,我仍然没有看到SonarQube使用机器人评论新的PR(类似于他们的演示.

Fab*_*eam 1

您尝试激活的功能尚未准备好使用 - 这就是它被命名为“Alpha”( Administration -> Settings -> Pull Requests (Alpha)) 的原因。

无论如何,即使此功能已准备就绪,虽然这将保护您的GitHub 令牌,因为您将仅将其保存在 SonarCloud 上(这很棒),但您仍然需要提供您的SonarCloud 令牌才能执行分析。由于您不想公开您的 SonarCloud 令牌,因此您将无法分析外部拉取请求。不幸的是,我们目前没有解决方案来解决这个限制。