如何获取arc lint各校验器运行耗时?及提速优化技巧
Arcanist
arc lint性能优化问题 问题背景
我在用Arcanist,配置了大量内置和自定义校验器(linters),随着校验器增多,arc lint的运行速度越来越慢。在代码改动多(涉及ESLint校验)的场景下,time arc lint显示最长耗时能到30分钟,示例如下:
$ time arc lint <...> real 8m31.771s user 17m53.159s sys 4m52.329s
但在无改动的干净仓库里,运行速度很快:
$ time arc lint OKAY No lint warnings. real 0m7.961s user 0m6.763s sys 0m1.363s
现在arc lint只输出简单的提示:
$ arc lint Linting.... No Errors
我想获取每个校验器的详细运行时长,理想输出是这样的:
$ arc lint Linting eslint... Elapsed time 18m38.311s Linting with pylint... Elapsed time 1m35.334s Linting with local/ <...> No Errors
请问怎么获取各校验器的详细运行信息?还有哪些arc lint的提速技巧?
获取各校验器的运行时长信息
- 使用
arc lint --trace参数:这个官方参数会输出完整的执行日志,包含每个校验器的启动、执行阶段和结束时间,能直接定位到耗时最长的校验器,是最便捷的方式。 - 自定义计时逻辑(进阶):如果
--trace的输出不够直观,可通过修改Arcanist的自定义LintEngine扩展,在每个校验器执行前后添加时间戳记录,然后输出时长。但优先推荐官方的--trace方案。
arc lint提速技巧
- 精准校验范围:默认
arc lint仅检查改动文件,若出现全量校验情况,检查.arcconfig中的lint.engine配置是否正确;也可手动指定文件路径,比如arc lint src/modified-file.js,避免无意义的全量扫描。 - 优化慢校验器(以ESLint为例):
- 开启缓存:在ESLint配置文件中设置
cache: true,或执行eslint --cache,仅校验改动过的文件,避免重复计算。 - 精简规则:禁用耗时高的规则(如大文件中的
no-unused-vars),或拆分规则集,日常开发用轻量规则,CI阶段用严格规则。
- 开启缓存:在ESLint配置文件中设置
- 并行执行校验器:在
.arcconfig中添加"lint.parallel": true,让多个校验器同时运行,缩短总耗时。 - 清理冗余校验器:定期移除项目不需要的内置/自定义校验器,比如非Python项目关闭pylint。
- 更新版本:升级Arcanist及各校验器到稳定版,新版本通常会有性能优化和bug修复。
- 重置本地缓存:若缓存失效导致重复校验,删除
.arc/lint-cache目录,让Arcanist重新生成有效缓存。
内容的提问来源于stack exchange,提问作者Etai
相关产品推荐
相关产品推荐

