论文

识别代码的潜在声明性表示以协助存储库迁移

Identifying Latent Declarative Representations of Code for Assisting Repository Migration

模型推理推理策略与问题分解

摘要

遗留软件存储库将数十年的领域知识嵌入到未记录的代码中,这使得理解和现代化变得困难。我们将程序视为其计算的未观察到的声明性描述的实现,并研究使这种潜在的声明性表示显式地改善存储库规模的移植。 ADFD-Migrate 使用流程、数据存储、外部实体、流和行为契约的带注释的数据流图 (ADFD) 来近似潜在表示。 LLM 在静态分析覆盖率检查的指导下,从有界存储库上下文推断源 ADFD。依赖性感知分块命令有界进程组以生成目标语言。然后,源 ADFD 和静态恢复的目标 ADFD 之间的差异指导再生。我们在 f2x50(涵盖 1.5k--1.6M 代码行和三个复杂性级别的 50~Fortran 存储库的新基准)上评估 ADFD-Migrate,并沿两个维度评估生成的端口:移植健全性(通过源预言机行为一致性衡量)和移植完整性(通过综合迁移结果指数衡量)。针对 382 个精心策划的 Fortran-oracle 探针,生成的 Python 通过了 327 个(85.6%),其中 40 个存储库通过了每个尝试的探针。 ADFD-Migrate 将所有 382 个计划行为公开为可运行目标,相比之下,直接和存储库上下文转换为 99 和 98 个,静态配置文件和依赖分块消融为 69 和 30 个。它还实现了 93.1% 的平均迁移结果指数,与 47 个存储库上的直接翻译相比,结果指数优势高出 17--59 个百分点。这些结果表明,可检查的语义瓶颈可以提高存储库规模迁移的覆盖范围和集成,同时为许多存储库提供更低的生成成本。