中文

M3:语义化 API 迁移

软件工程 2020-08-28 v1

摘要

库迁移是一个具有挑战性的问题,现有大多数方法依赖先验知识。这可以是例如从变更日志或 API 使用的统计模型导出的信息。本文处理一种不同的 API 迁移场景,其中对目标库没有先验知识。我们没有历史变更日志,也无法访问其内部表示。为解决此问题,本文提出一种新方法(M3^3),利用概率程序合成对库函数的行为进行语义建模。然后,我们使用基于 SMT 的代码搜索引擎在用户应用中发现相似代码。这些发现的实例提供了 API 迁移的潜在位置。我们在来自不同应用领域的 7 个知名库上评估了我们的方法,学习了 94 个函数的正确实现。我们的方法已与标准编译器工具集成,并利用该集成在 9 个现有 C/C++ 应用(超过 1MLoC)中评估迁移机会。我们发现了这些函数的超过 7,000 个实例,其中超过 2,000 个代表迁移机会。

关键词

引用

@article{arxiv.2008.12118,
  title  = {M3: Semantic API Migrations},
  author = {Bruce Collie and Philip Ginsbach and Jackson Woodruff and Ajitha Rajan and Michael O'Boyle},
  journal= {arXiv preprint arXiv:2008.12118},
  year   = {2020}
}

备注

Accepted to ASE 2020