一句话:提出 CRASOLVER,结合崩溃轨迹结构与知识相似度检索问答并多因子摘要崩溃解决方案。
软件崩溃原因可能隐藏在源代码或开发环境的任意位置;开发者虽可从问答网站找到重复崩溃问题的解决方案,但准确检索并人工筛选答案成本高昂。本文提出 CRASOLVER,针对崩溃轨迹自动总结解决方案:先利用崩溃轨迹的结构信息设计位置相关相似度,并结合官方文档知识相似度,从 Q&A 网站检索相关问答;在获得答案后,通过多因子评分机制生成最终解决方案摘要。作者基于 Stack Overflow 构建了包含 69,478 个 Java 和 33,566 个 Android 异常相关问题的两个库,并用 50 条 Java 与 50 条 Android 崩溃轨迹开展用户研究。结果表明,CRASOLVER 在相关性、有用性和多样性上显著优于四个基线,也验证了相关问答检索组件的有效性。
The causes of software crashes can be hidden anywhere in the source code and development environment. When encountering software crashes, recurring bugs that are discussed on Q&A sites could provide developers with solutions to their crashing problems. However, it is difficult for developers to accurately search for relevant content on search engines, and developers have to spend a lot of manual effort to find the right solution from the returned results. In this paper, we present CRASOLVER, an approach that takes into account both the structural information of crash traces and the knowledge of crash-causing bugs to automatically summarize solutions from crash traces. Given a crash trace, CRASOLVER retrieves relevant questions from Q&A sites by combining a proposed position dependent similarity – based on the structural information of the crash trace – with an extra knowledge similarity, based on the knowledge from official documentation sites. After obtaining the answers to these questions from the Q&A site, CRASOLVER summarizes the final solution based on a multi-factor scoring mechanism. To evaluate our approach, we built two repositories of Java and Android exception-related questions from Stack Overflow with size of 69,478 and 33,566 questions respectively. Our user study results using 50 selected Java crash traces and 50 selected Android crash traces show that our approach significantly outperforms four baselines in terms of relevance, usefulness, and diversity. The evaluation also confirms the effectiveness of the relevant question retrieval component in our approach for crash traces.