[论文解读] Automatic Code Summarization via Multi-dimensional Semantic Fusing in GNN.
该论文提出了一种基于图神经网络(GNN)的自动代码摘要方法,通过将多种代码表示——抽象语法树(AST)、控制流图(CFG)和程序依赖图(PDG)——融合为联合代码属性图,实现了对代码语义的全面建模。通过引入检索增强的外部知识和动态图注意力机制,模型能够捕捉代码的局部与全局语义,其在来自200多个开源C项目的新基准上实现了最先进性能,BLEU-4、ROUGE-L和METEOR指标分别提升了1.66、2.38和2.22。
Source code summarization aims to generate natural language summaries from structured code snippets for better understanding code functionalities. Recent works attempt to encode programs into graphs for learning program semantics and yield promising results. However, these methods only use simple code representations (e.g., AST), which limits the capability of learning the rich semantics for complex programs. Furthermore, these models primarily rely on graph-based message passing, which only captures local neighborhood relations. To this end, in this paper, we combine diverse representations of the source code (i.e., AST, CFG and PDG) into a joint code property graph. To better learn semantics from the joint graph, we propose a retrieval-augmented mechanism to augment source code semantics with external knowledge. Furthermore, we propose a novel attention-based dynamic graph to capture global interactions among nodes in the static graph and followed a hybrid message passing GNN to incorporate both static and dynamic graph. To evaluate our proposed approach, we release a new challenging benchmark, crawled from 200+ diversified large-scale open-source C projects. Our method achieves the state-of-the-art performance, improving existing methods by 1.66, 2.38 and 2.22 in terms of BLEU-4, ROUGE-L and METEOR metrics.
研究动机与目标
- 解决现有代码摘要方法依赖单一或简单代码表示(如AST)的局限性,这些方法难以捕捉复杂程序中的丰富语义。
- 通过实现全局节点交互建模,克服传统GNN中基于消息传递的局部感受野限制。
- 通过检索增强机制整合外部知识,提升代码语义表征能力。
- 设计一种结合静态与动态图学习的混合GNN架构,以提升代码图上的表征学习效果。
- 通过爬取200多个大规模开源C项目,构建一个全新且具有挑战性的代码摘要基准。
提出的方法
- 通过融合三种静态代码表示——抽象语法树(AST)、控制流图(CFG)和程序依赖图(PDG)——构建联合代码属性图。
- 引入检索增强机制,从代码文档和相关代码片段中获取外部知识,以丰富节点嵌入表示。
- 提出一种新颖的基于注意力的动态图,用于建模静态代码图中节点间的长距离依赖关系。
- 设计一种混合消息传递机制,结合来自静态联合图与学习得到的动态图的信息。
- 采用端到端的序列到序列学习方法,结合交叉注意力机制,从代码嵌入生成自然语言摘要。
实验结果
研究问题
- RQ1将多种静态代码表示(AST、CFG、PDG)融合为统一图,是否能提升代码语义表征能力,从而改善代码摘要质量?
- RQ2在低资源或复杂代码场景下,检索增强的外部知识在多大程度上能提升代码表征学习效果?
- RQ3通过动态图注意力机制建模全局节点交互,是否在代码摘要任务中优于传统GNN的局部消息传递机制?
- RQ4所提出的混合GNN架构在多样化的、真实世界的代码摘要基准上,相较于现有最先进模型表现如何?
- RQ5使用大规模、多样化的开源C代码基准对模型泛化能力与性能评估有何影响?
主要发现
- 所提方法在代码摘要任务上达到最先进性能,相比现有方法,BLEU-4指标提升1.66分。
- ROUGE-L指标提升2.38分,表明在召回率导向的摘要质量方面取得显著进步。
- METEOR得分提升2.22分,表明在词汇与语义精确度方面与人工标注摘要的对齐程度更高。
- 检索增强知识的集成显著改善了代码表征,尤其在罕见或复杂代码模式下表现更优。
- 动态图注意力机制有效建模了长距离依赖关系,有助于提升对代码结构的全局理解。
- 新发布的来自200多个开源C项目的基准提供了更真实且具有挑战性的评估环境,揭示了先前模型的局限性。
更好的研究,从现在开始
从阅读论文到最终审阅,大幅缩短您的研究时间。
无需绑定信用卡
本解读由 AI 生成,并经人工编辑审核。