Skip to main content
QUICK REVIEW

[論文レビュー] Predicting Code Coverage without Execution

Michele Tufano, Shubham Chandel|arXiv (Cornell University)|Jul 25, 2023
Software Engineering Research被引用数 4
ひとこと要約

本論文は、大規模言語モデル(LLMs)のコード実行理解を評価するための新しいベンチマークタスクとして、コードカバレッジ予測を導入する。HumanEvalから実際のコードカバレッジアノテーションを含むCoverageEvalデータセットを収集することで、最先端のLLMs—GPT-4、GPT-3.5、BARD、Claude—を評価した。少数の例提示(few-shot prompting)を用いた場合でも、GPT-4でさえ24.48%の正確性にとどまり、LLMsのコード実行ダイナミクス理解の分野には依然として大きな改善余地があることが示された。

ABSTRACT

Code coverage is a widely used metric for quantifying the extent to which program elements, such as statements or branches, are executed during testing. Calculating code coverage is resource-intensive, requiring code building and execution with additional overhead for the instrumentation. Furthermore, computing coverage of any snippet of code requires the whole program context. Using Machine Learning to amortize this expensive process could lower the cost of code coverage by requiring only the source code context, and the task of code coverage prediction can be a novel benchmark for judging the ability of models to understand code. We propose a novel benchmark task called Code Coverage Prediction for Large Language Models (LLMs). We formalize this task to evaluate the capability of LLMs in understanding code execution by determining which lines of a method are executed by a given test case and inputs. We curate and release a dataset we call COVERAGEEVAL by executing tests and code from the HumanEval dataset and collecting code coverage information. We report the performance of four state-of-the-art LLMs used for code-related tasks, including OpenAI's GPT-4 and GPT-3.5-Turbo, Google's BARD, and Anthropic's Claude, on the Code Coverage Prediction task. Finally, we argue that code coverage as a metric and pre-training data source are valuable for overall LLM performance on software engineering tasks.

研究の動機と目的

  • LLMsのコード実行理解を評価するため、コードカバレッジ予測を新たなベンチマークタスクとして形式化すること。
  • 従来のコードカバレッジ測定における高い計算コストとコンテキスト依存性、特にコードスニペットや部分的なプログラムに対しての課題を解決すること。
  • 実際にコードを実行せずに、与えられたテストケースがどのコード行を実行するかをLLMsが予測できるかを評価すること。
  • 異なる入力におけるコード動作の推論能力を向上させるために、LLMsの事前学習や微調整の目的関数として、コードカバレッジ予測を提供すること。
  • 構築コストが高額な状況、コードの入手が制限される状況、IDEにおけるリアルタイムフィードバックなどの実用的応用を可能にすること。

提案手法

  • HumanEvalベンチマークのテストケースを実行し、インストルメンテーションを用いて実際のコードカバレッジを収集することで、CoverageEvalデータセットを収集した。
  • 各メソッド-テストペアに、実行済み(‘>’)、実行されない(‘!’)、到達不能(‘-’)のカバレッジラベルをアノテーションし、構造化された予測タスクを構築した。
  • 入力がメソッドとテストケース、出力がカバレッジアノテーション済みメソッドである、シーケンス・ツー・シーケンス予測問題としてタスクを形式化した。
  • ゼロショットと少々の例提示(few-shot prompting)を用いて、4つの最先端LLMs—GPT-4、GPT-3.5-Turbo、BARD、Claude—を、カバレッジ予測タスクで評価した。
  • 正確一致(exact match)精度を主な評価指標とし、モデルが完全なカバレッジアノテーションを正しく予測した頻度を測定した。
  • 構築コストが高額な状況、コードの入手が制限される状況、ライブユニットテストなどのユースケースを検討し、予測ベースのカバレッジの実用的価値を示した。

実験結果

リサーチクエスチョン

  • RQ1LLMsは、コードを実行せずに、与えられたテストケースがどのコード行を実行するかを正確に予測できるか?
  • RQ2最先端のLLMsの性能は、さまざまな少々の例提示(few-shot prompting)戦略において、コードカバレッジ予測タスクでどのように変化するか?
  • RQ3LLMsは、異なる入力やテスト条件におけるコードの動的動作をどの程度理解しているか?
  • RQ4コードカバレッジ予測は、LLMsのコード実行に関する推論能力を向上させる意味のある事前学習または微調整の目的関数として機能できるか?
  • RQ5実世界のソフトウェア工学のシナリオでは、LLMベースのコードカバレッジ予測が、従来の実行ベースの方法よりも実用的な利点を提供できるか?

主な発見

  • GPT-4は評価されたモデルの中で最高のパフォーマンスを示し、ゼロショット提示では10.46%の正確一致精度、少々の例提示では24.48%の正確一致精度に達した。
  • どのモデルでも高い正確性に達していなかった—GPT-4ですら、メソッド-テストペアの25%未満で正しいカバレッジを予測したにとどまり、コード実行の理解が限定的であることが示された。
  • モデル間のパフォーマンス格差は、現在のLLMsが制御フローと条件分岐の実行を推論する際に依然として困難を抱えていることを示している。
  • CoverageEvalデータセットは、LLMsのコード実行理解に関する体系的評価を可能にし、今後の研究のための新たなベンチマークを提供する。
  • 本タスクは、構築コストが高額な状況、部分的なコードの送信、ライブユニットテストなど、実行が非現実的または高コストな状況において実用的価値を持つ。
  • コードカバレッジ予測は、LLMsがコードを効果的に生成・テストできる能力を向上させるための価値ある訓練目的関数として機能できる。

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

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

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

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