Action Word Prediction for Neural Source Code Summarization
源代码摘要是创建源代码的简短、自然语言描述的任务。代码摘要是许多软件文档(如JavaBean)的主干,其中非常简短的注释(如“添加客户对象”)可以帮助程序员快速理解代码片段。近年来,基于神经网络的代码自动摘要方法得到了迅速的发展,成为一个很有价值的研究目标。然而,正如我们将在本文中展示的那样,好的摘要的产生依赖于这些摘要中的动作词的产生:如果“删除”被替换为“添加”,则上述示例的含义将完全改变。“在本文中,我们主张特别强调动作词预测,将其作为实现更好代码摘要的重要垫脚石问题-当前技术试图预测动作词以及整个摘要,但动作词预测本身相当困难。我们展示了代码摘要问题的价值,探索了当前基线的性能,并为未来的研究提供了建议。
2021-01-07 cs.SE
Analyzing the Performance of Large Language Models on Code Summarization
University of Illinois Urbana-Champaign(伊利诺伊大学厄巴纳-香槟分校)
该研究分析大语言模型在代码摘要任务的性能,发现其表现与代码和参考描述的词元重叠度相关,重叠主要集中在函数名,且BLEU、BERTScore等评估指标高度相关,难提供额外评估价值。
2024-04-10 cs.AI cs.CL cs.SE
Low-Resources Project-Specific Code Summarization
代码摘要生成源代码片段的简短自然语言描述,这可以帮助开发人员理解代码并减少文档工作量。最近的代码摘要神经模型在由独立代码摘要对组成的大规模多项目数据集上进行训练和评估。尽管有技术进步,但它们在特定项目上的有效性很少被探讨。然而,在实际场景中,开发人员更关心的是为他们的工作项目生成高质量的摘要。这些项目可能没有维护足够的文档,因此历史代码摘要对很少。为此,我们研究了低资源项目特定的代码摘要,一个新的任务更符合开发人员的要求。为了更好地表征特定于项目的知识与有限的训练样本,我们提出了一个Meta迁移学习方法,将一个轻量级的微调机制到元学习框架。九个真实世界的项目的实验结果验证了我们的方法优于替代的,并揭示了项目特定的知识是如何学习。
2022-10-21 cs.SE
SparseCoder: Identifier-Aware Sparse Transformer for File-Level Code Summarization
针对文件级长代码摘要任务中Transformer因计算复杂度高难以处理长输入的问题,提出标识符感知稀疏Transformer模型SparseCoder,结合滑动窗口与两类稀疏注意力捕获长短依赖,在自建Python数据集FILE-CS上取得最优性能且内存开销低。
2024-01-26 cs.SE
Ensemble Models for Neural Source Code Summarization of Subroutines
子例程的源代码摘要是对该子例程的简要描述。摘要是程序员使用的大部分文档的基础,例如JavaBean中的方法摘要。源代码摘要是编写这些摘要的任务。目前,用于代码摘要的大多数最先进的方法是基于神经网络的解决方案,类似于seq 2seq、graph 2seq和其他编码器-解码器架构。编码器的输入是源代码,而解码器帮助预测自然语言摘要。虽然这些模型在结构上趋于相似,但有证据表明,不同的模型对预测质量的贡献不同-模型性能的差异是正交和互补的,而不是整个数据集的统一。在本文中,我们探讨了不同的神经代码摘要方法的正交性,并提出了集成模型,以利用这种正交性,以获得更好的整体性能。我们证明,一个简单的合奏策略提高性能高达14.8%,并提供了这种提升的解释。这项工作的收获是,在大多数神经代码摘要技术中,对推理过程的相对较小的改变会导致预测质量的大幅提高。
2021-07-23 cs.SE
Progressive Code Integration for Abstractive Bug Report Summarization
Islamic University of Technology(伊斯兰技术大学)
本文提出渐进式代码集成框架,通过整合长代码片段和文本内容,提升基于LLM的bug报告摘要效果,优于现有方法。
2025-11-29 cs.AI cs.CL cs.SE
Improved Automatic Summarization of Subroutines via Attention to File Context
软件文档主要由软件中子程序的简短的、自然语言摘要组成。这些摘要可以帮助程序员快速理解子例程的功能,而无需亲自阅读源代码。编写这些描述的任务被称为“源代码摘要”,并且已经成为多年的研究目标。最近,基于人工智能的方法已经取代了旧的基于人工智能的方法。然而,到目前为止,这些基于人工智能的方法假设预测摘要所需的所有内容都在子例程本身内部。这个假设限制了性能,因为许多子程序没有上下文就无法理解。在本文中,我们提出了一种方法,模型的文件上下文的子程序(即在同一个文件中的其他子程序),并使用一个注意力机制,以找到单词和概念使用的摘要。我们在一个实验中表明,我们的方法扩展和改进了几个最近的基线。
2020-04-10 cs.SE
Improving Code Summarization with Block-wise Abstract Syntax Tree Splitting
Xiamen University(厦门大学)
自动代码摘要将软件开发人员从手动注释的沉重负担中解放出来,有利于软件开发和维护。抽象语法树(AST)描述了源代码的语法结构,它被用来指导代码摘要的生成。然而,现有的基于AST的方法遭受训练的困难,并产生不充分的代码摘要。本文提出了一种基于块的抽象树分割方法(BASTS),该方法充分利用了AST丰富的树形语法结构,提高了代码摘要的质量。BASTS基于控制流图的支配者树中的块来分割方法的代码,并为每个代码分割生成分割AST。然后,每个分割的AST由Tree-LSTM使用预训练策略来建模,以捕获本地非线性语法编码。学习的语法编码与代码编码相结合,并输入到Transformer中以生成高质量的代码摘要。基准测试的综合实验表明,BASTS显着优于国家的最先进的方法在各种评估指标。为了便于再现,我们的实现可在https://github.com/XMUDM/BASTS上获得。
2021-03-18 cs.AI cs.CL cs.SE
EditSum: A Retrieve-and-Edit Framework for Source Code Summarization
Peking University(北京大学);Zhejiang University(浙江大学);Monash University(莫纳什大学)
本文提出名为 EditSum 的检索与编辑框架,通过检索相似代码片段作为原型摘要并自动编辑以结合模式与语义信息,显著提升了源代码摘要的关键词预测准确性和信息量。
2023-09-07 cs.CL cs.SE
Automatic Code Summarization: A Systematic Literature Review
背景:在软件维护和开发过程中,对程序代码的理解是成功的关键。高质量的注释可以帮助我们更好地理解程序,但在今天的程序中,它们经常被遗漏或过时。自动代码摘要就是为了解决这些问题而提出的。在过去十年中,这一领域取得了巨大进展,但缺乏最新的调查。目的:我们研究了出版物有关的代码摘要领域的程序理解,调查国家的最先进的方法。通过阅读和分析相关文献,全面了解自动代码摘要的研究现状。方法:在本文中,我们进行了系统的文献综述自动源代码摘要领域。此外,我们综合了所获得的数据,并研究了不同的方法。结果:我们成功地收集和分析了来自不同研究社区的41项研究。我们详尽地调查和描述了这些作品的数据提取技术,描述生成方法,评估方法和相关工件。结论:我们的系统综述概述了最新技术水平,并讨论了进一步的研究方向。通过充分阐述该领域目前的方法,我们的工作揭示了未来的研究方向的程序理解和评论生成。
2019-10-13 cs.SE
CoCoSum: Contextual Code Summarization with Multi-Relational Graph Neural Network
源代码摘要是对代码片段的简短自然语言描述,可帮助开发人员更好地理解和维护源代码。为了减轻手动编写摘要的负担,自动代码摘要方面的工作激增。然而,大多数当代方法主要利用所概括的方法的边界内的信息(即,本地上下文),并忽略可能有助于代码摘要的更广泛的上下文。本文研究了两种全局上下文,即类内上下文和类间上下文,并提出了CoCoSUM:基于多关系图神经网络的上下文代码摘要模型。CoCoSUM首先将类名作为类内上下文来生成类语义嵌入。然后,相关的统一建模语言(UML)类图提取类间上下文,并编码到类关系嵌入使用一种新的多关系图神经网络(MRGNN)。类语义嵌入和类关系嵌入,以及来自代码令牌编码器和AST编码器的输出,被传递到配备有两级注意力机制的解码器,以生成高质量的、上下文感知的代码摘要。我们进行了大量的实验来评估我们的方法,并将其与其他自动代码摘要模型进行比较。实验结果表明,CoCoSUM是有效的,优于国家的最先进的方法。我们的源代码和实验数据在补充材料中提供,并将公开提供。
2021-07-05 cs.SE
MMF3: Neural Code Summarization Based on Multi-Modal Fine-Grained Feature Fusion
背景:代码摘要根据输入的代码自动生成相应的自然语言描述。代码表示的全面性是代码摘要任务的关键。然而,大多数现有的方法通常使用粗粒度融合方法来集成多模态特征。它们通常表示一段代码的不同模态,例如抽象树(AST)和令牌序列,作为两个嵌入,然后在AST/代码级别融合这两个嵌入。这种粗略的集成使得很难有效地学习跨模态的细粒度代码元素之间的相关性。目的:本研究旨在通过在节点/令牌级别精确对齐和充分融合源代码的语义和语法结构信息,提高模型的预测性能,以获得高质量的代码摘要。方法:提出一种多模态细粒度特征融合方法(MMF 3)用于神经代码摘要。我们介绍了一种新的细粒度融合方法,它允许细粒度融合的令牌和节点级别的多个代码模态。具体来说,我们使用这种方法来融合来自令牌和AST模态的信息,并将融合的特征应用于代码摘要。结果:我们在一个Java和一个Python数据集上进行了实验,并使用四个指标评估生成的摘要。结果表明:1)该模型的性能优于当前最先进的模型; 2)消融实验表明,该细粒度融合方法可以有效提高摘要生成的准确性。结论:MMF 3能够挖掘跨模态元素之间的关系,并据此进行精确的细粒度元素级对齐融合。因此,可以提供更多的线索来提高所生成的代码摘要的准确性。
2022-09-19 cs.SE
Supporting software documentation with source code summarization
源代码摘要是生成描述软件代码的摘要的过程,大多数源代码摘要通常是手动生成的,其中摘要是由软件开发人员编写的。最近,新的自动化方法变得越来越有用。这些方法在某些情况下是有效的。这些方法的主要缺点是它们从不利用代码依赖性,并且总结软件类或方法,而不是两者。本文提出了一种源代码摘要方法(Suncode),它为软件系统中的每个类和方法产生一个简短的描述。为了验证该方法,它已被应用到几个案例研究。此外,将生成的摘要与人类专家编写的摘要以及最先进的解决方案编写的摘要进行比较。本文的研究结果发现,与其他研究相比,Suncode摘要提供了更好的代码依赖信息。此外,Suncode摘要可以改进和支持当前的软件文档。结果发现,手工编写的摘要更精确,也更简短。
2018-12-14 cs.SE
Source Code Summarization with Structural Relative Position Guided Transformer
Harbin Institute of Technology (Shenzhen)(哈尔滨工业大学(深圳));Noah’s Ark Lab, Huawei Technologies(华为技术有限公司诺亚方舟实验室);The Chinese University of Hong Kong(香港中文大学)
源代码摘要旨在为程序设计语言生成简洁明了的自然语言描述。编写良好的代码摘要有利于程序员参与软件开发和维护过程。为了学习源代码的语义表示,最近的努力集中在将代码的语法结构合并到神经网络(如Transformer)中。这种基于变换器的方法可以比包括递归神经网络(RNN)的其他神经网络更好地捕获长程依赖性,然而,它们中的大多数没有考虑令牌之间的结构相对相关性,例如,抽象树(AST)中的相对位置,这有利于代码语义学习。为了对结构依赖性进行建模,我们提出了一种结构相对位置引导的Transformer,命名为STRT。该算法首先通过解析源代码的AST来获得标记之间的结构相对位置,然后将其传递给两种类型的Transformer编码器。一个Transformer根据结构相对距离直接调整输入,另一个Transformer在计算自我注意分数时对结构相对位置进行编码。最后,我们堆叠这两种类型的Transformer编码器来学习源代码的表示。实验结果表明,该方法在BLEU、ROUGE-L和METEOR三种测试数据集上的性能分别比现有方法提高了1.6%、1.4%和2.8%。我们进一步表明,如何建议的CRAFT捕获的结构相对依赖关系。
2022-02-14 cs.CL cs.SE
AdvFusion: Adapter-based Knowledge Transfer for Code Summarization on Code Language Models
本文提出AdvFusion,一种基于PEFT的适配器知识迁移方法,通过在适应目标任务前学习其他语言,有效提升了代码语言模型在代码摘要和方法名预测上的性能。
2024-12-21 cs.SE
Impact of Evaluation Methodologies on Code Summarization
The University of Texas at Austin(德克萨斯大学奥斯汀分校)
人们对开发用于代码摘要任务的机器学习(ML)模型越来越感兴趣,例如,注释生成和方法命名。尽管ML模型的有效性大幅提高,但评估方法,即,人们将数据集划分为训练集、验证集和测试集的方式还没有得到很好的研究。具体地说,以前的代码总结工作没有考虑评估期间代码和注释的时间戳。这可能导致评估与预期用例不一致。在本文中,我们介绍了时间分段的评估方法,这是新的代码摘要研究社区,并比较它与混合项目和跨项目的方法,已被普遍使用。每种方法都可以映射到一些用例,在评估用于代码摘要的ML模型时应该采用时间分段方法。为了评估方法的影响,我们收集了一个带有时间戳的(代码,注释)对数据集,以训练和评估几个最近的ML模型用于代码总结。我们的实验表明,不同的方法会导致相互矛盾的评估结果。我们邀请社区扩大评价中使用的一套方法。
2022-04-05 cs.LG cs.SE
Meta Learning for Code Summarization
University of Stuttgart(斯图加特大学)
源代码摘要是为一段程序设计语言代码生成高级自然语言描述的任务。目前用于该任务的神经模型在其架构和所考虑的代码方面有所不同。在本文中,我们表明,三个SOTA模型的代码摘要工作在很大程度上不相交的子集的大型代码库。这种互补性激发了模型组合:我们提出了三个元模型,为给定的代码段选择最佳候选摘要。这两个神经模型比最佳个体模型的性能显著提高,在代码段的数据集上获得2.1个BLEU点的改进,其中至少一个个体模型获得非零BLEU。
2022-01-20 cs.LG cs.PL cs.SE
CAST: Enhancing Code Summarization with Hierarchical Splitting and Reconstruction of Abstract Syntax Trees
代码摘要旨在生成源代码的简洁自然语言描述,这有助于提高程序的理解和维护。最近的研究表明,从抽象语法树(AST)中提取的语法和结构信息有助于摘要生成。然而,现有的方法不能完全捕捉到丰富的信息,因为大尺寸/深度的AST。在本文中,我们提出了一种新的模型CAST,分层分裂和重建AST。首先,我们分层地将一个大的AST分成一组子树,并利用递归神经网络来编码子树。然后,我们通过重构分裂的AST来聚合子树的嵌入,以得到完整AST的表示。最后,AST表示,连同源代码嵌入获得的香草代码令牌编码器,用于代码摘要。广泛的实验,包括消融研究和人体评估,对基准已经证明了CAST的力量。为了便于再现,我们的代码和数据可在https://anonymous.4open.science/r/CAST/上获得。
2021-11-30 cs.SE
Autofolding for Source Code Summarization
开发人员花费大量时间阅读和浏览源代码,为摘要方法提供了新的机会。事实上,现代代码编辑器提供了代码折叠,允许有选择地隐藏代码块。然而,这是不切实际的使用,因为折叠决定必须手动或基于简单的规则。我们引入了自动折叠问题,即通过折叠信息量较少的代码区域来自动创建代码摘要。我们提出了一个新的解决方案,制定了一系列的AST折叠决策的问题,利用范围的主题模型的代码令牌。在一组受欢迎的开源项目的注释,我们表明,我们的总结优于简单的基线,产生28%的错误减少。此外,我们通过案例研究发现,我们的总结器是有经验的开发人员强烈的首选。更广泛地说,我们希望这项工作将通过将代码折叠变成一个可用的和有价值的工具来帮助程序理解。
2017-03-06 cs.SE
Analysis on LLMs Performance for Code Summarization
Department of Computer Science and Engineering(计算机科学与工程系)
本研究比较分析LLaMA-3、Phi-3、Mistral和Gemma等开源LLMs在代码摘要任务中的性能,利用BLEU和ROUGE指标评估优劣,为模型改进和工具集成提供见解。
2025-01-24 cs.AI cs.SE
Neural Code Summarization
Khoury College of Computer Sciences(Khoury计算机科学学院)
代码摘要是生成可读摘要的任务,这些摘要在语义上是有意义的,并且可以准确地描述软件的假定任务。程序理解已经成为知识转移中最繁琐的任务之一。随着代码库随着时间的推移而发展,每次都需要手动更新描述。提出了一种自动的方法来推断这样的字幕基准和自定义数据集的基础上,与原始和生成的结果之间的比较。
2021-03-04 cs.AI cs.LG cs.SE
RepoSummary: Feature-Oriented Summarization and Documentation Generation for Code Repositories
本文提出RepoSummary,一种面向特性的代码仓库摘要方法,可自动生成文档并建立功能特性到代码元素的追踪链接,显著提升了特性覆盖率和追踪准确性。
2025-10-13 cs.SE
Large Language Models for Code Summarization
Eötvös Loránd University(罗兰大学)
本文回顾了最新编程大型语言模型在代码解释/摘要任务中的表现,并调查了其基于自然语言描述的代码生成能力。
2024-05-29 cs.AI cs.LG cs.PL
Semantic Similarity Metrics for Evaluating Source Code Summarization
源代码摘要涉及用自然语言创建源代码的简要描述。这些描述是软件文档的关键组成部分,例如JavaBean。自动代码摘要是软件工程研究的一个重要目标,这是由于摘要对程序员具有很高的价值,同时手工编写和维护文档的成本很高。目前的工作几乎都是基于通过大数据输入训练的机器模型。代码的示例和该代码的概要的大数据集被用于训练例如编码器-解码器神经模型。然后,根据一组参考摘要评估模型的输出预测。输入是模型看不到的代码,预测与参考进行比较。将预测与参考进行比较的方法基本上是通过BLEU或ROUGE等度量计算的单词重叠。使用单词重叠的问题是,不是一个句子中的所有单词都具有相同的重要性,并且许多单词都有同义词。结果是计算的相似性可能与人类读者感知的相似性不匹配。在本文中,我们进行了一项实验,以衡量各种词重叠指标与预测和参考摘要的人类评级相似性的程度。我们评估替代品的语义相似性度量的基础上,目前的工作,并提出建议,评估源代码摘要。
2022-04-04 cs.SE
Can Large Language Models Serve as Evaluators for Code Summarization?
本文提出基于角色扮演提示的 CODERPE,让 LLM 从多角色、多维度评估代码摘要,并验证其与人工判断的相关性显著优于 BERTScore。
2024-12-02 cs.SE
Revisiting File Context for Source Code Summarization
University of Notre Dame(圣母大学)
本文重新审视文件上下文在源代码摘要中的作用,提出一种专门编码文件上下文的Transformer改进架构,在传统方法难以处理的挑战性示例上取得改进。
2023-09-05 cs.AI cs.SE
M2TS: Multi-Scale Multi-Modal Approach Based on Transformer for Source Code Summarization
Shandong Normal University(山东师范大学)
源代码摘要旨在生成代码片段的自然语言描述。现有的研究多从代码片段的标记序列和抽象树中学习代码片段的语法和语义知识。它们使用学习的代码表示作为代码摘要模型的输入,代码摘要模型可以相应地生成描述源代码的摘要。传统模型将AST作为序列遍历,或者将AST分割为路径作为输入。然而,前者失去了AST的结构特性,后者破坏了AST的整体结构。因此,在学习源代码摘要的代码表示中,全面捕获AST的结构特征仍然是一个有待解决的具有挑战性的问题。本文提出了一种基于Transformer的多尺度多模态源代码摘要方法M2TS。M2TS采用多尺度AST特征提取方法,可以在多个局部和全局级别上更完整、更准确地提取AST的结构。为了补充AST中缺失的语义信息,我们还获得了代码标记特征,并使用跨模态融合方法将它们与提取的AST特征进一步结合,该方法不仅融合了源代码的句法和上下文语义信息,而且突出了每个模态的关键特征。我们在两个Java和一个Python数据集上进行了实验,实验结果表明,M2TS优于当前最先进的方法。我们在www.example.com上发布代码。
2022-03-27 cs.AI cs.SE
Project-Level Encoding for Neural Source Code Summarization of Subroutines
University of Notre Dame(圣母大学)
子例程的源代码摘要是编写该子例程的简短自然语言描述的任务。这种描述通常用于针对程序员的文档中,即使是简短的短语(例如“将数据压缩到zip文件”)也可以帮助读者快速理解子例程的功能,而无需阅读代码本身。基于神经网络(特别是编码器-解码器模型设计)的技术已经成为最先进的技术。然而,这些模型普遍存在的一个问题是,它们假设创建摘要所需的信息存在于被摘要的代码本身中--这一假设与程序理解文献不一致。因此,当前的研究前沿在于将源代码上下文编码到摘要的神经模型中的问题。在本文中,我们提出了一个项目级的编码器,以改善模型的代码摘要。项目级是指我们在软件项目中创建选定代码文件的矢量化表示,并使用该表示来增强最先进的神经代码摘要技术的编码器。我们展示了我们的编码器如何改进几个现有的模型,并提供了最大限度地提高,同时控制模型大小的时间和资源成本的指导方针。
2021-03-22 cs.LG cs.SE
Label Smoothing Improves Neural Source Code Summarization
标签平滑是神经网络的一种正则化技术。通常,神经模型被训练成一个输出分布,该分布是一个向量,其中1表示正确的预测,0表示所有其他元素。标签平滑将正确的预测位置转换为略小于1的值,然后将余数分配给其他元素,使它们略大于0。标签平滑背后的一个概念性解释是,它有助于防止神经模型变得“过度自信”,迫使它考虑替代方案,即使只是轻微的。标签平滑已被证明有助于语言生成的几个领域,但通常需要大量的调优和测试,以达到最佳结果。这种调优和测试还没有针对神经源代码摘要的报道,神经源代码摘要是软件工程中一个不断发展的研究领域,旨在生成源代码行为的自然语言描述。在本文中,我们展示了标签平滑对神经代码摘要中几个基线的影响,并进行了一项实验,以找到标签平滑的好参数,并对其使用提出建议。
2023-03-28 cs.SE
Assemble Foundation Models for Automatic Code Summarization
University of Zurich(苏黎世大学)
自动代码摘要有助于减少对手工编写的需求,有利于日常软件开发。当前,人工智能正在经历一场范式转变。基础模型在海量数据上进行预训练,并针对下游任务进行微调,超越了专门定制的模型。这种趋势促使我们考虑重用基础模型,而不是从头开始学习。因此,我们提出了一个灵活的和强大的自动代码摘要的方法,基于神经模型。我们将现有的基础模型,如CodeBERT和GPT-2,组装成一个名为AdaMo的神经模型。此外,我们利用高斯噪声作为上下文信息的模拟来优化潜在表示。此外,我们从知识转移的角度介绍了两种自适应方案,即连续预训练和中间微调,并设计了一般序列到序列学习的中间阶段任务。最后,我们通过将AdaMo与最先进的模型进行比较,来评估AdaMo对代码摘要的基准数据集。
2022-03-11 cs.LG cs.SE
A Transformer-based Approach for Source Code Summarization
University of California, Los Angeles(加州大学洛杉矶分校);Columbia University(哥伦比亚大学)
生成描述程序功能的可读摘要称为源代码摘要。在这个任务中,通过对代码标记之间的成对关系建模来学习代码表示以捕获它们的长期依赖关系是至关重要的。为了学习用于摘要的代码表示,我们探索了使用自我注意力机制的Transformer模型,该模型已被证明在捕获长距离依赖关系方面是有效的。在这项工作中,我们表明,尽管这种方法很简单,但它的性能明显优于最先进的技术。我们进行了广泛的分析和消融研究,揭示了几个重要的发现,例如,源代码标记的位置的绝对编码阻碍了摘要的性能,而相对编码显著提高了摘要的性能。我们已经公开了我们的代码,以方便未来的研究。
2020-05-01 cs.AI cs.LG cs.SE
Towards Modeling Human Attention from Eye Movements for Neural Source Code Summarization
University of Notre Dame(圣母大学);University of Nebraska - Lincoln(内布拉斯加大学林肯分校)
本文利用眼动追踪实验数据构建人类注意力模型,预测源代码中对摘要最重要的单词,并以此增强基线神经代码摘要方法,有效提升了模型的预测性能。
2023-05-16 cs.AI cs.SE
Commenting Higher-level Code Unit: Full Code, Reduced Code, or Hierarchical Code Summarization
Nanyang Technological University(南洋理工大学);Yangzhou University(扬州大学);Nanjing University(南京大学);Chongqing University of Posts and Telecommunications(重庆邮电大学);Nanjing Tech University(南京工业大学);Wuhan University(武汉大学);Peking University(北京大学)
本文研究如何用 LLM 为文件级和模块级代码生成注释,比较完整代码、精简代码和层次化摘要策略,并验证 LLM 评估与人工评估的强相关性。
2025-03-13 cs.AI cs.SE
Hierarchical Repository-Level Code Summarization for Business Applications Using Local LLMs
TCS Research, Tata Consultancy Services Ltd.(塔塔咨询服务有限公司TCS研究院)
针对现有代码摘要方法难以处理大代码单元、忽略业务上下文的问题,提出结合语法分析与本地LLM的两步分层仓库级代码摘要方法,经电信BSS验证可提升摘要覆盖度与相关性。
2025-01-14 cs.AI cs.SE
SCLA: Automated Smart Contract Summarization via LLMs and Control Flow Prompt
Hainan University, China(海南大学);Hong Kong Polytechnic University, China(香港理工大学)
SCLA通过将控制流图和AST语义事实融入提示,增强LLM对智能合约代码结构的理解,在40,000个合约上显著超越SOTA基线,BLEU-4等指标提升14.7%-26.7%。
2026-10-03 cs.SE
Self-Supervised Contrastive Learning for Code Retrieval and Summarization via Semantic-Preserving Transformations
Huawei Ireland Research Center(华为爱尔兰研究中心);The Open University(开放大学);Singapore Management University(新加坡管理大学)
我们提出了Corder,一个自监督的对比学习框架的源代码模型。Corder旨在减轻代码检索和代码摘要任务对标记数据的需求。Corder的预训练模型可以以两种方式使用:(1)它可以产生代码的矢量表示,可以应用于没有标记数据的代码检索任务;(2)它可以用于可能仍然需要标记数据的任务的微调过程,例如代码摘要。关键的创新是我们通过对比学习目标要求源代码模型识别相似和不相似的代码片段来训练源代码模型。为此,我们使用一组语义保持转换操作符来生成语法上不同但语义上等效的代码片段。通过大量的实验,我们已经证明,Corder预训练的代码模型在代码到代码检索、文本到代码检索和代码到文本摘要任务中的表现大大优于其他基线。
2021-05-23 cs.AI cs.LG cs.PL
Optimizing Datasets for Code Summarization: Is Code-Comment Coherence Enough?
本文针对代码摘要数据集存在错误或次优示例的问题,探索代码-注释一致性对数据集优化的作用,通过SIDE指标筛选TL-CodeSum和Funcom数据集,发现减半训练集不影响模型效果,但严格筛选与随机筛选的模型准确率无差异,提出需探索更多质量属性优化数据集。
2025-02-11 cs.SE
Automatic Code Summarization via ChatGPT: How Far Are We?
Nanjing University(南京大学);Nanyang Technological University(南洋理工大学);University of New South Wales(新南威尔士大学)
本文评估了ChatGPT在CSN-Python数据集上的自动代码摘要表现,发现其在BLEU和ROUGE-L指标上显著劣于NCS、CodeBERT和CodeT5等SOTA模型,并探讨了其优缺点及未来挑战。
2023-05-22 cs.AI cs.SE
Improving Automatic Source Code Summarization via Deep Reinforcement Learning
Zhejiang University(浙江大学);Shenzhen Institutes of Advanced Technology, Chinese Academy of Sciences(中国科学院深圳先进技术研究院);University of Technology Sydney(悉尼科技大学);University of Illinois at Chicago(伊利诺伊大学芝加哥分校);Tsinghua University(清华大学)
代码摘要提供了对代码所执行功能的高级自然语言描述,有利于软件维护、代码分类和检索。据我们所知,大多数最先进的方法遵循编码器-解码器框架,其将代码编码到隐藏空间中,然后将其解码到自然语言空间中,具有两个主要缺点:a)它们的编码器只考虑代码的顺序内容,忽略了对于代码摘要任务也至关重要的树结构,b)它们的解码器通常被训练为通过最大化下一个地面实况词与前一个地面实况词的可能性来预测下一个词。但是,预计将在测试时从头开始生成整个序列。这种差异可能导致\textit{exposure bias}问题,使学习的解码器次优。在本文中,我们将抽象语法树结构以及代码片段的顺序内容纳入深度强化学习框架(即,演员-评论家网络)。演员网络提供了根据当前状态预测下一个词的信心。另一方面,评论家网络评估当前状态的所有可能扩展的奖励值,并可以为探索提供全局指导。我们采用BLEU指标组成的优势奖励训练两个网络。在真实数据集上的综合实验表明,与一些最先进的方法相比,我们提出的模型是有效的。
2018-11-17 cs.CL cs.LG cs.SE
A Convolutional Attention Network for Extreme Summarization of Source Code
University of Edinburgh(爱丁堡大学);Peking University(北京大学)
神经网络中的注意力机制已被证明对于输入和输出不具有固定维数的问题是有用的。通常存在局部平移不变的特征,并且对于引导模型的注意力是有价值的,但是以前的注意力架构并不是专门为了学习这些特征而构建的。我们引入了一个注意力神经网络,它采用卷积的输入令牌检测本地时不变和长距离的主题注意力特征的上下文相关的方式。我们将这种架构应用于将源代码片段极端总结成简短的、描述性的函数名称之类的摘要的问题。使用这些功能,该模型通过边缘化两个注意力机制来顺序生成摘要:一个基于输入标记的注意力权重预测下一个摘要标记,另一个能够将代码标记直接复制到摘要中。我们在10个流行的Java项目上展示了我们的卷积注意力神经网络的性能,表明与以前的注意力机制相比,它实现了更好的性能。
2016-05-25 cs.CL cs.LG cs.SE
Not All Tokens Matter: Data-Centric Optimization for Efficient Code Summarization
William & Mary(威廉玛丽学院);Dalhousie University(达尔豪斯大学);Eindhoven University of Technology(埃因霍温理工大学);University of Sannio(桑尼奥大学)
本研究探讨了系统提示对代码生成任务中ILMs和CLMs性能的影响,发现模型规模越大影响越显著,少样本提示效果优于零样本提示,且Java对提示变化更敏感。
2026-07-20 cs.SE
Readability-Robust Code Summarization via Meta Curriculum Learning
School of Computer Science, Shanghai Jiao Tong University(上海交通大学计算机学院);WeChat AI, Tencent(腾讯微信人工智能)
本文提出RoFTCodeSum方法,通过结合课程学习和元学习提升代码摘要对低可读性代码的鲁棒性。
2026-07-30 cs.SE
Binary Code Summarization: Benchmarking ChatGPT/GPT-4 and Other Large Language Models
The Ohio State University(俄亥俄州立大学);Microsoft Research(微软研究院)
本研究针对二进制代码摘要的难点,构建含55.7万+函数的BinSum基准,提出提示词优化方法与新语义相似度指标,经多LLM大规模评估得出10项关键洞见,明确了LLM的潜力与待解挑战。
2023-12-15 cs.CL cs.CR cs.LG
On the Evaluation of Neural Code Summarization
Xi’an Jiaotong University(西安交通大学);Microsoft Research(微软研究院);Tianjin University(天津大学);The University of Newcastle(纽卡斯尔大学)
源代码摘要对于程序的理解和维护非常重要。然而,有很多程序缺少、过时或不匹配的摘要。最近,已经利用深度学习技术来自动生成给定代码片段的摘要。为了深入了解我们离解决这个问题还有多远,并为未来的研究提供建议,本文对5种最先进的神经代码摘要模型进行了系统和深入的分析,包括6种广泛使用的BLEU变体,4种预处理操作及其组合,以及3种广泛使用的数据集。评价结果表明,一些重要因素对模型的评价有很大的影响,特别是对模型的性能和模型之间的排名。然而,这些因素很容易被忽视。具体地,(1)在评估代码摘要模型的现有工作中广泛使用的BLEU度量具有许多变体。忽略这些变体之间的差异可能会极大地影响所声称结果的有效性。此外,我们进行了人类评估,发现指标BLEU-DC与人类感知最相关;(2)代码预处理选择对摘要性能有很大的影响(从-18\%到+25\%),不应被忽视。我们还探索了预处理组合的聚合,并提高模型的性能;(3)数据集的一些重要特征(语料库大小,数据分割方法和重复率)对模型评估有显着影响。基于实验结果,我们给出了可操作的建议,评估代码摘要,并选择最佳的方法,在不同的场景。我们还建立了一个共享的代码摘要工具箱,以方便未来的研究。
2022-02-11 cs.AI cs.SE
GypSum: Learning Hybrid Representations for Code Summarization
East China Normal University(华东师范大学)
近年来,基于深度学习的代码摘要得到了广泛的研究。当前用于代码摘要的深度学习模型通常遵循神经机器翻译的原理,并采用编码器-解码器框架,其中编码器从源代码学习语义表示,解码器将学习的表示转换为描述代码片段功能的人类可读文本。尽管它们实现了新的最先进的性能,但我们注意到,当前的模型通常生成不太流畅的摘要,或者无法捕获核心功能,因为它们通常专注于单一类型的代码表示。因此,我们提出了GypSum,这是一种新的深度学习模型,它使用图形注意力神经网络和预训练的编程和自然语言模型来学习混合表示。我们引入特定的边缘相关的控制流的代码片段到抽象语法树的图形构造,并设计了两个编码器,分别从图形和令牌序列的源代码,学习。我们修改了Transformer的解码器中的编码器-解码器子层,以融合表示,并提出了一个双拷贝机制,以促进摘要生成。实验结果表明GypSum的性能优于现有的代码摘要模型。
2022-04-26 cs.LG cs.PL cs.SE
Automatic Source Code Summarization with Extended Tree-LSTM
Kyoto University(京都大学);Hitachi, Ltd.(日立有限公司)
神经机器翻译模型用于从给定源代码自动生成文档,因为这可以被视为机器翻译任务。源代码摘要是自动文档生成的一个组成部分,它从给定的源代码中生成自然语言的摘要。这表明神经机器翻译中使用的技术,如长短期记忆(LSTM),可以用于源代码摘要。然而,在源代码和自然语言之间存在相当大的差异:源代码本质上是{ \em结构}的,具有循环和条件分支等。因此,将已知的机器翻译模型应用于源代码存在一些障碍。抽象语法树(AST)捕捉这些结构特性,并在最近的机器学习研究的源代码中发挥了重要作用。Tree-LSTM是LSTM对树结构数据的推广。然而,在将其应用于AST时存在一个关键问题:它不能同时处理包含具有任意数量的子节点及其顺序的节点的树,而AST通常具有这样的节点。为了解决这个问题,我们提出了Tree-LSTM的扩展,我们称之为\emph{Multi-way Tree-LSTM},并将其应用于源代码摘要。作为计算实验的结果,我们的建议取得了更好的结果时,与几个国家的最先进的技术相比。
2019-06-20 cs.LG cs.SE stat.ML
Resource-Efficient & Effective Code Summarization
本文研究 QLoRA 在代码摘要生成(Code-to-NL)任务中的适用性,通过在 Python 和 Java 上评估 CodeLlama 与 DeepSeek-Coder,证明 QLoRA 能实现代码语言模型的资源高效微调。
2025-02-05 cs.SE
EyeTrans: Merging Human and Machine Attention for Neural Code Summarization
Vanderbilt University(范德堡大学);University of Notre Dame(圣母大学)
本文提出EyeTrans,通过眼动追踪获取程序员注意力并将其融入Transformer的机器注意力,从而提升神经代码摘要的功能性与通用摘要性能。
2024-02-29 cs.AI cs.HC cs.SE
PassSum: Leveraging Paths of Abstract Syntax Trees and Self-Supervision for Code Summarization
Software Institute, Nanjing University(南京大学软件学院)
PassSum是利用高效AST编码与自监督预训练的代码摘要生成方法,在Java、Python、Ruby数据集上性能优于现有方法,可减少标注数据依赖并加快收敛。
2026-10-14 cs.SE
A Multi-Modal Transformer-based Code Summarization Approach for Smart Contracts
代码注释已经成为计算机程序的重要组成部分,极大地方便了对源代码的理解和维护。然而,高质量的代码注释通常在智能合约中不可用,智能合约是在区块链上运行的越来越受欢迎的程序。在本文中,我们提出了一种用于智能合约的基于多模态转换器(MMTrans)的代码摘要方法。具体地,MMTrans从抽象树(AST)的两种异构模态学习源代码的表示,即,基于结构的Traffic(SBT)序列和图。SBT序列提供了AST的全局语义信息,而图卷积则关注局部细节。MMTrans使用两个编码器分别从两个模态中提取全局和局部语义信息,然后使用联合解码器生成代码注释。编码器和解码器都采用了Transformer的多头注意力结构,以增强捕获代码令牌之间的长程依赖关系的能力。我们构建了一个包含超过30万对<method,comment>智能合约的数据集,并在其上对MMTrans进行了评估。实验结果表明,MMTrans在四个评估指标方面都大幅优于最先进的基线,并且可以生成更高质量的评论。
2021-03-12 cs.SE
Few-shot training LLMs for project-specific code-summarization
University of California, Davis(加州大学戴维斯分校)
非常大的大语言模型(LLM),如GPT-3和Codex,已经在几个自然语言任务上实现了最先进的性能,并且在代码方面也表现出了很大的潜力。LLM的一个特别令人兴奋的方面是他们对Few-Shot和零样本学习的诀窍:他们可以用很少的例子学习执行任务。在软件工程中,少拍具有特别的协同作用,其中有许多现象(标识符名称、API、术语、编码模式)是高度特定于项目的。然而,特定于项目的数据可能非常有限,特别是在项目历史的早期;因此LLM的少样本学习能力可能非常相关。在本文中,我们研究了使用Few-Shot训练与非常大的GPT(生成式预训练Transformer)Codex模型,并发现证据表明,利用特定于项目的训练,可以显着超过最先进的代码摘要模型。
2022-09-08 cs.LG cs.SE
EyeLayer: Integrating Human Attention Patterns into LLM-Based Code Summarization
Vanderbilt University(范德比尔特大学)
EyeLayer通过整合人类眼动模式提升LLM代码摘要效果,实现13.17%的BLEU-4提升。
2026-02-25 cs.AI cs.SE
An Extractive-and-Abstractive Framework for Source Code Summarization
State Key Laboratory for Novel Software Technology, Nanjing University(南京大学计算机软件新技术国家重点实验室);Purdue University(普渡大学)
针对现有代码摘要方法难以兼顾事实准确性与自然度的问题,提出抽取-生成式框架EACS,结合抽取模块提取关键语句与生成模块并行输入生成摘要,在多语言数据集上全面超越现有最优方法。
2023-11-04 cs.AI cs.SE
Code Generation as a Dual Task of Code Summarization
Peking University(北京大学);Monash University(莫纳什大学)
代码摘要(CS)和代码生成(CG)是软件自动化开发领域中的两个关键任务。各种基于神经网络的方法被提出来分别解决这两个任务。然而,CS和CG之间存在特定的直观相关性,这在以前的工作中没有被利用。在本文中,我们应用两个任务之间的关系,以提高这两个任务的性能。换句话说,利用这两个任务之间的二元性,我们提出了一个双重训练框架来同时训练这两个任务。在这个框架中,我们考虑了概率和注意力权重的对偶性,并设计了相应的正则化项来约束对偶性。我们在从GitHub收集的两个数据集上评估了我们的方法,实验结果表明,我们的双重框架可以提高CS和CG任务的性能。
2019-10-14 cs.AI cs.LG cs.SE