[发明专利]一种C语言项目依赖信息管理和可视化的方法及系统在审
申请号: | 202110696402.X | 申请日: | 2021-06-23 |
公开(公告)号: | CN113448553A | 公开(公告)日: | 2021-09-28 |
发明(设计)人: | 潘敏学;张天;彭彦鑫 | 申请(专利权)人: | 南京大学 |
主分类号: | G06F8/30 | 分类号: | G06F8/30;G06F8/20;G06F8/41;G06F16/28;G06F16/901;G06F16/903;G06F16/9038 |
代理公司: | 南京知识律师事务所 32207 | 代理人: | 张苏沛 |
地址: | 210023 江苏*** | 国省代码: | 江苏;32 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 语言 项目 依赖 信息管理 可视化 方法 系统 | ||
1.一种C语言项目依赖信息管理和可视化的方法,其特征在于,包括:
提取项目中单个C语言文件的信息;
将每个文件提取到的信息合并保存到关系型数据库中;
基于关系型数据库,根据用户的查询提供多种依赖关系结果;
获取依赖图信息并保存至图数据库;
基于图数据库,根据用户的查询提供多种可视化的依赖关系图。
2.根据权利要求1所述的一种C语言项目依赖信息管理和可视化的方法,其特征在于,所述提取项目中单个C语言文件的符号信息,包括:
提取单个C语言文件中的符号信息,对C语言文件中出现的每个符号,提取该符号的全限定名、符号类型,所述符号类型包括函数符号、变量符号、宏符号、类型符号和文件符号;
提取单个C语言文件中的引用信息,对C语言文件中出现的符号引用,提取该引用的对应符号的全限定名、所在文件、所在位置和引用类型,所述所在位置包括行号和列号,所述引用类型包括声明、定义、使用和宏,所述宏包含定义、取消定义、宏展开和条件分支。
3.根据权利要求2所述的一种C语言项目依赖信息管理和可视化的方法,其特征在于:
所述符号的全限定名包括文件名、符号名、偏移量、限定符和分割符,所述文件名指该符号的定义所在的文件路径,所述偏移量为该符号的定义位置相对于文件开头的偏移字符数,所述限定符为标识该局部符号所在的局部命名空间的其他符号的符号名,所述分隔符包括正斜杠分隔符、双冒号分隔符、#分隔符和@分隔符,其中:文件名与限定符、文件名与符号名、偏移量与限定符、偏移量与符号名之间用正斜杠分隔符隔开,限定符与限定符、限定符与符号名之间用双冒号分隔符隔开,文件名与偏移量之间用@分隔符隔开,#分隔符、@分隔符还出现在符号名之前,用于标识符号的类型;
所述提取该符号的全限定名,包括:
提取函数符号的全限定名,格式为“文件名/函数名”,文件名是指函数定义所在的文件名,如果未找到函数定义,那么没有文件名和正斜杠分隔符;
提取变量符号的全限定名,所述变量包括全局变量和局部变量,全局变量的全限定名格式为“文件名/变量名”,局部变量的全限定名格式为“文件名@偏移量/限定符::变量名”,其中,如果该局部变量定义在一个嵌套的命名空间中,“限定符::”可重复多次,文件名和偏移量是指变量定义所在的文件名和位置,如果未找到变量定义,那么没有文件名、偏移量、@分隔符和正斜杠分隔符,函数的参数视为定义在该函数命名空间中的局部变量,结构体、联合体和枚举型中的成员视为定义在该类型命名空间中的局部变量;
提取宏符号的全限定名,宏符号的全限定名格式为“#宏符号名”;
提取类型符号的全限定名,全局类型的全限定名格式为“文件名/限定符::类型名”,对于结构体、联合体和枚举型,类型名前固定有一组限定符和双冒号分隔符,分别是“struct::”、“union::”、“enum::”,全局类型符号的全限定名没有其他的限定符,局部类型符号的全限定名存在其他的限定符,局部类型的全限定名格式为“文件名@偏移量/限定符::类型名”,其中,如果该局部类型定义在一个嵌套的命名空间中,“限定符::”可重复多次,文件名和偏移量是指该类型的定义所在的文件名和位置,如果未找到类型的定义,那么没有文件名、偏移量、@分隔符和正斜杠分隔符;
提取文件类型符号的全限定名,文件符号的全限定名格式为“@文件路径”。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于南京大学,未经南京大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202110696402.X/1.html,转载请声明来源钻瓜专利网。