[論文レビュー] A Quantitative and Qualitative Evaluation of LLM-Based Explainable Fault Localization
AutoFLはOpenAIのファンクションコール機能を用いてLLMがコードリポジトリを探索し、単一のテスト失敗から根本原因の説明と故障位置の予測を生成する。Defects4Jにおけるacc@1で従来手法を上回る最先端の性能を実現。
Fault Localization (FL), in which a developer seeks to identify which part of the code is malfunctioning and needs to be fixed, is a recurring challenge in debugging. To reduce developer burden, many automated FL techniques have been proposed. However, prior work has noted that existing techniques fail to provide rationales for the suggested locations, hindering developer adoption of these techniques. With this in mind, we propose AutoFL, a Large Language Model (LLM)-based FL technique that generates an explanation of the bug along with a suggested fault location. AutoFL prompts an LLM to use function calls to navigate a repository, so that it can effectively localize faults over a large software repository and overcome the limit of the LLM context length. Extensive experiments on 798 real-world bugs in Java and Python reveal AutoFL improves method-level acc@1 by up to 233.3% over baselines. Furthermore, developers were interviewed on their impression of AutoFL-generated explanations, showing that developers generally liked the natural language explanations of AutoFL, and that they preferred reading a few, high-quality explanations instead of many.
研究の動機と目的
- 大規模言語モデルを故障定位に活用して性能を向上させ、人間が理解できる説明を提供する動機づけ。
- LLMsとファンクションコーリングを用いて単一の失敗テストから大規模コードベースを探索する自動故障位置特定パイプラインAutoFLを開発。
- 段階的なLLM対話を実現して根本原因の説明と正確な故障位置出力を生成。
- LLM出力を実際のコード要素へマッピングし故障候補をランキングするポストプロセシングパイプラインを提案。
提案手法
- カバーされたクラスとメソッドを調査し、コードスニペットとJavadocを取得するファンクションコールを利用したLLM駆動故障定位パイプラインAutoFLを提供。
- 二段階プロンプトプロセスを使用:ステージ1で根本原因の説明を生成し、ステージ2で最も可能性の高い原因のシグネチャを出力。
- 複数回のAutoFL実行を統合して重み付きスコアで疑われるメソッドをランク付けするポストプロセシング手順を実装。
- Defects4J上でgpt-3.5-turbo-0613を用いてAutoFLを評価し、SBFL、MBFL、IRFL、およびLLMベースのベースラインと比較。
- 頑健性とランキング精度を高めるためのリピート・アンド・アグリゲート戦略(R=5)を組み込む。
実験結果
リサーチクエスチョン
- RQ1ツール使用を制御したLLMは失敗テストからバグの根本原因を特定できるか?
- RQ2失敗テストのみを前提とした条件で従来の故障位置特定手法と比較してAutoFLは真の不具合メソッドをどれほど正確に特定できるか?
- RQ3ポストプロセッシングと実行の集約は故障定位の精度とランキングの安定性を向上させるか?
- RQ4成功的な故障定位へとつながる典型的なLLMファンクションコールパターンは何か、反対に失敗のパターンは?
- RQ5Real-worldなバグに対するAutoFLの制限と失敗モードは何か?
主な発見
- AutoFLはDefects4Jの353ケース中149件で最初の推定(acc@1)で真の不具合メソッドを特定し、評価されたすべての独立手法を上回る。
- 失敗テストのみに制限した場合、AutoFLはSBFLベースラインを上回り、acc@1の substantialな改善を示す(特定の比較で最大338%)。
- ポストプロセシングと実行の集約は性能を大幅に向上させ、実行を横断して結果を統合することで全体的なacc@kを向上させ、コンセンサスが強い場合には偽陽性を低減。
- AutoFLが最初のランクで局在化したバグのうち40%以上は、最良のSBFLベースラインでは正しく局在化されていなかったことから、AutoFLと従来のFL手法は相補的であることを示唆。
- 例としてTime-25のような失敗ケースがあり、AutoFLが浅い分析にとどまり深いバグ原因を見逃すことを示し、将来の強化領域を指摘。
- 複数回の実行を跨ぐ平均的なファンクションコール数は約5.36で変動があり、成功パターンはしばしば被覆クラスとメソッドの連続的な検査を経てコードを検査する前に現れる。
より良い研究を、今すぐ始めましょう
論文の読解から最終レビューまで、研究時間を劇的に削減しましょう。
クレジットカード登録不要
このレビューはAIが作成し、人間の編集者が確認しました。