[发明专利]一种软件代码片段历史追溯的方法有效
申请号: | 201910801120.4 | 申请日: | 2019-08-28 |
公开(公告)号: | CN110532019B | 公开(公告)日: | 2021-03-12 |
发明(设计)人: | 邹艳珍;潘兴禄;曹英魁;谢冰 | 申请(专利权)人: | 北京大学 |
主分类号: | G06F8/70 | 分类号: | G06F8/70 |
代理公司: | 北京君尚知识产权代理有限公司 11200 | 代理人: | 司立彬 |
地址: | 100871 北*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 软件 代码 片段 历史 追溯 方法 | ||
1.一种软件代码片段历史追溯的方法,其步骤包括:
1)对于每一目标软件项目,从Git版本控制系统采集该目标软件项目的各版本的代码提交信息,得到对应目标软件项目的Git库,从Jira缺陷追踪系统采集该目标软件项目的Issue数据;然后将所述代码提交信息和所述Issue数据分别作为实体存入到图数据库neo4j中,其中如果一个代码提交信息中描述了相关的Issue id号,则建立该代码提交信息与对应Issue数据之间的关联;
2)对于一待查询的最新版本的代码片段及其所属的类型,首先扫描对应软件项目的Git库,定位该代码片段所属版本的类文件,然后获取该类文件的所有版本;然后对该类文件的各个版本代码构建抽象语法树AST,并且对相邻版本的两棵AST的节点进行匹配,获得相邻版本中相关代码片段的内容;
3)通过比较步骤2)中所得的相邻版本的代码片段是否相同,如果相同,过滤掉其中一个版本的代码片段;通过过滤保留发生更改的代码片段及对应版本的代码提交信息并以时间轴的方式展示,其中如果发生更改的代码片段对应的代码提交信息中包含Issue id号,则展示出关联的Issue信息。
2.如权利要求1所述的方法,其特征在于,所属的类型为类、方法或连续代码行。
3.如权利要求1或2所述的方法,其特征在于,步骤2)中,对相邻版本的两棵AST的节点进行匹配,获得相邻版本中相关代码片段的内容的方法为:首先定位代码片段所在最新版本的AST节点;然后使用GumTree工具对相邻两个版本的AST树的节点进行匹配,从最终版本的AST开始,从第i版本的AST定位到的节点匹配到第i-1版本AST上的节点,直到版本a没有匹配到的AST节点,则追溯到该版本a为止;最终得到该待查询代码片段在一系列版本所对应的AST节点。
4.如权利要求3所述的方法,其特征在于,定位代码片段所在最新版本的AST节点的方法为:对不同类型代码片段作不同处理,如果代码片段的类型是一个类,则通过类名匹配对应到类节点;如果代码片段的类型是一个方法,则通过方法签名匹配对应到方法节点;如果代码片段的类型是连续代码行,则通过字符串匹配方式定位到包含该连续代码行的方法节点。
5.如权利要求1所述的方法,其特征在于,如果待查询的代码片段为一个类或方法的代码片段,则首先构建该代码片段所在的最终版本的类文件的AST树,通过类名或者方法签名的匹配,定位到其所属的AST节点;之后根据AST节点匹配关系,追溯该AST节点在前一版本的AST中的匹配AST节点;依次类推,直至遇到某一版本找不到任何匹配的AST节点为止,之后将各版本追溯到的AST节点转换成对应的代码片段,得到该待查询代码片段在不同版本中对应的内容。
6.如权利要求1所述的方法,其特征在于,如果待查询的代码片段为一行或者多行的代码片段,则首先构建该代码片段所在文件最终版本的AST树,找到代码内容完全包含该代码片段的方法类型的AST节点;之后以AST节点为过渡,找到前一版本i所匹配的AST节点,对待查询的代码片段和前一版本i所匹配的AST节点对应的代码片段进行行匹配,匹配出待查询代码片段在版本i所对应的代码行;再对版本i所匹配的代码行和前一个版本i-1的AST节点对应的代码片段中的代码行进行匹配,匹配出代码片段在前一版本i-1所对应的代码行;依次类推,直到某一版本找不到匹配的AST节点或者其中匹配不到相应的代码行为止;然后根据各版本追溯到的AST节点对应的代码片段中所匹配到的代码行,得到该待查询代码片段在不同版本中对应的内容。
7.如权利要求1所述的方法,其特征在于,所述代码提交信息包括提交描述、提交者、提交时间。
8.如权利要求1所述的方法,其特征在于,步骤2)中,通过字符串匹配方式定位到该代码片段所属版本的类文件。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京大学,未经北京大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201910801120.4/1.html,转载请声明来源钻瓜专利网。
- 上一篇:代码提交方法及装置
- 下一篇:一种微服务编排的数据处理方法、装置及系统