在 Visual Studio Code 中对 Python 进行 Linting
Linting 可以高亮显示 Python 源代码中的语义和风格问题,这通常有助于您识别和纠正可能导致错误的细微编程错误或编码实践。例如,linting 可以检测到未定义变量的使用、对未定义函数的调用、缺失的括号,甚至更细微的问题,如试图重新定义内置类型或函数。Linting 与格式化不同,因为 linting 分析代码如何运行并检测错误,而格式化仅重构代码的显示方式。
注意:Python 扩展的语言服务器默认启用了语法错误检测。要了解如何配置语言服务器,请参阅语言服务器设置。本文档介绍了如何为额外的代码检测(包括风格检查)启用 linting。
选择一个 linter
在 VS Code Marketplace 中搜索您选择的 linter 扩展。如果您愿意,可以同时使用多个 linter。
Microsoft 为 Python 发布了以下 linting 扩展
社区提供的 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 扩展都支持以下设置
设置 | 默认值 | 描述 |
---|---|---|
args | [] |
要传递给 linter 的参数。注意:官方支持的 linter 是针对单个打开的文件运行的。请确保您的配置适用于该场景。 |
importStrategy | useBundled |
当设置为 useBundled 时,扩展使用其附带的工具版本。当设置为 fromEnvironment 时,它会首先尝试从您选择的 Python 环境中加载,否则将回退到捆绑版本。 |
path | "" |
用于 linting 的 linter 二进制文件的路径。注意:使用此选项可能会减慢格式化速度。 |
interpreter | [] |
当设置为 Python 可执行文件的路径时,扩展将使用该路径启动 linting 服务器及其子进程。 |
showNotifications | off |
控制扩展显示通知的时间。支持的值为 off 、always 、onError 和 onWarning 。 |
禁用 linting
如果已安装,Linter 默认是启用的。您可以通过在每个工作区禁用扩展来禁用它们。
运行 linting
当 Python 文件被打开或保存时,Linting 会自动运行。
错误和警告会显示在“问题”面板((⇧⌘M (Windows、Linux Ctrl+Shift+M)))中,针对打开的文件,并且也会在代码编辑器中高亮显示。将鼠标悬停在带下划线的问题上会显示详细信息:
代码操作
一些 linter 可能会提供代码操作,以帮助解决报告的问题。您可以参考您偏好的 linter 扩展下的功能贡献部分,了解它提供了哪些代码操作。
日志记录
当您从下拉菜单中选择 <linter name>
时,linter 的日志可在“输出”面板((⇧⌘U (Windows Ctrl+Shift+U, Linux Ctrl+K Ctrl+H)))中查看。
您可以通过从命令面板((⇧⌘P (Windows、Linux Ctrl+Shift+P)))运行Developer: Set Log Level命令来更改 linter 扩展的日志级别。从扩展日志组中选择扩展,然后选择所需的日志级别。
严重性
Linter 会报告具有预定义严重性的问题。这可以使用 linter 的 severity
设置来更改。有关支持的值和严重性级别的更多详细信息,请参阅每个 linter 扩展的 README 文件。
Linting 故障排除
问题 | 原因 | 解决方案 |
---|---|---|
Linter 扩展未报告任何问题。 | 您的工作区尚未选择 Python。 | 查看您正在使用的 linter 的日志,并检查它正在使用的 Python 环境的路径。如果没有选择 Python,请从命令面板运行Python: Select Interpreter命令,并为您的工作区选择一个现有的解释器。 |
显示“您有已弃用的 linting 或格式化设置”通知 | 如果您看到此通知,这意味着您在 VS Code 中有诸如 python.linting 或 python.formatting 之类的设置。Python 扩展不再支持这些设置,因为linting 和格式化支持已迁移到工具扩展。 |
通过打开命令面板((⇧⌘P (Windows、Linux Ctrl+Shift+P)))并运行Preferences: Open User Settings (JSON)命令,在 VS Code 中查找这些设置的定义位置。如果它们不在您的用户设置中,则运行Preferences: Open Workspace Settings (JSON)命令。然后删除已弃用的设置。 注意:如果您正在使用远程开发扩展包中的任何扩展,您也可以通过运行Preferences: Open Remote Settings (JSON)命令来检查远程设置。 |
尽管我安装了 linter 扩展,但 linting 仍然不起作用。 | Linting 可能会因不同原因而失败,例如使用了不受支持的 Python 版本,或者 linter 配置不正确。检查 linter 扩展的输出通道以了解 linter 失败的原因(在命令面板中运行Output: Focus on Output命令,然后选择 linter 扩展通道)。 |
后续步骤
- 格式化 - 了解如何格式化您的 Python 代码。
- 调试 - 了解如何在本地和远程调试 Python。
- 测试 - 配置测试环境以及发现、运行和调试测试。
- 基本编辑 - 了解功能强大的 VS Code 编辑器。
- Python 扩展模板 - 创建一个扩展,将您最喜欢的 linter 集成到 VS Code 中。