# SecureIterator **Repository Path**: gong-jianian/secure-iterator ## Basic Information - **Project Name**: SecureIterator - **Description**: 基于OpenAI api、CodeQL和Bandit的安全代码生成器。 - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2024-03-26 - **Last Updated**: 2024-03-26 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 工具介绍 本命令行工具可以自动调用OpenAI API生成Python代码,并迭代地执行安全检查以生成更安全的代码。 ### 工具链 + 代码生成与修复:OpenAI API + 代码漏洞检测:CodeQL + Bandit ### 项目结构 + `codeql`:codeQL官网下载的预编译bundle + `qlQueries`:工具中用到的codeQL查询文件 + `codeSpace`:工具运行过程中存储临时文件的目录 + `prompts`:存放提示词文件(一般为待补全的Python代码)的目录 + `generated`:存放最终生成的补全代码文件的目录 + `main.py`:工具主脚本 + `setup.py`:用于设置`.env`的脚本 + `.env`:存放api_key和选用的模型名称的环境变量文件 + `log.txt`:日志文件 + `requirements.txt`:执行本工具Python脚本的依赖项 ### 使用方法 + 安装依赖项: ```bat > pip install -r requirements.txt ``` + 查看各参数含义: ```bat > python main.py -h ``` + 示例命令: ```bat > python main.py --iteration=2 --randomize --step=0.2 --check_result --setup ``` + 使用`prompts`目录下的文件作为待补全代码(默认) + 【检查+重新生成】迭代2轮 + 以每次增加temperature参数0.2为步长,逐步提高修复的随机性(以期修复稳定状态下无法修复的漏洞) + 在迭代结束后,再次执行一次自动检查 + 在执行之前,重新设置环境变量(api_key, model_1, model_2) ```bat > python main.py --iteration=1 --check_result --prompt="generate a function that connects to pymysql database" ``` + 从命令行读入提示词构造待补全代码文件加入`prompts`目录(如果`prompts`目录原本不为空,那么原先的文件也会被作为待补全代码) + 【检查+重新生成】迭代1轮 + 在迭代结束后,再次执行一次自动检查 ### 注意事项 + 本工具目前只支持window 64位系统 + 不论是通过指定`--dir`参数来自动复制,还是直接在`prompts`目录下提供待补全代码,都不要包含二级目录,即仅包含待补全的代码文件。初始时已在`prompts`目录下提供部分示例待补全代码。 + CodeQL运行十分缓慢,请耐心等待 + OpenAI model的合法名称为`gpt-3.5-turbo`、`gpt-4`等 + 关于OpenAI API的调用,请提供自己的API_key,并需要有能够访问Open AI官网的代理。如果网络出现问题,可以检查`main.py`中的本机proxy是否正确设置: ``` os.environ["http_proxy"] = "http://127.0.0.1:7890" os.environ["https_proxy"] = "http://127.0.0.1:7890" ```