【AI总结】一篇吃透 Ruff CLI:从入门到进阶的完整命令手册

一篇吃透 Ruff CLI:从入门到进阶的完整命令手册

ruff github:https://github.com/astral-sh/ruff
ruff docs:https://docs.astral.sh/ruff/


一、为什么选 Ruff?

特性传统方案Ruff
速度Flake8+isort+Black 组合 ≈ 5–10 sRust 实现 < 0.3 s
规则覆盖需多工具拼积木700+ 规则内置
配置多个文件单文件 pyproject.toml
自动修复少量400+ 规则可 --fix

二、安装 & 升级

# 全局安装(推荐)
uv tool install ruff          # 使用 uv
pipx install ruff             # 或 pipx
pip install ruff              # 传统 pip

# 升级
uv tool upgrade ruff

三、核心子命令思维导图

ruff
├─ check      # 静态检查(lint)
├─ format     # 代码格式化
├─ fix        # 仅修复
├─ rule       # 查看规则
├─ list       # 列出规则
├─ clean      # 清缓存
└─ version    # 版本

四、ruff check —— 一把梭搞定 Lint

1. 最常用组合

ruff check .                    # 递归检查
ruff check --fix                # 自动修复
ruff check --fix --unsafe       # 含不安全修复

2. 精准控制

ruff check --select E9,F63      # 只看错误 & 未定义
ruff check --ignore E501,W503   # 忽略行过长 & 运算符换行
ruff check --extend-select I    # 追加 isort 规则

3. 持续集成

# 输出 GitHub 兼容格式
ruff check --output-format=github

GitHub Actions 模板:

- uses: astral-sh/ruff-action@v2
  with:
    src: ./src
    args: --output-format=github

五、ruff format —— Black 的极速替代

ruff format .                   # 就地格式化
ruff format --check             # 仅检查,不改文件
ruff format --diff              # 打印 diff,适合 CI

与 Black 差异速览

规则BlackRuff
行长88 默认同 Black,可改
字符串引号优先双引号同 Black
速度1x30x+

六、规则字典:ruff rule & ruff list

# 查看单条规则
ruff rule E501
# 输出 JSON 列表
ruff list --format=json | jq '.[] | select(.code=="F401")'

七、配置文件示例

pyproject.toml(推荐)

[tool.ruff]
line-length = 100
target-version = "py311"
select = ["E", "F", "W", "I", "UP"]
ignore = ["E501", "COM812"]
fixable = ["ALL"]
unfixable = ["F601"]

[tool.ruff.per-file-ignores]
"tests/*" = ["S101"]  # 允许 assert

ruff.toml(极简)

line-length = 88
select = ["E", "F"]

八、与 uv 的丝滑配合

# 免安装即用
uvx ruff check .

# 全局装一份
uv tool install ruff
ruff --version

九、实战工作流(本地 → CI)

阶段命令
本地开发ruff check --fix . && ruff format .
预提交钩子pre-commit install(官方 hook 已内置)
CI 检查ruff check --output-format=github
发布前ruff check && ruff format --check

十、常见问题 FAQ

Q1:如何关闭某行?

import os  # noqa: F401

Q2:如何忽略整个目录?
在配置里加:

[tool.ruff]
exclude = ["migrations", "build"]

Q3:与 isort/black 共存?
无需共存,Ruff 已集成。


十一、一键脚本(保存为 lint.sh

#!/usr/bin/env bash
set -e
ruff check --fix .
ruff format .
echo "✅ Lint & format done"

赋予可执行权限:

chmod +x lint.sh
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

荔枝吻

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值