[发明专利]一种基于代码更改关键类判定的代码提交注释预测方法有效
申请号: | 201911167191.X | 申请日: | 2019-11-25 |
公开(公告)号: | CN110908709B | 公开(公告)日: | 2023-05-02 |
发明(设计)人: | 郑子彬;时福源;陈湘萍;李全忠 | 申请(专利权)人: | 中山大学 |
主分类号: | G06F8/73 | 分类号: | G06F8/73;G06F16/35 |
代理公司: | 广州粤高专利商标代理有限公司 44102 | 代理人: | 林丽明 |
地址: | 510275 广东*** | 国省代码: | 广东;44 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 基于 代码 更改 关键 判定 提交 注释 预测 方法 | ||
本发明公开一种基于代码更改关键类判定的代码提交注释预测方法,包括根据修改前的代码、修改后的代码与代码更改内容提取出结构性耦合信息作为代码结构特征,将代码更改内容作为代码修改特征;将代码结构特征与代码修改特征作为LightGBM的输入,判断此次代码更改中的关键类和非关键类;在此基础上将关键类作为transformer模型的输入,预测生成提交注释信息。本发明本发明通过识别代码修改中的关键类再对其进行提交注释信息的预测,提高了提交注释预测的有效性和准确性。
技术领域
本发明涉及软件维护领域,尤其涉及一种基于代码更改关键类判定的代码提交注释预测方法。
背景技术
为了代码管理与维护,现在大量的软件项目都托管在GitHub,SourceForge等代码托管平台。程序员在对软件代码进行修改之后,并将修改内容提交到托管平台时,通常会使用commit message来表示更改信息或是新增加的功能。commit message可以帮助其他用户迅速了解项目修改内容,在开源社区/大型项目中尤为重要。而有些程序员开发时间紧迫或并无良好的commit message书写习惯,导致许多项目版本迭代时没有提交注释,造成代码更改难以理解。
因此,帮助程序员找出修改代码的影响范围,并自动生成准确简洁的提交注释信息,一直是软件维护领域广受关注的课题。
发明内容
本发明为克服上述现有技术所述的至少一种缺陷(不足),提供一种基于代码更改关键类判定的代码提交注释预测方法。
本发明旨在至少在一定程度上解决上述技术问题。
为了达到上述技术效果,本发明的技术方案如下:
一种基于代码更改关键类判定的代码提交注释预测方法,包括:
S10输入代码提交数据,从代码提交数据中修改前的代码、修改后的代码与代码修改内容中提取代码实体间结构耦合特征作为代码结构特征;
S20从代码更改内容中获取代码修改特征;
S30对代码修改内容进行分类标注,将代码核心的修改内容标注为代码更改关键类,将为了完成核心修改所进行的依赖性改动内容标注为代码更改非关键类;
S40将代码结构特征、代码修改特征及分类标注输入机器学习框架LightGBM训练,获取判别代码更改关键类与代码更改非关键类的最优模型作为代码更改关键类预测模型;
S50筛选出具有书写规范且具有准确表达代码更改内容的注释信息的代码输入代码更改关键类预测模型,获取代码更改内容的代码更改关键类或代码更改非关键类;
S60将代码更改内容的代码更改关键类输入深度学习框架分词、编码、解码并分类处理,获得代码更改关键类的概率矩阵,并以其与代码的提交注释的均方误差作为损失函数进行训练,以均方误差最小的深度学习框架为提交注释预测模型;
S70将待预测的代码数据输入训练好的提交注释预测模型获取代码注释的预测结果。
优选地,所述S10的具体步骤为:
S101定义提交修改中当前实体引用其他实体的次数为入度,提交修改中其他实体引用当前实体的次数为出度;
S102将代码提交数据分类整理为修改前的代码、修改后的代码、代码修改内容;
S103以分类后的修改前的代码、修改后的代码、代码修改内容为不同的代码实体,提取代码实体间结构的耦合特征。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于中山大学,未经中山大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201911167191.X/2.html,转载请声明来源钻瓜专利网。
- 上一篇:器件测试方法、装置及电子设备
- 下一篇:车用控制器热测试系统及方法