首页 | 本学科首页   官方微博 | 高级检索  
相似文献
 共查询到20条相似文献,搜索用时 547 毫秒
1.
代码注释有助于提高程序的可读性和可理解性,而不断地创建和更新注释非常费时费力,这将影响对软件的理解、重用和维护.自动代码注释试图解决此类问题,其中代码的表示和文本生成是研究的核心问题.该文提出一种基于编码器-解码器结构的自动生成Java代码注释模型.方法将代码的顺序序列和代码结构作为单独的输入进行处理,允许模型学习Java方法的结构和语义;以一定的概率从模型生成的预测序列和真实词序列中采样作为下一步的输入,以提高模型的纠错恢复能力.通过与3种典型自动代码注释方法在11个Java项目上的对比实验,结果表明,提出的模型在BLEU得分上提升了16.1%,有助于提高自动代码注释的性能.  相似文献   

2.
针对代码注释较少导致软件项目可维护性降低、理解代码语义困难等问题,提出一种基于NMT模型的双编码器框架自动生成代码注释的方法.在该框架中,首先提取不同的代码特征信息;然后分别采用序列编码器和图编码器对不同的代码特征编码,引入注意力机制调整编码器输出向量,再对双编码器的输出向量综合处理;最终利用解码器对综合向量解码获得注释序列.为了验证带有注意力机制的双编码器模型效果,本文构建自动生成代码注释算法框架.实验表明,双编码器模型与文中的序列编码器和树编码器模型算法相比,在生成代码注释方面的结果评估得分上表现较好.通过BLEU-1、ROUGE-L和F1测评指标得分对比,验证了本文算法的有效性.  相似文献   

3.
代码注释可以帮助开发人员理解代码的功能和实现方法。代码注释生成模型可以自动识别代码中的关键信息,并生成相关注释,提高代码的可读性和可维护性。现有的代码注释生成模型通常只使用抽象语法树结构信息来表示代码,导致模型生成注释质量不高。提出一种融合多结构信息的代码注释生成模型,该模型在代码抽象语法树的基础上,增加了数据流图结构信息来表示代码。模型使用Transformer的编码器对抽象语法树序列进行编码,捕获代码全局信息。使用图神经网络对数据流图进行特征提取,提供变量之间的计算依赖关系等信息。然后使用跨模态注意力机制融合抽象语法树和数据流2种特征,经过Transformer的解码器生成相应的注释。实验结果表明,与6种主流模型相比,所提出的模型在Java和Python数据集上的BLEU、METEOR和ROUGE-L指标得分均有提高,生成的注释也具有良好的可读性。  相似文献   

4.
潘兴禄  刘陈晓  王敏  邹艳珍  王涛  谢冰 《软件学报》2023,34(9):4114-4131
软件代码注释生成是软件工程领域近期研究的一个重要问题.目前很多研究工作已经在包含大量<代码片段,注释语句>对的开源数据集上取得了较好效果.但在企业应用中,待注释的代码往往是一个软件项目库,其必须首先决策在哪些代码行上生成注释更好,而且待注释的代码片段大小、粒度各不相同,需要研究提出一种注释决策和生成一体化的、抗噪音的代码注释生成方法.针对这个问题,提出一个面向软件项目的代码自动注释生成方法CoComment.所提方法能够自动抽取软件项目文档中的领域基本概念,并基于代码解析与文本匹配进行概念传播和扩展.在此基础上,通过定位概念相关的代码行/段进行自动注释决策,最终利用模板融合概念和上下文生成具有高可读性的自然语言代码注释.目前CoComment已经在3个企业软件项目、超过4.6万条人工代码注释数据上进行了对比试验.结果表明,所提方法不仅能够有效地进行代码注释决策,其注释内容与现有方法相比也能够提供更多有益于理解代码的信息,从而为软件项目代码的注释决策和注释生成问题提供了一种一体化的解决方案.  相似文献   

5.
针对大多数软件代码注释数量少、质量低的问题,提出了一种自动生成代码注释的方法。利用Nicad检测出克隆代码,提取出这些代码以及相应的注释,对代码和注释分别进行精简优化,将注释与代码匹配映射,为代码自动生成注释。对5款软件中的代码注释进行手动验证并评估注释结果,实验结果发现28%的代码注释是良好的,同时将注释报告给5位专家,专家评估结果为两款软件的代码注释为良好。实验结果及用户调研表明,该方法对于自动生成代码注释是可行、有效的。  相似文献   

