RepoCoder: Repository-Level Code Completion Through Iterative Retrieval and Generation

要約

リポジトリ レベルのコード補完のタスクは、リポジトリのより広範なコンテキストに基づいて未完成のコードを書き続けることです。
一方、自動コード補完ツールの場合、さまざまなファイルに散らばっている有用な情報を利用するのは困難です。
この課題に対処するためのシンプルで汎用的で効果的なフレームワークである RepoCoder を提案します。
類似性ベースのレトリバーと事前トレーニング済みのコード言語モデルを組み込むことで、リポジトリ レベルのコード補完プロセスを合理化します。これにより、コード補完のためにリポジトリ レベルの情報を効果的に利用できるようになり、さまざまなレベルのコードを生成できるようになります。
粒度。
さらに、RepoCoder は、検索コンテキストと意図した完了ターゲットの間のギャップを埋める、新しい反復検索生成パラダイムを利用します。
また、新しいベンチマーク RepoEval も提案します。これは、行、API 呼び出し、および関数本体の完了シナリオをカバーする最新の高品質の実世界のリポジトリで構成されます。
コードレトリーバーとジェネレーターのさまざまな組み合わせを使用して、RepoCoder のパフォーマンスをテストします。
実験結果は、RepoCoder がすべての設定でゼロ ショット コード補完ベースラインを 10% 以上大幅に改善し、通常の検索拡張コード補完アプローチよりも一貫して優れていることを示しています。
さらに、包括的な分析を通じて RepoCoder の有効性を検証し、将来の研究に貴重な洞察を提供します。

要約(オリジナル)

The task of repository-level code completion is to continue writing the unfinished code based on a broader context of the repository. While for automated code completion tools, it is difficult to utilize the useful information scattered in different files. We propose RepoCoder, a simple, generic, and effective framework to address the challenge. It streamlines the repository-level code completion process by incorporating a similarity-based retriever and a pre-trained code language model, which allows for the effective utilization of repository-level information for code completion and grants the ability to generate code at various levels of granularity. Furthermore, RepoCoder utilizes a novel iterative retrieval-generation paradigm that bridges the gap between retrieval context and the intended completion target. We also propose a new benchmark RepoEval, which consists of the latest and high-quality real-world repositories covering line, API invocation, and function body completion scenarios. We test the performance of RepoCoder by using various combinations of code retrievers and generators. Experimental results indicate that RepoCoder significantly improves the zero-shot code completion baseline by over 10% in all settings and consistently outperforms the vanilla retrieval-augmented code completion approach. Furthermore, we validate the effectiveness of RepoCoder through comprehensive analysis, providing valuable insights for future research.

arxiv情報

著者 Fengji Zhang,Bei Chen,Yue Zhang,Jin Liu,Daoguang Zan,Yi Mao,Jian-Guang Lou,Weizhu Chen
発行日 2023-03-22 13:54:46+00:00
arxivサイト arxiv_id(pdf)

提供元, 利用サービス

arxiv.jp, Google

カテゴリー: cs.AI, cs.CL, cs.PL, cs.SE パーマリンク