版本

术语表

本页作为与 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]: 选择所有 value1 且直接父节点为 BinaryExpressionLiteral 节点

有关 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(默认)、jsonhtml

有关更多信息,请参阅格式化器

格式化工具

一种静态分析工具,可以快速重新格式化代码,而无需更改其逻辑或名称。

格式化工具通常只修改代码的“琐碎”部分,例如分号、空格、换行符和总体上的空白。琐碎的更改通常不会修改代码的 AST

生态系统中常见的格式化工具包括 Prettierdprint

请注意,尽管 ESLint 是一个代码检查工具,而不是格式化工具,但 ESLint 规则也可以将格式化更改应用于源代码。有关格式化规则的更多信息,请参阅格式化(规则)

格式化 (规则)

一个专门针对格式化问题的规则,例如分号和空格。这些规则不会更改应用程序逻辑,并且是风格规则的子集。

ESLint 不再推荐格式化规则,并且之前已弃用其内置的格式化规则。ESLint 建议改用专用格式化工具,例如 Prettierdprint。或者,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 + 21 + 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/parsertypescript-eslint 项目中包含的自定义解析器,它允许 ESLint 解析 TypeScript 代码。

有关将解析器与 ESLint 一起使用的更多信息,请参阅配置解析器

插件

一个软件包,可以包含一组配置处理器和/或 规则

插件的一个流行用例是强制执行框架的最佳实践。例如,@angular-eslint/eslint-plugin 包含使用 Angular 框架的最佳实践。

有关更多信息,请参阅配置插件

处理器

插件的一部分,用于从其他类型的文件中提取 JavaScript 代码,然后让 ESLint 检查 JavaScript 代码。

例如,@eslint/markdown 包括一个处理器,该处理器将 Markdown 文件中 ``` 代码块的文本转换为可以进行代码检查的代码。

有关配置处理器的更多信息,请参阅插件 > 指定处理器

R

报告

来自单个 ESLint 运行的违规集合。

当 ESLint 在源文件上运行时,它会将每个源文件的 AST 传递给每个配置的 规则。来自每个规则的违规集合将被打包在一起,并传递给格式化器以呈现给用户。

规则

检查AST 以查找预期模式的代码。当规则的期望未满足时,它会创建违规

ESLint 提供了大量规则,用于检查常见的 JavaScript 代码问题。可以通过插件加载更多规则。

有关提供的规则概述,请参阅核心概念 > 规则

S

选择器

描述如何在 AST 中搜索节点的语法。

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

违规

来自规则的指示,表明代码区域不符合规则的期望。

规则违规指示源代码中的范围和解释违规的错误消息。违规还可以选择性地包括修复和/或建议,以指示如何改进违规代码。

更改语言