关键词:
智能合约
源代码摘要
特征融合
Transformer
摘要生成系统
摘要:
随着世界互联网与软件产业的蓬勃发展,计算机软件系统复杂度快速上升。源代码摘要作为函数功能的自然语言描述,帮助软件开发人员更好地理解和复用代码,并促进软件开发中的协作和交流。尤其在当今数字化快速发展的时代,区块链技术凭借其去中心化、不可篡改等特性在众多领域展现出巨大的应用潜力。而智能合约作为区块链技术的核心要素之一,正发挥着关键的作用,加速我国迈步进入数字经济时代的进程。
然而,智能合约的源代码往往较为复杂且冗长,为了便于理解、审查以及后续的开发维护工作,高效且准确地生成智能合约源代码摘要显得尤为重要。以往的研究多采用人工模板或信息检索的方法,但这些方法存在泛化性不足、自动化程度不高、过于依赖检索库等问题。随后,深度学习方法因其能够训练模型生成高质量的代码摘要而备受关注,不过它们仍存在以下不足之处:(1)由于源代码具有高度的结构性,充分捕捉其结构信息对于理解源代码的功能至关重要。但是大多数模型采用的神经网络主要关注源代码的序列信息,对结构信息的关注相对不足;(2)为了更有效地学习源代码的深层次信息,越来越多的研究者开始将抽象语法树作为辅助信息引入模型训练中。由于源代码规模庞大,抽象语法树的深度也随之增加,导致模型难以有效学习深层次的树节点信息;(3)在构建深度学习模型时,研究者未能充分捕捉源代码的多模态特征信息,这使得模型在学习过程中忽略了关键信息,对生成的摘要结果产生显著影响。
为解决上述不足,本文主要研究如下:
(1)针对忽略源代码结构信息、抽象语法树节点信息不足、多特征信息难以融合等问题,本文构建了一种基于多模态特征融合的Solidity源代码摘要模型(Fusing Multiple Code Features,FMCF)。该模型保留了自注意力机制,并构建了三层图注意力网络编码器、Code BERT编码器以及融合解码器。为了有效获取抽象语法树(Abstract Syntax Tree,AST)的深层次信息,本文采用基于结构的遍历方式(Structure-based Traversal,SBT)处理AST,提取出Solidity代码的层次结构信息,包括代码块、函数定义、控制流等。随后,通过这两个编码器分别提取智能合约代码中SBT序列模态的特征向量和AST模态的特征向量。最终,使用Transformer融合解码器对提取的特征进行计算整合并输出结果。
(2)在实验阶段,为了验证FMCF生成模型的可行性和可扩展性,本文收集了公开数据集进行处理,共获得342,931个〈方法,摘要〉对。随后,针对处理后的SBT序列和AST进行了多组对比实验、消融实验以及泛化性实验。实验结果表明,相对于标准的基线方法,FMCF在BLEU和METEOR指标都有相应的提升。而且人工评估的平均Kappa系数得分偏上,也说明FMCF生成的代码摘要能解决实际场景的问题,能够泛化到其他源代码领域。
(3)此外,为验证本文所构建的FMCF生成模型的实际应用价值,本文基于Spring Boot框架与FMCF生成模型开发了一个前后端分离的源代码摘要生成系统。该系统能够将用户在前端输入的源代码信息传输至后端,并通过RESTful API调用外部封装的FMCF模型以生成摘要。同时生成系统可根据不同用户的操作需求对生成的摘要进行管理。本系统实现了界面简洁清晰、用户需求导向、主要功能齐全的开发原则,提升了研究成果的应用性和实用性。