Analyzing Code Comments to Boost Program Comprehension
我们正在尝试寻找源代码注释,帮助程序员理解源代码的重要部分。这样的例子之一是解释分配零作为"清除"缓冲区的一种方式。这样的注释对程序员来说是无价的,正确地识别它们将有很大的帮助。为了实现这一目标,我们开发了一种方法来发现源代码中的解释性代码注释。我们首先提出了11种不同的代码注释类别。然后,我们开发了一个基于决策树的分类器,可以识别解释性评论,准确率为60%,召回率为80%。我们分析了2,000个GitHub项目,这些项目都是用两种语言编写的:Java和Python。这个任务是新颖的,因为它关注于方法或函数中的微观注释("本地注释"),而不是之前关注于API或方法级注释的工作。我们还研究了如何在不同的项目中使用不同类别的注释。我们的主要发现是,有两种主要类型的评论:前置条件和后置条件。我们的研究结果还表明,许多英语代码注释具有一定的语法结构,在不同的项目中是一致的。
2022-03-17 cs.SE
What Makes a Good TODO Comment?
本研究针对开源项目中大量低质量TODO注释的问题,调研了TODO注释质量的四个维度,提出高质量TODO识别标准,构建的深度学习方法可有效评估注释质量,助力提升开发效率与代码质量。
2025-03-19 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
Automated Test Generation from Program Documentation Encoded in Code Comments
本文提出一种利用代码注释文档的测试生成技术,将注释中的行为作为测试目标进行搜索,实验表明该方法能测试覆盖率驱动方法遗漏的行为并发现未知故障。
2025-04-29 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
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?
本研究利用LLM作为评判者分类评审评论,发现LLM与人类评审者各有优劣,且可读性、缺陷和维护性相关评论的解决率高于设计类评论,表明多数LLM生成评论具有可执行性。
2025-10-06 cs.SE
New developer metrics: Are comments as crucial as code contributions?
近年来,开源代码开发已经变得非常普遍。因此,开源软件平台也变得流行起来,来自不同地点的数百万开发人员能够为相同的项目做出贡献。在这些平台上,关于它们的各种知识都是从用户活动中获得的。这些信息以开发人员指标的形式使用,以解决各种挑战。在这项研究中,我们提出了新的开发人员指标,包括评论和与问题相关的活动,需要更少的信息。我们的结论是,对项目的任何功能进行评论都可以与代码贡献一样有价值。此外,除了定量指标外,仅基于活动存在的指标也显示出相当大的结果。我们看到,这些问题在识别用户贡献方面至关重要。即使一个开发人员只对一个项目的一个问题做出了贡献,开发人员和项目之间的关系也是紧密的。由于我们数据集的稀疏性问题,命中分数相对较低;即使如此,我们相信我们已经提出了可改进和显着的新开发人员指标。
2020-07-27 cs.SE
DocChecker: Bootstrapping Code Large Language Model for Detecting and Resolving Code-Comment Inconsistencies
本文提出DocChecker,一种基于深度学习的工具,用于检测和纠正代码-注释不一致,并生成合成注释,在ICCD任务上达到72.3%准确率,在代码摘要任务上BLEU-4为33.64,超越GPT 3.5和CodeLlama。
2024-02-03 cs.SE
Deep Learning to Detect Redundant Method Comments
University of Edinburgh(爱丁堡大学);University College London(伦敦大学学院)
软件中的注释对于维护和重用至关重要。但除了规范性的建议,几乎没有实际的支持或量化的理解是什么使评论有用。在本文中,我们介绍了识别注释的任务,这些注释对它们要记录的代码没有信息。为了解决这个问题,我们从代码中引入了注释蕴涵的概念,高蕴涵表示注释的自然语言语义可以直接从代码中推断出来。虽然不是所有的隐含注释都是低质量的,但是太容易推断的注释,例如,重述代码的注释,被软件风格的权威人士广泛禁止。在此基础上,我们开发了一个名为CRAIC的工具,评分方法级的冗余评论。然后,开发人员可以扩展或删除高度冗余的注释。CRAIC使用深度语言模型来利用大型软件语料库,而不需要昂贵的蕴涵手动注释。我们表明,CRAIC可以执行的评论蕴涵任务与人类的判断很好的协议。我们的研究结果也对文档工具产生了影响。例如,我们发现Javadoc中的常见标记从代码中的可预测性至少是非Javadoc语句的两倍,这表明Javadoc标记的信息量比更自由的注释少
2018-06-12 cs.CL cs.SE
Measuring how changes in code readability attributes affect code quality evaluation by Large Language Models
本文通过对9个LLM实施移除注释、混淆标识符和消除代码坏味的准实验,发现LLM能敏感识别可读性变化并捕捉语义一致性,但存在一定响应振荡。
2025-07-09 cs.SE
HatCUP: Hybrid Analysis and Attention based Just-In-Time Comment Updating
在更改代码时,开发人员有时会忽略更新相关注释,从而带来不一致或过时的注释。这些注释增加了程序理解的成本,大大降低了软件的可维护性。研究人员已经提出了一些解决方案,如CUP和HEBCUP,它们可以有效地更新简单代码更改(即修改单个令牌)的注释,但对于复杂的代码更改则不够好。在本文中,我们提出了一种方法,命名为HatCUP(混合分析和注意力的评论更新器),提供了一个新的机制,评论更新任务。HatCUP注重混合分析和信息。首先,HatCUP考虑代码结构变化信息,引入结构引导的注意力机制,结合代码变化图分析和乐观数据流依赖分析。HatCUP采用普遍流行的基于RNN的编码器-解码器架构,将代码编辑、语法、语义和结构代码更改以及旧注释作为输入,并生成当前代码片段中更改的结构化表示。此外,HatCUP提出了一种新的编辑或非编辑机制来模仿人类的编辑行为,而不是直接生成新的评论,方法是生成一系列编辑动作,并构建一个修改的RNN模型来集成新开发的组件。在一个流行的数据集上进行的评估表明,HatCUP在准确率、召回率和METEOR方面分别比最先进的基于深度学习的方法(CUP)高出53.8%、31.3%和14.3%。HatCUP与基于启发式算法的方法(HEBCUP)相比,具有更好的整体性能。
2022-05-02 cs.SE
Harnessing Large Language Models for Curated Code Reviews
本文提出一种基于大型语言模型的数据集精选流水线,用于提升代码审查数据集质量,并验证其能改善评论生成与代码精化等下游任务表现。
2025-02-05 cs.SE
A Qualitative Investigation into LLM-Generated Multilingual Code Comments and Automatic Evaluation Metrics
Delft University of Technology(代尔夫特理工大学)
本研究针对大语言模型训练以英语为中心的问题,分析五种前沿代码模型在五门语言下生成代码注释的错误,构建26类错误分类体系与1.25万条标注数据集,发现现有神经评估指标无法可靠判定多语言代码注释的正确性。
2025-05-21 cs.AI 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
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
MESIA: Understanding and Leveraging Supplementary Nature of Method-level Comments for Automatic Comment Generation
Peking University(北京大学);Key Lab of HCST (PKU), MOE(教育部HCST重点实验室(北京大学))
本文提出名为MESIA的新指标评估方法级注释的补充信息量,发现减少训练集中低补充信息注释可提升模型生成高补充信息注释的能力,并指出当前评估缺乏合适真实基准的问题。
2024-03-26 cs.AI cs.SE
SecureReviewer: Enhancing Large Language Models for Secure Code Review through Secure-aware Fine-tuning
1 State Key Laboratory of Complex \& Critical Software Environment, School of Computer Science;Engineering, Beihang University, China
提出SecureReviewer方法,通过构建定制数据集、安全感知微调策略和集成RAG技术,增强了LLM在代码审查中识别和解决安全问题的能力,并引入SecureBLEU指标,在检测准确性和评论质量上优于基线。
2025-10-30 cs.AI cs.CL 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