M3:语义化 API 迁移
软件工程
2020-08-28 v1
摘要
库迁移是一个具有挑战性的问题,现有大多数方法依赖先验知识。这可以是例如从变更日志或 API 使用的统计模型导出的信息。本文处理一种不同的 API 迁移场景,其中对目标库没有先验知识。我们没有历史变更日志,也无法访问其内部表示。为解决此问题,本文提出一种新方法(M),利用概率程序合成对库函数的行为进行语义建模。然后,我们使用基于 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