SonarQube中文网站 > 使用技巧 > SonarQube怎么做分支分析 SonarQube分支分析结果怎么和主干对比

SonarQube怎么做分支分析 SonarQube分支分析结果怎么和主干对比

发布时间:2026-04-30 07: 33: 00

很多团队把SonarQube接进流水线以后,主干分析通常很快就能跑起来,但一到分支分析,问题就会集中在两处。一处是不确定分支到底怎么建出来,另一处是不知道分支结果和主干该按什么口径去比。按SonarSource当前官方文档,分支分析从Developer Edition起才提供,分支是在分析时传入sonar.branch.name后创建出来的;而分支和主干的对比,本质上又不是靠手工看两份报告,而是靠Reference branch也就是参考分支,配合New Code口径去做差异判断。把这两层先分清,后面配置和看结果都会顺很多。

一、SonarQube怎么做分支分析

SonarQube怎么做分支分析,先不要一上来就在界面里找“新建分支”按钮。官方口径里,分支不是在项目页面手工建出来的,而是在分析阶段由扫描参数或CI自动识别出来的。

1、先确认版本是否支持

官方文档写得很明确,Branch analysis从Developer Edition开始提供。也就是说,如果你现在用的是Community线,主干分析可以做,但多分支分析这条线本身就不是当前版本的标准能力。

2、把分析步骤放进多分支CI

官方对设置步骤的第一条要求,就是把analysis step放进多分支流水线里。换句话说,分支分析不是单独在SonarQube里补跑一遍,而是要让Jenkins、GitLab CI、GitHub Actions这类CI在分支推送时也执行扫描。

3、分析时把分支名带进去

官方文档说明,分支是在传入sonar.branch.name时创建出来的,这个参数表示当前分析对应的分支名。部分CI可以自动识别分支参数,但如果你的流水线没有自动识别,就要手工把这个参数加进去。

4、主干名要和代码仓一致

SonarSource官方还特别提醒过,如果SonarQube里的main branch名称和代码仓里的真实主干名不一致,后续分支历史和对比结果会容易错位。更稳的做法,是先到Project Settings里的Branches and Pull Requests,把主干名改成和仓库一致。

5、分支代码必须真实检出

官方设置文档里还强调了一点,就是被分析的分支必须在CI工作区里被正确checkout。因为后面的分支识别和New Code判断都会依赖当前检出的源码和SCM信息,如果流水线只拉了主干快照,分支分析结果自然不准。

二、SonarQube分支分析结果怎么和主干对比

SonarQube分支分析结果怎么和主干对比,真正关键的不是把两个分支页面并排看,而是先把分支的参考对象定成主干。官方文档对这一点写得很清楚,Reference branch模式下,当前被分析分支会和选定的参考分支做比较,所有差异都会被视为New Code。

1、先把主干设成Reference branch

官方对New Code的说明里明确写到,Reference branch选项可在项目级和分支级使用,适合feature branch场景。你把主干设成参考分支以后,当前分支相对主干的差异就会被识别为新代码。

2、也可以在分析时临时指定主干

除了在界面里配置,官方还提供了sonar.newCode.referenceBranch这个分析参数。文档说明,这个参数会把本次分析的New Code定义临时改成Reference Branch,并按你给出的分支名去比。对某些需要按流水线动态切换对比对象的项目,这条更灵活。

3、对比时重点看New Code,不要只看Overall Code

官方文档已经把结果展示口径说得很清楚,Overview页面和Measures面板都会把New Code和Overall Code分开显示。你如果是想判断某个功能分支相对主干新增了多少问题、覆盖率有没有掉,重点应该看New Code那一层,而不是直接拿全量指标去比。

4、Issues页面可以直接切到新代码问题

SonarSource官方说明,Issues页面有Issues in new code过滤项,可以快速在新代码问题和整体问题之间切换。所以分支和主干做差异审查时,比较实用的做法不是全量翻问题,而是先切到新代码视图,再看当前分支相对主干到底新增了什么。

5、Quality Gate看的是当前分支是否可合并

官方Quality Gate文档写到,质量门状态会出现在主干、其他分支和Pull Request的结果页上,而且条件既可以定义在New Code,也可以定义在Overall Code。对分支场景来说,更有价值的通常是New Code条件,因为它更接近“这次分支改动能不能过门”的判断。

三、SonarQube分支口径怎么定

真正让分支分析长期稳定的,不是参数会不会写,而是主干、参考分支和新代码口径有没有先统一。只要这三层没定住,后面同一个分支今天和主干比、明天又和develop比,结果一定会越来越乱。

1、主干名称一开始就统一

官方已经明确提示,修改main branch会影响后续分析归属,所以项目一开始就要确定SonarQube里的主干到底对应仓库里的main、master还是develop。名称统一之后,分支历史和比较关系才不容易漂。

2、功能分支统一都对比同一条主干

如果团队是标准feature branch流程,就尽量让feature分支统一都拿主干做Reference branch,不要有人拿main比,有人又拿release比。官方把Reference branch定位成New Code的对比基准,这个基准越统一,分支结果越容易横向比较。

3、分支分析和PR分析不要混用

