已开启
fix: 修复 check-json/check-yaml 误杀合法文件及错误报告问题 #2
fix: 修复 check-json/check-yaml 误杀合法文件及错误报告问题 #2
已开启
liruichen创建于 6月25日
liruichen成员
6月25日

背景

审视 check-json / check-yaml 实现时发现两个会误杀合法文件的 bug,以及错误诊断体验问题。

问题

  • Bug 1(check-json):带 UTF-8 BOM 的合法 JSON 被误报 Unexpected UTF-8 BOM 并阻断提交(BOM 是 RFC 8259 §8.1 允许的合法格式;同仓库 check-sr 已用 utf-8-sig 处理)。
  • Bug 2(check-yaml):多文档 YAML(含 --- 分隔,如 k8s manifest)被误报 expected a single document;且第 2+ 文档的语法错误根本不被检查。
  • 诊断(check-json):出错时不带文件名、遇首个坏文件即停,定位困难。

修复

  • check-json 落地为 hooks/check_json.pylanguage: script,纯标准库):utf-8-sig 剥 BOM、逐文件报告 <path>: <err>、遇坏文件继续检查。对齐 check-sr 范式。
  • check-yaml 改用 yaml.safe_load_all 支持多文档,open(f,'rb') 交 PyYAML 做编码自检/剥 BOM,解析错误自带文件名。保持 inline + language: python(自动装 pyyaml 的自包含特性不变)。
  • 新增 tests/check_json_test.pytests/check_yaml_test.py(含 BOM、多文档、多文件混合等回归用例)。

说明:check-yaml 未落脚本,因为 additional_dependencies(pyyaml)只对 language: python 生效;落 language: script 会丢失自包含特性,而 inline 已能修复全部问题。

验证

  • pytest:55 项全过(含既有 check_sr 测试,无回归)。
  • check-yaml 在真实 pre-commit 环境(try-repo)对单文档/多文档/BOM 均 Passed。
  • check-json 直接调用验证:BOM/正常放行,坏文件带名报告,好文件不打扰。
likedislike
合并受阻
openUBMC-robotopenUBMC-robot成员
6月25日 将zybwh,xuhaijun,DataSculptor设为审查人
openUBMC-robotopenUBMC-robot成员
6月25日 添加了label:sig/sig-CICD
openUBMC-robot
openUBMC-robot成员
6月25日 评论:

欢迎来到 openUBMC 社区

Hey @Polaris404 , 感谢你对社区的贡献.

机器人使用手册

有关指令的使用,可以点击 说明文档论坛 查看详情。开发人员可以在每个PR或Issue下方评论特定指令来触发机器人任务。

联系指引

有疑问可以联系 SIG: sig-CICD ,
维护者是: @DataSculptor, @xuhaijun, @zybwh ,
优秀贡献者是: @Larry_Li_006, @Polaris404 .

likedislike
openUBMC-robotopenUBMC-robot成员
6月25日 添加了label:openUBMC-cla/yes
openUBMC-robot
openUBMC-robot成员
6月25日 评论:

CLA 签署成功

Polaris404, 感谢您的代码贡献。 所有的代码贡献者都已完成了 CLA 签署。 👍

likedislike
openUBMC-robotopenUBMC-robot成员
6月25日 添加了label:needs-issue
openUBMC-robot
openUBMC-robot成员
6月25日 评论:

关联 Issue 通知

@Polaris404 , 提交的PR需要关联issue,指导链接:https://forum.openubmc.cn/t/topic/208
如果已经关联了issue, 但是needs-issue标签仍然存在,你可以在评论 /check-issue 来移除它。

likedislike
openUBMC-robot
openUBMC-robot成员
6月25日 评论:

The pipeline(pipeline number:2) is running. >>> Check Pipeline <<<.Please wait a moment...

likedislike
openUBMC-robotopenUBMC-robot成员
6月25日 添加了label:ci-running
openUBMC-robotopenUBMC-robot成员
6月25日 删除了label:ci-running
openUBMC-robot
openUBMC-robot成员
6月25日 评论:
任务名称结果
静态检查✅SUCCESS
防投毒检查✅SUCCESS
开源合规检查✅SUCCESS
likedislike
openUBMC-robotopenUBMC-robot成员
6月25日 添加了label:ci-successful