6.
代码注释作为软件中的重要组成部分,在软件维护、复用等领域中发挥着重要作用。代码注释自动生成技术旨在减轻人工编写注释的工作量,从而提高软件开发效率。现有的注释自动生成方法分为基于规则、文本摘要、数据驱动、主题模型、深度学习等层次。综述了代码注释自动生成的相关概念,对比总结各类代码注释自动生成方法,对近年来代码注释自动生成相关应用进行了梳理和总结,最后对注释自动生成所面临的挑战进行了分析,展望了该领域未来的研究。  相似文献   

7.
黄袁  贾楠  周强  陈湘萍  熊英飞  罗笑南 《软件学报》2018,29(8):2226-2242
代码注释是辅助编程人员理解源代码的有效手段之一.高质量的注释决策不仅能覆盖软件系统中的核心代码片段,还能避免产生多余的代码注释.然而,在实际开发中,编程人员往往缺乏统一的注释规范,大部分的注释决策都取决于个人经验以及领域知识.对于新手程序员来说,注释决策显然成为了一项重要而艰巨的任务.为了减少编程人员投入过多的精力在注释决策上,文章从大量的代码注释实例中学习出一种通用的注释决策规范,并提出了一种新颖的CommentAdviser方法用以辅助编程人员在代码开发过程中做出恰当的注释决策.由于注释决策与代码本身的上下文信息密切相关,因此,从当前代码行的上下文代码中提取代码结构特征以及代码语义特征作为支持注释决策的主要依据.然后,利用机器学习算法判定当前代码行是否为可能的注释点.在GitHub中的10个大型开源软件的数据集上评估了我们提出的方法,实验结果以及用户调研表明代码注释决策支持方法CommentAdviser的可行性和有效性.  相似文献   

8.
代码注释能够增强源代码的可读性、辅助软件开发过程,因此代码注释自动生成任务成为研究热点。然而现有工作大多只利用了源代码的序列信息或抽象语法树信息,未能充分捕捉代码语言特有的多种特征。为进一步利用源代码的多维度特征,提升注释生成的效果,构建基于多维度异质图结构的代码注释自动生成模型。利用异质图结构和图神经网络,将源代码的抽象语法树、控制流图、数据流图等进行融合并构建为具有多种节点和连边的异质表示图,以此表现代码的语义特征、序列特征、语法特征、结构特征等多维度特征。在真实数据集上的实验结果表明,该模型相较于Hybrid-DRL、NeuralCodeSum、SeqGNN等模型具有更好的效果,在BLEU-4、METEOR、ROUGE-L指标上分别最高提升1.6%、3.2%、3.1%,可获得更流畅、可读性更好的代码注释。  相似文献   

9.
代码注释可以帮助开发人员快速理解代码,降低代码维护成本。为了保留代码的结构信息,针对经典的Seq2Seq模型将代码的结构信息压缩为序列,导致结构信息丢失的问题,提出使用Tree-LSTM编码器直接将代码转化成抽象语法树进行编码,使注释生成模型能有效获取代码的结构信息,提升注释生成效果。采用基于注意力机制的Tree2Seq模型实现代码注释生成任务,避免了编码器端将所有输入信息压缩为固定向量,导致部分信息丢失的情况。通过在Java和Python 2种编程语言的数据集上进行实验,使用3种机器翻译常用的自动评测指标进行评估验证,并选取一部分测试数据进行了人工评估。实验结果表明,基于注意力机制的Tree2Seq模型能为解码器提供更全面且丰富的语义结构信息,为后续实验分析和改进提供指导。  相似文献   

10.
代码注释能够提高程序代码的可读性,从而提升软件开发效率并降低成本。现有的代码注释生成方法将程序代码的序列表示或者抽象语法树表示输入到不同结构的编码器网络,无法融合程序代码不同抽象形式的结构特性,导致生成的注释可读性较差。构建一种结构感知的混合编码模型,同时考虑程序代码的序列表示和结构表示,通过序列编码层和图编码层分别捕获程序代码的序列信息和语法结构信息,并利用聚合编码过程将两类信息融合至解码器。设计一种结构感知的图注意力网络,通过将程序代码的语法结构的层次和类型信息嵌入图注意力网络的学习参数,有效提升了混合编码模型对程序代码的复杂语法结构的学习能力。实验结果表明,与SiT基准模型相比,混合编码模型在Python和Java数据集上的BLEU、ROUGE-L、METEOR得分分别提高了2.68%、1.47%、3.82%和2.51%、2.24%、3.55%,能生成更准确的代码注释。  相似文献   

