API developers evolve software libraries to fix bugs, add new features, or refactor code. To benefit from such library evolution, the programmers of client projects have to repetitively upgrade their library usages and adapt their codebases to any library API breaking changes (e.g., API renaming). Such adaptive changes can be tedious and error-prone. Existing tools provide limited support to help programmers migrate client projects from old library versions to new ones. For instance, some tools extract API mappings be-tween library versions and only suggest simple adaptive changes (i.e., statement updates); other tools suggest or automate more complicated edits (e.g., statement insertions) based on user-provided exemplar code migrations. However, when new library versions are available, it is usually cumbersome and time-consuming for users to provide sufficient human-crafted samples in order to guide automatic migration. In this paper, we propose a novel approach, AutoUpdate, to further improve the state of the art. Instead of learning from change examples, we designed AutoUpdate to automate migration in a compiler-directed way. Namely, given a compilation error triggered by upgrading libraries, AutoUpdate exploits 13 migration opera-tors to generate candidate edits, and tentatively applies each edit until the error is resolved or all edits are explored. We conducted two experiments. The first experiment involves migrating 371 tutorial examples between versions of 5 popular libraries. AutoUpdate reduced migration-related compilation errors for 92.7% of tasks. It eliminated such errors for 32.4% of tasks, and 33.9% of the tasks have identical edits to manual migrations. In the second experiment, we applied AutoUpdate to migrate two real client projects of lucene. AutoUpdate successfully migrated both projects, and the migrated code passed all tests.


翻译:API 开发者进化软件库以修补错误、添加新功能或 Refactor 错误。为了从这样的图书馆进化中受益,客户项目的编程者必须重复更新其图书馆的用法,并根据任何图书馆 API 破碎变化(例如 API 重命名) 调整其代码库(例如 API 重命名) 。这种适应性变化可能是乏味和容易出错的。 现有工具为帮助程序者将客户项目从旧图书馆版本迁移到新版本提供了有限的支持。 例如,一些工具提取 API 映射为通向图书馆版本,只建议简单的适应性变化( 即, 声明更新); 其它工具建议或自动更新更复杂的编辑( 例如, 声明插入) 。 然而, 当有了新的图书馆版本时, 用户通常会很麻烦和费时间地提供足够的人造样本, 以指导自动迁移。 在本文中, 我们建议一种全新的编辑方法, 自动更新, 进一步改进艺术状态。 而不是从更改的示例中, 我们设计了第一个自动更新到自动升级到自动升级的服务器 4 4, 升级的服务器 将自动升级到自动升级到自动升级到自动升级到自动升级到升级到升级到升级到升级到升级到升级到升级到自动变换的日历的日历的版本, 。

0
下载
关闭预览

相关内容

Automator是苹果公司为他们的Mac OS X系统开发的一款软件。 只要通过点击拖拽鼠标等操作就可以将一系列动作组合成一个工作流,从而帮助你自动的(可重复的)完成一些复杂的工作。Automator还能横跨很多不同种类的程序,包括:查找器、Safari网络浏览器、iCal、地址簿或者其他的一些程序。它还能和一些第三方的程序一起工作,如微软的Office、Adobe公司的Photoshop或者Pixelmator等。
最新《联邦学习Federated Learning》报告,Federated Learning
专知会员服务
86+阅读 · 2020年12月2日
专知会员服务
81+阅读 · 2020年9月28日
商业数据分析,39页ppt
专知会员服务
159+阅读 · 2020年6月2日
【Manning新书】现代Java实战,592页pdf
专知会员服务
99+阅读 · 2020年5月22日
【干货书】真实机器学习,264页pdf,Real-World Machine Learning
Keras François Chollet 《Deep Learning with Python 》, 386页pdf
专知会员服务
151+阅读 · 2019年10月12日
机器学习入门的经验与建议
专知会员服务
92+阅读 · 2019年10月10日
已删除
将门创投
7+阅读 · 2019年10月10日
通过Docker安装谷歌足球游戏环境
CreateAMind
11+阅读 · 2019年7月7日
Hierarchically Structured Meta-learning
CreateAMind
26+阅读 · 2019年5月22日
Transferring Knowledge across Learning Processes
CreateAMind
27+阅读 · 2019年5月18日
强化学习的Unsupervised Meta-Learning
CreateAMind
17+阅读 · 2019年1月7日
Unsupervised Learning via Meta-Learning
CreateAMind
42+阅读 · 2019年1月3日
【推荐】树莓派/OpenCV/dlib人脸定位/瞌睡检测
机器学习研究会
9+阅读 · 2017年10月24日
【学习】(Python)SVM数据分类
机器学习研究会
6+阅读 · 2017年10月15日
【计算机类】期刊专刊/国际会议截稿信息6条
Call4Papers
3+阅读 · 2017年10月13日
Arxiv
0+阅读 · 2021年6月24日
Arxiv
5+阅读 · 2020年10月22日
Arxiv
7+阅读 · 2020年10月9日
Arxiv
6+阅读 · 2018年3月29日
VIP会员
相关VIP内容
最新《联邦学习Federated Learning》报告,Federated Learning
专知会员服务
86+阅读 · 2020年12月2日
专知会员服务
81+阅读 · 2020年9月28日
商业数据分析,39页ppt
专知会员服务
159+阅读 · 2020年6月2日
【Manning新书】现代Java实战,592页pdf
专知会员服务
99+阅读 · 2020年5月22日
【干货书】真实机器学习,264页pdf,Real-World Machine Learning
Keras François Chollet 《Deep Learning with Python 》, 386页pdf
专知会员服务
151+阅读 · 2019年10月12日
机器学习入门的经验与建议
专知会员服务
92+阅读 · 2019年10月10日
相关资讯
已删除
将门创投
7+阅读 · 2019年10月10日
通过Docker安装谷歌足球游戏环境
CreateAMind
11+阅读 · 2019年7月7日
Hierarchically Structured Meta-learning
CreateAMind
26+阅读 · 2019年5月22日
Transferring Knowledge across Learning Processes
CreateAMind
27+阅读 · 2019年5月18日
强化学习的Unsupervised Meta-Learning
CreateAMind
17+阅读 · 2019年1月7日
Unsupervised Learning via Meta-Learning
CreateAMind
42+阅读 · 2019年1月3日
【推荐】树莓派/OpenCV/dlib人脸定位/瞌睡检测
机器学习研究会
9+阅读 · 2017年10月24日
【学习】(Python)SVM数据分类
机器学习研究会
6+阅读 · 2017年10月15日
【计算机类】期刊专刊/国际会议截稿信息6条
Call4Papers
3+阅读 · 2017年10月13日
Top
微信扫码咨询专知VIP会员