中文

一种用于确定npm包发布的语义化版本类型的机器学习方法

软件工程 2022-04-13 v1

摘要

语义化版本规范被广泛用于指示包发布中变更的程度。遗憾的是,存在许多开发者不遵守语义化版本规范的情况,导致依赖应用被破坏。为减少此类情况,我们提出使用机器学习(ML)技术有效预测新发布类型(即补丁、次要、主要),以恰当确定语义化版本类型。为执行预测,我们挖掘并使用了关于发布的多项特征,如变更代码的复杂度、变更类型和开发活动。随后我们使用了四种ML分类器。为评估所提ML分类器的性能,我们在包含约6,260次发布总计31个JavaScript包上进行了实证研究。我们首先从包源代码与仓库的历史数据中提取了41个发布级特征。然后,我们使用了四种机器学习分类器,即XGBoost、Random Forest、Decision Tree和Logistic Regression。我们发现XGBoost分类器表现最佳,对主要、次要和补丁发布分别取得0.78、0.69和0.74的中位ROC AUC值。我们还发现,与发布中变更类型相关的特征是确定语义化版本类型的最佳预测特征组。最后,我们通过应用跨包验证研究了确定语义化版本类型的泛化能力。我们的结果显示,通用分类器对主要、次要和补丁发布分别取得了0.76、0.69和0.75的中位ROC AUC值。

关键词

引用

@article{arxiv.2204.05929,
  title  = {A Machine Learning Approach to Determine the Semantic Versioning Type of npm Packages Releases},
  author = {Rabe Abdalkareem and Md Atique Reza Chowdhury and Emad Shihab},
  journal= {arXiv preprint arXiv:2204.05929},
  year   = {2022}
}

备注

19 pages, 2 figures, Journal