前端/移动开发面试题更新 2026-08-05

请描述 Eslint 执行代码检查的完整流程,包括从解析源码到生成检查结果的各个阶段。

前端/移动开发技术原理

考察说明

考查对 Eslint 内部工作流程的理解,包括解析、遍历、规则匹配与报告等核心机制。

回答思路

  1. 【回答框架 1】Eslint 的检查流程以源码文本为输入,首先通过解析器将代码转换为 AST(抽象语法树)。Eslint 默认使用 espree 作为解析器,支持 ES6 及更高版本的语法,也允许配置自定义解析器如 @typescript-eslint/parser。
  2. 【回答框架 2】AST 生成后,Eslint 会利用 linter 模块进行 AST 遍历。遍历过程采用深度优先的方式,同时维护一个作用域和引用上下文,为后续规则执行提供必要信息。
  3. 【回答框架 3】在遍历过程中,Eslint 会按规则数组依次执行每条规则。每条规则都是一个访问者函数集合,针对特定的 AST 节点类型触发回调,规则内部通过 context.report 等方式报告问题。
  4. 【回答框架 4】所有规则执行完毕后,Eslint 收集所有报告的 problem 对象,并依据配置的格式(如 stylish、json)生成输出。同时会执行 fix 循环:若有可自动修复的规则,会应用修改并重新检查,但会受 fix 次数限制。
  5. 【关键点 1】解析阶段将源码转为 AST,解析器可配置。
  6. 【关键点 2】遍历阶段深度优先遍历 AST,并维护作用域信息。
  7. 【关键点 3】规则通过访问者模式在特定节点执行,用 context.report 报告问题。
  8. 【关键点 4】问题收集后按格式输出,可配置自动修复并限制循环次数。
  9. 【关键点 5】整个过程支持自定义解析器和规则集,体现可扩展性。
  10. 【易错点 1】不要认为 AST 包含完整代码文本,它只保留语法结构。
  11. 【易错点 2】不要忽略 fix 循环是有限次的,并非无限修复。
  12. 【易错点 3】不要混淆解析器与规则:解析器只负责生成 AST。