R2C2-Coder: Enhancing and Benchmarking Real-world Repository-level Code Completion Abilities of Code Large Language Models
Ken Deng, Jiaheng Liu, He Zhu, Congnan Liu, Jingxin Li, Jiakai Wang, Peng Zhao, Chenchen Zhang, Yanan Wu, Xueqiao Yin, Yuanxing Zhang, Zizheng Zhan, Wenbo Su, Bangyu Xiang, Tiezheng Ge, Bo Zheng
TL;DR
R2C2-Coder addresses the gap in repository-level code completion by introducing a retrieval-augmented prompt construction framework (R2C2-Enhance) that uses abstract and snippet contexts via Tree-sitter, and a challenging benchmark (R2C2-Bench) with context perturbations across four languages. The approach builds a retrieval pool, forms prompts with retrieved contexts while respecting a $N=4096$ token limit, and demonstrates substantial improvements over in-file baselines, with further gains from fine-tuning on the benchmark's training split. The work shows that explicit cross-file context, especially abstract context, and robust retrieval strategies significantly boost real-world code completion, and provides a scalable, multi-language benchmark for future research. Overall, R2C2-Coder offers practical methods for enhancing Code LLMs in repository-rich environments and a comprehensive dataset to rigorously evaluate such capabilities.
Abstract
Code completion models have made significant progress in recent years. Recently, repository-level code completion has drawn more attention in modern software development, and several baseline methods and benchmarks have been proposed. However, existing repository-level code completion methods often fall short of fully using the extensive context of a project repository, such as the intricacies of relevant files and class hierarchies. Besides, the existing benchmarks usually focus on limited code completion scenarios, which cannot reflect the repository-level code completion abilities well of existing methods. To address these limitations, we propose the R2C2-Coder to enhance and benchmark the real-world repository-level code completion abilities of code Large Language Models, where the R2C2-Coder includes a code prompt construction method R2C2-Enhance and a well-designed benchmark R2C2-Bench. Specifically, first, in R2C2-Enhance, we first construct the candidate retrieval pool and then assemble the completion prompt by retrieving from the retrieval pool for each completion cursor position. Second, based on R2C2 -Enhance, we can construct a more challenging and diverse R2C2-Bench with training, validation and test splits, where a context perturbation strategy is proposed to simulate the real-world repository-level code completion well. Extensive results on multiple benchmarks demonstrate the effectiveness of our R2C2-Coder.
