使用ruff作为Python项目的Linter

💡 原文英文,约600词,阅读约需2分钟。
📝

内容提要

Ruff是2022年推出的Python linter,性能优于pylint和flake8,可替代多种工具。支持通过pyproject.toml配置,可启用全部规则并忽略不需要的,也支持按文件忽略。Ruff还能格式化代码,类似black,并集成到IDE如Neovim,通过LSP提供linting和格式化功能。

🔎

延伸解读

性能与替代性

Ruff自2022年发布以来,凭借其高性能和全面的规则支持,逐渐取代了pylint和flake8等传统工具。文章指出,Ruff可以“完全替代”其他主流linter,这得益于其用Rust编写,执行速度更快,且支持大量规则。对于大型代码库,这种性能优势尤为明显,能显著减少linting时间,提升开发效率。

配置策略

文章推荐采用“反向策略”配置Ruff:先启用所有规则(select = ["ALL"]),再通过ignore和per-file-ignores排除不需要的规则。这种策略能最大化捕获潜在问题,但需要用户对规则有较深理解,以避免忽略过多或过少。同时,Ruff支持pyproject.toml,便于与其他工具统一配置。

格式化与集成

Ruff不仅是一个linter,还提供类似black的格式化功能,且可与black共存。它支持LSP,能集成到Neovim等编辑器,提供linting和格式化能力。用户可通过配置文件自定义LSP行为,如自动整理导入。这种一体化设计减少了工具链的复杂性,但用户需注意格式化风格与black的细微差异。

Q&A

Ruff是什么?它相比pylint和flake8有什么优势?

Ruff是2022年推出的Python linter,性能优于pylint和flake8,可以替代多种工具,支持大量规则,并且安装和使用更简单。

如何使用Ruff检查Python代码?

安装Ruff后,可以使用命令 `uv run ruff check path/to/src` 进行代码检查,使用 `--fix` 选项可以自动修复部分问题。

Ruff支持哪些配置文件?如何配置?

Ruff支持pyproject.toml、ruff.toml或.ruff.toml作为配置文件。可以在pyproject.toml中配置,例如设置行长度、目标Python版本,并通过select和ignore控制启用的规则。

如何启用Ruff的所有规则并忽略不需要的规则?

在配置文件中,设置 `select = ["ALL"]` 以启用所有规则,然后通过 `ignore` 列表忽略不需要的规则,也可以使用 `per-file-ignores` 按文件模式忽略。

Ruff能格式化代码吗?与Black相比如何?

是的,Ruff可以作为格式化工具,使用 `uv run ruff format src/` 格式化代码,与Black的输出类似。也可以使用 `--check` 模式检查格式。如果喜欢Black,也可以继续使用Black,Ruff的linting与Black兼容。

如何将Ruff集成到Neovim中?

在Neovim中,可以使用nvim-lspconfig配置Ruff的LSP,启用 `vim.lsp.enable("ruff")`。如果需要自定义,可以创建配置文件 `~/.config/nvim/after/lsp/ruff.lua` 并设置相关选项。

🏷️

标签

➡️

继续阅读