[发明专利]基于深度学习的Java程序内部注释的生成方法及系统有效
申请号: | 202110449761.5 | 申请日: | 2021-04-25 |
公开(公告)号: | CN113076133B | 公开(公告)日: | 2023-09-26 |
发明(设计)人: | 陈林;汪值;李言辉 | 申请(专利权)人: | 南京大学 |
主分类号: | G06F8/73 | 分类号: | G06F8/73;G06F16/33;G06F40/289 |
代理公司: | 南京华鑫君辉专利代理有限公司 32544 | 代理人: | 王方超 |
地址: | 210000 江苏*** | 国省代码: | 江苏;32 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 基于 深度 学习 java 程序 内部 注释 生成 方法 系统 | ||
本发明公开基于深度学习的Java程序内部注释的生成方法及系统,所述方法包括如下步骤:获取Stars数排名靠前的项目,提取出对应的内部注释和方法语句列表;得到:注释,目标代码对;选择Verb‑dobj形式的注释;得到和目标代码段相关联的代码上下文;对注释、目标代码以及上下文进行预处理,得到:注释,目标代码,代码上下文组成的三元组数据集;对构建的数据集随机划分成训练集、验证集和测试集,同时构建编码器解码器网络;划分中的训练集用于模型训练,并且通过在验证集上进行评估,得到在验证集上效果最好的模型作为目标模型;用获得的目标模型对测试集中的数据进行预测,生成预测的注释。
技术领域
本发明涉及一种基于深度学习的Java程序内部注释的生成方法及系统,属于互联网技术领域。
背景技术
在软件开发和维护中,开发人员将大约59%的时间用于程序理解活动。源代码注释是软件的重要组成部分,它可以帮助开发人员理解代码并减少代码审查的难度。代码注释以自然语言描述的形式对代码操作或者程序语义进行描述。研究表明,带注释的代码比没有注释的代码更易于理解,并且代码注释也被视为评估代码质量的关键因素。
但是在软件开发活动中,由于时间压力和开发过程中的疏忽,开发人员并不总是有机会对新写的代码进行仔细注释或在更改代码时更新注释。在忽略代码注释的重要性和其他原因的同时,代码注释在代码更改期间通常会丢失或变得过时不匹配,并且在许多项目中存在已过时的注释。因此,自动生成代码注释可以帮助开发人员节省编写注释和理解其程序的时间。更多的情况下,开发者往往不会注释他们的代码,大约只有20%的方法中存在内部注释。针对这些问题的一种解决方法是通过学习的代码特征,自动的为这些没有注释的代码生成对应的描述注释。随着今年来深度学习方法的快速发展,受到神经机器翻译和序列生成方法的启发,可以通过从大规模的开源项目中提取代码和注释对,在大量数据的训练下优化模型性能,最终将代码输入到训练好的模型中即可输出需要的可描述性的注释信息。
现有的工作主要集中于研究方法摘要注释,并未关注方法内部注释的自动生成,将这些方法迁移到内部注释生成任务的效果并不明确,并且存在三个问题。首先,生成方法摘要注释更加容易,因为方法摘要往往是函数Javadoc中使用自然语言描述的第一个句子,明确地描述了整个方法的功能。然而相对于半结构化的Javadoc,Java的方法内部注释却表达的语义更加多样和复杂,部分注释和代码并不是直接相关,生成内部注释的难度相比于生成方法摘要更加困难。其次,在方法摘要注释生成任务中,方法摘要有明确的目标代码,也就是整个方法体,但是识别内部注释和对应的目标代码并不直接可以确定。第三,无法直接将摘要注释生成的方法迁移到内部注释上,因为只利用的对应的目标代码通常不足以生成内部注释,在不同项目中不同注释对应的目标代码可能是相似的除源代码片段外还应考虑更多信息,例如方法体中的其他代码。
发明内容
为克服现有技术存在的缺陷,解决上述技术问题,提出一种基于深度学习的Java程序内部注释的生成方法及系统。本发明的目的在于,为Java程序体内的代码片段自动生成内部注释,并且通过结合两种类型的信息(目标代码和上下文代码信息),通过采用深度学习的领域的编码器解码器网络来构建模型,并且采用预训练的语言模型CodeBERT来作为编码器,从而提高生成注释的质量,辅助开发者进行代码理解和阅读,提升代码的可维护性
本发明具体采用如下技术方案:基于深度学习的Java程序内部注释的生成方法,包括如下步骤:
步骤SS1:通过从GitHub中获取Stars数排名靠前的项目,然后通过静态分析工具JDT提取Java源码中的方法信息,然后识别出对应的方法信息,提取出对应的内部注释和方法语句列表;
步骤SS2:根据注释的位置,遍历方法信息中的语句,通过位置信息和数据流信息得到注释对应的语句列表,得到:注释,目标代码对;
步骤SS3:根据注释的类型进行过滤,选择Verb-dobj形式的注释;
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于南京大学,未经南京大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202110449761.5/2.html,转载请声明来源钻瓜专利网。