没有合适的资源?快使用搜索试试~ 我知道了~
基于上下文的智能化代码复用推荐.pdf
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 183 浏览量
2022-11-10
19:08:51
上传
评论
收藏 1.51MB PDF 举报
温馨提示
![preview](https://dl-preview.csdnimg.cn/86948130/0001-b8842c9d1e9caf057bc7ddb64ad756dd_thumbnail.jpeg)
![preview-icon](https://csdnimg.cn/release/downloadcmsfe/public/img/scale.ab9e0183.png)
试读
15页
。。。
资源推荐
资源详情
资源评论
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083646.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083646.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083646.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083646.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083646.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083646.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083646.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083646.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083646.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![gz](https://img-home.csdnimg.cn/images/20210720083447.png)
![](https://csdnimg.cn/release/download_crawler_static/86948130/bg1.jpg)
基于上下文的智能化代码复用推荐
摘要:基于代码大数据分析、挖掘和学习的智能化代码复用推荐能够有效地提高软件
复用的效率和质量, 包括特定领域内的共性代码单元以及与领域无关的通用代码单元。
围绕基于上下文的智能化代码复用推荐这一主题, 阐述了基于模板挖掘的代码复用推
荐和基于深度学习的代码复用推荐两个方面的研究工作。在此基础上,针对基于上下
文的智能化代码复用推荐的未来发展方向进行了展望。
关键词: 软件复用 ; 代码推荐 ; 代码上下文 ; API ; 代码模板 ; 深度学习
1 引言
各种形式的代码复用一直是软件开发人员广泛使用的一种高效的辅助开发手段, 复用
的对象包括相似功能模块、代码片段以及应用编程接口( application programming
interface ,API)等不同粒度的代码单元。 在传统的代码复用方式中, 开发人员需要利
用互联网搜索引擎或企业代码库搜索等手段获取特定领域的或与领域无关的可复用
代码单元,同时查找样例代码和文本解释等帮助信息,在此基础上选择代码单元,并
完成修改和集成。这种代码复用方式虽然有效,但依赖开发人员的经验,同时需要进
行大量的信息查找和确认,因此复用效率不高,而且容易在代码中引入缺陷。开源和
企业代码库以及软件技术文档、 软件开发问答等软件开发资源的大量积累形成了代码
大数据。例如,代码托管平台 GitHub 上已经聚集了超过 2.7 亿个代码仓库,软件开
发问答网站 Stack Overflow 上已经积累了超过 1 700 万个软件开发问题。软件开发
过程中很多时候遇到的是重复性的开发问题, 如通用功能实现、 通用 API 及其使用模
![](https://csdnimg.cn/release/download_crawler_static/86948130/bg2.jpg)
式,因此通过代码大数据分析、挖掘和学习可以实现智能化的代码复用推荐。对于软
件开发人员而言,最有效的方式是基于代码上下文的智能化代码复用推荐,即根据集
成化开发环境( integrated development environment ,IDE)中当前开发任务已经完
成的代码等上下文信息,针对性地推荐可用的代码单元,同时辅助开发人员进行定制
化的代码修改和集成。针对基于上下文的智能化代码复用推荐,研究人员使用数据挖
掘、统计模型、深度学习等各种技术手段开展了一系列研究和探索,包括基于上下文
匹配的 API 使用模式推荐、 基于上下文概率模型的代码补全、 基于上下文图统计语言
模型的 API 推荐等。这些方法推荐的可复用代码单元覆盖了 API 使用模式、代码片
段、单个 API 和语句行等不同粒度,其有效性已经在一定范围内得到了验证。然而,
现有的智能化代码复用推荐还无法提供一种具有广泛适用性以及能够按需调整推荐
粒度及内容的系统性的智能辅助开发支持。一般而言,软件开发人员的代码复用对象
包括特定领域的共性代码单元以及与领域无关的通用代码单元。 前者的复用范围局限
在特定领域内,但与核心业务关系更密切,例如以代码片段或功能模块的形式出现的
相似业务功能的代码实现变体。后者的复用范围更广,但与核心业务关系较弱,如通
用 API 及其使用模式、通用算法与功能实现等。不同类型的代码复用对象需要采用不
同的智能化方法进行分析和推荐。 本文围绕基于上下文的智能化代码复用推荐这一主
题,从基于模板挖掘的代码复用推荐和基于深度学习的代码复用推荐两个方面介绍笔
者的研究工作。其中,基于模板挖掘的代码复用推荐支持代码片段和功能模块两个层
次的复用推荐,同时所需的相似代码副本数量较少,适用于面向特定领域的共性代码
复用推荐。基于深度学习的代码复用推荐支持单行及多行 API 调用代码的推荐, 所需
的训练数据较多,适用于与领域无关的通用代码复用推荐。在此基础上,本文还将针
对基于上下文的智能化代码复用推荐的未来发展方向进行展望。
![](https://csdnimg.cn/release/download_crawler_static/86948130/bg3.jpg)
2 基于模板挖掘的代码复用推荐
软件开发人员经常会实现相似或相同的功能,相应的实现代码也是相似的。这种代码
片段级别的复用行为在开源和企业软件开发中十分普遍。在这种代码复用中,开发人
员经常需要对所复用的代码进行定制化修改。此时,开发人员可能因为对代码本身以
及不同部分之间的逻辑关联不够了解而造成遗漏修改或错误修改, 进而导致缺陷的产
生。此外,在功能模块级别上,开发人员可能会通过代码复制粘贴实现更大粒度的复
用,其中隐含着对设计结构的复用。通过代码片段和功能模块两个层次的模板抽取,
可以实现相应的代码复用推荐。
2.1 代码片段模板抽取与复用推荐
针对代码片段级别的复用, 可以通过代码克隆检测发现当前所复用代码片段在项目库
中的所有相似副本。这些相似副本被称为克隆实例,它们构成的集合被称为克隆类。
该方法的基本思想在于,项目库中的每一个相似副本(克隆实例)都被视为一次基于
代码复制的复用的结果, 而这些克隆实例之间的差异则被视为代码复用过程中所做的
修改。因此,开发人员通过代码复制复用一个代码片段时,可以找出所有与之相似的
克隆实例,分析它们之间的差异,并从中抽取代码模板以及其中蕴含的关联关系用于
复用推荐。该方法的基本过程如图 1 所示。在针对当前所复制代码片段的克隆检测结
果的基础上,利用多段代码之间的差异比较技术来检测这些克隆实例之间的差异,并
将每一个差异转化为一个代码可变点。 在此基础上,该方法通过基于历史代码信息 (曾
在可变点处出现过的代码)和上下文代码的分析,挖掘每个可变点上的内容选项以及
相互之间的关联关系, 并在开发人员的代码编辑过程中以交互式推荐的方式辅助实现
代码复用。当开发人员在可变点中选择了某些代码内容选项或输入新的代码内容时,
剩余14页未读,继续阅读
资源评论
![avatar-default](https://csdnimg.cn/release/downloadcmsfe/public/img/lazyLogo2.1882d7f4.png)
![avatar](https://profile-avatar.csdnimg.cn/dfba069df9d743e89798b70d3e80af24_xxpr_ybgg.jpg!1)
xxpr_ybgg
- 粉丝: 6560
- 资源: 3万+
上传资源 快速赚钱
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助
![voice](https://csdnimg.cn/release/downloadcmsfe/public/img/voice.245cc511.png)
![center-task](https://csdnimg.cn/release/downloadcmsfe/public/img/center-task.c2eda91a.png)
安全验证
文档复制为VIP权益,开通VIP直接复制
![dialog-icon](https://csdnimg.cn/release/downloadcmsfe/public/img/green-success.6a4acb44.png)