Skip to main content
QUICK REVIEW

[論文レビュー] A Controlled Experiment of Different Code Representations for Learning-Based Bug Repair

Marjane Namavar, Noor Nashid|arXiv (Cornell University)|Oct 26, 2021
Software Engineering Research被引用数 4
ひとこと要約

本論文は、深層学習ベースのプログラム修復における名前ベースのバグを対象に、21種類の異なるコード表現および埋め込み手法を制御実験で評価する。モデルの正確性を向上させる高レベルの抽象化は、開発者による修正の有用性を低下させる傾向にあり、混合(非均質)表現が均質表現を上回ることを明らかにした。これは、修復ツール設計において開発者の使いやすさを考慮する必要があることを示唆している。

ABSTRACT

Training a deep learning model on source code has gained significant traction recently. Since such models reason about vectors of numbers, source code needs to be converted to a code representation before vectorization. Numerous approaches have been proposed to represent source code, from sequences of tokens to abstract syntax trees. However, there is no systematic study to understand the effect of code representation on learning performance. Through a controlled experiment, we examine the impact of various code representations on model accuracy and usefulness in deep learning-based program repair. We train 21 different generative models that suggest fixes for name-based bugs, including 14 different homogeneous code representations, four mixed representations for the buggy and fixed code, and three different embeddings. We assess if fix suggestions produced by the model in various code representations are automatically patchable, meaning they can be transformed to a valid code that is ready to be applied to the buggy code to fix it. We also conduct a developer study to qualitatively evaluate the usefulness of inferred fixes in different code representations. Our results highlight the importance of code representation and its impact on learning and usefulness. Our findings indicate that (1) while code abstractions help the learning process, they can adversely impact the usefulness of inferred fixes from a developer's point of view; this emphasizes the need to look at the patches generated from the practitioner's perspective, which is often neglected in the literature, (2) mixed representations can outperform homogeneous code representations, (3) bug type can affect the effectiveness of different code representations; although current techniques use a single code representation for all bug types, there is no single best code representation applicable to all bug types.

研究の動機と目的

  • 異なるコード表現および埋め込み手法が、学習ベースのプログラム修復の正確性と修正の有用性に与える影響を体系的に評価すること。
  • より高レベルの抽象化が、開発者による使いやすさを低下させる代償としてモデルのパフォーマンスを向上させるかどうかを調査すること。
  • バグコードと修正コードに異なる表現を使用する混合表現の有効性が、均質表現と比較してどのように向上するかを検討すること。
  • 開発者による研究を通じて、生成された修正の認識された有用性を評価し、既存の文献がしばしば実務家視点を無視するというギャップを埋めること。
  • 今後のコード表現に関する比較研究を可能にする再利用可能なベンチマークフレームワーク、Reptoryの提供

提案手法

  • 本研究は、14種類の均質なコード表現、4種類の混合表現(バグコードと修正コードに異なる表現を適用)、3種類の埋め込み手法を用いて、21種類の異なる生成モデルを訓練した。
  • コード表現には、トークン列、AST走査、および抽象構文木(AST)パスベースの符号化が含まれ、それぞれの元の形と抽象化された形がある。
  • モデルは、実世界の名前ベースのバグ(例:引数の入れ替え、誤った演算子)のデータセットを用いて学習させた。バグタイプごとに12万件を超えるデータポイントを有する。
  • モデルのパフォーマンスは、生成された修正が自動的に有効でコンパイル可能なコードに変換可能かどうか(自動的パッチ生成可能性)によって評価された。
  • 生成された修正の有用性を評価するために、定性的な開発者調査が実施された。
  • コード表現に関する再現可能で比較可能な実験を支援するため、Reptoryと呼ばれるフレームワークが開発された。

実験結果

リサーチクエスチョン

  • RQ1異なるコード表現は、学習ベースのプログラム修復における生成修正の正確性とパッチ生成可能性にどのように影響するか?
  • RQ2バグコードと修正コードに異なる表現(非均質表現)を用いることで、均質表現と比較して修復パフォーマンスがどの程度向上するか?
  • RQ3コード表現の抽象化のレベルは、開発者の視点から見た修正の有用性にどのように影響するか?
  • RQ4埋め込み手法の選択が、さまざまなバグタイプにおいて生成された修正の品質に顕著に影響を与えるか?
  • RQ5バグタイプに特化した最適なコード表現が存在するのか、それとも普遍的に最良の表現が存在するのか?

主な発見

  • 誤った二項演算子の修正において最高のモデル正確性が99.996%に達し、これはEID(Opnd)-20表現を用いた場合であった。誤った二項演算子の修正では99.977%、引数の入れ替えの修正では99.964%の正確性を達成し、それぞれEID(Oprt)-20およびEID(SA)-20表現を用いた。
  • 高レベルの抽象化はモデルの正確性を向上させたが、開発者による評価では修正の有用性が低下した。これは、性能と実用的有用性の間でトレードオフが生じることを示している。
  • バグコードと修正コードに異なる表現を使用する混合表現は、一貫して均質表現を上回った。これは、修復変換のモデリングが向上したことを示唆している。
  • 本研究では、すべてのバグタイプに適用可能な唯一の最良のコード表現は存在しないことが判明した。効果性はバグの種別によって顕著に変化した。
  • 損失を伴う、または抽象化された表現は、パッチ生成の正確性が低いものの、開発者にとってのデバッグのヒントとして依然として有用であった。これは、自動パッチ生成可能性を超えた価値があることを示している。
  • Reptoryフレームワークは再現可能な比較実験を可能にし、今後のコード表現に関するプログラム修復分野の研究のベンチマークとして公開された。

より良い研究を、今すぐ始めましょう

論文の読解から最終レビューまで、研究時間を劇的に削減しましょう。

クレジットカード登録不要

このレビューはAIが作成し、人間の編集者が確認しました。