在 Visual Studio Code 中检查 Python

Linting 突出显示 Python 源代码中的语法和风格问题,这通常可以帮助您识别和纠正微妙的编程错误或可能导致错误的非常规编码实践。例如,linting 检测未初始化或未定义变量的使用、对未定义函数的调用、缺少括号,甚至更微妙的问题,例如尝试重新定义内置类型或函数。Linting 与Formatting不同,因为 Linting 分析代码如何运行并检测错误,而格式化仅重构代码的显示方式。

注意:语言服务器启用文体和句法代码检测。要启用第三方 linter 进行其他问题检测,您可以使用Python: Select Linter命令并选择适当的 linter 来启用它们。

选择一个短绒棉

从 VS Code Marketplace安装您选择的 linting 工具。

Microsoft 发布了以下 linting 扩展:

短绒 扩大
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 扩展:

短绒 扩大
Ruff https://marketplace.visualstudio.com/items?itemName=charliermarsh.ruff
mypy https://marketplace.visualstudio.com/items?itemName=matangover.mypy

注意:如果您在上表或市场中找不到您喜欢的 linter,您可以通过扩展添加对其的支持。您可以使用Python 扩展模板将新的 Python 工具集成到 VS Code 中。

常规设置

环境 默认 描述
args [] 要传递给 linter 的参数。注意:官方支持的 linter 在单个打开的文件上运行。确保您的配置适用于该场景。
importStrategy useBundled 当设置为 时useBundled,扩展使用其附带的工具版本。当设置为 时fromEnvironment,它会首先尝试从您选择的 Python 环境加载,否则它将回退到捆绑版本。

禁用 linting

如果安装了 Linters,则默认启用。您可以通过禁用每个工作区的扩展来禁用它们。

运行 linting

打开或保存 Python 文件时,Linting 将自动运行。

错误和警告显示在打开文件的问题面板 ( ⇧⌘M (Windows、Linux Ctrl+Shift+M ) ) 中,并且也在代码编辑器中突出显示。将鼠标悬停在带下划线的问题上会显示详细信息:

编辑器和问题面板中的 Linting 消息

代码操作

一些 linter 可能会提供代码操作来帮助解决报告的问题。您可以参考您首选的 linter 扩展下的功能贡献部分,以了解它提供的代码操作。

记录

当您从下拉菜单中进行选择时,linter 的日志可在“输出”面板 ( ⇧⌘U (Windows Ctrl+Shift+U、Linux Ctrl+K Ctrl+H ) )中找到。<linter name>

您可以通过运行命令面板中的开发人员:设置日志级别命令 ( ⇧⌘P (Windows、Linux Ctrl+Shift+P ) )来更改 linter 扩展的日志级别。从扩展日志组中选择扩展,然后选择所需的日志级别。

严重性

Linters 报告具有某些预定义严重性的问题。这可以使用severitylinter 的设置来更改。有关支持的值和严重性级别的更多详细信息,请参阅每个 linter 扩展的自述文件。

故障排除 linting

问题 原因 解决方案
No problems reported 尚未为您的工作区选择任何 Python。 查看您正在使用的 linter 的日志,并检查它正在使用的 Python 环境的路径。如果未选择 Python,请运行Python:从命令面板中选择解释器命令,并为您的工作区选择现有解释器。

下一步

  • 格式化- 了解如何格式化 Python 代码。
  • 调试- 学习本地和远程调试 Python。
  • 测试- 配置测试环境并发现、运行和调试测试。
  • 基本编辑- 了解强大的 VS Code 编辑器。
  • Python 扩展模板- 创建一个扩展以将您喜欢的 linter 集成到 VS Code 中。