☰
在AngusGit合并请求里怎么看代码安全扫描结果
2026/11/2 11:15:22 网站建设 项目流程

这篇讲拉取请求上的安全检查结果怎么看,每一句说明是什么意思。看完你可以在状态检查里读AngusSecurity这一行是成功还是失败,再点打开仓安全详情,看是哪个文件或哪条依赖有问题。

下面以仓库xlliu/e2e-license-gate的拉取请求 #1 为例。#1 的AngusSecurity现在是成功,说明文字是「提交 1f78310a 的漏洞门禁与许可证门禁均已通过」。这里的「门禁」指达到条件就拦住合并的规则:漏洞门禁按漏洞数量判断,许可证门禁按依赖使用的开源许可证判断。拉取请求里只显示这一句结论,明细都在仓库安全详情页。

安全检查在团队版、企业版和云服务中提供,并且需要先接入 AngusSecurity。下面只查看已有的扫描结果,不需要点开始扫描,也不需要修改发现的处置状态。

1. 结论在哪里

打开拉取请求后,停留在对话页签,页面中部有一张状态检查卡片。状态检查汇总了拉取请求上的各项自动检查,每一项占一行,显示进行中、成功或失败;安全检查这一项的名称是AngusSecurity。

和其他检查相比,AngusSecurity这一行多了两样内容:

  • 名称下面的说明文字,写的是这次判定的原因。
  • 右侧的打开仓安全详情,点击后进入这个仓库的安全详情页。

以 #1 为例,它的标题是e2e GIT-08 pending gate,已经从e2e-git08合并进main,页面地址是https://git.anguskit.com/pulls/xlliu/e2e-license-gate/1。

同一仓库里已经合并的 #4 显示的是另一句成功文案:「提交 d3ebc5ab 的漏洞门禁已通过」。它少了许可证门禁,是因为 #4 的检查采用的是后来一次跳过了许可证检查的扫描。这两种成功文案,下一节的表格里都有解释。

2. 每种状态是什么意思

徽章上的进行中、成功、失败只表示检查状态,同一个徽章可能对应好几种原因,所以要看说明文字才能分清。下表列出了产品里的原句,其中{8 位}表示提交号的前 8 位,{n}表示数量:

徽章说明文字含义
进行中等待对提交 {8 位} 的安全检查这个提交还没有检查任务
进行中提交 {8 位} 的安全检查进行中任务在排队或正在扫描
进行中提交 {8 位} 的检查结果不完整,请重新检查扫描结果不完整,需要重新扫描
进行中还没有可检查的提交拉取请求上还没有提交号
失败提交 {8 位} 的安全检查失败,请重新检查扫描任务本身执行失败
失败漏洞门禁未通过:严重 {n}、高危 {n}、中危 {n}、低危 {n}漏洞数量达到仓库设定的阈值
失败许可证门禁未通过许可证门禁已开启,这次许可证检查没通过
失败许可证门禁已启用,但这次检查没有包含许可证合规许可证门禁已开启,但这次扫描没查许可证
成功提交 {8 位} 的漏洞门禁已通过漏洞未达阈值,许可证门禁没参与判定
成功提交 {8 位} 的漏洞门禁与许可证门禁均已通过两道门禁都通过,#1 就是这一句

结合这个仓库,还有几点需要说明:

  • 结论只采用这个提交最新一次已完成的扫描。如果往源分支推送了新提交,还没合并的拉取请求会回到「等待对提交 … 的安全检查」,不会沿用上一个提交的结论。
  • 漏洞阈值按优先级取值:仓库自己设置了就用仓库的;仓库没设置就用租户默认值;租户也没设置时,默认是高危。以本仓库为例,租户默认是低危,但e2e-license-gate自己设成了高危,所以按高危判定。阈值是高危时只统计严重和高危两级,即使中危、低危的数量不为 0,这一行仍可能显示成功。
  • 代码质量的结果不参与这一行的判定。
  • 示例里的 #1、#4 都显示成功,但仓库概览上仍写着「许可证门禁未通过,拒绝合并」,原因是仓库里还留着一条处于开放状态的GPL-3.0-only许可证发现。已经合并的拉取请求,检查行不会因为后来出现的发现而自动改写。

3. 点进去看具体问题

点打开仓安全详情,会进入仓库安全详情页,地址是https://git.anguskit.com/security/repos/xlliu/e2e-license-gate,默认显示概览。以这个仓库为例,分数是 95,严重、高危、中危、低危、密钥、质量的数量都是 0,许可风险是 1。

详情页的页签依次是概览、漏洞、依赖、密钥、许可合规、代码质量、扫描历史、设置。这个仓库当前开放的发现都在许可合规页签里,共两条:高危的GPL-3.0-only,类别是强互惠;低危的MIT,类别是宽松。许可证类别描述的是使用条件的松紧:强互惠许可证(如 GPL)要求分发软件时,把相关代码也按同样的许可证公开;宽松许可证(如 MIT)基本只要求保留版权声明,闭源产品也可以使用。

