Skip to main content
QUICK REVIEW

[論文レビュー] A Context-based Automated Approach for Method Name Consistency Checking and Suggestion

Yi Li, Shaohua Wang|arXiv (Cornell University)|Feb 27, 2021
Software Engineering Research参考文献 33被引用数 4
ひとこと要約

この論文では、呼び出し元、呼び出し先、兄弟メソッド、ラッパークラスといったコンテキストを活用することで、メソッド名の一貫性の検出と提案を向上させる文脈に配慮した深層学習手法DeepNameを提案する。サブトークン列を用いたRNNベースの符号化と、新規のコピーメカニズム/ノンコピーメカニズムを組み合わせることで、1400万件を超えるメソッドを含む大規模データセット上において、名前提案で最大38.2%、一貫性チェックで最大19.6%の精度、再現率、Fスコアの向上を達成し、最先端の性能を実現した。

ABSTRACT

Misleading method names in software projects can confuse developers, which may lead to software defects and affect code understandability. In this paper, we present DeepName, a context-based, deep learning approach to detect method name inconsistencies and suggest a proper name for a method. The key departure point is the philosophy of "Show Me Your Friends, I'll Tell You Who You Are". Unlike the state-of-the-art approaches, in addition to the method's body, we also consider the interactions of the current method under study with the other ones including the caller and callee methods, and the sibling methods in the same enclosing class. The sequences of sub-tokens in the program entities' names in the contexts are extracted and used as the input for an RNN-based encoder-decoder to produce the representations for the current method. We modify that RNN model to integrate the copy mechanism and our newly developed component, called the non-copy mechanism, to emphasize on the possibility of a certain sub-token not to be copied to follow the current sub-token in the currently generated method name. We conducted several experiments to evaluate DeepName on large datasets with +14M methods. For consistency checking, DeepName improves the state-of-the-art approach by 2.1%, 19.6%, and 11.9% relatively in recall, precision, and F-score, respectively. For name suggestion, DeepName improves relatively over the state-of-the-art approaches in precision (1.8%--30.5%), recall (8.8%--46.1%), and F-score (5.2%--38.2%). To assess DeepName's usefulness, we detected inconsistent methods and suggested new method names in active projects. Among 50 pull requests, 12 were merged into the main branch. In total, in 30/50 cases, the team members agree that our suggested method names are more meaningful than the current names.

研究の動機と目的

  • コードの理解性を損ないや、ソフトウェア欠陊を引き起こす要因となる不一致または誤解を招くメソッド名の問題を解決すること。
  • 呼び出し元、呼び出し先、兄弟メソッド、ラッパークラスからの文脈的情報を統合することで、メソッド本体に依存するのみでない名前提案の精度を向上させること。
  • 学習データに存在しない新しい意味のあるメソッド名を生成できる深層学習モデルを開発し、リtrieーブベースの手法に起因する制限を克服すること。
  • 実際のソフトウェア開発ワークフローに統合することで、提案された名前の実用的価値を人間の開発者による評価を通じて評価すること。

提案手法

  • DeepNameは、内部本体、呼び出し元/呼び出し先、兄弟メソッド、ラッパークラスの4つの文脈におけるプログラム要因からサブトークン列を抽出する。
  • 文脈表現を統合した一様なベクトルとしてのターゲットメソッド表現を生成するために、RNNベースのエンコーダ・デコーダアーキテクチャを用いる。
  • 文脈からの関連するサブトークンを保持するコピーメカニズムと、生成過程で不要なサブトークンを抑圧する新規のノンコピーメカニズムをモデルに統合する。
  • ASTやPDG構造ではなく、先行研究での優れた性能を示した、メソッド名、パラメータ、戻り値の型からのサブトークンを入力特徴として用いる。
  • 最終表現に畳み込み層を適用し、与えられたメソッド名が文脈と整合しているかどうかを分類する。
  • 1400万件を超えるメソッドを含む大規模データセット上で、一貫性チェックと名前提案の両タスクについて、エンドツーエンドで学習し、微調整を実施する。

実験結果

リサーチクエスチョン

  • RQ1呼び出し元、呼び出し先、兄弟メソッド、ラッパークラスからの文脈的情報を統合することで、メソッド本体に依存するのみでない一貫性チェックの精度が向上するか?
  • RQ2サブトークンレベルの注目とコピーメカニズム/ノンコピーメカニズムを備えた深層学習モデルは、意味的で新しいメソッド名を効果的に生成できるか?
  • RQ3DeepNameは、既存の最先端手法に比べて、メソッド名提案および不一致検出における精度、再現率、Fスコアでどの程度優れているか?
  • RQ4人間の開発者が評価した場合、実際のソフトウェア開発現場において提案されたメソッド名はどの程度実用的であるか?

主な発見

  • DeepNameは、既存の最先端手法に比べ、メソッド名一貫性チェックにおいて再現率で相対的に2.1%向上、精度で19.6%向上、Fスコアで11.9%向上した。
  • 名前提案タスクにおいて、DeepNameは既存手法に比べ、精度で1.8%~30.5%、再現率で8.8%~46.1%、Fスコアで5.2%~38.2%の相対的向上を達成した。
  • 実世界の評価では、50件の提案名のうち30件がチームメンバーによって元の名前よりも意味的に明確であると評価され、そのうち12件のプルリクエストがメインブランチにマージされた。
  • モデルは、訓練データに存在しない新しいメソッド名を生成することで、強力な一般化性能を示しており、学習データを超えたゼロショット一般化が有効に機能していることが示された。
  • ノンコピーメカニズムは、生成過程で不要なサブトークンをコピーする確率を低減させることで、名前の品質を著しく向上させた。
  • DeepNameは、学習データに存在する名前に制限されない、文脈的に適切な新しい名前を生成することで、IRベースの手法を上回った。

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

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

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

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