术语表
此页面作为 ESLint 相关常用术语的参考。
A
抽象语法树 (AST)
代码语法结构化的表示。
AST 中的每个源代码部分都被称为节点。每个节点可能具有任意数量的属性,包括存储子节点的属性。
ESLint 使用的 AST 格式是ESTree 格式。
ESLint 规则 会获取 AST,并在检测到违规时,可能会在 AST 的某些部分上产生违规。
C
配置文件 (配置文件)
包含 ESLint 如何解析文件和运行规则的首选项的文件。
ESLint 配置文件命名类似于 eslint.config.(c|m)js
。每个配置文件都导出一个包含配置对象的配置数组。
例如,此 eslint.config.js
文件以错误严重性启用 prefer-const
规则
export default [
{
rules: {
"prefer-const": "error",
},
},
];
有关更多详细信息,请参阅配置文件。
配置数组
配置文件中配置对象的数组。
每个配置文件都导出一个配置对象的数组。数组中的对象按顺序求值:后面的对象可能会覆盖前面对象中指定的设置。
有关更多详细信息,请参阅配置文件。
配置对象
配置文件条目,指定 ESLint 在一组文件上执行所需的所有信息。
每个配置对象可能包含描述要运行的文件、如何处理不同文件类型、要包含哪些插件以及如何运行规则的属性。
有关更多详细信息,请参阅配置文件 > 配置对象。
E
ESQuery
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 风格项目提供与格式相关的 lint 规则。
有关更多信息,请参阅格式化规则的弃用。
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;
的 AST 中的 1 + 2
是一个 BinaryExpression。
有关 ESLint 用于解析允许规则搜索节点的选择器的库,请参阅#esquery。
O
覆盖
当配置对象或内联配置设置新的严重性和/或规则选项以取代先前设置的严重性和/或选项时。
以下配置文件将 *.test.js
文件中的 no-unused-expressions
从 "error"
覆盖到 "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 项目提供了允许在 lint 规则中使用类型检查器的集成。
V
违规
来自规则的指示,表明代码区域不满足规则的期望。