Skip to main content
QUICK REVIEW

[論文レビュー] CORE: Automating Review Recommendation for Code Changes

Jingkai Siow, Cuiyun Gao|arXiv (Cornell University)|Dec 20, 2019
Software Engineering Research参考文献 49被引用数 5
ひとこと要約

本論文では、完全なソースコードに依存せずに、コード変更と履歴レビューのみを用いて関連するコードレビューを推薦する深層学習モデルCOREを提案する。単語レベルと文字レベルの埋め込みを組み合わせ、アテンション機構を用いることで、19のJavaプロジェクトにおいて、最先端のモデルDeepMemと比較してRecall@10が131.03%向上、Mean Reciprocal Rank (MRR) が150.69%向上を達成した。

ABSTRACT

Code review is a common process that is used by developers, in which a reviewer provides useful comments or points out defects in the submitted source code changes via pull request. Code review has been widely used for both industry and open-source projects due to its capacity in early defect identification, project maintenance, and code improvement. With rapid updates on project developments, code review becomes a non-trivial and labor-intensive task for reviewers. Thus, an automated code review engine can be beneficial and useful for project development in practice. Although there exist prior studies on automating the code review process by adopting static analysis tools or deep learning techniques, they often require external sources such as partial or full source code for accurate review suggestion. In this paper, we aim at automating the code review process only based on code changes and the corresponding reviews but with better performance. The hinge of accurate code review suggestion is to learn good representations for both code changes and reviews. To achieve this with limited source, we design a multi-level embedding (i.e., word embedding and character embedding) approach to represent the semantics provided by code changes and reviews. The embeddings are then well trained through a proposed attentional deep learning model, as a whole named CORE. We evaluate the effectiveness of CORE on code changes and reviews collected from 19 popular Java projects hosted on Github. Experimental results show that our model CORE can achieve significantly better performance than the state-of-the-art model (DeepMem), with an increase of 131.03% in terms of Recall@10 and 150.69% in terms of Mean Reciprocal Rank. Qualitative general word analysis among project developers also demonstrates the performance of CORE in automating code review.

研究の動機と目的

  • 完全なソースコードに依存せずに、コードレビュアーの手作業負荷を軽減するための自動化されたレビュー推薦を実現すること。
  • コード変更とレビューのより良い意味的表現を学習することで、コードレビュー推薦の精度を向上させること。
  • コードにおけるOoV(未知語)の課題に対処するため、単語レベルと文字レベルの埋め込みを組み合わせること。
  • コード変更とレビューのペアのみを用いて、それらの関連性を学習するモデルの開発。
  • 定量的評価と経験豊富な開発者からの定性的フィードバックを通じて、モデルの有効性を検証すること。

提案手法

  • COREは、コード変更とレビューの表現に単語レベルと文字レベルの埋め込みを組み合わせたマルチレベル埋め込み戦略を採用する。
  • モデルは、意味的に重要な部分に注目するため、コード変更とレビュー間の関連スコアを計算するアテンション機構を用いるニューラルネットワークを採用する。
  • 単語埋め込みはコードトークンから学習され、文字埋め込みはサブワードパターンを捉えることで、レアまたは未知のトークンに対応する。
  • アテンション機構は、予測時にコード変更およびレビュー内の重要なトークンに動的に重みを付与する。
  • モデルは、外部のコードコンテキストを必要とせず、GitHubリポジトリからのコード変更-レビューのペアをエンドツーエンドで学習する。
  • 階層的アテンション機構により、関連するコードセクションとレビューのコメントを同時に注目できる。

実験結果

リサーチクエスチョン

  • RQ1完全なソースコードにアクセスできない状況でも、コード変更と過去のレビューのみを用いて、深層学習モデルが関連するコードレビューを適切に推薦できるか?
  • RQ2単語レベルと文字レベルの埋め込みを組み合わせたマルチレベル埋め込みアプローチは、コード変更とレビューにおける意味的意味をどれほど効果的に捉えられるか?
  • RQ3アテンション機構は、ベースラインモデルと比較して、コード変更とレビューの関連性予測をどの程度向上させるか?
  • RQ4実世界のコードレビューデータにおいて、COREはDeepMemのような最先端モデルと比較して、どの程度の検索パフォーマンスを示すか?
  • RQ5経験豊富な開発者が見ると、COREが生成する推薦はどの程度実用的で関連性があると感じられるか?

主な発見

  • COREは、19の代表的なJavaプロジェクトにおいて、最先端モデルのDeepMemと比較してRecall@10で131.03%の向上を達成した。
  • COREは、MRR(平均逆順位)をDeepMemと比較して150.69%向上させ、関連するレビューの順序付けがより優れていることを示した。
  • 経験豊富な開発者による定性的分析から、COREが生成する推薦が実際の現場で関連性があり有用であることが確認された。
  • 単語レベルと文字レベルの埋め込みの組み合わせは、特にレアまたはOoVトークンにおいて、表現学習を顕著に向上させた。
  • アテンション機構は、重要なコード要素やレビューのフレーズを効果的に強調し、予測精度の向上に寄与した。
  • 完全なソースコードにアクセスできない状況でも、COREは良好な性能を発揮したため、プルリクエストシステムにおける実世界の展開に実用的である。

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

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

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

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