版本

詞彙表

此頁面作為與 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規則

export default [
    {
        rules: {
            "prefer-const": "error",
        },
    },
];

如需更多詳細資訊,請參閱組態檔

組態陣列

組態檔中的組態物件陣列。

每個組態檔都會匯出組態物件陣列。陣列中的物件會依序評估:後面的物件可能會覆寫前面物件中指定的設定。

如需更多詳細資訊,請參閱組態檔

組態物件

一個組態檔項目,指定 ESLint 在一組檔案上執行所需的所有資訊。

每個組態物件可以包括描述要在哪些檔案上執行、如何處理不同的檔案類型、要包含哪些外掛程式,以及如何執行規則的屬性。

如需更多詳細資訊,請參閱組態檔 > 組態物件

E

ESQuery

ESLint 用來剖析選取器語法以查詢AST 中的節點的程式庫。

ESQuery 會將 CSS 語法解譯為 AST 節點屬性。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 部分:扁平組態簡介中閱讀更多關於扁平組態背後動機的資訊。

格式化程式 (Linting)

顯示 ESLint 產生的報告的套件。

ESLint 隨附數個內建的報告工具,包括 stylish(預設)、jsonhtml

如需更多資訊,請參閱格式化程式

格式化程式 (工具)

一個靜態分析工具,可以快速重新格式化程式碼,而不會變更其邏輯或名稱。

格式化程式通常只會修改程式碼的「瑣事」,例如分號、間距、換行符號和一般空白字元。瑣事變更通常不會修改程式碼的AST

生態系統中常見的格式化程式包括Prettierdprint

請注意,雖然 ESLint 是 linter 而不是格式化程式,但 ESLint 規則也可以將格式化變更套用至原始碼。如需有關格式化規則的更多資訊,請參閱格式化 (規則)

格式化 (規則)

僅針對格式化問題的規則,例如分號和空白字元。這些規則不會變更應用程式邏輯,而且是風格規則的子集。

ESLint 不再建議使用格式化規則,並且先前已棄用其內建的格式化規則。ESLint 建議改用專用的格式化程式,例如Prettierdprint。或者,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 部分:背景中閱讀更多關於舊版組態生命週期的資訊。

Linter

一個靜態分析工具,可以報告在原始碼上執行一組規則的結果。每個規則都可以在原始碼中報告任意數量的違規

ESLint 是 JavaScript 和其他 Web 技術常用的 linter。

請注意,linter格式化程式類型檢查器是分開的。

邏輯規則

檢查程式碼如何運作以找出問題的規則

許多邏輯規則會尋找可能發生的當機 (例如no-undef)、非預期的行為 (例如no-sparse-arrays) 和未使用的程式碼 (例如no-unused-vars)

您可以在規則 > 可能的問題下方查看隨附 ESLint 的邏輯規則完整清單

N

節點

AST中的程式碼區段。

每個節點都代表原始碼中找到的一種語法類型。例如,1 + 2; 的 AST 中的 1 + 2BinaryExpression

如需 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/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 提供一個可共享的 recommended 設定

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

違規

來自規則的指示,表示程式碼的某個區域未達到規則的期望。

規則違規表示原始碼中的範圍和說明違規的錯誤訊息。違規還可以選擇性地包含修復和/或建議,說明如何改進違規的程式碼。

變更語言