Skip to content

Commit 0535676

Browse files
committed
fix(tooling): check-i18n-coverage 逐 config 收集失败,第一个失败不再吃掉其余十一个 (#6033)
#6032 让「CLI 未构建」这一个前置有了结论式回答,但 example 自身 workspace 依赖未构建那条路径原样保留:`countI18nIssues` 里三处裸 throw,per-config 循环没有 try/catch,于是第一个 lint 不了的 config 以一段 node 栈中止全程, 后面十个根本没被尝试过 —— 它们各自的成因(未必与第一个相同)也就从未出现。 `errors[]` 收集器在这条路径上永远走不到。 改为:`measureI18nIssues` 返回 `{count}` 或 `{failure}`,永不为单个 config 抛异常;`measureAllConfigs` 跑完整轮并收集失败;整轮结束后 `reportUnmeasuredConfigs` 一次性报告 **每个不同成因**(按结论去重),每条带 它覆盖的 config、CLI 原话读数与一句可行动修法。#5217 立的规矩(一个原因不 要报成 N 个结果)因此在反方向上同样成立:N 个不同原因不被第一个吃掉,而一个 共有原因也只说一次。 失败时抢在 `--update` 写盘与比对之前退出:半轮测不出结论 —— 没测到的 config 与被删掉的 config 无法区分,`--update` 会冻结幸存者、悄悄丢掉其余,把真实债务 从 baseline 里棘轮出去。与 `reportPrerequisiteNotMet` 同一条不变量:没测就不写。 CLI 未构建那条前置仍然在第一个 config 就中止 —— 那是有意的,每个后续 config 都会因同一个环境原因失败,继续跑只会把一个事实印十二遍。 `--self-test` 增加第三组断言:真实语料(仅构建 CLI 的树上录得的 report.error) 须点名缺失包并给出 `pnpm build`;真正坏掉的 config 不得被判成「没构建」;无法 识别的成因仍须产出完整判词;注入式 `measure` 证明一个 config 失败不中止整轮, 且不同成因分开、共有成因合一。CI 永远走不到这条路径(lint.yml 先构建),所以 这些断言只可能钉在这里。 Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01BDmDsu2575gDxeMCxXhDE3
1 parent 6131d90 commit 0535676

1 file changed

Lines changed: 324 additions & 11 deletions

File tree

0 commit comments

Comments
 (0)