论文

DepWareTrans:跨共同可执行语言的依赖性感知增量存储库迁移

DepWareTrans: Dependency-Aware Incremental Repository Migration across Co-executable Languages

摘要

存储库级代码转换对于遗留系统的现代化至关重要,但基于 大语言模型 (LLM) 的现有方法在文件级别运行,无法扩展到具有复杂文件间依赖关系的代码库。这种限制在我们的工业环境中很明显,我们的目标是将生产存储库 (STAR) 从 Java 迁移到 Kotlin,但文件级方法会产生碎片化的结果,并且无法实现端到端的正确性。在本文中,我们表明存储库级别失败的主要原因是依赖项不一致。通过对开源和工业系统的实证研究,我们发现大多数错误源于未解决的跨文件依赖关系,而仅靠迭代反馈无法有效解决这些依赖关系。我们提出了一个依赖项感知的增量迁移框架,该框架将翻译单元从单个文件提升为依赖项一致的批次。我们的方法构建依赖关系图,对相互依赖的文件进行分组,并通过迭代编译和测试驱动的验证执行批量翻译。我们在 51K 行代码 (LOC) 工业系统和跨可互操作语言对(Java-Kotlin、Java-Scala 和 C#-F#)的多个存储库上评估我们的方法。在 STAR 存储库上,文件级方法实现了 38.16% 的编译和 9.39% 的测试成功,而我们的方法在评估的设置中实现了 100% 的编译和测试成功,并在少量迭代内收敛。这些结果表明,依赖项感知批处理提高了存储库级代码转换的可扩展性和可靠性。