Skip to main content
QUICK REVIEW

[論文レビュー] Recommendation of Exception Handling Code in Mobile App Development

Tam The Nguyen, Phong Minh Vu|arXiv (Cornell University)|Aug 19, 2019
Software Engineering Research参考文献 35被引用数 4
ひとこと要約

本稿では、モバイルアプリ開発における効果的な例外処理を推奨するための新しい手法XRankおよびXHandを提案する。XRankは、メソッド呼び出しと例外型との間の曖昧集合の関連性に基づき、捕らえるべき可能性の高い例外をランク付けする。一方、XHandはn-gramおよび分類モデルを用いて、修正用のメソッドシーケンスを推奨する。1000万件以上のAndroidメソッドを対象に評価した結果、XRankはトップ1正解率70%、トップ3正解率87%を達成し、XHandはそれぞれ89%および96%を達成した。これは、例外関連のバグを低減するうえで高い有効性を示している。

ABSTRACT

In modern programming languages, exception handling is an effective mechanism to avoid unexpected runtime errors. Thus, failing to catch and handle exceptions could lead to serious issues like system crashing, resource leaking, or negative end-user experiences. However, writing correct exception handling code is often challenging in mobile app development due to the fast-changing nature of API libraries for mobile apps and the insufficiency of their documentation and source code examples. Our prior study shows that in practice mobile app developers cause many exception-related bugs and still use bad exception handling practices (e.g. catch an exception and do nothing). To address such problems, in this paper, we introduce two novel techniques for recommending correct exception handling code. One technique, XRank, recommends code to catch an exception likely occurring in a code snippet. The other, XHand, recommends correction code for such an occurring exception. We have developed ExAssist, a code recommendation tool for exception handling using XRank and XHand. The empirical evaluation shows that our techniques are highly effective. For example, XRank has top-1 accuracy of 70% and top-3 accuracy of 87%. XHand's results are 89% and 96%, respectively.

研究の動機と目的

  • モバイルアプリ開発における誤ったまたは欠落した例外処理が原因で発生するクラッシュやリソースリークを解消するため。
  • 開発者の負担を軽減するため、適切な例外型および是正措置を自動で推奨するため。
  • 自動的かつ文脈に応じた例外処理の推奨を通じて、Androidアプリケーションの信頼性および安定性を向上させるため。
  • APIドキュメンテーションの限界やフレームワークの急速な進化が、適切な例外処理を妨げる要因となっているのを克服するため。
  • Android Studio や IntelliJ IDEA などの人気IDEで利用可能な実用的で統合されたツール(ExAssist)を開発するため。

提案手法

  • XRankは、tryブロック内のメソッド呼び出しと、それに対応する可能性のある例外型との間の曖昧集合理論を用いて関連性をモデル化し、捕らえるべき可能性の高い例外をランク付けする。
  • XHandは、統計的言語モデル(特にn-gramおよび多クラス分類モデル)を適用し、例外処理のためのメソッド呼び出しシーケンスを予測する。
  • システムは、例外処理コードを自然言語処理の問題として扱い、catchブロックに欠落しているメソッドを、文における欠落した語のように予測する。
  • ExAssistは、XRankおよびXHandをAndroid StudioおよびIntelliJ IDEA用のプラグインとして統合し、リアルタイムでのコード推奨を提供する。
  • 学習データは、4000個のAndroidアプリケーションにまたがる1000万件以上のメソッドから抽出され、実世界の例外処理パターンを捉えている。
  • 本アプローチは、コード構造および歴史的使用パターンを活用して、正しい例外処理の実践を推論する。

実験結果

リサーチクエスチョン

  • RQ1モバイルアプリのコードスニペットに対して、正しい例外型をどれだけ正確に推奨できるか?
  • RQ2例外発生後にオブジェクトの状態を回復させるために、catchブロック内で適切なメソッドシーケンスを推奨することはどの程度有効か?
  • RQ3実世界のAndroidコードで学習したツールは、開発者の生産性を向上させ、例外関連のバグを削減できるか?
  • RQ4提案手法は、例外関連のバグに対する実際の修正を推奨する際、ベースライン手法と比較してどの程度優れているか?
  • RQ5開発者が実際に実施した例外処理の修正は、システムが生成した推奨事項とどの程度一致するか?

主な発見

  • XRankは、コードスニペットに対して適切な例外型を推奨する際、トップ1正解率70%、トップ3正解率87%を達成した。
  • XHandは、例外処理のための修正用メソッドシーケンスを推奨する際、トップ1正解率89%、トップ3正解率96%を達成した。
  • ExAssistは、42件の例外関連バグ修正のうち64%で実際の修正と一致または包含したが、ベースラインはわずか14%の修正にしか一致しなかった。
  • 本研究では、多くの開発者が例外処理を適切に行わないことが確認された。16%の修正では例外が完全に未処理のままとなり、42%の修正では部分的な修復しか行われなかった。
  • 自動的かつ文脈に応じた例外処理の推奨が、モバイルアプリケーションのコード品質を著しく向上させ、クラッシュリスクを低減できることを検証した。
  • XRankおよびXHandの高い正解率は、大規模なコードリポジトリから学習可能な、例外処理のパターンが予測可能であることを示している。

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

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

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

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