功能
本节详细概述了 Ruff 语言服务器提供的功能。
诊断高亮显示
实时为您的 Python 代码提供诊断。
动态配置
当工作区中的配置文件发生更改时,服务器会动态刷新诊断,无论是 pyproject.toml
、ruff.toml
还是 .ruff.toml
文件。
服务器依赖编辑器的文件监视功能来检测这些文件的更改。 如果编辑器不支持文件监视,服务器将无法检测到配置文件的更改,因此无法刷新诊断。
格式化
为您的 Python 代码提供代码格式化。 服务器可以格式化整个文档或特定范围的行。
VS Code 扩展提供了 Ruff: Format Document
命令来格式化整个文档。 在 VS Code 中,可以通过选择一系列行,右键单击并从上下文菜单中选择 Format Selection
来触发范围格式化。
代码操作
代码操作是上下文相关的建议,可以帮助您修复代码中的问题。 它们通常通过快捷方式或单击编辑器中的灯泡图标来触发。 Ruff 语言服务器提供以下代码操作
- 对具有可用修复程序的诊断应用快速修复(例如,删除未使用的导入)。
- 使用
# noqa
注释忽略诊断。 - 应用文档中所有可用的快速修复。
- 组织文档中的导入。
您甚至可以在保存时运行这些操作。 例如,要在 VS Code 中保存时修复所有问题并组织导入,请将以下内容添加到您的 settings.json
{
"[python]": {
"editor.codeActionsOnSave": {
"source.fixAll.ruff": "explicit",
"source.organizeImports.ruff": "explicit"
}
}
}
修复安全性
Ruff 的自动修复被标记为“安全”和“不安全”。 默认情况下,“全部修复”操作不会应用不安全的修复。 但是,可以使用“快速修复”操作手动应用不安全的修复。 通过在 Ruff 配置文件中设置 unsafe-fixes = true
,可以在使用“全部修复”时启用不安全修复的应用。
有关修复安全性的工作原理的更多详细信息,请参阅Ruff 修复文档。
悬停
当聚焦在注释中的 NoQA 代码上时,服务器可以提供规则文档。 聚焦通常是用鼠标悬停,但也可用快捷方式触发。
Jupyter Notebook
与 Ruff 的 CLI 类似,Ruff 语言服务器完全支持 Jupyter Notebook 文件,并具有 Python 文件的所有可用功能。
注意
与 ruff-lsp
不同,并且与 Ruff 的 CLI 类似,原生语言服务器要求用户显式地在要检查和格式化的文件集中包含 Jupyter Notebook 文件。 有关如何执行此操作,请参阅Jupyter Notebook 发现部分。