[論文レビュー] CoCoMIC: Code Completion By Jointly Modeling In-file and Cross-file Context
CoCoMICは、コード生成の精度を向上させるために、ファイル内およびファイル間の文脈を統合的にモデル化するフレームワークを提案する。CCFinderを用いてインポートに基づく静的解析によりファイル間の関連文脈を取得し、統合注意機構を介して統合することで、ファイル内のみのベースラインと比較して正確一致で33.94%、識別子一致で28.69%の相対的向上を達成した。
While pre-trained language models (LM) for code have achieved great success in code completion, they generate code conditioned only on the contents within the file, i.e., in-file context, but ignore the rich semantics in other files within the same project, i.e., cross-file context, a critical source of information that is especially useful in modern modular software development. Such overlooking constrains code language models' capacity in code completion, leading to unexpected behaviors such as generating hallucinated class member functions or function calls with unexpected arguments. In this work, we develop a cross-file context finder tool, CCFINDER, that effectively locates and retrieves the most relevant cross-file context. We propose CoCoMIC, a framework that incorporates cross-file context to learn the in-file and cross-file context jointly on top of pretrained code LMs. CoCoMIC successfully improves the existing code LM with a 33.94% relative increase in exact match and a 28.69% relative increase in identifier matching for code completion when the cross-file context is provided.
研究の動機と目的
- 事前学習済みコード言語モデル(LM)がファイル内文脈にのみ依存し、プロジェクト全体の依存関係を無視するという限界を是正すること。
- 同じプロジェクトからの関連するファイル間文脈を統合することで、正しいコード生成に不可欠な状況において、コード補完の正確性を向上させること。
- モデルの文脈長を超えないように、スケーラブルで効率的な方法でファイル間文脈を取得・統合すること。
- ファイル内およびファイル間文脈を異なる役割を尊重するように、統合的にモデル化するフレームワークを設計すること。
- 実世界のコード補完ベンチマークを用いて、ファイル間文脈の取得と統合の有効性を実証的に検証すること。
提案手法
- CCFinderは、ソースコードからプロジェクトの文脈グラフを構築する静的コード解析ツールであり、エンティティ(例:クラス、関数)とその関係を捉える。
- コードスニペットが与えられたとき、CCFinderはインポート文を分析し、プロジェクトの文脈グラフ上の隣接するエンティティを特定することで、関連するファイル間文脈を同定する。
- CoCoMICは、専用のエンコーダーモジュールを用いて、取得したファイル間文脈をコンパクトな表現に圧縮する。
- 自己回帰的生成の過程で、CoCoMICはファイル内文脈と圧縮されたファイル間文脈の両方に注目する統合注意メカニズムを採用する。
- フレームワークは、既存の事前学習済みコードLM(例:CodeGen)の上に構築され、統合的文脈モデル化を用いてエンドツーエンドで微調整される。
- モデルは、PyPIから抽出したカスタムデータセットを用いて評価され、正確一致と識別子一致を指標として用いる。
実験結果
リサーチクエスチョン
- RQ1ファイル内文脈のみに依存する場合と比較して、ファイル間文脈を統合することで、コード補完の性能が顕著に向上するか?
- RQ2インポート文に基づいて、静的解析ツール(例:CCFinder)が関連するファイル間文脈をどれほど効果的に取得できるか?
- RQ3ファイル内およびファイル間文脈を統合的にモデル化することで、コード生成の正確性にどのような影響を与えるか?
- RQ4CoCoMICの性能は、ファイル内文脈のみのベースラインや微調整済みコードLMと比較してどの程度優れているか?
- RQ5ファイル間文脈が利用できない場合、またはより大きなモデルに適用した場合、CoCoMICの限界は何か?
主な発見
- CCFinderは、ファイル内文脈のみに比べて、コード補完に必要な関連文脈を27.07%多く効果的に抽出できた。これは、プロジェクトレベルの依存関係を同定する有効性を示している。
- CoCoMICは、ファイル内文脈のみのベースラインと比較して、正確一致で33.94%、識別子一致で28.69%の相対的向上を達成した。
- 性能向上は、インポートされたクラスや関数の知識が求められる状況を含む、さまざまなコード補完シナリオにおいて一貫して見られた。
- ファイル間文脈が利用できない場合、CoCoMICの性能は微調整済みCodeGenモデルと比較して5–7%相対的に低下した。これは、外部文脈に依存していることを示している。
- フレームワークは、より大きなモデルへの拡張可能性を示しているが、2B、6B、16Bバージョンにおける実証的検証は今後の課題である。
- rawコードを連結するのではなく、ファイル間文脈を圧縮することで、文脈長制約を効果的に克服している。
より良い研究を、今すぐ始めましょう
論文の読解から最終レビューまで、研究時間を劇的に削減しましょう。
クレジットカード登録不要
このレビューはAIが作成し、人間の編集者が確認しました。