Software developers must often replace existing components in their systems to adapt to evolving environments or tooling. While traditional code search systems are effective at retrieving components with related functionality, it is much more challenging to retrieve components that can be used to directly replace existing functionality, as replacements must account for more fundamental program properties such as type compatibility. To address this problem, we introduce ClassFinder, a system which given a query class Q, and a search corpus S, returns a ranked subset of classes that can replace Q and its functionality. ClassFinder produces afield and method mapping between the classes that can provide useful hints to a developer and can be used to effectively refine the ranking of candidate replacement classes. Our technique leverages the complementary strengths of a distributed embeddings-based search and type-based analysis, using the former to prune down candidates for an optimization-based approach based on the latter. ClassFinder retrieves replacement classes, along with a type-aware field/method mapping between classes. We evaluate ClassFinder on a search space of ~600thousand open sourceJava classes. Querying ClassFinder with 24 known Java classes provided meaningful replacement classes and mappings, in many cases producing complete mappings with functionally identical replacement classes.


翻译:软件开发者通常必须更换其系统中的现有组件,以适应不断变化的环境或工具。传统代码搜索系统在检索相关功能的组件时有效,但检索能够直接替换现有功能的组件则更具挑战性,因为替换必须说明更基本的程序属性,例如类型兼容性。为了解决这个问题,我们引入了分类Finder,一个给一个查询类Q的系统,和一个搜索系统S,返回了能够取代Q及其功能的等级分级组。类Finder在为开发者提供有用提示的类别之间制作了场和方法映射,并可用于有效改进候选替换类的排名。我们的技术利用分布式嵌入式搜索和类型分析的互补优势,利用前者为候选人提供基于后者的优化方法。级Finder检索了替换等级,同时在类别之间绘制了一种类型认知的字段/方法图。我们评估了能够向开发者提供有用提示的分类和方法映射,并可用于有效改进候选替换类的排序。Queringing AliFindersal 和在已知的24个类中完成功能性替换。

0
下载
关闭预览

相关内容

【如何做研究】How to research ,22页ppt
专知会员服务
108+阅读 · 2021年4月17日
【Manning新书】现代Java实战,592页pdf
专知会员服务
99+阅读 · 2020年5月22日
深度学习搜索,Exploring Deep Learning for Search
专知会员服务
57+阅读 · 2020年5月9日
专知会员服务
60+阅读 · 2020年3月19日
Stabilizing Transformers for Reinforcement Learning
专知会员服务
58+阅读 · 2019年10月17日
强化学习最新教程,17页pdf
专知会员服务
174+阅读 · 2019年10月11日
已删除
将门创投
8+阅读 · 2019年6月13日
Hierarchically Structured Meta-learning
CreateAMind
26+阅读 · 2019年5月22日
Transferring Knowledge across Learning Processes
CreateAMind
27+阅读 · 2019年5月18日
动物脑的好奇心和强化学习的好奇心
CreateAMind
10+阅读 · 2019年1月26日
Unsupervised Learning via Meta-Learning
CreateAMind
42+阅读 · 2019年1月3日
Disentangled的假设的探讨
CreateAMind
9+阅读 · 2018年12月10日
Hierarchical Disentangled Representations
CreateAMind
4+阅读 · 2018年4月15日
论文浅尝 |「知识表示学习」专题论文推荐
开放知识图谱
13+阅读 · 2018年2月12日
carla无人驾驶模拟中文项目 carla_simulator_Chinese
CreateAMind
3+阅读 · 2018年1月30日
Auto-Encoding GAN
CreateAMind
7+阅读 · 2017年8月4日
Arxiv
0+阅读 · 2021年12月3日
Continual Unsupervised Representation Learning
Arxiv
7+阅读 · 2019年10月31日
Learning to Weight for Text Classification
Arxiv
8+阅读 · 2019年3月28日
Arxiv
8+阅读 · 2014年6月27日
VIP会员
相关VIP内容
【如何做研究】How to research ,22页ppt
专知会员服务
108+阅读 · 2021年4月17日
【Manning新书】现代Java实战,592页pdf
专知会员服务
99+阅读 · 2020年5月22日
深度学习搜索,Exploring Deep Learning for Search
专知会员服务
57+阅读 · 2020年5月9日
专知会员服务
60+阅读 · 2020年3月19日
Stabilizing Transformers for Reinforcement Learning
专知会员服务
58+阅读 · 2019年10月17日
强化学习最新教程,17页pdf
专知会员服务
174+阅读 · 2019年10月11日
相关资讯
已删除
将门创投
8+阅读 · 2019年6月13日
Hierarchically Structured Meta-learning
CreateAMind
26+阅读 · 2019年5月22日
Transferring Knowledge across Learning Processes
CreateAMind
27+阅读 · 2019年5月18日
动物脑的好奇心和强化学习的好奇心
CreateAMind
10+阅读 · 2019年1月26日
Unsupervised Learning via Meta-Learning
CreateAMind
42+阅读 · 2019年1月3日
Disentangled的假设的探讨
CreateAMind
9+阅读 · 2018年12月10日
Hierarchical Disentangled Representations
CreateAMind
4+阅读 · 2018年4月15日
论文浅尝 |「知识表示学习」专题论文推荐
开放知识图谱
13+阅读 · 2018年2月12日
carla无人驾驶模拟中文项目 carla_simulator_Chinese
CreateAMind
3+阅读 · 2018年1月30日
Auto-Encoding GAN
CreateAMind
7+阅读 · 2017年8月4日
Top
微信扫码咨询专知VIP会员