已开启
[Perf] ArkTS linter 耗时归因与优化:残差埋点/文件排行/严格趟收窄/SDK 跳过 #1
zmw1创建于  7 天前
zmw1成员
7 天前 创建

问题

全量构建 runArkTSLinterTime 中位 256s(占 build 34%),内部 = 非严格语义 94.4s + 严格语义 64.9s + 规则扫描 59.3s + 残差 ~35s(2026-09-02 遥测,241 次全量形态)。三个结构性问题:

  1. 残差 ~35s 无归因(INIT/GC/循环内开销/诊断索引重建均无独立报告事件或无 CSV 列);
  2. 规则扫描不知道慢在哪些文件/规则(单 visitor 遍历跑全部规则,无按文件耗时排行);
  3. 严格趟对全部 4.4 万文件跑,但规则循环实际消费面更小(scriptKind 过滤后);SDK 声明 .d.ets(用户不可改)被完整 lint,产出还只被降级为 warning。

方案(两个 MR)

  1. 埋点 MR:lintRebuildTscDiagnostics 子事件(从 lint_2_time 中分离诊断索引重建)、lintScanPure(纯规则扫描累计,同名事件多次 start/stop 求和)、lintLoopStats/lintFileRank 零时长报告事件(循环分支计数 + top10 慢文件);
  2. 治理 MR:严格趟按 scriptKind ETS/TS 收窄(ETS_STRICT_FULL_SCOPE=1 回退)、SDK ETS 文件跳过 lint(ETS_KEEP_SDK_LINT=1 恢复)。

设计详见 ARKTS_Tools/build-perf-analysis/runArkTSLinterTime-optimization.md 及方向 B/C/D/E 分文档。

likedislike
Zzmw1成员
7 天前 关联了pull request:feat(linter): add lint loop attribution events
Zzmw1成员
7 天前 关联了pull request:opt(linter): narrow strict pass and skip SDK lint