# scriptDefect **Repository Path**: iiray/script-defect ## Basic Information - **Project Name**: scriptDefect - **Description**: script-defect - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-06-05 - **Last Updated**: 2025-07-22 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # DefectAgent ## 环境准备 `pip install -r requirements.txt` `model_client.py` 中更改LLM的`base_url`和`api_key`, 注意设置model name默认值 **llm token:** `Linux/macOS` export DASHSCOPE_API_KEY="xxx..." `Windows(命令提示符)` set DASHSCOPE_API_KEY=xxx... **github token:** `Linux/macOS` export GITHUB_TOKEN="xxx..." `Windows(命令提示符)` set GITHUB_TOKEN=xxx... **如果已经有venv:** ``` echo 'export GITHUB_TOKEN="xxx"' >> venv/bin/activate source venv/bin/activate ``` ## 代码结构说明 **任务设置**: 缺陷分析任务的配置文件`script_task.ini`: [client] 表示待分析的用户程序源码 [tpl] 表示关注的三方库缺陷,包括repo信息,github token等 > !!目前批量分析pr流程还未串联起来(正在整),先按pr_id(如37871)来进行单pr分析 **step1. pr_analysis**: pr分析模块,其中pr_main 是主入口,配置好后script_task.ini可以直接运行该文件, 输出目录正在`outputs/pr_report`. **step2. script_analysis**: 分析client是否受defect影响的模块,其中script_main 是主入口,在执行完step1后可直接运行该文件, 输出目录在`outputs/defect_report`. **输出结果说明**: 每个step都会输出json格式的结构化数据结果. inferred: 很多时候并不是精准匹配,因此需要依赖llm的推理能力,在给定contex的前提下分析是否满足缺陷的触发条件. 置信度: 从规则中设置的基于LLM的推理给出的置信度大小,≥90%:可直接作为确认证据,70-89%:需结合其他证据使用,50-69%:仅作参考,<50%:直接忽略。 ### bug修复 - [d]code change 解析错误 - [d]分页bug ### 优化[todolist]: - [y] output可配置 - [y] 断点续传 - [y] 输出文件命名 - [y] 完善程序日志 - [y] 异常处理+流程阻断 - [y] 支持批量commit分析 - [y] 支持三方库指定版本分析 - [] client-bug分析:目前只分析py文件,后续做扩展 - [] 健壮性. 目前验证的case不够多,不知道遇到未知情况时会不会导致代码报错(遇到请直接@). - [] 类/函数结构设计有些混乱,需要重构优化. - [] 用数据库表设计替代现在对中间文件的逻辑依赖(埋雷行为,易出错且不易维护), 暂不做(耗时间赶不上ddl了) - [] 实验数据还未达到一定规模,有效性未充分验证,当前prompt设计仍在迭代优化中(最关心) - [] commit分析-断点检查优化: commit分析特点是:commit数目特别多,但真正关联的commit很少 尤其在限定三方库版本后,commit可能100个才有1个符合条件(甚至没有),但是每次执行分析任务都要全部重新扫一遍 优化方案-人工(暂时):每次分析之前,限制commit的时间区间(比如每次分析某1天的commit: 2025.6.13-2025.6.14等) ## Docker部署