跳到内容

功能

本节详细概述了 Ruff 语言服务器提供的功能。

诊断高亮显示

实时为您的 Python 代码提供诊断。

Editing a file in Helix

动态配置

当工作区中的配置文件发生更改时,服务器会动态刷新诊断,无论是 pyproject.tomlruff.toml 还是 .ruff.toml 文件。

服务器依赖编辑器的文件监视功能来检测这些文件的更改。 如果编辑器不支持文件监视,服务器将无法检测到配置文件的更改,因此无法刷新诊断。

Editing a <code>pyproject.toml</code> configuration file in VS Code

格式化

为您的 Python 代码提供代码格式化。 服务器可以格式化整个文档或特定范围的行。

VS Code 扩展提供了 Ruff: Format Document 命令来格式化整个文档。 在 VS Code 中,可以通过选择一系列行,右键单击并从上下文菜单中选择 Format Selection 来触发范围格式化。

Formatting a document in VS Code

代码操作

代码操作是上下文相关的建议,可以帮助您修复代码中的问题。 它们通常通过快捷方式或单击编辑器中的灯泡图标来触发。 Ruff 语言服务器提供以下代码操作

  • 对具有可用修复程序的诊断应用快速修复(例如,删除未使用的导入)。
  • 使用 # noqa 注释忽略诊断。
  • 应用文档中所有可用的快速修复。
  • 组织文档中的导入。

Applying a quick fix in Helix

您甚至可以在保存时运行这些操作。 例如,要在 VS Code 中保存时修复所有问题并组织导入,请将以下内容添加到您的 settings.json

{
  "[python]": {
    "editor.codeActionsOnSave": {
      "source.fixAll.ruff": "explicit",
      "source.organizeImports.ruff": "explicit"
    }
  }
}

修复安全性

Ruff 的自动修复被标记为“安全”和“不安全”。 默认情况下,“全部修复”操作不会应用不安全的修复。 但是,可以使用“快速修复”操作手动应用不安全的修复。 通过在 Ruff 配置文件中设置 unsafe-fixes = true,可以在使用“全部修复”时启用不安全修复的应用。

有关修复安全性的工作原理的更多详细信息,请参阅Ruff 修复文档

悬停

当聚焦在注释中的 NoQA 代码上时,服务器可以提供规则文档。 聚焦通常是用鼠标悬停,但也可用快捷方式触发。

Hovering over a noqa code in VS Code

Jupyter Notebook

与 Ruff 的 CLI 类似,Ruff 语言服务器完全支持 Jupyter Notebook 文件,并具有 Python 文件的所有可用功能。

注意

ruff-lsp 不同,并且与 Ruff 的 CLI 类似,原生语言服务器要求用户显式地在要检查和格式化的文件集中包含 Jupyter Notebook 文件。 有关如何执行此操作,请参阅Jupyter Notebook 发现部分。

Editing multiple Jupyter Notebook cells in VS Code

Formatting a selection within a Jupyter Notebook cell in VS Code