詞彙表
此頁面作為與 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]
:選取所有 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 部分:扁平組態簡介中閱讀更多關於扁平組態背後動機的資訊。
格式化程式 (Linting)
顯示 ESLint 產生的報告的套件。
ESLint 隨附數個內建的報告工具,包括 stylish
(預設)、json
和 html
。
如需更多資訊,請參閱格式化程式。
格式化程式 (工具)
一個靜態分析工具,可以快速重新格式化程式碼,而不會變更其邏輯或名稱。
格式化程式通常只會修改程式碼的「瑣事」,例如分號、間距、換行符號和一般空白字元。瑣事變更通常不會修改程式碼的AST。
生態系統中常見的格式化程式包括Prettier 和 dprint。
請注意,雖然 ESLint 是 linter 而不是格式化程式,但 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 部分:背景中閱讀更多關於舊版組態生命週期的資訊。
Linter
一個靜態分析工具,可以報告在原始碼上執行一組規則的結果。每個規則都可以在原始碼中報告任意數量的違規。
ESLint 是 JavaScript 和其他 Web 技術常用的 linter。
邏輯規則
檢查程式碼如何運作以找出問題的規則。
許多邏輯規則會尋找可能發生的當機 (例如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
提供一個可共享的 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
違規
來自規則的指示,表示程式碼的某個區域未達到規則的期望。