術語表
此頁面作為與 ESLint 相關的常用術語參考。
A
抽象語法樹 (AST)
程式碼語法的結構化表示法。
AST 中的每個程式碼區段都稱為節點。每個節點可以有任意數量的屬性,包括儲存子節點的屬性。
ESLint 使用的 AST 格式是 ESTree 格式。
ESLint 規則會獲得 AST,並且在偵測到違規時,可能會在 AST 的某些部分產生違規。
C
設定檔 (設定檔案)
一個檔案,其中包含 ESLint 應如何解析檔案和執行規則的偏好設定。
ESLint 設定檔的命名方式如 eslint.config.(c|m)js
。每個設定檔都會匯出一個包含設定物件的設定陣列。
例如,這個 eslint.config.js
檔案啟用了 prefer-const
規則,其嚴重性為error
export default [
{
rules: {
"prefer-const": "error",
},
},
];
有關更多詳細資訊,請參閱設定檔。
設定陣列
每個設定檔都會匯出一個設定物件陣列。陣列中的物件會依序評估:後面的物件可能會覆寫先前物件中指定的設定。
有關更多詳細資訊,請參閱設定檔。
設定物件
一個設定檔條目,指定 ESLint 在一組檔案上執行所需的所有資訊。
每個設定物件可能包含描述要執行的檔案、如何處理不同檔案類型、要包含哪些外掛程式以及如何執行規則的屬性。
有關更多詳細資訊,請參閱設定檔 > 設定物件。
E
ESQuery
ESLint 用於解析選擇器語法以查詢 AST 中的節點的程式庫。
ESQuery 解釋 AST 節點屬性的 CSS 語法。ESQuery 選擇器的範例包括
BinaryExpression
:選取所有類型為 BinaryExpression 的節點BinaryExpression[operator='+']
:選取所有 BinaryExpression 節點,其 operator 為+
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 是 Linter 而不是格式化工具,但 ESLint 規則也可以將格式化變更套用至原始碼。請參閱格式化 (規則)以取得有關格式化規則的更多資訊。
格式化 (規則)
一個規則,僅針對格式化問題,例如分號和空白字元。這些規則不會變更應用程式邏輯,並且是風格規則的子集。
ESLint 不再建議格式化規則,並且先前已棄用其內建的格式化規則。ESLint 建議改為使用專用的格式化工具,例如 Prettier 或 dprint。或者,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 部分:背景中閱讀更多關於舊版設定生命週期的資訊。
Linter
一個靜態分析工具,可以報告在原始碼上執行一組規則的結果。每個規則可能會在原始碼中報告任意數量的違規。
ESLint 是 JavaScript 和其他 Web 技術常用的 Linter。
邏輯規則
一個規則,檢查程式碼如何運作以尋找問題。
許多邏輯規則會尋找可能的崩潰(例如 no-undef
)、非預期的行為(例如 no-sparse-arrays
)和未使用的程式碼(例如 no-unused-vars
)。
您可以在規則 > 可能的問題下看到 ESLint 隨附的完整邏輯規則清單
N
節點
AST 內的程式碼區段。
每個節點都代表原始碼中找到的語法類型。例如,1 + 2
在 1 + 2;
的 AST 中是 BinaryExpression。
請參閱 #esquery,了解 ESLint 用於解析選擇器的程式庫,這些選擇器允許規則搜尋節點。
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/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];
有關可分享設定的資訊,請參閱分享設定。
靜態分析
在不建置或執行原始碼的情況下分析原始碼的過程。
Linter(例如 ESLint)、格式化工具和類型檢查器都是靜態分析工具的範例。
靜態分析與動態分析不同,動態分析是在建置和執行原始碼後評估原始碼的過程。單元測試、整合測試和端對端測試是動態分析的常見範例。
風格 (規則)
一個規則,強制執行偏好而不是邏輯問題。風格領域包括格式化規則、命名慣例以及等效語法之間的一致選擇。
ESLint 的內建風格規則已凍結功能:除了支援新的 ECMAScript 版本外,它們不會收到新功能。
建議
對 規則 違規 的可選擴充,描述如何手動調整程式碼以解決違規問題。
建議通常不安全自動套用,因為它們會導致程式碼行為變更。ESLint 不會直接套用建議,但會向可能選擇套用建議的整合(例如編輯器擴充功能)提供建議。
規則違規也可能包含安全的檔案變更,可以自動套用,以修正的形式。
T
類型檢查器
一個靜態分析工具,可以完全了解專案的程式碼結構和資料形狀。
類型檢查器通常比 Linter 慢且更全面。Linter 傳統上一次只在單個檔案或程式碼片段的 AST 上運作,而類型檢查器則了解跨檔案的相依性和類型。
TypeScript 是 JavaScript 最常見的類型檢查器。typescript-eslint 專案提供整合,允許在程式碼檢查規則中使用類型檢查器。
V
違規
來自規則的指示,指出程式碼區域不符合規則的期望。