A Survey of Automatic Generation of Source Code Comments: Algorithms and Techniques
作为源代码文件的一个组成部分,代码注释有助于提高程序的可读性和可理解性。然而,开发人员有时并没有对他们的程序代码进行充分的注释,这是由于额外的努力,缺乏相关知识,没有意识到代码注释的重要性或其他一些因素。因此,代码注释可能不充分、缺失甚至与源代码不匹配,影响了对软件的理解、重用和维护。为了解决代码注释的这些问题,研究人员一直关注自动生成代码注释。在这项工作中,我们的目标是进行自动代码注释研究的调查。首先,我们概括性地分析了程序注释自动生成的挑战和研究框架。其次,我们给出了代表性算法的分类,每类算法的设计原则,优缺点。同时,我们也提供了一个生成的评论的质量评估的概述。最后,我们总结了一些未来的发展方向,提高技术的自动生成代码注释和质量评估的意见。
2019-07-25 cs.SE
Towards Automated Detection of Inline Code Comment Smells
本文通过增强已标注行内注释数据集,比较七种ML模型与GPT 4的注释坏味分类性能,Random Forest以69%准确率和0.44 MCC建立基线。
2025-08-29 cs.SE
Speculative Analysis for Quality Assessment of Code Comments
以前的研究表明,高质量的代码注释有助于开发人员理解和维护程序。然而,评论的半结构化性质,编写好评论的不明确约定,以及缺乏针对评论各个方面的质量评估工具,使得评论的评估和维护成为一个重要问题。为了实现高质量的注释,我们需要更深入地理解代码注释的特征和开发人员遵循的实践。在这篇论文中,我们从三个不同的角度来探讨评价评论质量的问题:开发人员对评论实践的要求,他们在评论中写了什么,以及研究人员如何支持他们评价评论质量。我们的初步发现表明,开发人员在跨程序设计语言的类注释中嵌入了各种信息。尽管如此,他们仍然面临着寻找相关指南以撰写一致和信息丰富的评论,验证他们的评论是否符合指南以及评估评论质量的整体状态的问题。为了帮助开发人员和研究人员构建评论质量评估工具,我们提供:(i)来自各种社区论坛的评论约定相关问题的经验验证的分类法,(ii)来自各种程序设计语言的评论信息类型的经验验证的分类法,(iii)自动识别信息类型的独立于语言的方法,以及(iv)从系统的文献综述中准备的评论质量分类。
2021-02-18 cs.SE
An Empirical Study on Code Comment Completion
代码注释在程序理解活动中起着重要的作用。然而,源代码并不总是文档化的,代码和注释并不总是共同发展的。为了解决这些问题,研究人员提出了自动生成注释的技术,这些注释记录了手头的给定代码。该领域的最新工作应用了深度学习(DL)技术来支持这样的任务。尽管取得了进展,这些方法的实证评估表明,他们仍然远远没有一个性能水平,使他们有价值的开发人员。我们解决了一个更简单的相关问题:代码注释完成。我们不是从头开始为给定的代码生成注释,而是研究最先进的技术可以在多大程度上帮助开发人员更快地编写注释。我们提出了一个大规模的研究,我们经验性地评估如何一个简单的n-gram模型和最近提出的文本到文本传输Transformer(T5)架构可以执行自动完成代码注释的开发人员键入。所取得的结果显示了T5模型的优越性,尽管n-gram模型是一个有竞争力的解决方案。
2021-07-22 cs.SE
RepliComment: Identifying Clones in Code Comments
代码注释是记录实现和促进程序理解的主要手段。因此,它们的质量应该是改进程序维护的主要关注点。虽然很多工作都致力于检测不良气味,如代码中的克隆,但很少有工作集中在注释上。在本文中,我们提出了我们的解决方案来检测开发人员应该修复的评论中的克隆。<$Comment可以自动分析Java项目并报告注释中的复制粘贴错误实例,并可以向开发人员指出应该修复哪些注释。此外,当克隆是写得不好的评论的迹象时,它可以报告。开发人员也应该修复这些实例,以提高代码文档的质量。我们对10个著名的开源Java项目进行了评估,发现了超过11000个注释克隆实例,其中超过1,300个是潜在的关键。我们改进了我们自己以前的工作,在同一个数据集中只能找到36个问题。我们对<$Comment报告的412个问题进行了手动检查,结果显示它在报告关键评论克隆方面的准确率为79%。手动检查200个额外的评论克隆,<$Comment过滤出合法的,不能证明任何假阴性。
2021-08-25 cs.SE
ToxiSpanSE: An Explainable Toxicity Detection in Code Review Comments
本文提出ToxiSpanSE,首个面向软件工程领域的可解释毒性片段检测工具,基于19,651条代码评审评论训练,微调RoBERTa取得F1值0.88的最佳效果,可自动高亮有毒内容以辅助人工审核。
2023-07-07 cs.SE
What Makes a Good TODO Comment?
本研究针对开源项目中大量低质量TODO注释的问题,调研了TODO注释质量的四个维度,提出高质量TODO识别标准,构建的深度学习方法可有效评估注释质量,助力提升开发效率与代码质量。
2025-03-19 cs.SE
On the Quality of AI-Generated Source Code Comments: A Comprehensive Evaluation
Federal University of Minas Gerais (UFMG)(米纳斯吉拉斯联邦大学);Pontifical Catholic University of Minas Gerais (PUC Minas)(米纳斯吉拉斯天主教 Pontifical 大学)
本文评估了AI生成的源代码注释质量,发现其与原始注释相当或更优,并揭示了需要新的文档特定度量。
2025-12-01 cs.SE
COMCAT: Leveraging Human Judgment to Improve Automatic Documentation and Summarization
COMCAT利用专家引导上下文增强大语言模型,自动生成代码注释,显著提升开发者代码理解能力,优于ChatGPT生成注释,并发布相关数据集。
2024-07-18 cs.SE
What Types of Code Review Comments Do Developers Most Frequently Resolve?
The University of Melbourne(墨尔本大学);Atlassian;Monash University(蒙纳士大学)
本研究利用LLM作为评判者分类评审评论,发现LLM与人类评审者各有优劣,且可读性、缺陷和维护性相关评论的解决率高于设计类评论,表明多数LLM生成评论具有可执行性。
2025-10-06 cs.SE
Preprocessing Source Code Comments for Linguistic Models
Drexel University(德雷塞尔大学)
注释是源代码的重要组成部分,也是文档的主要来源。这使得人们对使用大量注释来训练或评估使用或产生它们的工具产生了兴趣--例如从注释生成预言机甚至代码,或者自动生成代码摘要。大部分的研究都对评论的结构和质量做出了很强的假设,比如假设它们主要由正确的英语句子组成。然而,我们对这些用例的现有注释的实际质量知之甚少。注释通常包含在其他类型的文本中看不到的独特结构和元素,从它们中过滤或提取信息需要额外的注意。本文探讨了来自GitHub的840个最受欢迎的开源项目和来自SriLab数据集的8422个项目的Python评论的内容和质量,以及朴素与深入过滤对使用现有评论进行训练和评估生成评论的系统的影响。
2022-08-26 cs.LG cs.SE
Optimizing Datasets for Code Summarization: Is Code-Comment Coherence Enough?
本文针对代码摘要数据集存在错误或次优示例的问题,探索代码-注释一致性对数据集优化的作用,通过SIDE指标筛选TL-CodeSum和Funcom数据集,发现减半训练集不影响模型效果,但严格筛选与随机筛选的模型准确率无差异,提出需探索更多质量属性优化数据集。
2025-02-11 cs.SE
CupCleaner: A Hybrid Data Cleaning Approach for Comment Updating
Key Laboratory of High Confidence Software Technologies (Peking University), Ministry of Education(教育部高可信软件技术重点实验室);School of Computer Science, Peking University(北京大学计算机学院);National Key Laboratory of Space Integrated Information System, Institute of Software, Chinese Academy of Sciences(中国科学院软件研究所空间信息系统国家重点实验室)
CupCleaner通过结合静态语义和动态损失信息,有效清洗评论更新数据集,提升模型性能和输出可靠性。
2025-12-10 cs.SE
Learning to Generate Code Comments from Class Hierarchies
The University of Texas at Austin(德克萨斯大学奥斯汀分校)
描述性代码注释对于支持代码理解和维护是必不可少的。我们提出的任务是为重写方法自动生成注释。我们制定了一个新的框架,可容纳独特的上下文和语言推理,需要执行这项任务。我们的方法特点:(1)结合来自类层次结构的上下文;(2)以学习到的、潜在的特异性表示为条件,以生成捕获覆盖方法的更专门的行为的注释;以及(3)不似然训练,以阻止不符合与覆盖方法相对应的注释的不变特征的预测。我们的实验表明,所提出的方法是能够产生更高质量的压倒性的方法相比,目前的评论生成技术的评论。
2021-04-17 cs.CL cs.LG cs.SE
Automatically Generating Documentation for Lambda Expressions in Java
当lambda表达式作为Java 8的一部分在2014年引入Java程序设计语言时,它们是该语言进入函数式编程的第一步。由于lambda表达式仍然相对较新,并非所有开发人员都使用或理解它们。在本文中,我们首先介绍了一项实证研究的结果,以确定GitHub存储库的开发人员使用lambda表达式的频率以及它们是如何记录的。我们发现11%的Java GitHub存储库使用lambda表达式,只有6%的lambda表达式带有源代码注释。然后,我们提出了一个名为LambdaDoc的工具,它可以自动检测Java存储库中的lambda表达式,并为它们生成自然语言文档。我们与23名专业开发人员一起对LambdaDoc进行的评估表明,他们认为生成的文档是完整的,简洁的,并且具有表达力,而我们的参与者在没有工具支持的情况下生成的大多数文档都是不够的。我们的贡献建立了一个重要的一步,自动生成文档的功能性编程结构的面向对象的语言。
2019-03-15 cs.SE
Does AI Code Review Lead to Code Changes? A Case Study of GitHub Actions
State Key Lab for Novel Software Technology, Nanjing University(南京大学 novel software technology 国家重点实验室);University of Heidelberg(海德堡大学);School of Computing and Information Systems, Singapore Management University(新加坡管理大学计算与信息学院)
本文通过分析GitHub动作中的16种AI代码审查工具,探讨其使用情况、评论是否引发代码更改以及影响有效性因素,发现简洁、包含代码片段且手动触发的评论更可能引发更改。
2026-04-25 cs.SE
Improving Retrieval-Augmented Code Comment Generation by Retrieving for Generation
本文提出JOINTCOM方法,通过让检索器学习生成器的反馈来检索对生成最有利的示例,从而改进检索增强的代码注释生成,并在两个数据集上显著超越现有基线。
2024-08-07 cs.SE
Associating Natural Language Comment and Source Code Entities
The University of Texas at Austin(得克萨斯大学奥斯汀分校)
注释是软件开发中不可或缺的一部分;它们是与源代码元素相关联的自然语言描述。理解显式关联对于提高代码的可理解性和维护代码与注释之间的一致性非常有用。作为实现这一更大目标的第一步,我们解决了将Javadoc注释中的实体与Java源代码中的元素相关联的任务。我们提出了一种使用开源项目的修订历史自动提取监督数据的方法,并为这项任务提供了一个手动注释的评估数据集。我们开发了一个二元分类器和序列标签模型,通过精心制作一个丰富的功能集,其中包括代码,注释和它们之间的关系的各个方面。实验表明,我们的系统优于几个基线学习建议的监督。
2019-12-13 cs.CL cs.LG cs.SE
Towards Automatically Addressing Self-Admitted Technical Debt: How Far Are We?
Università della Svizzera italiana (USI)(瑞士意大利语区大学(USI));University of Sannio(桑尼奥大学)
本文构建5,039个SATD移除数据集并评估七种生成式DL配置及LLM聊天机器人,发现最佳模型仅能自动修复约2%至8%的实例,预训练与SATD注释输入至关重要。
2023-08-17 cs.AI cs.SE
Learning to Update Natural Language Comments Based on Code Changes
The University of Texas at Austin(德克萨斯大学奥斯汀分校)
我们制定了新的任务,自动更新现有的自然语言评论的基础上,它伴随着代码的主体的变化。我们提出了一种方法,学习相关的变化在两个不同的语言表示,生成一系列的编辑应用到现有的评论,以反映源代码的修改。我们使用从开源软件项目提交历史中收集的数据集来训练和评估我们的模型,每个示例都由方法及其相应注释的并发更新组成。我们使用自动指标和人工评估将我们的方法与多个基线进行比较。结果反映了这项任务的挑战,我们的模型在编辑方面优于基线。
2020-04-28 cs.CL cs.LG cs.SE
When Retriever Meets Generator: A Joint Model for Code Comment Generation
本文提出 RAGSum,基于单一 CodeT5 主干联合优化代码注释的检索与生成,并通过对比预训练、复合损失和自精炼循环,在 Java、Python、C 基准上显著提升注释质量。
2025-07-24 cs.SE
Retrieval-Augmented Code Review Comment Generation
针对现有代码审查评论生成方法在低频词生成或新上下文适配性上的不足,本研究提出基于检索增强生成(RAG)的方法,在Tufano基准上取得了优于生成式和检索式方法的表现。
2025-06-13 cs.SE
Automatic Detection and Analysis of Technical Debts in Peer-Review Documentation of R Packages
技术债(TD)是一个比喻,指由于优先考虑快速交付而不是完美代码而产生的代码相关问题。鉴于TD的减少可以在软件工程生命周期(SDLC)中产生长期的积极影响,TD在文献中得到了广泛的研究。然而,尽管R程序设计语言很受欢迎和使用,但现有的研究很少关注R语言的技术债务。Codabux等人最近的研究[21]发现,R包可以有10种不同的TD类型来分析同行评审文档。然而,这些发现是基于对R包审查评论的小样本的手动分析。在本文中,我们开发了一套机器学习(ML)分类器来自动检测10个TD。性能最好的分类器是基于深度ML模型BERT的,其F1得分为0.71 - 0.91。然后,我们将训练好的BERT模型应用于来自rOpenSci和BioConductor两个平台的所有可用的同行评审问题评论(来自总共1297个R包的13.5K评审评论)。我们对两个R平台中10个TD的流行和演变进行了实证研究。我们发现文件债务是所有类型的TD中最普遍的,而且它也在迅速扩大。我们还发现,R软件包的通用平台(即rOpenSci)更容易TD相比,特定领域的平台(即BioConductor)。我们的实证研究结果可以指导R包文档的未来改进机会。我们的ML模型可用于自动监控R包文档中TD的流行和演变。
2022-01-11 cs.SE
Towards Summarizing Code Snippets Using Pre-Trained Transformers
本研究针对细粒度代码片段摘要生成数据稀缺问题,通过构建注释数据集、训练多任务注释分类关联模型,构建大规模带文档代码片段数据集并训练摘要模型,性能优于现有基线方法。
2024-02-01 cs.SE
Identifying Self-Admitted Technical Debt in Issue Tracking Systems using Machine Learning
University of Groningen(格罗宁根大学)
技术债是一个隐喻,表示通过牺牲软件的长期可维护性和可演化性来实现短期利益的次优解决方案。一种特殊类型的技术债务由软件工程师明确承认(例如使用TODO注释);这被称为自承认技术债务或SATD。大多数自动识别SATD的工作都集中在源代码注释上。除了源代码注释之外,问题跟踪系统已经被证明是SATD的另一个丰富来源,但是没有专门用于自动识别问题中的SATD的方法。在本文中,我们首先通过收集和手动分析来自七个开源项目(即,Camel、Chromium、Gerrit、Hadoop、HBase、Impala和Thrift),使用两种流行的问题跟踪系统(即,Jira和Google Monorail)。然后,我们提出并优化了一种使用机器学习自动识别问题跟踪系统中的SATD的方法。我们的研究结果表明:1)我们的方法在F1分数方面远远优于基线方法; 2)从合适的数据集转移知识可以提高我们方法的预测性能; 3)提取的SATD关键字是直观的,并且可能指示SATD的类型和指标; 4)与使用相同问题跟踪系统的项目相比,使用不同问题跟踪系统的项目具有较少的SATD关键字; 5)需要少量的训练数据来实现良好的精度。
2022-02-04 cs.AI cs.SE
How to Identify Class Comment Types? A Multi-language Approach for Class Comment Classification
本文针对Python、Java和Smalltalk类注释实践差异及注释不足问题,结合NLP与文本分析自动识别类注释语义类型,并构建跨语言分类体系,实现高准确率分类。
2021-07-25 cs.PL cs.SE
Retrieve and Refine: Exemplar-based Neural Comment Generation
Peking University(北京大学);Monash University(莫纳什大学)
代码注释生成是软件自动开发领域的一项重要任务,其目的是自动生成源代码的自然语言描述。传统的注释生成方法使用手工制作的模板或信息检索(IR)技术来生成源代码摘要。近年来,基于神经网络的方法利用广受好评的编码器-解码器深度学习框架从大规模并行代码语料库中学习注释生成模式,取得了令人印象深刻的结果。然而,这些新兴的方法仅将代码相关信息作为输入。软件重用在软件开发过程中很常见,这意味着相似代码片段的注释有助于注释生成。受基于IR和基于模板的方法的启发,本文提出了一种神经注释生成方法,其中我们使用相似代码片段的现有注释作为范例来指导注释生成。具体来说,给定一段代码,我们首先使用IR技术来检索类似的代码片段,并将其注释视为范例。然后,我们设计了一种新的seq 2seq神经网络,它以给定的代码,其AST,其类似的代码,其范例作为输入,并利用来自范例的信息,以协助在目标评论生成的基础上的源代码和类似的代码之间的语义相似性。我们评估我们的方法上的一个大规模的Java语料库,其中包含约2 M的样本,实验结果表明,我们的模型优于国家的最先进的方法的大幅利润。
2020-10-09 cs.AI cs.SE
Understanding Practitioners' Expectations on Clear Code Review Comments
本研究通过定义RIE属性并构建ClearCRC模型,系统评估代码评审评论的清晰性,发现28.8%的评论存在清晰性不足,所提模型在自动评估中达到73.04%的平衡准确率与94.61%的F1分数。
2025-04-24 cs.SE
Low-level Comments auto-generation for Solidity Smart Contracts
背景:区块链平台上的去中心化应用通过智能合约实现。然而,缺乏编程知识的参与者往往难以阅读智能合约源代码,这导致潜在的安全风险和参与障碍。目的:我们的目标是将智能合约源代码翻译成自然语言描述,以帮助人们更好地理解、操作和学习智能合约。方法:本文提出了一种基于抽象语法树和形式语法的Solidity智能合约自动翻译工具SolcTrans。我们调查了3,000个智能合约,并确定了相应区块链术语的词性。其中,我们进一步过滤出没有详细注释的合同片段,留下811个片段来评估SolcTrans的翻译质量。结果如下:实验结果表明,即使是一个小的语料库,SolcTrans可以实现类似的性能,国家的最先进的代码注释生成模型的其他程序设计语言。此外,SolcTrans在处理不同长度和gas消耗的代码片段时具有一致的性能。结论:SolcTrans能够正确解释Solidity代码并自动将其转换为可理解的英文文本。我们将发布我们的工具和数据集,以支持相关领域的复制和进一步研究。
2022-01-08 cs.PL cs.SE
Leveraging Reward Models for Guiding Code Review Comment Generation
Université de Montréal(蒙特利尔大学);Università della Svizzera italiana(瑞士联邦理工学院)
本文提出 CoRAL 框架,利用兼顾评论语义及其对代码精化模型可用性的强化学习奖励机制,自动生成代码审查评论,并通过定量与定性比较验证其优于最新基线。
2025-06-04 cs.LG cs.SE
On the Impact of Code Comments for Automated Bug-Fixing: An Empirical Study
Politecnico di Torino, University of Molise(托里尼理工大学,莫利塞大学);University of Molise(莫利塞大学)
本研究探讨了代码注释对LLM自动化修复bug的影响,发现注释能显著提升修复准确性,且训练时使用注释不影响性能。
2026-01-30 cs.AI cs.LG cs.SE
APIContext2Com: Code Comment Generation by Incorporating Pre-Defined API Documentation
University of British Columbia Okanagan(不列颠哥伦比亚大学奥肯那根分校)
代码注释对理解软件程序有很大的帮助,也可以帮助开发人员节省大量的软件维护时间。代码注释生成的目的是自动预测给定代码片段的自然语言中的注释。一些作品调查的影响,整合外部知识的质量生成的评论。在这项研究中,我们提出了一个解决方案,即APIContext 2Com,通过将预定义的应用程序编程接口(API)上下文,以提高生成的评论的有效性。API上下文包括在代码片段中使用的预定义API的定义和描述。由于详细的API信息表达了代码段的功能,因此它有助于更好地生成代码摘要。我们引入了一个seq-2-seq编码器-解码器神经网络模型,该模型具有不同的多个编码器集合,以有效地将不同的输入转换为目标评论。还开发了一个排名机制来排除非信息性的API,以便我们可以过滤掉不相关的API。我们使用CodeSearchNet的Java数据集来评估我们的方法。结果表明,该模型对BLEU 1、BLEU 2、BLEU 3、BLEU 4、METEOR、ROUGE-L的最佳基线分别提高了1.88(8.24%)、2.16(17.58%)、1.38(18.3%)、0.73(14.17%)、1.58(14.98%)和1.9(6.92%)。人类评估和消融研究证实了生成的评论的质量以及架构和排名API的效果。
2023-03-03 cs.CL cs.LG cs.SE
A Framework for Conditional Statement Technical Debt Identification and Description
当开发团队更喜欢短期的可操作性而不是长期的稳定性时,就会出现技术债务。由于这将软件的可维护性置于风险之中,技术债务需要尽早关注,以避免支付累积的利息。现有的大多数工作都集中在使用代码注释来检测技术债务,称为自承认技术债务(SATD)。然而,在许多情况下,技术债务实例并没有被明确承认,而是深深隐藏在代码中。在本文中,我们提出了一个框架,迎合了没有SATD注释的代码。我们的自承认技术债务识别和描述(SATDID)框架确定是否应该为输入代码片段自承认技术债务。如果是这种情况,SATDID将自动生成可以附加到代码中的适当的描述性SATD注释。虽然我们的方法原则上适用于任何类型的代码片段,但在这项研究中,我们专注于隐藏在条件语句中的技术债务,这是代码中最具TD的部分之一。我们探索和评估SATDID的不同实现。评估结果表明,我们的框架在多个基准的适用性和有效性。与基准测试的结果相比,我们的方法提供了至少21.35%,59.36%,31.78%,和583.33%的精度,召回,F-1和蓝-4分数,分别提高。此外,我们对SATDID生成的SATD评论进行人工评估。在可接受性和可理解性的1-5和0-5量表中,通过我们的方法实现的总平均值分别为3.128和3.172。
2022-10-13 cs.SE
A First Look at the Self-Admitted Technical Debt in Test Code: Taxonomy and Detection
University of Manitoba(曼尼托巴大学)
本研究首次分析测试代码中的自我承认技术债务,通过大规模样本识别其分类并评估现有检测工具的性能。
2026-09-28 cs.SE
Towards Automating Code Review Activities
代码审查在工业和开源项目中都很流行。代码审查的好处被广泛认可,包括更好的代码质量和更低的引入bug的可能性。然而,由于代码审查是一项手动活动,因此开发人员需要花费时间审查其团队成员的代码。我们的目标是朝着部分自动化代码审查流程迈出第一步,从而可能减少与之相关的手动成本。我们通过训练两种不同的深度学习架构,关注流程的贡献者和审查者。第一个学习开发人员在实际代码评审活动中执行的代码更改,从而在代码提交评审之前,为贡献者提供其代码的修订版本,实现通常在代码评审期间推荐的代码转换。第二种方法自动为审阅者提供对提交的代码的评论,并将其修改后的代码实现为以自然语言表达的评论。对这两个模型的实证评估表明,在贡献者方面,训练好的模型在高达16%的情况下成功复制了代码审查期间应用的代码转换。在评论者方面,该模型可以在高达31%的情况下正确地实现以自然语言提供的评论。虽然这些结果令人鼓舞,但需要更多的研究才能使这些模型可供开发人员使用。
2021-05-19 cs.SE
LAURA: Enhancing Code Review Generation with Context-Enriched Retrieval-Augmented LLM
School of Computer Science;Technology Beijing Institute of Technology Beijing, China;Institute of Software Chinese Academy of Sciences Beijing, China;School of Computer Science Tianjin University Tianjin, China
LAURA通过整合审查范例检索、上下文增强和系统引导,提升代码审查生成的准确性和质量。
2026-02-22 cs.SE
LAMNER: Code Comment Generation Using Character Language Model and Named Entity Recognition
University of British Columbia(不列颠哥伦比亚大学)
代码注释生成是为给定的代码方法或函数生成高级自然语言描述的任务。虽然研究人员一直在研究自动生成代码注释的多种方法,但以前的工作主要考虑仅以其整体语义形式表示代码标记(例如,使用语言模型来学习代码令牌的语义),并且包括诸如代码的树结构的附加代码属性作为对模型的辅助输入。有两个限制:1)以其整体形式学习代码令牌可能不能够简洁地捕获源代码中的信息,以及2)代码令牌不包含附加的句法信息,附加的句法信息在程序设计语言中固有地重要。在本文中,我们提出了语言模型和命名实体识别(LAMNER),代码注释生成器能够有效地编码代码构造和捕获的结构特性的代码令牌。使用字符级语言模型来学习语义表示以编码代码令牌。针对令牌的结构特性,训练命名实体识别模型来学习不同类型的代码令牌。然后将这些表示馈送到编码器-解码器架构中以生成代码注释。我们使用四个常用的指标对LAMNER和其他基线在一个流行的Java数据集上生成的评论进行评估。我们的结果表明,LAMNER是有效的,在BLEU-1,BLEU-2,BLEU-3,BLEU-4,ROUGE-L,METEOR和CIDER的最佳基线模型分别提高了14.34%,18.98%,21.55%,23.00%,10.52%,1.44%和25.86%。此外,我们将LAMNER的代码表示与基线模型融合,融合模型始终显示出比非融合模型的改进。人工评估进一步表明,LAMNER生成高质量的…
2022-04-05 cs.AI cs.CL cs.SE
Understanding Self-Admitted Technical Debt in Test Code: An Empirical Study
Nara Institute of Science and Technology(奈良先端科学技术大学院大学);Hangzhou Dianzi University(杭州电子科技大学)
本研究通过实证分析揭示测试代码中自我承认技术债务的分布和类型,并开发机器学习模型进行自动分类,发现其与测试质量无直接关联。
2026-02-09 cs.SE
DebtFree: Minimizing Labeling Cost in Self-Admitted Technical Debt Identification using Semi-Supervised Learning
Department of Computer Science, North Carolina State University(北卡罗来纳州立大学计算机科学系);North Carolina State University(北卡罗来纳州立大学);Raleigh, USA(美国罗利)
跟踪和管理自我承认的技术债务(SATD)对于维护一个健康的软件项目非常重要。目前主动学习的SATD识别工具需要人工检查24%的测试评论,平均达到90%的召回率。在所有的测试评论中,大约5%是SATD。然后,人类专家需要阅读几乎五倍的SATD评论,这表明该工具的效率低下。此外,人类专家仍然容易出错:以前工作中95%的假阳性标签实际上是真阳性。为了解决上述问题,我们提出了DebtFree,一个基于无监督学习的双模式框架,用于识别SATD。在模式1中,当现有的训练数据未标记时,DebtFree从无监督学习器开始,自动伪标记训练数据中的编程注释。相比之下,在模式2中,标签与相应的训练数据一起可用,DebtFree从一个预处理器开始,该预处理器从测试数据集中识别高度倾向的SATD。然后,我们的机器学习模型被用来帮助人类专家手动识别剩余的SATD。我们对10个软件项目的实验表明,这两种模型在统计上都比最先进的自动化和半自动化模型的有效性有显著的提高。具体来说,DebtFree可以在模式1(未标记的训练数据)中减少99%的标记工作,在模式2(标记的训练数据)中减少63%,同时将当前主动学习者的F1相对提高到几乎100%。
2022-01-25 cs.AI cs.SE
Distilling Desired Comments for Enhanced Code Review with Large Language Models
Software Institute Nanjing University(南京大学软件学院);Faculty of Science and Engineering Southern Cross University(南十字星大学科学与工程学院);Huawei Technologies Co., Ltd.(华为技术有限公司)
本文提出Desiview数据集蒸馏方法,自动从代码审查数据中识别DRC,并结合KTO对齐微调LLaMA 3/3.1,显著提升LLM生成准确代码审查评论的能力。
2025-01-05 cs.AI cs.SE
Lyra: A Benchmark for Turducken-Style Code Generation
Peking University(北京大学)
本文提出首个土耳其烤肉式代码生成任务及基准Lyra(Python嵌入SQL),实验表明GPT风格模型最佳,AST精确匹配准确率约24-25.5%,为代码生成带来新挑战。
2022-07-24 cs.AI cs.SE
Automatic Identification of Self-Admitted Technical Debt from Four Different Sources
University of Groningen(格罗宁根大学)
本文提出整合代码注释、提交消息、拉取请求和问题跟踪系统四类来源的 SATD 自动识别方法,F1 达 0.611,并基于 103 个开源项目揭示其分布、关键词与跨来源关系。
2023-04-21 cs.AI cs.SE
On Learning Meaningful Code Changes via Neural Machine Translation
College of William and Mary(威廉与玛丽学院);Università della Svizzera italiana (USI)(瑞士意大利语大学)
近年来,应用于源代码的深度学习(DL)技术已经兴起。研究人员已经利用DL自动化了几项开发和维护任务,例如编写提交消息,生成评论和检测漏洞等。将深度学习应用于源代码的一个长久的梦想是使非平凡的编码活动自动化。虽然已经朝着这个方向采取了一些步骤(例如,学习如何修复错误),仍然明显缺乏关于DL可以学习和自动应用的代码更改类型的经验证据。我们的目标是通过定量和定性地研究神经机器翻译(NMT)模型的能力来学习如何在拉取请求期间自动应用开发人员实现的代码更改,从而迈出重要的第一步。在实现拉取请求中提供的更改之前和之后,我们在一组236 k对代码组件上对NMT模型进行了训练和实验。我们表明,当应用在一个足够狭窄的背景下(即,在Pull请求更改之前/之后的小型/中型方法对),NMT可以在高达36%的情况下自动复制开发人员在Pull请求期间实现的更改。此外,我们的定性分析表明,该模型能够学习和复制各种有意义的代码更改,特别是重构和错误修复活动。我们的研究结果铺平了道路,新的研究领域的DL代码,如自动学习和重构的应用。
2019-01-25 cs.CL cs.LG cs.SE