引用本文:曹英魁,孙泽宇,邹艳珍,谢冰.一种结构信息增强的代码修改自动转换方法.软件学报,2021,32(4):1006-1022
【打印本页】   【下载PDF全文】   查看/发表评论  【EndNote】   【RefMan】   【BibTex】
←前一篇|后一篇→ 过刊浏览    高级检索
本文已被:浏览 3030次   下载 7139 本文二维码信息
码上扫一扫!
分享到: 微信 更多
一种结构信息增强的代码修改自动转换方法
曹英魁1,2, 孙泽宇1,2, 邹艳珍1,2, 谢冰1,2
1.北京大学 信息科学技术学院, 北京 100871;2.高可信软件技术教育部重点实验室(北京大学), 北京 100871
摘要:
在开发过程中,开发人员在进行缺陷修复、版本更新时,常常需要修改多处相似的代码.如何进行自动代码修改已成为软件工程领域的热点研究问题.一种行之有效的方式是:给定一组代码修改示例,通过抽取其中的代码修改模式,辅助相似代码进行自动转换.在现有工作中,基于深度学习的方法取得了一定进展,但在捕获代码间的长程信息依赖关系时,效果不佳.为此,提出了一种结构信息增强的代码修改自动转换方法ExpTrans.ExpTrans在解析代码时采用图的形式来表示修改示例,显式地指出了代码中变量之间的依赖关系,同时结合图卷积网络和Transformer架构,增强了模型对代码的结构信息和依赖信息的捕获能力,从而提升了代码修改自动转换的准确性.实验结果表明,对比同类型基于深度学习的方法,ExpTrans在准确率上提升了11.8%~30.8%;对比基于人工规则的方法,ExpTrans在修改实例的数量和准确率上均有显著提升.
关键词:  代码变更  代码演化  软件维护  代码生成
DOI:10.13328/j.cnki.jos.006227
分类号:TP311
基金项目:国家杰出青年科学基金(61525201);国家自然科学基金(61972006)
Structurally-enhanced Approach for Automatic Code Change Transformation
CAO Ying-Kui1,2, SUN Ze-Yu1,2, ZOU Yan-Zhen1,2, XIE Bing1,2
1.School of Electronics Engineering and Computer Science, Peking University, Beijing 100871, China;2.Key Laboratory of High Confidence Software Technologies of Ministry of Education (Peking University), Beijing 100871, China
Abstract:
In software development, developers often need to change or update lots of similar codes. How to perform code transformation automatically has become a research hotspot in software engineering. An effective way is:Extracting the change pattern from a set of similar code changes and apply it to automatic code change transformation. In the related work, deep-learning-based approaches have achieved much progress, but they suffer from the problem of significant long-dependency among code. To address this challenge, an automatic code change transformation method is proposed, namely ExpTrans, enhanced by code structure information. Based on graph-based representations of code changes, ExpTrans is enhanced with structural information of code. ExpTrans labels the dependency among variables in code parsing, adopts the graph-convolution network and transformer structure, so as to capture the long-dependency among code. To evaluate ExpTrans's effectiveness, it is compared with existing learning-based approaches first, the results show that ExpTrans gains 11.8%~30.8% precision increment. Then, ExpTrans is compared with rule-based the approaches, the results show that ExpTrans significantly improves the correct rate of the modified instances.
Key words:  code change  software evolution  software maintenance  code generation

引用本文:
【打印本页】   【下载PDF全文】   查看/发表评论  【EndNote】   【RefMan】   【BibTex】
←前一篇|后一篇→ 过刊浏览    高级检索
本文已被:浏览次   下载  
分享到: 微信 更多
摘要:
关键词:  
DOI:
分类号:
基金项目:
Abstract:
Key words: