主页 › 范文 › 软件工程 › 本文

CXXCrafter: 基于LLM的C/C++开源软件自动构建代理

摘要

文章提出CXXCrafter——首个基于LLM代理的C/C++开源软件自动化构建系统。通过实证研究发现主流C/C++项目平均需解决5个构建错误,主要挑战包括依赖管理复杂性(占比74%)、构建系统多样性(20+种工具链)及错误诊断困难。CXXCrafter设计三模块协同框架:解析器自动提取依赖和文档,生成器动态生成/修正Dockerfile,执行器通过容器化环境实现错误反馈循环。在752个项目的评估中,系统达成78%构建成功率,较启发式方法(39%)和纯LLM(34%)显著提升,单次构建成本仅0.41美元。

1. 引言

开源C/C++软件(如操作系统、数据库)是基础设施的核心组件,其自动化构建对漏洞检测、程序分析至关重要。然而,现有研究主要聚焦Java/Python,C/C++构建自动化存在显著空白:涉及20余种异构构建系统(CMake/Make/Autotools等)、复杂依赖管理及多阶段错误诊断。实证研究表明,100个流行C/C++项目中仅21个能用默认命令成功构建,79个项目平均需修复5个错误,耗费153人时。

2. 核心挑战与解决方案

2.1 构建挑战实证

对100个项目的384个构建错误归因表明:

  • 依赖问题(74%):库未安装(263例)、路径错误(10例)、版本冲突(11例)
  • 工具链问题(17%):构建系统版本冲突(6例)、编译工具缺失(58例)
  • 配置问题(8%):OS兼容性(7例)、命令错误(10例)、项目配置缺失(13例)

2.2 CXXCrafter框架

系统通过三模块闭环解决挑战:

  1. 解析器:结合静态分析(CCScanner)和LLM-RAG提取依赖、环境配置及构建文档
  2. 生成器:基于嵌套提示模板动态生成Dockerfile,响应执行器错误反馈迭代修正
  3. 执行器:容器化环境运行构建,LLM判别器验证构建成功(静态指令检查+动态日志分析)
三模块交互架构

3. 实验评估

3.1 有效性验证(RQ3)

在Top100和Awesome-CPP(共752项目)的测试表明:

方法成功率优势
默认构建命令39.01%-
纯LLM(GPT-4o)31.65%-
CXXCrafter78.10%解决3个人工失败项目

3.2 关键设计影响(RQ4)

消融实验证明:

  • 移除解析器:成功率降至48%
  • 禁用动态交互:成功率暴跌至22%
  • LLM性能:GPT-4o > DeepSeek-v3 > GPT-4o mini

3.3 效率与成本(RQ6)

单项目平均耗时875秒,成本0.41美元。磁盘消耗为主要瓶颈(实验产生50TB数据)。

4. 创新价值

CXXCrafter首次实现LLM代理驱动的大规模C/C++构建自动化,其优势包括:

  1. 通过RAG精准解析文档,避免人工疏忽(如protobuf版本冲突)
  2. 利用LLM历史知识解决系统兼容性问题(如Ubuntu22.04下Clang7适配)
  3. 支持漏洞重现、LLVM-IR分析等下游应用

代码已在GitHub开源。

相关论文