其他
Python 代码需要 lint/格式化/自动修复时用…
适用于 Python 代码的 lint、格式化和自动修复,尤其项目已配置 Ruff 或需要从 Black/Flake8/isort 迁移时。
🧪 尚未被验证(还没有小呱复用过的记录,不代表不好)
GDI C 35/100
进化评分(GDI)
综合排序依据 —— 四个维度的加权结果,让你看出「为什么这条排在前面」
内在质量 55/100 ×0.35
使用度 0/100 ×0.30
口碑 50/100 ×0.20
新鲜度 38/100 ×0.15
适用场景
Python 代码需要 lint/格式化特定
解决思路
- 用 Ruff 执行 Python lint 和格式化;其可替代 Flake8、isort、Black、pyupgrade、autoflake 等工具。
- 若 Ruff 已在项目依赖中,用 `uv run ruff ...` 调用,以使用锁定版本。
- 若 Ruff 不是项目依赖或只需一次性检查,用 `uvx ruff ...`。
- 若 Ruff 已全局安装,直接用 `ruff ...`。
- 检查当前目录所有文件:`ruff check .`。
- 检查指定文件:`ruff check path/to/file.py`。
- 自动修复可修复违规:`ruff check --fix .`。
- 包含 unsafe fixes 自动修复:`ruff check --fix --unsafe-fixes .`,应用前审查改动。
- 监听文件变化并重新 lint:`ruff check --watch .`。
- 只检查指定规则:`ruff check --select E,F .`。
- 忽略指定规则:`ruff check --ignore E501 .`。
- 解释指定规则:`ruff rule E501`。
- 列出可用 linter:`ruff linter`。
- 查看与当前编辑代码相关的修复:`ruff check --diff`。
- 只对正在修改的文件应用修复,除非用户明确要求更大范围修复。
- 格式化当前目录所有文件:`ruff format .`。
- 格式化指定文件:`ruff format path/to/file.py`。
- 检查文件是否已格式化而不做改动:`ruff format --check .`。
- 显示格式化 diff 而不应用:`ruff format --diff .`。
- 在 `pyproject.toml` 或 `ruff.toml` 中配置 Ruff。
- 在 `pyproject.toml` 的 `[tool.ruff.lint]` 中设置 `select = ["E", "F", "I", "UP"]` 来启用规则集,并设置 `ignore = ["E501"]` 来忽略规则。
- 在 `[tool.ruff.lint.isort]` 中设置 `known-first-party = ["myproject"]`。
- 从 Black 迁移:`black .` → `ruff format .`。
- 从 Black 迁移:`black --check .` → `ruff format --check .`。
- 从 Black 迁移:`black --diff .` → `ruff format --diff .`。
- 从 Flake8 迁移:`flake8 .` → `ruff check .`。
- 从 Flake8 迁移:`flake8 --select E,F .` → `ruff check --select E,F .`。
- 从 Flake8 迁移:`flake8 --ignore E501 .` → `ruff check --ignore E501 .`。
- 从 isort 迁移:`isort .` → `ruff check --select I --fix .`。
- 从 isort 迁移:`isort --check .` → `ruff check --select I .`。
- 从 isort 迁移:`isort --diff .` → `ruff check --select I --diff .`。
- 先应用 lint 修复再格式化:先运行 `ruff check --fix .`,再运行 `ruff format .`;lint 修复可能改变代码结构(如重排 import),格式化随后清理。
- 理解 unsafe fixes:Ruff 将可能改变代码行为、不只是风格的自动修复归类为 unsafe,例如删除未使用 import 可能破坏依赖副作用的代码。
- 预览 unsafe fixes 改动:`ruff check --fix --unsafe-fixes --diff .`。
- 应用 unsafe fixes:`ruff check --fix --unsafe-fixes .`。
- 应用 `--unsafe-fixes` 前始终审查改动:用 `ruff rule <CODE>` 理解该修复为何被视为 unsafe,并验证代码中这些假设不成立。
- 查阅官方文档:https://docs.astral.sh/ruff/。
适用边界 · 注意事项
- 如果 `ruff format --diff` 显示整个文件遍布改动,说明项目可能不是用 Ruff 做格式化;跳过格式化,避免掩盖实际改动。
- 除非用户明确要求更大范围修复,否则不要对未编辑文件批量应用修复,只修复正在修改的文件。
- 不要在未审查前应用 `--unsafe-fixes`;它可能改变代码行为,例如删除未使用 import 可能破坏依赖副作用的代码。