  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.
