|
|
||
|---|---|---|
| docs | ||
| scripts | ||
| src | ||
| README.md | ||
| config.yaml | ||
| requirements.txt | ||
README.md
API兼容性智能修复工具
这是一个API兼容性智能修复工具,能够自动检测项目依赖更新、下载相关依赖包,并使用AI技术修复因依赖升级导致的API兼容性问题。
项目概述
本系统主要包含以下核心功能:
- 依赖检测与升级:自动检测项目中的过时依赖,支持用户选择要升级的依赖项
- SBOM生成:为项目生成软件物料清单(SBOM),目前仅支持Java项目
- 错误检测:使用Spring Boot应用检测依赖升级后的编译错误
- AI智能修复:基于错误日志和API文档,使用AI代理自动修复代码中的API兼容性问题
系统架构
项目根目录/
├── config.yaml # 全局配置文件
├── scripts/
│ └── run_workflow.sh # 主工作流程脚本
├── src/
│ ├── dependency_upgrade_workflow_simple.py # 依赖升级工作流程
│ ├── agent/ # AI修复代理
│ │ ├── main.py # 主入口文件
│ │ ├── errorExtractor/ # 错误检测模块
│ │ │ ├── start-springboot.sh # Spring Boot启动脚本
│ │ │ └── src/ # Java错误检测代码
│ │ ├── api_doc.txt # API文档
│ │ ├── user_prompt.txt # 用户提示模板
│ │ └── test/ # 测试目录
│ │ ├── sourceCode/ # 源代码目录
│ │ ├── errors/ # 错误日志目录
│ │ └── dependencies/ # 依赖包目录
│ ├── sbom/ # SBOM生成模块
│ └── crawler/ # 依赖检查模块
└── docs/ # 文档目录
运行逻辑
1. 依赖升级阶段
- 克隆目标GitHub仓库
- 检测项目编程语言
- 生成SBOM文件
- 检查依赖更新
- 用户选择要升级的依赖
- 下载新旧版本依赖包
- 查找API更新日志
2. 错误检测阶段
- 启动Spring Boot错误检测服务
- 使用新版本依赖编译项目
- 收集编译错误信息
3. AI修复阶段
- 分析错误日志和API文档
- 使用AI代理生成修复方案
- 应用修复到源代码
- 验证修复结果
运行步骤
配置文件
- 修改src/agent/config.py中的BASE_PATH为你的环境中的agent路径
- 修改src/agent/config.py中的MODEL_CLIENT_INFO为你的环境中的模型信息
前置要求
- Java环境:确保安装了Java 8或更高版本
- Maven:用于Java项目构建和依赖管理
- Python 3:用于运行Python脚本
- Git:用于克隆仓库
环境安装
1. 安装Python依赖
# 安装项目依赖
pip install -r requirements.txt
# 或者使用conda(推荐)
conda install --file requirements.txt
2. 安装Java和Maven
Ubuntu/Debian:
# 安装Java
sudo apt update
sudo apt install openjdk-11-jdk
# 安装Maven
sudo apt install maven
CentOS/RHEL:
# 安装Java
sudo yum install java-11-openjdk-devel
# 安装Maven
sudo yum install maven
macOS:
# 使用Homebrew安装
brew install openjdk@11
brew install maven
3. 验证安装
# 验证Java版本
java -version
# 验证Maven版本
mvn -version
# 验证Python版本
python3 --version
# 验证依赖安装
python3 -c "import pyautogen; print('pyautogen installed successfully')"
步骤1:启动错误检测程序
首先需要启动Spring Boot错误检测服务:
# 进入错误检测模块目录
cd src/agent/errorExtractor
# 启动Spring Boot应用
./start-springboot.sh
启动选项:
--port=端口号:指定服务端口(默认:8080)--profile=环境:指定运行环境(默认:dev)--help:显示帮助信息
示例:
# 使用默认参数启动
./start-springboot.sh
# 指定端口和环境
./start-springboot.sh --port=9090 --profile=prod
步骤2:运行主工作流程
在项目根目录下运行主工作流程脚本:
# 运行完整工作流程
./scripts/run_workflow.sh
该脚本会自动执行以下操作:
-
运行依赖升级工作流程:
- 提示输入GitHub仓库URL
- 克隆仓库到
src/agent/test/sourceCode/ - 检测项目语言并生成SBOM
- 检查依赖更新并显示可升级项
- 用户选择要升级的依赖
- 下载依赖包到
src/agent/test/dependencies/{项目名}/ - 更新API文档和用户提示
-
运行AI修复代理:
- 调用错误检测服务
- 分析编译错误
- 使用AI生成修复方案
- 应用修复到源代码
目录结构说明
配置文件说明
config.yaml:全局配置文件,包含语言设置和工具配置src/agent/api_doc.txt:API文档,包含依赖升级的变更信息src/agent/user_prompt.txt:AI修复的用户提示模板
支持的语言
- Java:基于Maven项目,支持pom.xml依赖管理
依赖说明
Python依赖包
- pyautogen: AI代理框架,用于构建智能修复代理
- openai: OpenAI API客户端,用于AI模型调用
- requests: HTTP请求库,用于网络通信
- PyYAML: YAML配置文件处理
- packaging: 版本比较和解析
系统依赖
- Java 8+: 用于Spring Boot错误检测服务
- Maven: Java项目构建和依赖管理
- Git: 版本控制和仓库克隆
注意事项
- 网络连接:确保网络连接正常,能够访问GitHub和Maven中央仓库
- 磁盘空间:确保有足够的磁盘空间存储克隆的仓库和依赖包
- 权限设置:确保脚本文件有执行权限
- Python环境:建议使用虚拟环境避免依赖冲突
- API密钥:确保AI服务API密钥配置正确