主に二つの研究を行った。 (1) 大規模言語モデルを使用した型エラー自動修正 本研究では、研究時に最新であった GPT-3 を用いて、型エラーの自動修正を行った。まず、型エラーのプログラムに対して、ソースコード解析のタスクを実行して有用なプロンプトを生成する。その情報を GPT-3 に提供することで、型エラーを修正するパッチを生成することができる。GPT-3 では、3種類のモードが存在するため、それに合わせて三種類の方法を用い、比較を行った。OCamlプログラムを含む既存の公開データセットで検証を行った。Quickcheck を用いて、生成されたパッチがユーザの修正バージョンと同じ出力を生成するかを検証し、39%の修復率を達成した。比較研究において、型エラーのあるOCamlプログラムの自動修正において他の2つの既存研究を上回った。 (2) 部分評価を用いた型エラーデバッグ手法の開発 本研究では、型エラーがあるプログラムを部分的に実行する方法を開発した。そのアイデアは、型エラーが発生する可能性が最も高いプログラムの部分を「フリーズ」させ、それ以外の部分をすべて実行することである。我々の手法の第一段階では、コンパイラの型推論機能からのエラーメッセージを使用して、プログラムの一部を「フリーズ」(部分評価的にはdynamic)にする。第二段階では、型推論器を使って「フリーズ」した部分の数を減らす。第三段階では、部分評価器が部分的に「フリーズ」されたプログラムを評価する。部分評価の間、「フリーズ」にされた部分は動的なものとして扱われるため、評価されずにコードとして残り、他の部分は静的なものとして扱われて評価される。本デバッグ手法のための汎用アルゴリズム、そのアルゴリズムに使用する二つの戦略、およびOCamlのサブセットのプロトタイプを用いた有望な結果を示した。
|