Intrinsic bugs are bugs for which a bug introducing change can be identified in the version control system of a software. In contrast, extrinsic bugs are caused by external changes to a software, such as errors in external APIs; thereby they do not have an explicit bug introducing change in the version control system. Although most previous research literature has assumed that all bugs are of intrinsic nature, in a previous study, we show that not all bugs are intrinsic. This paper shows an example of how considering extrinsic bugs can affect software engineering research. Specifically, we study the impact of extrinsic bugs in Just In Time bug prediction by partially replicating a recent study by McIntosh and Kamei on JIT models. These models are trained using properties of earlier bug-introducing changes. Since extrinsic bugs do not have bug introducing changes in the version control system, we manually curate McIntosh and Kamei's dataset to distinguish between intrinsic and extrinsic bugs. Then, we address their original research questions, this time removing extrinsic bugs, to study whether bug-introducing changes are a moving target in Just-In-Time bug prediction. Finally, we study whether characteristics of intrinsic and extrinsic bugs are different. Our results show that intrinsic and extrinsic bugs are of different nature. When removing extrinsic bugs the performance is different up to 16 % Area Under the Curve points. This indicates that our JIT models obtain a more accurate representation of the real world. We conclude that extrinsic bugs negatively impact Just-In-Time models. Furthermore, we offer evidence that extrinsic bugs should be further investigated, as they can significantly impact how software engineers understand bugs.
翻译:Intrinsic 错误是软件版本控制系统中可以识别到错误导致变化的错误。 相反, 外部错误是由软件外部变化引起的, 例如外部 API 错误; 因此它们没有明显错误在版本控制系统中引入变化。 虽然大多数先前的研究文献都假设所有的错误都是内在的, 在前一项研究中, 我们显示并非所有错误都是内在的。 本文展示了一个实例, 说明在软件的版本控制系统中, 考虑外部错误可以影响软件的准确性能。 具体地说, 我们通过在 JIT 模型中部分复制最近由 McIntosh 和 Kamei 进行的研究, 来研究外部错误性能的影响。 虽然大多数以前的研究文献都认为所有错误都是内在性的, 但是在前一项研究中, 我们手动了McIntosh 和 Kamei 的错误性能, 来区分内向和外向性能的错误性能。 然后, 我们进一步研究它们最初的研究问题, 时间删除外部的错误性能, 开始在内部的错误性能中, 显示我们是否正在研究错误性变。 。 最后, 正确地研究我们是否正在研究, 了解我们是否正在研究。