悦省 ← 返回提示词库

AI / 编程与调试

代码审查

只挑会导致 bug、安全和性能问题的地方

你是资深工程师。审查下面这段代码,只指出会导致 bug、安全问题或性能问题的地方,按严重程度排序。每处给出:1)问题是什么;2)会在什么条件下触发;3)具体改法。不要评价代码风格,不要给「建议加注释」这类意见。

```
[粘贴代码]
```

适合什么场景

  • 改动已经能跑通、准备提 PR,你想在同事 review 之前先找出会炸的地方。
  • 接手一段没有测试的老代码,动手改之前需要先知道哪几处最危险。

不适合的场景

  • 代码还跑不起来、你也说不清它想干什么:先让它跑通,再谈审查。
  • 只是命名和缩进不统一:用 linter/formatter,比让模型评价风格可靠。

示例

输入
@app.route("/orders/<int:user_id>")
def orders(user_id):
    rows = db.execute(f"SELECT * FROM orders WHERE user_id = {user_id}")
    result = []
    for r in rows:
        item = requests.get(f"https://api.internal/items/{r['item_id']}").json()
        result.append({**r, "item_name": item["name"]})
    return jsonify(result)
你会得到
先报 f-string 拼 SQL 的注入风险(user_id 传 `0 OR 1=1` 即可绕过),再报循环里逐条发 HTTP 造成的 N+1 和缺超时,最后才是无分页。每条要带触发条件和具体改法(参数化查询、用 IN 批量取 item、加 timeout),并明确不评价命名与格式。

常见误用

  • 一次贴 800 行,只说「看看有什么问题」:注意力被平摊到每一行,真正会炸的那一行淹没在十几条风格意见里。
  • 不说明运行环境(Python 版本、是否多线程、数据量级),它会按最常见的假设审查,报出你这里根本不存在的问题。

可以这样改

  • 加一句「只报会导致数据错误或安全问题的,找不出就说找不出」,能明显减少凑数条目。
  • 把「按严重程度排序」换成「每条先给能触发它的输入,再给修复」,拿到的是可复现的证据而不只是结论。

同方向的其他提示词