复旦大学计算机科学技术学院CodeWisdom团队(复旦大学软件工程实验室)的研究论文《Predicting Change Propagation between Code Clone Instances by Graph-based Deep Learning》近日在在线举办的国际会议International Conference on Program Comprehension (ICPC 2022)中获得杰出论文奖(ACM SIGSOFT Distinguished Paper Award)。论文作者包括博士生胡彬、吴毅坚老师、彭鑫老师、沙朝锋老师、硕士生王晓晨、硕士生傅百强、赵文耘老师。ICPC是CCF推荐的B类国际会议,是软件程序理解领域的重要国际会议。今年是第30届。
如何确定代码克隆的多个实例是否需要进行相同的修改,一直以来困扰着程序员。特别是面对相似但不完全相同的克隆代码,上下文存在差异的情况下,程序员往往需要仔细阅读相关代码,才能判断是否要将特定的代码修改应用到其他的代码克隆实例上。
复旦大学CodeWisdom团队在与多个软件企业的代码克隆检测和管理的技术合作中,针对企业开发人员在克隆代码一致性维护中遇到的实际困难,设计了一套基于图神经网络的模型,针对克隆代码的文本与结构信息以及克隆代码修改的上下文进行大规模训练,从而能够针对克隆代码的修改来预测哪些克隆代码副本(或克隆实例)需要发生相同的修改。
本项研究对51个开源项目中提取的6万余代码克隆修改案例进行了整理,并在该数据集上以及另外三个不在数据集中的开源项目(Neo4J、AnkiDroid、KubernetesClient)中验证了所训练预测模型的效果,表明训练所得到的模型有助于辅助开发人员进行克隆代码修改传播的决策,也为进一步有效管理和重构消除克隆代码提供了可能的途径。
CodeWisdom团队的软件分析与挖掘小组长期以来开展代码克隆、软件设计、缺陷挖掘等方面的技术研究,面向国家战略和企业的实际软件开发需求积累了大量的经验。此次研究成果是长期技术积累与企业需求相结合的产物,更促进了团队坚持走“科研服务产业、产业促进科研”的发展道路。