论文

TICoder:具有测试驱动规划和实施感知重用的存储库级代码生成框架

TICoder: A Repository-Level Code Generation Framework with Test-Driven Planning and Implementation-Aware Reuse

上下文与知识检索增强

摘要

使用 大语言模型 (LLM) 进行存储库级代码生成仍然具有挑战性,这主要是由于复杂的依赖关系和有限的上下文窗口。最近的方法采用检索增强生成(RAG)和规划机制来重用存储库中潜在的被调用者函数。然而,这些方法通常受到两个限制:在规划期间缺乏测试驱动的行为指导,以及在重用期间忽视存储库代码中嵌入的实现逻辑。因此,生成的计划可能与预期行为不一致,并且检索到的功能可能无法有效地重用。在本文中,我们提出了 TICoder,一种新颖的存储库级代码生成框架,可以改善规划和重用。 TICoder 引入了测试驱动的迭代规划机制,利用测试用例作为行为规范来细化实施步骤。此外,TICoder 采用了实现感知代码重用策略,该策略使用捕获功能和实现方面的双视图相似性来检索潜在的被调用者函数。然后,我们通过结合基于结构的聚类和基于困惑度的过滤的双阶段选择策略来识别相关的使用模式。我们使用各种 LLM 对广泛使用的存储库级代码生成基准进行了广泛的实验。实验结果表明,TICoder 的性能优于最先进的 (SOTA) 方法,平均提高了 11.52%。