在 Visual Studio Code 中使用 Python Linting

Linting 會突顯 Python 原始程式碼中的語意與風格問題,這通常能協助您識別並修正細微的程式錯誤或可能導致錯誤的程式碼撰寫習慣。例如,Linting 可以偵測未定義變數的使用、對未定義函式的呼叫、遺漏的括號,甚至是嘗試重新定義內建型別或函式等更細微的問題。Linting 與格式化 (Formatting) 不同,因為 Linting 會分析程式碼的執行方式並偵測錯誤,而格式化僅會重構程式碼的外觀。

注意:Python 擴充功能的語言伺服器 (Language Server) 預設會啟用語法錯誤偵測。若要了解如何設定語言伺服器,請參閱語言伺服器設定。本文涵蓋如何啟用 Linting 以進行額外的程式碼偵測,包括風格檢查。

選擇 Linter

VS Code Marketplace 中搜尋您選擇的 Linter 擴充功能。如果您願意,可以同時使用多個 Linter。

Microsoft 為 Python 發布了以下 Linting 擴充功能

Linter 擴充功能
Pylint https://marketplace.visualstudio.com/items?itemName=ms-python.pylint
flake8 https://marketplace.visualstudio.com/items?itemName=ms-python.flake8
mypy https://marketplace.visualstudio.com/items?itemName=ms-python.mypy-type-checker

由社群提供的 Linting 擴充功能

Linter 擴充功能
Ruff https://marketplace.visualstudio.com/items?itemName=charliermarsh.ruff
mypy https://marketplace.visualstudio.com/items?itemName=matangover.mypy

注意:如果您在上述表格或 Marketplace 中找不到您偏好的 Linter,可以透過擴充功能新增對其的支援。您可以使用 Python 擴充功能範本將新的 Python 工具整合到 VS Code 中。

一般設定

您可以參閱每個 Linter 擴充功能的 README,以取得有關支援設定的更多詳細資料。大多數 Linter 擴充功能都支援以下設定:

設定 預設值 說明
引數 [] 要傳遞給 Linter 的引數。注意:官方支援的 Linter 會在個別開啟的檔案上執行。請確保您的設定適用於該情境。
importStrategy useBundled 當設定為 useBundled 時,擴充功能會使用其隨附的工具版本。當設定為 fromEnvironment 時,它會嘗試優先從您選取的 Python 環境載入,否則會回退到隨附版本。
path "" 用於 Linting 的 Linter 二進位檔案路徑。注意:使用此選項可能會拖慢格式化速度。
interpreter [] 當設定為 Python 可執行檔的路徑時,擴充功能將使用該路徑來啟動 Linting 伺服器及其子處理程序。
showNotifications 關閉 控制擴充功能何時顯示通知。支援的值為 offalwaysonErroronWarning

停用 Linting

Linter 若已安裝,預設為啟用。您可以透過針對個別工作區停用擴充功能來關閉它們。

執行 Linting

當開啟或儲存 Python 檔案時,Linting 會自動執行。

錯誤與警告會顯示在開啟檔案的問題 (Problems) 面板中(⇧⌘M (Windows, Linux Ctrl+Shift+M)),並會在程式碼編輯器中突顯。將滑鼠游標懸停在底線標示的問題上即可顯示詳細資料。

Linting messages in the editor and the Problems panel

程式碼動作 (Code Actions)

部分 Linter 可能提供程式碼動作 (Code Actions),可協助解決回報的問題。您可以參閱您偏好的 Linter 擴充功能下的功能貢獻 (Feature Contributions)章節,以了解其提供的程式碼動作。

記錄功能 (Logging)

當您從下拉式選單中選擇 <linter name> 時,Linter 的記錄檔可在輸出 (Output) 面板(⇧⌘U (Windows Ctrl+Shift+U, Linux Ctrl+K Ctrl+H))中查看。

您可以透過在命令選擇區 (Command Palette)(⇧⌘P (Windows, Linux Ctrl+Shift+P))中執行 開發人員:設定記錄層級 (Developer: Set Log Level) 命令來變更 Linter 擴充功能的記錄層級。從擴充功能記錄 (Extension Logs) 群組中選取該擴充功能,然後選擇所需的記錄層級。

嚴重性 (Severity)

Linter 會以預先定義的嚴重性回報問題。這可以使用 Linter 的 severity 設定進行變更。請參閱每個 Linter 擴充功能的 README,以取得有關支援的值與嚴重性等級的更多詳細資料。

疑難排解 Linting

問題 原因 解決方案
Linter 擴充功能未回報任何問題。 您的工作區尚未選擇 Python。 請查看您正在使用的 Linter 的記錄檔,並檢查它所使用的 Python 環境路徑。如果未選擇 Python,請從命令選擇區執行 Python:選取直譯器 (Python: Select Interpreter) 命令,並為您的工作區選取一個現有的直譯器。您也可以在狀態列 (Status Bar) 中選擇 Python 版本來選取直譯器。
顯示「您有已棄用的 Linting 或格式化設定 (You have deprecated linting or formatting settings)」通知 如果您看到此通知,表示您的 VS Code 中有類似 python.lintingpython.formatting 的設定。由於Linting 與格式化支援已遷移至工具擴充功能,Python 擴充功能已不再支援這些設定。 請開啟命令選擇區(⇧⌘P (Windows, Linux Ctrl+Shift+P))並執行 喜好設定:開啟使用者設定 (JSON) (Preferences: Open User Settings (JSON)) 命令,找出這些設定在 VS Code 中的定義位置。如果它們不在您的使用者設定中,請執行 喜好設定:開啟工作區設定 (JSON) (Preferences: Open Workspace Settings (JSON)) 命令。然後刪除這些已棄用的設定。
注意:如果您使用的是 Remote Development 擴充功能套件中的任何擴充功能,您也可以透過執行 喜好設定:開啟遠端設定 (JSON) (Preferences: Open Remote Settings (JSON)) 命令來檢查遠端設定。
儘管我已安裝 Linter 擴充功能,但 Linting 仍無法運作。 Linting 可能因不同原因而失敗,例如使用了不支援的 Python 版本,或 Linter 設定不正確。請檢查 Linter 擴充功能的「輸出」頻道以了解 Linter 失敗的原因(在命令選擇區中執行 輸出:聚焦於輸出 (Output: Focus on Output) 命令,然後選取該 Linter 擴充功能的頻道)。

後續步驟

  • 格式化 (Formatting) - 了解如何格式化您的 Python 程式碼。
  • 偵錯 - 學習如何在本地與遠端對 Python 程式進行偵錯。
  • 測試 - 設定測試環境,並探索、執行與偵錯測試。
  • 基本編輯 - 了解功能強大的 VS Code 編輯器。
  • Python 擴充功能範本 - 建立擴充功能,將您最喜愛的 Linter 整合到 VS Code 中。
© . This site is unofficial and not affiliated with Microsoft.