官方把branch analysis和pull request analysis分开建模,前者主要覆盖持续存在的分支,后者则是合并前校验。实际使用时,长期分支用sonar.branch.name,PR流程则走sonar.pullrequest相关参数,两套口径不要混在一起。

4、CI里最好显式传分支参数

官方在维护分支的文档里专门提醒过,如果分析时不显式传sonar.branch.name,结果默认会落到当前项目的main branch上。为了避免改主干或CI识别异常时把分析打错位置,更稳的做法是让流水线明确传递分支名。

总结

SonarQube怎么做分支分析,核心不是在界面里手工建分支,而是把分析步骤放进多分支CI,并在分析时通过sonar.branch.name或CI自动识别把分支创建出来。SonarQube分支分析结果怎么和主干对比,关键也不是手工对两份报告,而是把主干设成Reference branch,再围绕New Code、Issues in new code和分支Quality Gate去看差异。只要把主干名称、参考分支和分析参数这三层先统一,SonarQube的分支分析通常就会顺很多。

展开阅读全文

标签:

读者也访问过这里:
SonarQube
从一开始就生成高质量的代码
立即购买
最新文章
SonarQube Webhook怎么配置 SonarQube Webhook推送失败怎么排查
SonarQube Webhook的配置,和推送失败时的排查,重点并不只是填进去一个回调地址就完成了,而是要去确认这个地址,能够被SonarQube的服务器正常访问到,并且接收的那一端,也能够正确地识别出推送过来的内容。Webhook这个东西,通常是用来把扫描完成、质量门禁的状态这一类结果,推送给Jenkins、GitLab、企业微信、钉钉,或者是公司内部的平台。SonarQube它支持项目这一级,和全局这一级的Webhook配置,项目级的,是可以在项目的设置里面去配,全局级的,则是可以在系统的管理里面去配。
2026-06-30
SonarQube新代码周期怎么设置 SonarQube新代码周期影响门禁结果怎么看
SonarQube新代码周期的设置,以及新代码周期对门禁结果的影响,是很多团队在配置质量门禁时容易忽略的问题。新代码周期并不是一个单纯的日期设置,它决定了哪些代码会被SonarQube当作“新增或修改的代码”来评估。如果质量门禁主要看的是新代码指标,那么新代码周期的设置一旦不同,同一份代码的门禁结果,也就可能会跟着不同。在SonarQube里面,新代码的定义可以按照全局、项目,或者是分支的层级来进行配置,而且它会影响到新代码问题,以及相关质量指标的计算。
2026-06-30
SonarQube安全热点怎么审查 SonarQube安全热点状态怎么同步
SonarQube安全热点的审查,以及安全热点状态的同步,是安全扫描被接入研发流程以后,经常会碰到的问题。安全热点并不是已经被确认的漏洞,它是在提示这一段代码涉及到了安全方面比较敏感的逻辑,需要由开发人员,或者是安全人员,去进一步做出判断。在SonarQube的文档里面,也明确地把安全热点和漏洞区分了开来:安全热点需要经过人工的审查以后,再去判断是不是要进行修复;而漏洞通常代表的是已经影响到应用安全,应当被优先去修复的问题。所以,在处理安全热点的时候,不能只是看它的数量有多少,也不能简单地就把它一键关掉。
2026-06-30
SonarQube项目权限怎么设置 SonarQube项目权限导致成员看不到代码怎么办
SonarQube项目权限的设置,和因为权限问题导致成员看不到代码的处理,需要先分清楚项目到底是Public还是Private。公开的项目,一般来说更容易被访问到,私有的项目,则需要明确地去给用户,或者用户组进行授权。在SonarQube的官方说明里面,私有项目是需要去配置Browse Project和See Source Code这些权限的;如果要查看项目的结构和代码,私有项目的用户,就需要同时具备Browse和See Source Code这两项权限。
2026-06-30
SonarQube怎么管理项目权限 SonarQube项目权限继承关系怎么检查
在SonarQube里,项目权限这件事最容易被理解错的地方,不是按钮在哪里,而是“继承”到底指什么。按官方口径,项目创建时会先套用一套Permission Template,也就是模板默认权限;但模板套上去以后,项目和模板之间并不存在持续联动关系,后面你手工改项目权限、或者再去改模板,本来就不会自动互相跟着变。再加上SonarQube的项目权限本身又不是累加关系,所以很多人看到“模板明明给了权限,项目里却不对”,本质上往往是把“初始化套用”误当成了“持续继承”。
2026-04-29
SonarQube怎么做分支分析 SonarQube分支分析结果怎么和主干对比
很多团队把SonarQube接进流水线以后,主干分析通常很快就能跑起来,但一到分支分析,问题就会集中在两处。一处是不确定分支到底怎么建出来,另一处是不知道分支结果和主干该按什么口径去比。按SonarSource当前官方文档,分支分析从Developer Edition起才提供,分支是在分析时传入sonar.branch.name后创建出来的;而分支和主干的对比,本质上又不是靠手工看两份报告,而是靠Reference branch也就是参考分支,配合New Code口径去做差异判断。把这两层先分清,后面配置和看结果都会顺很多。
2026-04-29

咨询热线 18015636924