CodeWisdom-技术分享
采用基于图的深度学习预测代码克隆实例的修改传播需求
❖
复旦大学CodeWisdom团队研究论文《Predicting Change Propagation between Code Clone Instances by Graph-based Deep Learning》获得CCF推荐的B类国际会议International Conference on Program Comprehension (ICPC 2022)的ACM SIGSOFT Distinguished Paper Award。
❖
复旦大学软件工程实验室(CodeWisdom团队)在与多个企业的代码克隆检测和管理的技术合作中,针对企业开发人员在克隆代码一致性维护中遇到的实际困难,设计了一套基于图神经网络的模型,针对克隆代码的文本和结构信息以及克隆代码修改的上下文进行大规模训练,从而能够针对克隆代码的修改来预测哪些克隆代码副本(或克隆实例)需要发生相同的修改。
相关研究论文《Predicting Change Propagation between Code Clone Instances by Graph-based Deep Learning》近日在在线举办的ICPC 2022中获得ACM SIGSOFT Distinguished Paper Award。
作者包括博士生胡彬、硕士生王晓晨、硕士生傅百强,以及吴毅坚、彭鑫、沙朝锋、赵文耘老师。
如何确定代码克隆的多个实例是否需要进行相同的修改,一直以来困扰着程序员。特别是面对相似但不完全相同的克隆代码,上下文存在差异的情况下,程序员往往需要仔细阅读相关代码,才能判断是否要将其他克隆实例的修改应用到当前的代码克隆实例上。本项研究通过对51个开源项目中提取的6万余代码克隆修改情况进行分析,采用基于图神经网络的深度学习方法训练了一套预测模型,从而辅助开发人员进行克隆代码修改传播的决策。
代码克隆的修改传播现状摸底
论文首先选取了5个开源项目(Maven, Ant, DBeaver, Tomcat, Camel)开展了代码克隆的修改传播现状摸底。通过从代码版本历史中提取代码克隆对的修改情况,识别出“匹配修改”和“非匹配修改”,从而发现一个克隆对中可能会同时存在“匹配修改”和“非匹配修改”。这表明,对一个克隆代码片段的有些修改需要传播到另一个实例,