AI 生成的 Python 代码先用 Ruff 做一轮静态检查,能尽早发现未使用的导入、未定义的变量和不一致的导入顺序。检查时不需要执行这段陌生代码。下面用一个“计算价格合计”的教学样例,走完安装、生成报告、修复和复查;最后再用输入输出核对功能。
准备环境:把检查器装进独立目录
需要已安装的 Python。本例实际验证环境是 Windows、Python 3.13.14、Ruff 0.16.9;配置以 Python 3.11 为目标语法版本。下面是 Windows PowerShell 命令,在你新建的练习目录运行,避免覆盖项目现有配置:

python -m venv .venv
.\.venv\Scripts\python.exe -m pip install ruff==0.16.9
.\.venv\Scripts\python.exe -m ruff --version
macOS 或 Linux 把可执行文件路径改为 .venv/bin/python。真实项目已有 Ruff 时,优先使用项目锁定版本和配置;本文固定版本用于复现样例。Ruff 官方教程分别介绍了检查器与格式化器,它们是两个动作。
固定规则,再检查 AI 给出的草稿
新建 pyproject.toml,内容如下。明确列规则,可以避免换机器后因默认规则变化而产生不一致结果。
[tool.ruff]
target-version = "py311"
line-length = 88
[tool.ruff.lint]
select = ["E4", "E7", "E9", "F", "I"]
F 包含变量与导入相关检查,I 检查导入排序。此配置只是本练习的范围;团队项目的规则应遵循已有规范。配置查找和覆盖方式见官方配置说明。
把下面代码保存为 generated_bad.py。这是人为设计的错误样例,用来模拟 AI 草稿中常见的变量名错误,不是真实项目代码:
import os
import json
def total_price(prices):
return sum(price)
先生成便于阅读的报告,再保存机器可读报告:
.\.venv\Scripts\python.exe -m ruff check generated_bad.py
.\.venv\Scripts\python.exe -m ruff check generated_bad.py --output-format json > ruff-before.json
Windows PowerShell 5.1 的重定向文件可能使用 UTF-16;要让后续程序按 UTF-8 读取,可用 PowerShell 7,或显式指定读取编码。终端里检查后立即查看 $LASTEXITCODE;本样例的 Ruff 检查退出码为 1,表示有检查问题。输出文件存在本身不能说明通过。
| 本样例实际检出项 | 位置与含义 | 处理方式 |
|---|---|---|
| I001 | 第 1 行开始的导入块顺序不符合规则 | 先判断导入是否需要,避免只排序无用代码 |
| F401,两条 | 第 1、2 行的 os、json 未使用 | 删除本函数不需要的导入 |
| F821 | 第 6 行引用了未定义的 price | 核对原需求,确认应当汇总参数 prices |
规则含义可分别核对F401 未使用导入和F821 未定义名称。这些定位比直接再问一次“AI 帮我优化”更具体:把报错编号、代码行和预期行为给出,才能检查修复是否改变了需求。
人工确认修复,再复扫和核对功能
保存修复稿为 generated_fixed.py:
def total_price(prices):
return sum(prices)
本例需求约定输入是一组数字,空列表合计为 0。Ruff 能发现 price 没有定义,但无法替你决定空列表、折扣、币种、税费该怎样处理。
.\.venv\Scripts\python.exe -m ruff check generated_fixed.py
.\.venv\Scripts\python.exe -m ruff format --check generated_fixed.py
.\.venv\Scripts\python.exe -c "from generated_fixed import total_price; assert total_price([10, 20.5]) == 30.5; assert total_price([]) == 0; print('功能样例通过')"
修复稿在上述验证环境中得到 All checks passed!;两个函数样例也实际通过。读者复现时,先确认检查退出码为 0,再确认正常输入和边界输入满足自己的需求。这里的小数样例只展示函数行为;金额结算需按项目约定使用 Decimal 或最小货币单位,不能把浮点示例直接用于账务。
如果想自动修复,先提交或备份工作文件,再执行 ruff check --fix,随后逐项查看差异。不要在不了解影响时启用不安全修复;也不要把所有报错统一加 noqa 隐藏。F821 这种业务含义相关的修复,通常仍需要人判断。
哪些问题仍要另外验证?
静态检查通过只说明选定规则没有继续报错,不能证明函数算对、接口存在、第三方依赖可用或权限校验完整。Ruff 不会把每个外部 API 请求实际发出去,也不能判断这个价格函数是否符合你的业务。下一步是运行项目现有测试,尤其覆盖空输入、错误类型、异常分支和修改涉及的旧功能。
如果报出不存在的规则,先核对 ruff --version 与项目锁定版本;如果预期的问题没有检出,检查运行目录、被排除文件和生效配置。语法解析失败应先修复语法,不能把它当作“没有问题”。关于如何选择功能测试任务,可继续阅读AI 编程代码生成与调试能力评估方法,再把这轮 Ruff 报告加入每次代码修改的验证记录。
Ai菜鸟网。发布者:AI小管家,转载请注明出处:https://www.alyyhw.com/30536.html