术语表
此页面作为 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
修复
修复通常是“安全的”自动应用:它们不应该导致代码行为发生变化。ESLint 尝试在使用--fix
标志运行时在报告中应用尽可能多的修复,但不能保证所有修复都将被应用。修复也可以由常见的编辑器扩展应用。
规则违规可能还包括以建议形式提供的非安全且不会自动应用的文件更改。
扁平化配置
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 全局变量。
全局声明告知检查全局变量正确用法的 lint 规则。例如,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 lint JavaScript 代码。
例如,@eslint/markdown
包含一个处理器,该处理器将 Markdown 文件中```
代码块的文本转换为可以进行 lint 的代码。
有关配置处理器的更多信息,请参阅插件 > 指定处理器。
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
违规
规则的指示,表明代码的某个区域不符合规则的期望。