From 6e2856a177c0f96f00baeca61d1de25526bb37f4 Mon Sep 17 00:00:00 2001 From: xiaoxia Date: Fri, 17 Jul 2026 14:45:54 +0800 Subject: [PATCH] =?UTF-8?q?fix(ci):=20=E4=BF=AE=E5=A4=8DAI=E4=BB=A3?= =?UTF-8?q?=E7=A0=81=E5=AE=A1=E6=9F=A5=E8=84=9A=E6=9C=AC=E7=BC=BA=E5=A4=B1?= =?UTF-8?q?build=5Freview=5Fprompt=E5=87=BD=E6=95=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- scripts/ci_code_review.py | 60 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 60 insertions(+) diff --git a/scripts/ci_code_review.py b/scripts/ci_code_review.py index 685467007..74ecb747b 100644 --- a/scripts/ci_code_review.py +++ b/scripts/ci_code_review.py @@ -392,6 +392,66 @@ def call_llm_coze( return None +def build_review_prompt(diff_text: str, pr_number: int, file_list: list) -> str: + """ + 构建代码审查的 Prompt。 + 包含:PR 基本信息、修改文件列表、diff 内容、审查要求。 + """ + # 提取文件名列表 + file_names = [f.get("filename", "") for f in file_list] if file_list else [] + file_list_str = "\n".join(f" - {fn}" for fn in file_names) if file_names else " (未获取到文件列表)" + + prompt = f"""请作为资深代码审查专家,对以下 Pull Request 的代码变更进行严格审查。 + +## PR 基本信息 +- PR 编号: #{pr_number} +- 修改文件数: {len(file_list) if file_list else '未知'} + +## 修改文件列表 +{file_list_str} + +## 代码变更(diff) +```diff +{diff_text} +``` + +## 审查要求 +请从以下维度进行审查,重点关注严重问题: + +1. **逻辑正确性**:是否有明显的逻辑错误、边界条件遗漏、空指针/None引用风险 +2. **异常处理**:异常捕获是否合理,是否有裸except,错误处理是否完善 +3. **参数校验**:函数入参、返回值是否有必要的校验 +4. **代码质量**:是否有重复代码、命名不清晰、过于复杂的函数 +5. **性能问题**:是否有明显的性能隐患(如循环内重复计算、不必要的数据库查询) +6. **安全问题**:是否有注入风险、敏感信息泄露、权限控制问题 + +## 输出格式 +请使用以下格式输出,语言为中文: + +### 📊 审查概览 +- 整体评价:(通过 / 有建议 / 需修改) +- 严重问题数量:X 个 +- 一般建议数量:X 个 + +### ❌ 需修改的问题(严重) +(如果没有严重问题,写"无") +1. **[文件: 行号] 问题标题** + - 问题描述:... + - 修改建议:... + +### 💡 改进建议(一般) +(如果没有建议,写"无") +1. **[文件: 行号] 建议标题** + - 具体内容:... + +### ✅ 良好实践 +(可选,列出值得肯定的地方) + +请务必基于代码实际内容审查,不要编造不存在的问题。如果代码质量良好,直接给出通过结论即可。 +""" + return prompt + + def call_llm_for_review( diff_text: str, pr_number: int, -- 2.54.0