TranS^3: A Transformer-based Framework for Unifying Code Summarization and Code Search
代码摘要和代码搜索在软件开发和维护中得到了广泛的应用。然而,很少有研究探讨了统一它们的效果。在本文中,我们提出了一个基于transformer的框架,将代码摘要与代码搜索集成在一起。具体来说,对于代码摘要,Trans^3启用了一个Actor-Critic网络,在Actor网络中,我们通过基于Transformer和基于树的Transformer编码器对收集的代码片段进行编码,并对给定的代码片段进行解码以生成其注释。同时,我们通过评论家网络的反馈迭代地调整演员网络,以提高生成评论的质量。此外,我们将生成的注释导入代码搜索,以提高其准确性。为了评估TranS^3的有效性,我们进行了一系列实验研究和案例研究,实验结果表明,TranS^3在代码摘要和代码搜索方面都明显优于多种最先进的方法,并且从开发人员的角度来看,研究结果进一步加强了TranS^3的有效性。
2020-03-09 cs.SE
AST-Transformer: Encoding Abstract Syntax Trees Efficiently for Code Summarization
Nanjing University(南京大学);Saarland Informatics Campus(萨尔兰信息学园区)
代码摘要旨在为源代码生成简短的自然语言描述。由于源代码是高度结构化的,并且遵循严格的程序设计语言语法,因此通常利用其抽象树(AST)来通知编码器有关结构信息。然而,AST通常比源代码长得多。目前的方法忽略了大小限制,并简单地将整个线性化AST馈送到编码器中。为了解决这个问题,我们提出了AST-Transformer来有效地编码树结构的AST。实验结果表明,AST-变压器优于国家的艺术由一个相当大的保证金,同时能够降低$90\sim95\%$的计算复杂性在编码过程中。
2021-12-02 cs.CL 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
Neural Code Summarization
Khoury College of Computer Sciences(Khoury计算机科学学院)
代码摘要是生成可读摘要的任务,这些摘要在语义上是有意义的,并且可以准确地描述软件的假定任务。程序理解已经成为知识转移中最繁琐的任务之一。随着代码库随着时间的推移而发展,每次都需要手动更新描述。提出了一种自动的方法来推断这样的字幕基准和自定义数据集的基础上,与原始和生成的结果之间的比较。
2021-03-04 cs.AI cs.LG cs.SE
SparseCoder: Identifier-Aware Sparse Transformer for File-Level Code Summarization
针对文件级长代码摘要任务中Transformer因计算复杂度高难以处理长输入的问题,提出标识符感知稀疏Transformer模型SparseCoder,结合滑动窗口与两类稀疏注意力捕获长短依赖,在自建Python数据集FILE-CS上取得最优性能且内存开销低。
2024-01-26 cs.SE
Large Language Models for Code Summarization
Eötvös Loránd University(罗兰大学)
本文回顾了最新编程大型语言模型在代码解释/摘要任务中的表现,并调查了其基于自然语言描述的代码生成能力。
2024-05-29 cs.AI cs.LG cs.PL
DualSC: Automatic Generation and Summarization of Shellcode via Transformer and Dual Learning
shellcode是一小段代码,执行它是为了利用软件漏洞,这使得目标计算机能够通过代码注入攻击执行攻击者的任意命令。与自动漏洞生成技术的目的类似,自动生成shellcode可以生成攻击指令,这些指令可以用于检测漏洞并实施防御措施。而shellcode的自动摘要可以帮助不熟悉shellcode和网络信息安全的用户理解shellcode攻击的意图。在这项研究中,我们提出了一种新的方法DualSC来解决自动shellcode生成和摘要任务。具体来说,我们将自动shellcode生成和摘要形式化为双重任务,使用浅层Transformer进行模型构建,并设计了一种规范化方法Adjust QKNorm来适应这些低资源任务(即,训练数据不足)。最后,为了缓解词汇表不足的问题,我们提出了一个基于规则的修复组件,以提高自动shellcode生成的性能。在我们的实证研究中,我们选择了一个高质量的语料库Shellcode IA32作为我们的实证对象。该语料库是根据逐行粒度从两个真实项目中收集的。我们首先比较DualSC与代码生成和代码摘要领域的六个最先进的基线在四个性能指标。对比结果显示了DualSC的竞争力。然后,我们验证了DualSC中组件设置的有效性。最后,我们进行了一项人体研究,以进一步验证DualSC的有效性。
2022-02-20 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
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
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
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
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
Impact of Evaluation Methodologies on Code Summarization
The University of Texas at Austin(德克萨斯大学奥斯汀分校)
人们对开发用于代码摘要任务的机器学习(ML)模型越来越感兴趣,例如,注释生成和方法命名。尽管ML模型的有效性大幅提高,但评估方法,即,人们将数据集划分为训练集、验证集和测试集的方式还没有得到很好的研究。具体地说,以前的代码总结工作没有考虑评估期间代码和注释的时间戳。这可能导致评估与预期用例不一致。在本文中,我们介绍了时间分段的评估方法,这是新的代码摘要研究社区,并比较它与混合项目和跨项目的方法,已被普遍使用。每种方法都可以映射到一些用例,在评估用于代码摘要的ML模型时应该采用时间分段方法。为了评估方法的影响,我们收集了一个带有时间戳的(代码,注释)对数据集,以训练和评估几个最近的ML模型用于代码总结。我们的实验表明,不同的方法会导致相互矛盾的评估结果。我们邀请社区扩大评价中使用的一套方法。
2022-04-05 cs.LG 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
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
Meta Learning for Code Summarization
University of Stuttgart(斯图加特大学)
源代码摘要是为一段程序设计语言代码生成高级自然语言描述的任务。目前用于该任务的神经模型在其架构和所考虑的代码方面有所不同。在本文中,我们表明,三个SOTA模型的代码摘要工作在很大程度上不相交的子集的大型代码库。这种互补性激发了模型组合:我们提出了三个元模型,为给定的代码段选择最佳候选摘要。这两个神经模型比最佳个体模型的性能显著提高,在代码段的数据集上获得2.1个BLEU点的改进,其中至少一个个体模型获得非零BLEU。
2022-01-20 cs.LG cs.PL cs.SE
Revisiting File Context for Source Code Summarization
University of Notre Dame(圣母大学)
本文重新审视文件上下文在源代码摘要中的作用,提出一种专门编码文件上下文的Transformer改进架构,在传统方法难以处理的挑战性示例上取得改进。
2023-09-05 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
Assemble Foundation Models for Automatic Code Summarization
University of Zurich(苏黎世大学)
自动代码摘要有助于减少对手工编写的需求,有利于日常软件开发。当前,人工智能正在经历一场范式转变。基础模型在海量数据上进行预训练,并针对下游任务进行微调,超越了专门定制的模型。这种趋势促使我们考虑重用基础模型,而不是从头开始学习。因此,我们提出了一个灵活的和强大的自动代码摘要的方法,基于神经模型。我们将现有的基础模型,如CodeBERT和GPT-2,组装成一个名为AdaMo的神经模型。此外,我们利用高斯噪声作为上下文信息的模拟来优化潜在表示。此外,我们从知识转移的角度介绍了两种自适应方案,即连续预训练和中间微调,并设计了一般序列到序列学习的中间阶段任务。最后,我们通过将AdaMo与最先进的模型进行比较,来评估AdaMo对代码摘要的基准数据集。
2022-03-11 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
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
Code vs Serialized AST Inputs for LLM-Based Code Summarization: An Empirical Study
University of Glasgow(格拉斯哥大学)
本文提出AST(NIT)方法,通过序列化AST提升基于LLM的代码摘要效果,实验表明其在输入长度、训练时间和摘要质量上均优于传统方法。
2026-02-06 cs.SE
Are We Building on the Rock? On the Importance of Data Preprocessing for Code Summarization
代码摘要,即生成代码中有用的注释的任务,长期以来一直受到关注。大多数现有的代码摘要模型都是在广泛使用的代码注释基准数据集上训练和验证的。然而,很少有人知道从现实世界的项目构建的基准数据集的质量。基准数据集是否如预期的那样好?为了弥补这一差距,我们进行了系统的研究,以评估和提高广泛用于代码摘要任务的四个基准数据集的质量。首先,我们提出了一个自动化的代码注释清理工具,可以准确地检测噪声数据所造成的不适当的数据预处理操作从现有的基准数据集。然后,我们应用该工具进一步评估四个基准数据集的数据质量,基于检测到的噪声。最后,我们进行了比较实验,研究噪声数据对代码摘要模型性能的影响。结果表明,这些数据预处理噪声广泛存在于所有四个基准测试数据集中,去除这些噪声数据可以显著提高代码摘要的性能。我们相信,这些发现和见解将有助于更好地理解代码摘要任务中的数据质量,并为相关研究和实践铺平道路。
2022-10-16 cs.SE
Action Word Prediction for Neural Source Code Summarization
源代码摘要是创建源代码的简短、自然语言描述的任务。代码摘要是许多软件文档(如JavaBean)的主干,其中非常简短的注释(如“添加客户对象”)可以帮助程序员快速理解代码片段。近年来,基于神经网络的代码自动摘要方法得到了迅速的发展,成为一个很有价值的研究目标。然而,正如我们将在本文中展示的那样,好的摘要的产生依赖于这些摘要中的动作词的产生:如果“删除”被替换为“添加”,则上述示例的含义将完全改变。“在本文中,我们主张特别强调动作词预测,将其作为实现更好代码摘要的重要垫脚石问题-当前技术试图预测动作词以及整个摘要,但动作词预测本身相当困难。我们展示了代码摘要问题的价值,探索了当前基线的性能,并为未来的研究提供了建议。
2021-01-07 cs.SE
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
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
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
Ensemble Models for Neural Source Code Summarization of Subroutines
子例程的源代码摘要是对该子例程的简要描述。摘要是程序员使用的大部分文档的基础,例如JavaBean中的方法摘要。源代码摘要是编写这些摘要的任务。目前,用于代码摘要的大多数最先进的方法是基于神经网络的解决方案,类似于seq 2seq、graph 2seq和其他编码器-解码器架构。编码器的输入是源代码,而解码器帮助预测自然语言摘要。虽然这些模型在结构上趋于相似,但有证据表明,不同的模型对预测质量的贡献不同-模型性能的差异是正交和互补的,而不是整个数据集的统一。在本文中,我们探讨了不同的神经代码摘要方法的正交性,并提出了集成模型,以利用这种正交性,以获得更好的整体性能。我们证明,一个简单的合奏策略提高性能高达14.8%,并提供了这种提升的解释。这项工作的收获是,在大多数神经代码摘要技术中,对推理过程的相对较小的改变会导致预测质量的大幅提高。
2021-07-23 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
Progressive Code Integration for Abstractive Bug Report Summarization
Islamic University of Technology(伊斯兰技术大学)
本文提出渐进式代码集成框架,通过整合长代码片段和文本内容,提升基于LLM的bug报告摘要效果,优于现有方法。
2025-11-29 cs.AI cs.CL 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
GypSum: Learning Hybrid Representations for Code Summarization
East China Normal University(华东师范大学)
近年来,基于深度学习的代码摘要得到了广泛的研究。当前用于代码摘要的深度学习模型通常遵循神经机器翻译的原理,并采用编码器-解码器框架,其中编码器从源代码学习语义表示,解码器将学习的表示转换为描述代码片段功能的人类可读文本。尽管它们实现了新的最先进的性能,但我们注意到,当前的模型通常生成不太流畅的摘要,或者无法捕获核心功能,因为它们通常专注于单一类型的代码表示。因此,我们提出了GypSum,这是一种新的深度学习模型,它使用图形注意力神经网络和预训练的编程和自然语言模型来学习混合表示。我们引入特定的边缘相关的控制流的代码片段到抽象语法树的图形构造,并设计了两个编码器,分别从图形和令牌序列的源代码,学习。我们修改了Transformer的解码器中的编码器-解码器子层,以融合表示,并提出了一个双拷贝机制,以促进摘要生成。实验结果表明GypSum的性能优于现有的代码摘要模型。
2022-04-26 cs.LG cs.PL cs.SE
One Adapter for All Programming Languages? Adapter Tuning for Code Search and Summarization
National University of Defense Technology(国防科技大学);Hunan University(湖南大学)
由于预先训练的模型使许多代码智能任务自动化,因此广泛使用的范例是针对每种程序设计语言在任务数据集上微调模型。最近的一项研究表明,多语言微调有利于一系列任务和模型。然而,我们发现,多语言微调导致最近的模型UniXcoder和CodeT5的性能下降。为了缓解多语言模型中潜在的灾难性遗忘问题,我们修复了所有预先训练的模型参数,插入参数有效的结构适配器,并对其进行微调。与每种程序设计语言的全模型微调相比,适配器调优仅更新了整体参数的0.6%,在代码搜索和摘要任务上产生了一致的改进,实现了最先进的结果。此外,我们的实验表明其有效性,在跨语言和低资源的情况下。每种程序设计语言200个样本的多语言微调接近于在代码摘要上使用整个数据集进行微调的结果。我们对三个探测任务的实验表明,适配器调整显着优于全模型微调,并有效地克服了灾难性遗忘。
2023-03-28 cs.AI cs.SE
ESALE: Enhancing Code-Summary Alignment Learning for Source Code Summarization
State Key Laboratory for Novel Software Technology, Nanjing University(南京大学现代软件技术国家重点实验室);Software Institute, Nanjing University(南京大学软件学院);College of Computing and Data Science, Nanyang Technological University(南洋理工大学计算与数据科学学院);Tencent Inc.(腾讯公司)
本文提出 ESALE,通过 ULM、MLM 和 AWP 三个以摘要为中心的多任务增强代码-摘要对齐学习,并在四个数据集上显著提升代码摘要性能。
2024-07-01 cs.AI 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
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
Source Code Summarization in the Era of Large Language Models
College of Computing and Data Science, Nanyang Technological University Singapore(计算与数据科学学院,新加坡南洋理工大学);State Key Laboratory for Novel Software Technology, Nanjing University(新型软件技术国家重点实验室,南京大学);School of Computer Science and Engineering, University of New South Wales(计算机科学与工程学院,新南威尔士大学);School of Big Data and Software Engineering, Chongqing University(大数据与软件工程学院,重庆大学)
本文针对大语言模型时代的代码摘要展开系统研究,分析自动评估方法、提示技术、模型设置及编程语言类型的影响,发现GPT-4评估与人类评估最接近、零样本提示可能优于高级提示等结论,还意外发现7B参数的CodeLlama-Instruct在特定摘要任务上优于GPT-4。
2025-08-23 cs.AI cs.SE
Supporting software documentation with source code summarization
源代码摘要是生成描述软件代码的摘要的过程,大多数源代码摘要通常是手动生成的,其中摘要是由软件开发人员编写的。最近,新的自动化方法变得越来越有用。这些方法在某些情况下是有效的。这些方法的主要缺点是它们从不利用代码依赖性,并且总结软件类或方法,而不是两者。本文提出了一种源代码摘要方法(Suncode),它为软件系统中的每个类和方法产生一个简短的描述。为了验证该方法,它已被应用到几个案例研究。此外,将生成的摘要与人类专家编写的摘要以及最先进的解决方案编写的摘要进行比较。本文的研究结果发现,与其他研究相比,Suncode摘要提供了更好的代码依赖信息。此外,Suncode摘要可以改进和支持当前的软件文档。结果发现,手工编写的摘要更精确,也更简短。
2018-12-14 cs.SE
Do Machines and Humans Focus on Similar Code? Exploring Explainability of Large Language Models in Code Summarization
Vanderbilt University(范德堡大学);University of Notre Dame(圣母大学)
本文通过眼动追踪与 SHAP 方法比较人类程序员和语言模型在代码摘要中的关注点,发现二者无显著相关性且对齐程度不影响摘要质量,从而揭示现有可解释性方法的局限并提出未来研究方向。
2024-02-22 cs.AI cs.SE
Leveraging Code Generation to Improve Code Retrieval and Summarization via Dual Learning
National Engineering Research Center for Software Engineering, Peking University(北京大学软件工程国家工程研究中心);School of Software and Microelectronics, Peking University(北京大学软件与微电子学院);University of Texas at San Antonio(德克萨斯大学圣安东尼奥分校)
代码摘要在给定源代码片段的情况下生成简短的自然语言描述,而代码检索在给定自然语言查询的情况下获取相关源代码。由于这两个任务的目的是建立自然语言和程序设计语言之间的联系,最近的研究已经结合这两个任务,以提高其性能。然而,研究人员还没有能够有效地利用这两个任务之间的内在联系,因为他们训练这些任务在一个单独的或管道的方式,这意味着他们的表现不能很好地平衡。在本文中,我们提出了一个新的端到端的模型,这两个任务,通过引入一个额外的代码生成任务。更具体地说,我们明确地利用代码摘要和代码生成与双重学习之间的概率相关性,并利用两个编码器的代码摘要和代码生成训练的代码检索任务,通过多任务学习。我们已经在现有的SQL和Python数据集上进行了广泛的实验,结果表明,我们的模型可以显着提高代码检索任务的结果超过最先进的模型,以及实现竞争力的性能方面的BLEU得分的代码摘要任务。
2020-02-25 cs.CL cs.IR cs.SE
Retrieval Augmented Code Generation and Summarization
University of California, Los Angeles(加利福尼亚大学洛杉矶分校);Columbia University(哥伦比亚大学)
软件开发人员在软件开发过程中编写了大量的源代码和文档。本质上,开发人员经常回忆他们过去在实现软件或编写文档时编写的部分源代码或代码摘要。为了模仿开发人员的代码或摘要生成行为,我们提出了一个检索增强框架,REDCODER,检索相关的代码或摘要从检索数据库,并提供它们作为补充代码生成或摘要模型。Redcoder有几个独特之处。首先,它扩展了最先进的稠密检索技术,以搜索相关代码或摘要。其次,它可以与包括单峰(仅代码或自然语言描述)或双峰实例(代码描述对)的检索数据库一起工作。我们进行了实验和广泛的分析,在Java和Python的代码生成和摘要的两个基准数据集,和有前途的结果认可我们提出的检索增强框架的有效性。
2021-09-10 cs.CL cs.SE
AdvFusion: Adapter-based Knowledge Transfer for Code Summarization on Code Language Models
本文提出AdvFusion,一种基于PEFT的适配器知识迁移方法,通过在适应目标任务前学习其他语言,有效提升了代码语言模型在代码摘要和方法名预测上的性能。
2024-12-21 cs.SE
Automatic Semantic Augmentation of Language Model Prompts (for Code Summarization)
University of California, Davis(加州大学戴维斯分校);University College London(伦敦大学学院);Google Brain(谷歌大脑)
本文研究在代码摘要任务中显式地向LLM提示添加自动提取的语义事实是否有效,实验表明该方法在多种设置和两个LLM上均提升性能,多数提升接近或超过2 BLEU,PHP上超过30 BLEU。
2024-01-11 cs.LG cs.SE
A Prompt Learning Framework for Source Code Summarization
College of Computing and Data Science, Nanyang Technological University(南洋理工大学计算与数据科学学院);State Key Laboratory for Novel Software Technology, Nanjing University(南京大学计算机软件新技术国家重点实验室);Faculty of Data Science, City University of Macau(澳门城市大学数据科学学院)
针对现有代码摘要LLM适配方案存在的提示设计难、训练成本高、缺乏定制化PEFT方法的问题,提出非侵入式提示学习框架PromptCS,通过训练提示智能体生成连续提示,在低资源消耗下实现媲美甚至超越全参数微调的效果。
2024-12-07 cs.AI 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
Improved Code Summarization via a Graph Neural Network
University of Notre Dame(圣母大学);IBM Research(IBM研究院)
自动源代码摘要是为源代码生成自然语言描述的任务。自动代码摘要是一个快速扩展的研究领域,特别是随着社区更好地利用神经网络和AI技术的进步。通常,源代码摘要技术使用源代码作为输入并输出自然语言描述。然而,一个强烈的共识是,使用结构信息作为输入导致改进的性能。使用结构信息的第一种方法将AST扁平化为序列。最近,基于随机AST路径或图神经网络的更复杂的方法已经改进了使用扁平化AST的模型。然而,文献仍然没有描述将图神经网络与源代码序列一起用作模型的单独输入。因此,在本文中,我们提出了一种使用基于图的神经架构的方法,该架构可以更好地匹配AST的默认结构来生成这些摘要。我们使用210万Java方法-注释对的数据集来评估我们的技术,并显示了对四种基线技术的改进,其中两种来自软件工程文献,两种来自机器学习文献。
2020-04-07 cs.CL cs.SE
RepoSummary: Feature-Oriented Summarization and Documentation Generation for Code Repositories
本文提出RepoSummary,一种面向特性的代码仓库摘要方法,可自动生成文档并建立功能特性到代码元素的追踪链接,显著提升了特性覆盖率和追踪准确性。
2025-10-13 cs.SE
Semantic Similarity Metrics for Evaluating Source Code Summarization
源代码摘要涉及用自然语言创建源代码的简要描述。这些描述是软件文档的关键组成部分,例如JavaBean。自动代码摘要是软件工程研究的一个重要目标,这是由于摘要对程序员具有很高的价值,同时手工编写和维护文档的成本很高。目前的工作几乎都是基于通过大数据输入训练的机器模型。代码的示例和该代码的概要的大数据集被用于训练例如编码器-解码器神经模型。然后,根据一组参考摘要评估模型的输出预测。输入是模型看不到的代码,预测与参考进行比较。将预测与参考进行比较的方法基本上是通过BLEU或ROUGE等度量计算的单词重叠。使用单词重叠的问题是,不是一个句子中的所有单词都具有相同的重要性,并且许多单词都有同义词。结果是计算的相似性可能与人类读者感知的相似性不匹配。在本文中,我们进行了一项实验,以衡量各种词重叠指标与预测和参考摘要的人类评级相似性的程度。我们评估替代品的语义相似性度量的基础上,目前的工作,并提出建议,评估源代码摘要。
2022-04-04 cs.SE