Modern software development extensively depends on existing libraries written by other developer teams from the same or a different organization. When a developer executes the software, the execution trace may go across the boundaries of multiple software products and create cross-project failures (CPFs). Existing studies show that a stand-alone executable failure report may enable the most effective communication, but creating such a report is often challenging due to the complicated files and dependencies interactions in the software ecosystems. In this paper, to solve the CPF report trilemma, we developed PExReport, which automatically creates stand-alone executable CPF reports. PExReport leverages build tools to prune source code and dependencies, and further analyzes the build process to create a pruned build environment for reproducing the CPF. We performed an evaluation on 74 software project issues with 198 CPFs, and the evaluation results show that PExReport can create executable CPF reports for 184 out of 198 test failures in our dataset, with an average reduction of 72.97% on source classes and the classes in internal JARs.
翻译:现代软件开发广泛依赖于同一或不同组织中其他开发团队编写的现有库。当开发者执行软件时,执行轨迹可能跨越多个软件产品的边界,从而产生跨项目失败(CPF)。现有研究表明,独立的可执行失败报告可能实现最高效的沟通,但由于软件生态系统中复杂的文件和依赖交互,创建此类报告通常颇具挑战。为解决CPF报告的三难困境,本文开发了PExReport,该工具可自动创建独立的可执行CPF报告。PExReport利用构建工具精简源代码和依赖项,进一步分析构建过程以创建用于复现CPF的精简构建环境。我们基于74个软件项目问题(含198个CPF)进行了评估,结果显示PExReport可为数据集中184个测试失败生成可执行CPF报告,平均精简源类及内部JAR中类的比例达72.97%。