现代软件项目广泛采用自动构建系统来管理复杂的编译与集成流程。在基于 Make 的 C / C++ 项目构建过程中,缺失依赖是一项严重的依赖错误,可能导致增量构建时编译和链接过时的产物,使软件项目更新无法正确应用,而且该类错误难以通过测试等验证手段发现。

此前,软件工程界已围绕缺失依赖的 ” 检测 ” 环节开展大量研究,软件研发效能实验室吕骏博士课题组提出的 BuildChecker 技术( 发表于 CCF – A 学科顶级期刊 TSE )、增量构建错误检测方法( 发表于 CCF – A 级会议 ISSTA 2024 ),已实现对依赖错误的有效和高效识别,解决了传统方案漏报率高、算力消耗大的痛点。但 ” 检测易、修复难 ” 的新瓶颈也随之凸显:Makefile 语义逻辑复杂,不同项目维护者又习惯以显式枚举、变量引用、模式匹配等多种风格声明依赖,现有自动修复工具要么生成的补丁与项目既有风格冲突( 导致维护者拒绝采纳 ),要么修复成功率不足 60%,难以满足工业界实际需求。

针对这一行业痛点,吕骏博士进一步提出缺失依赖自动修复方案 MDfixer,实现从 ” 精准检测 ” 到 ” 高效修复 ” 的技术闭环,为构建依赖问题提供全链路系统解决方案。MDfixer 的核心突破在于风格自适应修复机制,其工作流程高度贴合工业界项目实际场景:首先基于构建错误报告精准定位存在缺失依赖的目标( Target )及其依赖声明区域;随后为每个问题目标构建 ” 声明图 “,通过距离度量算法量化目标与已有依赖的关联关系,从而识别该项目特有的依赖声明风格;最终结合自动提示生成技术,为待补充的依赖生成与原脚本风格完全一致的修复补丁 —— 这一方案从根源上解决了 ” 补丁兼容性差 ” 的核心难题,确保修复结果可直接融入项目维护流程。

严苛的工业界验证充分表明了 MDfixer 的实用价值:团队在 35 个知名开源项目中开展全面测试,结果显示 MDfixer 实现了对缺失依赖的 100% 修复率,远超现有工具平均水平;针对 17 个项目提交的 2786 项独立依赖问题修复中,11 个项目成功合并拉取请求,累计解决 2099 个实际工程错误。效率方面,MDfixer 修复单个项目平均仅需 3.31 分钟,中位数耗时约为 1分钟( 63 )秒,可无缝嵌入 CI / CD 流水线实现 ” 发现即修复 ” 的实时响应。

该研究成果论文《 Automatic Fixing of Missing Dependency Errors 》已被软件工程学科国际旗舰会议 ASE 2025( IEEE/ACM International Conference on Automated Software Engineering,CCF – A级 )全文录用,南京大学为第一完成单位。值得关注的是,此成果与吕骏博士此前在 TSE 发表的 BuildChecker 检测技术、ISSTA 2024 发表的增量构建错误检测方法深度联动,首次形成 ” 有效检测 – 高效检测 – 自适应修复 ” 的技术体系闭环,预计可为将开发者处理构建依赖问题提供关键技术支撑。联系方式:张贺(hezhang@nju.edu.cn )、吕骏(https://meiye-lj.github.io/ )。