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怎么管理项目权限 SonarQube项目权限继承关系怎么检查
在SonarQube里,项目权限这件事最容易被理解错的地方,不是按钮在哪里,而是“继承”到底指什么。按官方口径,项目创建时会先套用一套Permission Template,也就是模板默认权限;但模板套上去以后,项目和模板之间并不存在持续联动关系,后面你手工改项目权限、或者再去改模板,本来就不会自动互相跟着变。再加上SonarQube的项目权限本身又不是累加关系,所以很多人看到“模板明明给了权限,项目里却不对”,本质上往往是把“初始化套用”误当成了“持续继承”。
2026-04-29
SonarQube怎么做分支分析 SonarQube分支分析结果怎么和主干对比
很多团队把SonarQube接进流水线以后,主干分析通常很快就能跑起来,但一到分支分析,问题就会集中在两处。一处是不确定分支到底怎么建出来,另一处是不知道分支结果和主干该按什么口径去比。按SonarSource当前官方文档,分支分析从Developer Edition起才提供,分支是在分析时传入sonar.branch.name后创建出来的;而分支和主干的对比,本质上又不是靠手工看两份报告,而是靠Reference branch也就是参考分支,配合New Code口径去做差异判断。把这两层先分清,后面配置和看结果都会顺很多。
2026-04-29
SonarQube怎么查看安全热点 SonarQube安全热点状态怎么批量处理
很多人第一次用SonarQube看安全问题时,容易把普通Issues和Security Hotspots混在一起,结果一边找不到入口,一边又误以为安全热点也能像普通问题那样直接批量改状态。官方文档把这两类对象分得很清楚,Security Hotspots有独立页面和独立生命周期,查看和处理逻辑都不完全等同于普通Issues。
2026-04-29
SonarQube怎么定义新代码 SonarQube新代码周期怎么切换
很多团队在用SonarQube时,真正容易混淆的不是有没有New Code,而是“新代码到底从哪一天开始算”和“项目、分支、全局到底谁说了算”。SonarQube官方把这套逻辑定义得很清楚,New Code可以按Previous version、Number of days、Specific analysis、Reference branch四种方式来定义,而且配置有全局、项目、分支三层覆盖关系,分支级优先于项目级,项目级优先于全局级。
2026-04-29
SonarQube规则集怎么调整 SonarQube规则禁用后为何仍触发
在SonarQube里,所谓“规则集”对应的其实是Quality Profile,也就是按语言生效的一组启用规则。真正容易出问题的地方,通常不是不会点启用和禁用,而是项目绑错了Profile、子Profile继承了父Profile、改完以后没有重新分析,结果看起来像是“规则明明关了却还在触发”。官方文档也明确说明,问题是在分析时根据项目关联的Quality Profile被产生出来的。
2026-03-25
SonarQube覆盖率为0怎么排查 SonarQube覆盖率报告路径怎么填
SonarQube里覆盖率显示为0,很多时候不是测试根本没跑,而是覆盖率报告没有在扫描前生成、扫描器没找到文件、报告格式和参数名不匹配,或者报告里的路径和当前项目根目录对不上。官方文档写得很明确,SonarQube本身不会生成覆盖率报告,它只负责导入外部工具生成的报告,所以排查顺序一定要先看报告有没有生成,再看扫描器有没有正确读到。
2026-03-25

咨询热线 18015636924