点开高危的那一条,会弹出一个详情抽屉(从页面侧边滑出的面板),里面包括:

  • 位置:package.json,组件是e2e-with-gpl@1.0.0。
  • 许可证:GPL-3.0-only,类别是强互惠。
  • 描述:Declared by project manifest,意思是这个许可证由项目清单文件声明。
  • 分支 / 提交:e2e-git07 @591d671。
  • 处置状态:开放。处置状态用来记录团队对这条发现的处理结论,可选值还有已知悉、已修复、已抑制、误报。每次修改都会留下处置记录,所以只是查看结果时,保持开放即可。
  • 两个入口:在代码中查看和在安全台打开。

    修复版本只在发现本身带有可升级的版本时才出现,一般只有依赖漏洞才有;这条是许可证发现,所以抽屉里没有修复版本。如果打开的是密钥类发现,页面会提示「密钥类 Finding 默认不展示明文片段,请在安全台查看详情。」

另外,侧栏的安全是跨仓库的安全台,可以集中查看所有仓库的结果,页签是仓库风险、漏洞、密钥、许可合规、代码质量、扫描历史。

4. 看不到这一行时怎么排查

你看到的原因怎么处理
「尚未接入 AngusSecurity」集成没开通系统管理员到管理 → 安全设置开通
「尚未运行安全扫描」集成已开通,但这个仓库从没扫描过打开自动扫描,或由仓库管理员手动扫描一次
状态检查里没有AngusSecurity提交还没有已完成的扫描,仓库也没打开未通过时拒绝合并打开自动扫描后再推送一次
一直是「等待对提交 … 的安全检查」这个提交没有扫描任务打开本仓自动安全扫描后再推送新提交,或对源分支手动扫描
侧栏没有安全当前是社区版安全检查在团队版、企业版和云服务中提供

示例实例的集成已经开通。表中有两种情况需要展开说明。第一种是状态检查里没有AngusSecurity:只有同时满足三个条件时才会这样,即这个提交还没有已完成的扫描、仓库没打开未通过时拒绝合并、拉取请求上也还没有这项检查。反过来,如果扫描在创建拉取请求之前就已经完成,即使没开拒绝合并,拉取请求也会挂上已有的结论。第二种是一直停在等待:自动扫描关闭时,新提交不会自动生成扫描任务,所以说明会一直停在「等待对提交 … 的安全检查」。

除了命令行推送,在网页上修改文件并提交、在拉取请求页点击合并,也会让目标分支上有新提交,从而把扫描任务发给 AngusSecurity。不过自动扫描关闭时,这些操作同样不会触发扫描。

常见问题

AngusSecurity失败了,还能合并吗?

示例仓库打开了未通过时拒绝合并。打开这个开关后,合并接口会拒绝检查未通过的拉取请求,提示是「安全检查未通过,不能合并:」,后面跟着这一行的说明文字。直接把分支合并进目标分支,也受同样的限制。

网页上的合并按钮能不能点,还要另外看分支保护(为分支设置的合并规则)。分支保护规则还没加载完时,页面上任何非成功的检查都会先让按钮不可用,提示「所有必需的状态检查必须通过」。规则加载完以后,如果没有把某项检查指定为必需,按钮不会因为这一行失败而变灰;但点击合并后,服务端仍会按未通过时拒绝合并拒绝。

评审人需要等安全检查结束才能开始评审吗?

不需要。评审和安全检查互不依赖,各自进行。以 #1 为例,它没有指定审查者,而检查结果已经是成功。

能不能在拉取请求里直接看到漏洞列表?

不能。拉取请求里只显示这一行结论和打开仓安全详情,具体的文件、依赖和许可证发现都在仓库安全详情页里。

小结

拉取请求状态检查里的AngusSecurity行,给出的是该提交最新一次扫描的门禁结论。徽章只说明进行中、成功还是失败,原因要看说明文字,从中可以分清是扫描本身失败、漏洞数量达到阈值,还是许可证没通过。要看具体问题,就点打开仓安全详情进入仓库安全详情页。以xlliu/e2e-license-gate为例,#1 显示「提交 1f78310a 的漏洞门禁与许可证门禁均已通过」,而仓库当前的开放发现是位于package.json的GPL-3.0-only,类别是强互惠。

安全检查在团队版、企业版和云服务中提供,社区版没有安全菜单。

结论:拉取请求状态检查里的 AngusSecurity 行给出该提交最新一次扫描的门禁结论;要知道具体是哪个文件或依赖有问题,点打开仓安全详情进入仓库安全详情页查看。

参考文章

  • AngusGit 手册:安全
  • AngusGit 手册:拉取请求
  • AngusSecurity 与 AngusGit 联动:推送与 PR 触发扫描
  • 推送代码之后:怎么自动跑代码安全扫描
  • 合并前怎么拦住仓库里的漏洞
  • 合并请求怎么触发流水线:红了还能不能合

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询