- 简介“Breaking changes”对上下游开发人员都需要付出很大的努力:下游开发人员需要适应这些变化,而上游开发人员则需要负责识别和记录这些变化。在NPM生态系统中,由于频繁的代码更改和对破坏性变化的高容忍度,这种努力更大。为了更好地理解NPM生态系统中的破坏性变化,并增强破坏性变化检测工具,我们进行了一项大规模的经验研究,以调查NPM生态系统中的破坏性变化。我们构建了一个由381个热门NPM项目的明确记录的破坏性变化数据集。我们发现93.6%的检测到的破坏性变化可以由开发人员的文档覆盖,约19%的破坏性变化无法通过回归测试检测到。然后,在调查我们收集的破坏性变化的源代码的过程中,我们得出了一组JavaScript和TypeScript特定的语法破坏性变化分类和一组主要类型的行为破坏性变化分类。此外,我们调查了开发人员在NPM中进行破坏性变化的原因,并发现了三个主要原因,即减少代码冗余,改进标识符名称和改进API设计,每个类别都包含几个子项。我们为未来的研究提供了可行的启示,例如应在JavaScript项目中应用自动命名和重命名技术以改进标识符名称,未来的研究可以尝试检测更多类型的行为破坏性变化。通过提出这些启示,我们还讨论了自动重命名和BC检测方法的弱点。
-
- 图表
- 解决问题研究NPM生态系统中的破坏性变更,以提高变更检测工具的效率和准确性。
- 关键思路通过对381个流行的NPM项目的显式文档化的破坏性变更进行大规模的实证研究,提出了一种JavaScript和TypeScript特定的语法破坏性变更分类和主要类型的行为破坏性变更分类,并发现了三个主要的破坏性变更原因。
- 其它亮点93.6%的检测到的破坏性变更可以通过开发人员的文档进行覆盖,约19%的破坏性变更无法通过回归测试进行检测。提供了未来研究的可行性建议,例如在JavaScript项目中应用自动命名和重命名技术以改善标识符名称,未来研究可以尝试检测更多类型的行为破坏性变更。
- 最近的相关研究包括:1. Empirical Study of API Evolution in the npm Package Dependency Network;2. An Empirical Study of Breaking Changes in Java Projects and Their Impact on Clients;3. An Empirical Study on the Effect of API Evolution on Client Systems in the Java Ecosystem
NEW
提问交流
提交问题,平台邀请作者,轻松获得权威解答~
向作者提问

提问交流