[论文解读] Recommendation of Exception Handling Code in Mobile App Development
本文提出了XRank和XHand两种新技术,用于在移动应用开发中推荐有效的异常处理。XRank基于方法调用与异常类型的模糊集合关联,对可能需要捕获的异常进行排序;XHand则利用n-gram和分类模型,推荐修复异常的正确方法序列。在超过1000万个Android方法上进行评估,XRank在top-1和top-3准确率上分别达到70%和87%,XHand分别达到89%和96%,表明该方法在减少与异常相关的错误方面具有高度有效性。
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文档不完善以及框架快速演进带来的异常处理障碍。
- 开发一个实用、集成化的工具(ExAssist),可在Android Studio和IntelliJ IDEA等主流IDE中使用。
提出的方法
- XRank利用模糊集理论,建模try块中方法调用与潜在异常类型之间的关联,对可能需要捕获的异常进行排序。
- XHand应用统计语言模型——特别是n-gram和多分类分类模型——预测用于处理异常的方法调用序列。
- 该系统将异常处理代码视为自然语言问题,将catch块中缺失的方法预测为句子中缺失的词语。
- ExAssist将XRank和XHand集成到Android Studio和IntelliJ IDEA的插件中,提供实时代码建议。
- 训练数据来自4000个Android应用中的超过1000万个方法,捕捉了真实世界中的异常处理模式。
- 该方法利用代码结构和历史使用模式,推断出正确的异常处理实践。
实验结果
研究问题
- RQ1在移动应用中,系统对给定代码片段推荐正确异常类型的能力有多高?
- RQ2推荐catch块内修复异常的纠正方法序列,其有效性如何?
- RQ3基于真实世界Android代码训练的工具能否提升开发人员的生产力并减少与异常相关的错误?
- RQ4与基线方法相比,该方法在推荐异常相关错误实际修复方案时表现如何?
- RQ5开发人员实际的异常处理修复方案与系统生成的建议在多大程度上一致?
主要发现
- XRank在推荐代码片段适用的异常类型时,top-1准确率达到70%,top-3准确率达到87%。
- XHand在推荐异常处理的纠正方法序列时,top-1准确率达到89%,top-3准确率达到96%。
- ExAssist在42个与异常相关的错误修复中,成功匹配或包含实际修复方案的占64%,显著优于基线方法(仅匹配14%的修复)。
- 研究证实,许多开发人员未能正确处理异常,其中16%的修复未捕获异常,42%仅进行了部分修复。
- 结果验证了自动化、上下文感知的异常处理建议可显著提升代码质量,并降低移动应用的崩溃风险。
- XRank和XHand的高准确率表明,异常处理模式具有可预测性,且能从大规模代码库中学习。
更好的研究,从现在开始
从阅读论文到最终审阅,大幅缩短您的研究时间。
无需绑定信用卡
本解读由 AI 生成,并经人工编辑审核。