[发明专利]一种Git仓库文件注解系统的注解传递方法有效
| 申请号: | 201910039534.8 | 申请日: | 2019-01-16 |
| 公开(公告)号: | CN109857390B | 公开(公告)日: | 2022-05-31 |
| 发明(设计)人: | 张卫丰;袁聚懋 | 申请(专利权)人: | 南京邮电大学 |
| 主分类号: | G06F8/30 | 分类号: | G06F8/30 |
| 代理公司: | 南京纵横知识产权代理有限公司 32224 | 代理人: | 董建林 |
| 地址: | 210003 江苏*** | 国省代码: | 江苏;32 |
| 权利要求书: | 查看更多 | 说明书: | 查看更多 |
| 摘要: | |||
| 搜索关键词: | 一种 git 仓库 文件 注解 系统 传递 方法 | ||
1.一种Git仓库文件注解系统的注解传递方法,其特征在于,包括以下步骤:
S1,将项目代码转化为中间表示,通过静态分析框架将项目代码转化为框架形式的中间表示,再构建完整的函数调用关系图,最终将每个变量和函数都转化为框架形式的中间表示,并按照程序的逻辑对中间表示进行组织;
S2,加载所述项目代码的所有注解,在数据库中将所述项目代码的所有注解加载到程序的内部缓存中;
S3,将所述注解与中间表示进行绑定,通过对比所述注解的位置信息和中间表示的位置信息,将位置信息相同的变量和注解进行绑定;
S4,通过数据流传递注解,通过数据流将已进行绑定的注解传递给其他的变量或函数;
S5,更新传递后的注解到数据库,将注解传递到其它的变量或函数进行绑定后,遍历项目的所有代码,将传递的注解加入一个Set集合中,再将Set集合中的所有注解插入到数据库中;
步骤S3中,将所述注解与中间表示进行绑定的方法为:首先,取变量的位置信息作为Key;然后,在程序的内部缓存中查询是否存在于该Key的位置信息对应的注解,若存在注解,则将该注解与所述变量进行绑定;若不存在注解,则说明所述变量不存在注解;最后,遍历项目的所有代码,将所有的注解和对应的变量进行绑定;
步骤S4中,通过数据流传递注解的方法为:在传递注解的过程中,通过数据流对程序语句进行逐 条分析,若当前语句中存在之前绑定了注解的变量,则将之前变量的注解与当前语句中对应的变量进行绑定;若当前语句的变量已经绑定了注解,则将该变量及其注解更新到当前语句的输出集合中,并将当前语句的输出集合作为下一条语句的输入集合对下一条语句进行分析。
2.根据权利要求1所述的一种Git仓库文件注解系统的注解传递方法,其特征在于,步骤S1中,在构建完整的函数调用关系图之后,还需要设定一个虚拟的函数入口,用于动态地调用所有的分析方法。
3.根据权利要求1所述的一种Git仓库文件注解系统的注解传递方法,其特征在于,步骤S2中,加载所述项目代码的所有注解,具体方法为:以源码文件的名称为查询条件,使用SQL语句在数据库中查询出所有符合条件的注解,再将所有符合条件的注解缓存到本地的一个Map集合中;在缓存所述注解的过程中,需要对所述注解的位置信息采用反序列化操作。
4.根据权利要求1所述的一种Git仓库文件注解系统的注解传递方法,其特征在于,在分析程序语句时,每条所述语句均具备输入集合和输出集合,当前语句的输入集合即为上一条语句的输出集合,当前语句的输出集合即为下一条语句的输入集合;所述输入集合内包含有当前语句及当前语句之后所有语句存在的变量;在将当前语句的变量及其注解更新到当前语句的输出集合的过程中,需要用当前语句的变量将当前语句输入集合中与该变量的注解重复的变量替换掉。
5.根据权利要求1所述的一种Git仓库文件注解系统的注解传递方法,其特征在于,步骤S5中,在将传递后的注解更新到数据库时,首先要传入原始注解到数据库对注解的版本号进行定位;再将所述Set集合中所有传递过来的注解都依照所述版本号插入数据库。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于南京邮电大学,未经南京邮电大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201910039534.8/1.html,转载请声明来源钻瓜专利网。