11.
李阵  钮俊  王奎  辛园园 《计算机应用》2018,38(3):812-817
对开源代码进行准确搜索是实现代码复用的前提。在基于关键字搜索的研究中,目前只关注匹配方法签名。结合源代码注释对方法功能的语义描述,提出结合代码注释的关键字搜索方法。通过生成源代码抽象语法树,从中识别方法签名与各类型注释等组合代码特征;将代码特征与查询语句分别用向量表示,并计算向量间的余弦相似度,然后制定针对搜索结果多特征权重分配的评分机制。根据评分对搜索结果进行排序,得到与查询语句相关的结果序列。实验结果表明,多个代码特征在不同权重影响下可以提升源代码搜索准确度。  相似文献   

12.
陈翔  于池  杨光  濮雪莲  崔展齐 《软件学报》2023,34(3):1310-1329
Bash是Linux默认的shell命令语言.它在Linux系统的开发和维护中起到重要作用.对不熟悉Bash语言的开发人员来说,理解Bash代码的目的和功能具有一定的挑战性.针对Bash代码注释自动生成问题提出了一种基于双重信息检索的方法 ExplainBash.该方法基于语义相似度和词法相似度进行双重检索,从而生成高质量代码注释.其中,语义相似度基于CodeBERT和BERT-whitening操作训练出代码语义表示,并基于欧式距离来实现;词法相似度基于代码词元构成的集合,并基于编辑距离来实现.以NL2Bash研究中共享的语料库为基础,进一步合并NLC2CMD竞赛共享的数据以构造高质量语料库.随后,选择了来自代码注释自动生成领域的9种基准方法,这些基准方法覆盖了基于信息检索的方法和基于深度学习的方法.实证研究和人本研究的结果验证了ExplainBash方法的有效性.然后设计了消融实验,对ExplainBash方法内设定(例如检索策略、BERT-whitening操作等)的合理性进行了分析.最后,基于所提方法开发出一个浏览器插件,以方便用户对Bash代码的理解.  相似文献   

13.
在如今的软件开发中, 开源软件的使用越来越普遍, 但是对大型开源软件的理解和维护仍然是一项复杂的工作. 开源软件通常缺乏完善的文档和注释, 想要完整的理解开源系统难度较大, 研究界产生了一种通过分析大型开源软件的源代码, 进而深入理解系统, 发现和修复系统漏洞的软件分析型任务. 源代码分析注释是软件分析型任务的一项重要产出, 它是一种以注释形式存在的细粒度代码分析报告, 数量庞大, 难以快速做出质量评价. 在传统的软件质量评价中, 对注释的评价通常局限于覆盖度和文本长度, 不能满足源代码分析注释质量评价的要求. 为了更好的评价源代码分析注释的质量, 本文结合现有的对代码注释质量评价的研究以及信息质量领域的评价方法, 提出了一种综合考虑客观质量属性和主观质量属性的质量评价框架. 结合实际的项目数据分析, 本文的方法可以更有效的检测出注释中的冗余以及无关内容, 发现相关质量问题, 从而对源代码分析注释进行更全面的质量评价.  相似文献   

14.
基于卷积神经网络的代码注释自动生成方法   总被引:1,自引:0,他引:1  
彭斌  李征  刘勇  吴永豪 《计算机科学》2021,48(12):117-124
自动化代码注释生成技术通过分析源代码的语义信息生成对应的自然语言描述文本,可以帮助开发人员更好地理解程序,降低软件维护的时间成本.大部分已有技术是基于递归神经网络(Recurrent Neural Network,RNN)的编码器和解码器神经网络实现的,但这种方法存在长期依赖问题,即在分析距离较远的代码块时,生成的注释信息的准确性不高.为此,文中提出了一种基于卷积神经网络(Convolutional Neural Network,CNN)的自动化代码注释生成方法来缓解长期依赖问题,以生成更准确的注释信息.具体而言,通过构造基于源代码的CNN和基于AST的CNN来捕获源代码的语义信息.实验结果表明,与DeepCom和Hybrid-DeepCom这两种最新的方法相比,在常用的BLEU和METEOR两种评测指标下,所提方法能更好地生成代码注释,且执行时间更短.  相似文献   

