Skip to main content
QUICK REVIEW

[論文レビュー] CodeGen-Test: An Automatic Code Generation Model Integrating Program Test Information

Maosheng Zhong, Gen Liu|arXiv (Cornell University)|Feb 14, 2022
Software Testing and Debugging Techniques被引用数 4
ひとこと要約

本論文では、関数的正しさを向上させるために反復的生成プロセスにプログラムのテスト情報を統合する、新しい自動コード生成モデル、CodeGen-Testを提案する。テストフィードバックを組み込み、新しい指標であるTest-Accを用いることで、従来のモデルと比較してテスト正答率で6%の絶対的向上を達成した。これは、関数的検証が構文的適合性を超えてコード品質を向上させることを示している。

ABSTRACT

Automatic code generation is to generate the program code according to the given natural language description. The current mainstream approach uses neural networks to encode natural language descriptions, and output abstract syntax trees (AST) at the decoder, then convert the AST into program code. While the generated code largely conforms to specific syntax rules, two problems are still ignored. One is missing program testing, an essential step in the process of complete code implementation; the other is only focusing on the syntax compliance of the generated code, while ignoring the more important program functional requirements. The paper proposes a CodeGen-Test model, which adds program testing steps and incorporates program testing information to iteratively generate code that meets the functional requirements of the program, thereby improving the quality of code generation. At the same time, the paper proposes a new evaluation metric, test accuracy (Test-Acc), which represents the proportion of passing program test in generated code. Different from the previous evaluation metric, which only evaluates the quality of code generation from the perspective of character similarity, the Test-Acc can evaluate the quality of code generation from the Program functions. Moreover, the paper evaluates the CodeGen-test model on a python data set "hearthstone legend". The experimental results show the proposed method can effectively improve the quality of generated code. Compared with the existing optimal model, CodeGen-Test model improves the Bleu value by 0.2%, Rouge-L value by 0.3% and Test-Acc by 6%.

研究の動機と目的

  • 現在のコード生成モデルが構文的正しさにのみ注目しており、関数的検証を無視するというギャップを解消すること。
  • 反復的生成プロセスにおいてプログラムのテスト結果をフィードバックとして統合することで、コード品質を向上させること。
  • 構文的類似性ではなく、関数的正しさを測る新しい評価指標、Test-Accを提案すること。
  • テスト情報と反復的精練がコード生成性能を向上させる有効性を検証すること。

提案手法

  • コードとテスト情報の両方のエンコーダーを備えた二重エンコーダー構造を有する、シーケンス・トゥ・シーケンスフレームワークを採用。
  • 反復的精練を採用し、生成されたコードをテストし、そのフィードバックを次の生成段階を導くものとする。
  • テスト情報は別々にエンコードされ、コードの埋め込みと統合されて、デコーダーが関数的に正しいコードを生成するのを支援する。
  • モデルは、Pythonデータセット(Hearthstone Legend)上でエンド・トゥ・エンドに訓練され、後続のイテレーションではテスト結果を監視信号として用いる。
  • 生成コードが機能テストに合格する割合を測る新しい評価指標、Test-Accを導入。
  • アブレーションスタディを実施し、テスト情報とコード履歴の貢献度を評価。

実験結果

リサーチクエスチョン

  • RQ1テストフィードバックをコード生成プロセスに統合することで、生成コードの関数的正しさが向上するか?
  • RQ2テスト情報の統合が、コード生成モデルの性能に与える影響は何か?
  • RQ3テスト結果を用いた反復的精練は、ワンパス生成と比較して優れたコード品質を生み出すか?
  • RQ4提案されたTest-Acc指標は、BLEU や ROUGE といった従来の指標と比較して、関数的正しさの評価においてどのように異なるか?
  • RQ5反復的コード生成プロセスにおける最適なイタレーション数は何か?

主な発見

  • CodeGen-Testは、最も優れた既存モデルと比較してTest-Accを6%向上させ、関数的正しさの顕著な向上を示した。
  • 最先端モデルと比較して、BLEUスコアは0.2%高く、ROUGE-Lスコアは0.3%高い結果を得た。
  • アブレーションスタディの結果、テスト情報と過去のコード履歴の両方が最適なパフォーマンスを発揮するために不可欠であることが示され、完全なモデルがアブレーションバージョンを上回った。
  • イタレーション数がN=3まで増加するにつれて性能が向上したが、N=2を超えるとデータスパarsityのため、向上が頭打ちとなった。
  • イタレーションごとにトレーニングサンプル数が著しく減少(533から104に)したため、反復的精練にもかかわらず、さらなる向上が制限された。
  • 提案されたTest-Acc指標は関数的正しさを効果的に捉えており、単なる構文ベースの指標よりも意味のある評価を可能にした。

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

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

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

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