现代软件系统通常包含大量可配置选项,以支持不同的平台、功能组合和部署环境。为保证软件在不同配置下的正确性,Linux 内核等大型项目需要在持续集成过程中反复构建和测试大量配置。如果每种配置都从头构建,将产生大量重复编译,显著增加计算资源消耗和持续集成时间。跨配置增量构建可以复用相邻配置间的构建产物,但其效果高度依赖配置的构建顺序。
吕骏博士前期提出的方法 BUDDI( 发表于 FSE 2024 )根据配置选项的语法差异估算配置切换成本,并采用贪心策略进行构建排顺。然而,语法差异难以准确反映配置变化对实际编译过程的影响:不同选项可能影响不同范围的源文件,部分变化还会通过全局配置头文件和文件依赖关系触发大规模重新编译。此外,贪心策略主要关注局部选择,难以获得整体更优的构建顺序。
针对上述问题,南京大学软件工程硕士生戴枭龙在吕骏、钮鑫涛、李杉杉等老师的指导下,提出了语义感知的跨配置增量构建调度框架SIBS。该框架通过分析配置选项对代码生成和构建过程的实际影响,构建配置之间的语义距离;同时考虑全局配置头文件的变化,以及变化在文件依赖图中的传播,从而更准确地估计配置切换所引发的重新编译成本。在此基础上,SIBS 将构建顺序优化建模为非对称旅行商问题,从全局角度寻找更有利于构建产物复用的配置执行顺序。

图1:SIBS 总体框架
研究团队在 21 个真实世界的可配置开源系统上开展了实验,并针对每个系统独立采样 5 组配置批次。实验结果表明,与现有跨配置增量构建调度方法 BUDDI 相比,SIBS 在 17 个系统中取得了更短的构建时间,跨项目构建时间的几何平均降幅达到 27.7%;计入语义分析和调度开销后,整体构建时间仍降低 27.4%。在不同配置批次中,SIBS 的整体降幅稳定在 25.7%至 29.3% 之间,表明该方法具有较好的有效性和稳定性。
研究团队还设计了带有风险防护机制的 SIBS + Guard,在可能影响增量复用正确性的情况下选择从头构建。实验结果显示,该机制在提高主要构建产物一致性的同时,仍比所有配置均从头构建快 28.2%,在构建效率与结果可靠性之间取得了较好平衡。
相关研究成果 " Beyond Syntactic Differencing: Semantic - Aware Scheduling for Cross-Configuration Incremental Builds " 已被第 41 届 IEEE / ACM International Conference on Automated Software Engineering( ASE 2026 )录用,南京大学为第一完成单位。
软件研发效能实验室吕骏博士课题组目前正在招收博士和硕士研究生,有意向的同学可以联系:
吕骏 ( junlyu@nju.edu.cn )
张贺 ( hezhang@nju.edu.cn )