目录
anyifan5小时前4次提交
目录README.md

API兼容性智能修复工具

这是一个API兼容性智能修复工具,能够自动检测项目依赖更新、下载相关依赖包,并使用AI技术修复因依赖升级导致的API兼容性问题。

项目概述

本系统主要包含以下核心功能:

  1. 依赖检测与升级:自动检测项目中的过时依赖,支持用户选择要升级的依赖项
  2. SBOM生成:为项目生成软件物料清单(SBOM),目前仅支持Java项目
  3. 错误检测:使用Spring Boot应用检测依赖升级后的编译错误
  4. 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为你的环境中的模型信息

前置要求

  1. Java环境:确保安装了Java 8或更高版本
  2. Maven:用于Java项目构建和依赖管理
  3. Python 3:用于运行Python脚本
  4. 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

该脚本会自动执行以下操作:

  1. 运行依赖升级工作流程

    • 提示输入GitHub仓库URL
    • 克隆仓库到 src/agent/test/sourceCode/
    • 检测项目语言并生成SBOM
    • 检查依赖更新并显示可升级项
    • 用户选择要升级的依赖
    • 下载依赖包到 src/agent/test/dependencies/{项目名}/
    • 更新API文档和用户提示
  2. 运行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: 版本控制和仓库克隆

注意事项

  1. 网络连接:确保网络连接正常,能够访问GitHub和Maven中央仓库
  2. 磁盘空间:确保有足够的磁盘空间存储克隆的仓库和依赖包
  3. 权限设置:确保脚本文件有执行权限
  4. Python环境:建议使用虚拟环境避免依赖冲突
  5. API密钥:确保AI服务API密钥配置正确
关于
256.9 MB
邀请码
    Gitlink(确实开源)
  • 加入我们
  • 官网邮箱:gitlink@ccf.org.cn
  • QQ群
  • QQ群
  • 公众号
  • 公众号

©Copyright 2023 CCF 开源发展委员会
Powered by Trustie& IntelliDE 京ICP备13000930号