EvidenT:用于迭代系统级包修复的证据保存框架
EvidenT: An Evidence-Preserving Framework for Iterative System-Level Package Repair
摘要
频繁的工具链更新和不断增长的 ISA 多样性使得系统级软件包修复变得越来越重要。诊断和修复构建失败仍然具有挑战性,因为失败涉及异构证据、依赖性约束和特定于体系结构的构建约定。虽然最近基于 LLM 的修复方法显示出项目级源代码修复的前景,但它们在系统级修复方面遇到了困难,其中故障跨越多语言工件,例如构建配方、脚本和源档案,并且需要通过外部构建服务进行迭代验证。在本文中,我们首先对现实世界的系统级构建失败进行系统的实证研究。我们发现 72% 的故障源于依赖性和环境配置错误,而不是孤立的代码缺陷,这表明有效的修复必须优先考虑打包逻辑和迭代反馈。受这些见解的启发,我们提出了 EvidenT,这是一种证据保存修复框架,它将迭代感知证据管理与工具执行分离。 EvidenT 包括:(1)用于可重复执行和反馈的外部构建服务; (2) 证据保存修复控制器,融合修复历史、知识背景和构建工件; (3) 一个自动修复协调器,它调用模块化工具在闭环验证环境中进行故障定位和系统级修复。我们根据 219 个真实 RISC-V 封装构建失败情况评估了 EvidenT。 EvidenT 修复了 118 个包 (53.88%),优于最先进的代理基线 (20.55%) 和基于 LLM 的直接修复 (1.83%)。为了评估架构的通用性,我们通过仅更新 ISA 特定的知识上下文来将 EvidenT 扩展到遗留 ISA。初步实验在 aarch64 上实现了 41.77% 的成功率,在 x86_64 上实现了 46.99% 的成功率,证明了跨不同硬件生态系统的稳健性。