已开启
Add dependency-hub ranking instrumentation (LINT-HUB-RANK) #875
Add dependency-hub ranking instrumentation (LINT-HUB-RANK) #875
已开启
zmw1创建于 3 天前
zmw1
3 天前

描述

背景

大型工程中存在"枢纽文件"(聚合再导出的 Index.ets、公共类型、底层工具模块等),被大量文件传递依赖。修改这类文件时增量构建会把整个传递依赖锥拖入重查/重编,"改一个文件、重编上万",增量退化为接近全量。事后从构建耗时只能知道"发生了大范围重编",无法直接回答哪些文件是雷。

方案

新增环境变量门控的诊断打点 LINT-HUB-RANK:设 ARKTS_LINT_HUB_RANK=1一次全量构建,利用 builder state 的完整依赖图(referencedMap)输出按传递依赖锥大小排名的枢纽文件清单(每文件含直接依赖者数、精确锥大小、锥内样例),为依赖治理(拆分再导出面/降耦合)提供量化目标清单。

  • 算法两阶段控制成本:O(V+E) 统计全部文件直接依赖者数,仅对 Top-K(ARKTS_LINT_HUB_RANK_TOP,默认 20)做反向 BFS 求精确锥;4.3 万文件工程估算一次性 2~6 秒;
  • 1.0/1.1 两个 linter 均接入,每次 linter 运行输出一行单行 JSON;
  • 纯只读打点:try/catch 包裹,不改变任何编译/lint 行为,不读写 .tsbuildinfo,默认(未设环境变量)零开销;
  • 设计文档:docs/design/arkts-lint-hub-rank.md(用法/算法/兼容性/测试)。

已验证

  • 链式依赖 harness(a←b←c、a←d):a.ts 直接依赖 2/锥 3,b.ts 1/1,无依赖文件不入榜——数值与拓扑精确一致(打包产物实测);
  • 未设环境变量零输出;ARKTS_LINT_HUB_RANK_TOP=1 仅输出榜首;
  • 两文件 tsc 类型检查 0 错误。

Issue

Issue: None

自测试用例

一、tsc测试套

1. tsc原生测试

2. ts_extra_test

二、ArkTSLinter测试套

1. 三方库测试

2. Cookbook+issue测试

3. ArkTest测试

三、 编译测试

1. 端到端测试

CheckList

1. 是否影响abc文件

likedislike
合并受阻
openharmony_ciopenharmony_ci成员
3 天前 添加了label:waiting_on_author
openharmony_ci
openharmony_ci成员
3 天前 评论:

感谢提交 Pull Requests!如果您提交的PR已经开发完毕,请评论 "start build" 触发门禁,更多交互操作,请访问OpenHarmony社区支持命令清单。如果需要调整订阅PR、Issue的变更状态,请访问订阅链接


Thanks for submitting the pull request. If your Pull Request has already been developed, you can leave a "start build" comment to trigger the gated system. For more commands, please visit OpenHarmony Command List. If you need to change the subscription of a Pull Request or Issue, please visit the link.

likedislike
openharmony_ciopenharmony_ci成员
3 天前 添加了label:dco检查成功