15.
徐少峰  潘文韬  熊赟  朱扬勇 《计算机工程》2020,46(2):304-308,314
在软件开发过程中,性能良好的代码注释工具能够提高开发效率并降低维护成本。部分研究者将代码注释自动生成看作将源代码翻译成自然语言注释的翻译任务,但仅考虑源代码的序列信息而忽略了代码内部的结构特性。为此,在常见端到端翻译模型的基础上,利用代码抽象语法树将源代码的结构信息嵌入到编码器解码器翻译模型中,提出一种基于结构感知的双编码器解码器模型,该模型综合考虑源代码的序列信息与代码内部的结构特性。在真实数据集上的实验结果表明,相比PBMT、Seq2seq模型,该模型的BLEU得分较高,且生成的注释更准确和易读。  相似文献   

16.
现有的代码注释生成技术大多针对方法粒度,而对于面向对象程序,类才是其核心组成,因此对类生成注释是很有必要的。针对这一问题,提出一种结合类原型与深度学习技术对类生成注释的方法。首先,确定类原型并选择对应类注释模板;其次,提取类中信息填充模板,对类中的方法通过双编码器模型训练得到方法代码注释。实验结果表明,方法粒度上提出的双编码器模型在方法代码注释生成的结果评估中表现较好,类粒度的注释准确性较高。  相似文献   

17.
陈翔  杨光  崔展齐  孟国柱  王赞 《软件学报》2021,32(7):2118-2141
在软件的开发和维护过程中,与代码对应的注释经常存在缺失、不足或者与代码实际内容不匹配等问题,但手工编写代码注释对开发人员来说费时费力,且注释质量难以保证,因此亟需研究人员提出有效的代码注释自动生成方法.代码注释自动生成问题是当前程序理解研究领域的一个研究热点,对该问题进行了系统综述.主要将已有的自动生成方法细分为3类:...  相似文献   

18.
本文基于计算机挖掘软件源代码注释数量与质量偏低的问题,设计了代码注释自动生成方法.同时,对本文设计方法与Clocom法进行了实验对比分析,结果表明,相比Clocom法,本文方法所检测出的克隆代码类型更多,产量明显较高;自动生成的代码注释质量都明显较高,代码注释质量较好,总之,本文设计方法下计算机挖掘软件自动生成的代码注...  相似文献   

19.
王潮  徐卫伟  周明辉 《软件学报》2024,35(2):513-531
代码注释作为辅助软件开发群体协作的关键机制,被开发者所广泛使用以提升开发效率.然而,由于代码注释并不直接影响软件运行,使其常被开发者忽视,导致出现代码注释质量问题,进而影响开发效率.代码注释中存在的质量问题会影响开发者理解相关代码,甚至可能产生误解从而引入代码缺陷,因此这一问题受到研究者的广泛关注.采用系统文献调研,对近年来国内外学者在代码注释质量问题上的研究工作进行系统的分析.从代码注释质量的评价维度、度量指标以及提升策略这3个方面总结研究现状,并提出当前研究所存在的不足、挑战及建议.  相似文献   

20.
针对智能合约开发效率不高、安全漏洞频发等问题,提出了一种基于代码注释调优的智能合约自动生成方法。首先结合智能合约代码关联注释的语义信息,构建智能合约聚类分析模型,实现功能类似智能合约的快速精准聚类;接着划分注释关联的合约层、函数层、接口层等不同层次智能合约知识库,以聚类后的代码及注释信息为基础,构造多样化Prompt特征提示语句数据集;最后,以大语言模型ChatGLM2-6B为基础,借助P-Tuning v2微调技术,实现特定需求智能合约的自动生成。为检测该方法的有效性,借助双语互译质量评估辅助工具BLEU和代码安全检测工具Mythril与VaaS,同现有方法进行了对比。实验结果表明,该方法生成的代码BLEU平均值提升了13%左右,代码安全性提高6%左右。此方法将代码注释信息融入智能合约的自动生成,有效提升了智能合约的质量,为安全可靠智能合约的高效开发提供了一种新的方法。  相似文献   

设为首页 | 免责声明 | 关于勤云 | 加入收藏

Copyright©北京勤云科技发展有限公司  京ICP备09084417号