术语表
本页作为与 ESLint 相关的常用术语参考。
A
抽象语法树 (AST)
代码语法的结构化表示。
AST 中源代码的每个部分都称为节点。每个节点可以有任意数量的属性,包括存储子节点的属性。
ESLint 使用的 AST 格式是 ESTree 格式。
ESLint 规则会获得 AST,并在检测到违规时,可能会在 AST 的某些部分产生违规。
C
配置文件 (Configuration File)
包含 ESLint 应如何解析文件和运行规则的首选项的文件。
ESLint 配置文件的命名类似于 eslint.config.(c|m)js
。每个配置文件导出一个包含配置对象的配置数组。
例如,这个 eslint.config.js
文件启用 prefer-const
规则,严重程度为错误 severity
export default [
{
rules: {
"prefer-const": "error",
},
},
];
有关更多详细信息,请参阅配置文件。
配置数组
每个配置文件导出一个配置对象数组。数组中的对象按顺序评估:后面的对象可能会覆盖前面对象中指定的设置。
有关更多详细信息,请参阅配置文件。
配置对象
一个配置文件条目,指定 ESLint 在一组文件上执行所需的所有信息。
每个配置对象可以包含描述要在哪些文件上运行、如何处理不同的文件类型、要包含哪些插件以及如何运行规则的属性。
有关更多详细信息,请参阅配置文件 > 配置对象。
E
ESQuery
ESLint 使用的库,用于解析选择器语法,以查询 AST 中的节点。
ESQuery 解释用于 AST 节点属性的 CSS 语法。ESQuery 选择器的示例包括
BinaryExpression
: 选择所有类型为 BinaryExpression 的节点BinaryExpression[operator='+']
: 选择所有 operator 为+
的 BinaryExpression 节点BinaryExpression > Literal[value=1]
: 选择所有 value 为1
且直接父节点为 BinaryExpression 的 Literal 节点
有关 ESQuery 格式的更多信息,请参阅 github.com/estools/esquery。
ESTree
ESLint 使用的格式,用于将 JavaScript 语法表示为 AST。
例如,代码 1 + 2;
的 ESTree 表示形式大致如下所示
{
"type": "ExpressionStatement",
"expression": {
"type": "BinaryExpression",
"left": {
"type": "Literal",
"value": 1,
"raw": "1"
},
"operator": "+",
"right": {
"type": "Literal",
"value": 2,
"raw": "2"
}
}
}
诸如 ESLint 之类的静态分析工具通常通过将语法转换为 ESTree 格式的 AST 来运行。
有关 ESTree 规范的更多信息,请参阅 github.com/estree/estree。
F
修复
修复通常可以“安全”地自动应用:它们不应导致代码行为更改。当使用 --fix
标志运行时,ESLint 尝试在报告中应用尽可能多的修复,但不能保证所有修复都将被应用。修复也可以通过常见的编辑器扩展应用。
规则违规也可能包括不安全且未自动应用的文件更改,以建议的形式。
扁平配置
ESLint 当前的配置文件格式。
扁平配置文件的命名格式为 eslint.config.(c|m)?js
。“扁平”配置文件的命名如此,是因为所有嵌套都必须在一个配置文件中完成。相比之下,“传统”配置格式允许在项目内的子目录中嵌套配置文件。
你可以在ESLint 的新配置系统,第 2 部分:扁平配置介绍中阅读更多关于扁平配置背后的动机。
格式化器 (代码检查)
一个软件包,用于呈现 ESLint 生成的报告。
ESLint 附带了几个内置的报告器,包括 stylish
(默认)、json
和 html
。
有关更多信息,请参阅格式化器。
格式化工具
一种静态分析工具,可以快速重新格式化代码,而无需更改其逻辑或名称。
格式化工具通常只修改代码的“琐碎”部分,例如分号、空格、换行符和总体上的空白。琐碎的更改通常不会修改代码的 AST。
生态系统中常见的格式化工具包括 Prettier 和 dprint。
请注意,尽管 ESLint 是一个代码检查工具,而不是格式化工具,但 ESLint 规则也可以将格式化更改应用于源代码。有关格式化规则的更多信息,请参阅格式化(规则)。
格式化 (规则)
一个专门针对格式化问题的规则,例如分号和空格。这些规则不会更改应用程序逻辑,并且是风格规则的子集。
ESLint 不再推荐格式化规则,并且之前已弃用其内置的格式化规则。ESLint 建议改用专用格式化工具,例如 Prettier 或 dprint。或者,ESLint 风格项目提供了与格式化相关的代码检查规则。
有关更多信息,请参阅弃用格式化规则。
G
全局声明
向 ESLint 描述一个应在运行时存在的 JavaScript 全局变量。
全局声明通知代码检查规则,以检查是否正确使用了全局变量。例如,no-undef
规则将为引用未在配置的全局变量列表中定义的全局变量创建违规。
配置文件将全局变量定义为 JavaScript 对象。
有关配置全局变量的信息,请参阅配置语言选项 > 指定全局变量。
全局变量
一个在全局作用域中存在的运行时变量,这意味着所有模块和脚本都可以访问它。
JavaScript 中的全局变量在 globalThis
对象上声明(通常在 Node.js 中别名为 global
,在浏览器中别名为 window
)。
你可以通过全局声明让 ESLint 知道你的代码使用了哪些全局变量。
I
内联配置 (配置注释)
源代码注释,用于将规则配置为不同的严重程度和/或选项集。
内联配置使用与 配置文件 类似的语法,通过名称指定任意数量的规则、它们的新严重程度以及规则的可选新选项。例如,以下内联配置注释同时禁用 eqeqeq
规则并将 curly
规则设置为 "error"
/* eslint eqeqeq: "off", curly: "error" */
有关内联配置注释的文档,请参阅规则 > 使用配置注释。
L
传统配置
ESLint 的先前配置文件格式,现在已被“扁平”配置取代。
传统 ESLint 配置的命名格式为 .eslintrc.*
,并允许在项目内的子目录中的文件中嵌套。
你可以在ESLint 的新配置系统,第 1 部分:背景中阅读更多关于传统配置生命周期的信息。
代码检查工具
一种静态分析工具,可以报告在源代码上运行一组规则的结果。每个规则可能会在源代码中报告任意数量的违规。
ESLint 是 JavaScript 和其他 Web 技术常用的代码检查工具。
逻辑规则
一个规则,用于检查代码的运行方式以查找问题。
许多逻辑规则查找可能的崩溃(例如 no-undef
)、意外行为(例如 no-sparse-arrays
)和未使用的代码(例如 no-unused-vars
)。
你可以在规则 > 可能的问题下查看 ESLint 附带的完整逻辑规则列表。
N
节点
AST 中的代码段。
每个节点代表源代码中找到的一种语法类型。例如,1 + 2
在 1 + 2;
的 AST 中是一个 BinaryExpression。
有关 ESLint 用于解析选择器的库,请参阅 #esquery,该选择器允许规则搜索节点。
O
覆盖
当配置对象或内联配置设置新的严重程度和/或规则选项时,它将取代先前设置的严重程度和/或选项。
以下配置文件将 no-unused-expressions
从 "error"
覆盖为 *.test.js
文件中的 "off"
export default [
{
rules: {
"no-unused-expressions": "error"
}
},
{
files: ["*.test.js"],
rules: {
"no-unused-expressions": "off"
}
}
];
以下内联配置将 no-unused-expressions
设置为 "error"
/* eslint no-unused-expressions: "error" */
有关传统配置中覆盖的更多信息,请参阅配置文件(已弃用)> 覆盖如何工作?。
P
解析器
一个对象,其中包含读取字符串并将其转换为标准化格式的方法。
ESLint 使用解析器将源代码字符串转换为 AST 形状。默认情况下,ESLint 使用 Espree 解析器,该解析器生成与标准 JavaScript 运行时和版本兼容的 AST。
自定义解析器允许 ESLint 解析非标准的 JavaScript 语法。通常,自定义解析器包含在可共享配置或插件中,因此你无需直接使用它们。例如,@typescript-eslint/parser 是 typescript-eslint 项目中包含的自定义解析器,它允许 ESLint 解析 TypeScript 代码。
有关将解析器与 ESLint 一起使用的更多信息,请参阅配置解析器。
插件
插件的一个流行用例是强制执行框架的最佳实践。例如,@angular-eslint/eslint-plugin 包含使用 Angular 框架的最佳实践。
有关更多信息,请参阅配置插件。
处理器
插件的一部分,用于从其他类型的文件中提取 JavaScript 代码,然后让 ESLint 检查 JavaScript 代码。
例如,@eslint/markdown
包括一个处理器,该处理器将 Markdown 文件中 ```
代码块的文本转换为可以进行代码检查的代码。
有关配置处理器的更多信息,请参阅插件 > 指定处理器。
R
报告
来自单个 ESLint 运行的违规集合。
当 ESLint 在源文件上运行时,它会将每个源文件的 AST 传递给每个配置的 规则。来自每个规则的违规集合将被打包在一起,并传递给格式化器以呈现给用户。
规则
检查AST 以查找预期模式的代码。当规则的期望未满足时,它会创建违规。
ESLint 提供了大量规则,用于检查常见的 JavaScript 代码问题。可以通过插件加载更多规则。
有关提供的规则概述,请参阅核心概念 > 规则。
S
选择器
ESLint 规则使用 ESQuery 选择器来查找应检查的节点。
严重程度
规则配置为运行的报告级别(如果运行)。
ESLint 支持三个严重程度级别
"off"
(0
): 不运行规则。"warn"
(1
): 运行规则,但不根据其违规退出并返回非零状态代码(排除--max-warnings
标志)"error"
(2
): 运行规则,如果它产生任何违规,则退出并返回非零状态代码
有关配置规则的文档,请参阅配置规则。
共享配置 (配置)
一个模块,提供预定义的配置文件配置。
共享配置可以配置来自配置文件的所有相同信息,包括插件和规则。
共享配置通常与插件一起提供。许多插件提供诸如“recommended”之类的配置名称,这些配置启用了它们建议的起始规则集。例如,eslint-plugin-solid
提供了一个可共享的推荐配置
import js from "@eslint/js";
import solid from "eslint-plugin-solid/configs/recommended";
export default [js.configs.recommended, solid];
有关共享配置的信息,请参阅共享配置。
静态分析
在不构建或运行源代码的情况下分析源代码的过程。
诸如 ESLint 之类的代码检查工具、格式化工具和类型检查器都是静态分析工具的示例。
静态分析与动态分析不同,后者是在构建和执行源代码后评估源代码的过程。单元测试、集成测试和端到端测试是动态分析的常见示例。
风格 (规则)
一个规则,用于强制执行偏好而不是逻辑问题。风格领域包括格式化规则、命名约定以及等效语法之间的一致选择。
ESLint 的内置风格规则已冻结功能:除了支持新的 ECMAScript 版本外,它们不会收到新功能。
建议
对规则 违规的可选增强,描述了如何手动调整代码以解决违规问题。
建议通常不安全自动应用,因为它们会导致代码行为更改。ESLint 不直接应用建议,但确实向可能选择应用建议的集成(例如编辑器扩展)提供建议。
规则违规也可能包括安全且可以自动应用的文件更改,以修复的形式。
T
类型检查器
一种静态分析工具,可以全面了解项目的代码结构和数据形状。
类型检查器通常比代码检查工具更慢且更全面。代码检查工具传统上一次只对单个文件或代码片段的 AST 进行操作,而类型检查器则了解跨文件依赖关系和类型。
TypeScript 是 JavaScript 最常见的类型检查器。typescript-eslint 项目提供了允许在代码检查规则中使用类型检查器的集成。
V
违规
来自规则的指示,表明代码区域不符合规则的期望。