买专利卖专利找龙图腾,真高效! 查专利查商标用IPTOP,全免费!专利年费监控用IP管家,真方便!
申请/专利权人:佛山科学技术学院
摘要:本发明属于软件工程技术、计算机软件维护领域,本发明提供了一种代码依赖的检索方法及系统,获取代码库和代码库之间的依赖信息,得到原始节点;对原始节点进行初始化路径公共交汇指针,得到初始节点;对初始节点标记R节点和B节点,得到初始标记节点;对初始标记节点进行初始化路径公共交汇指针,得到路径节点;指定代码库,在路径节点中检索出指定代码库的所有代码依赖路径,实现了在准确检索出指定代码库的所有代码依赖路径的前提下,仅使用少量的存储,缓解了时间复杂度受节点数量影响的问题,提高了检索代码依赖路径的效率。
主权项:1.一种代码依赖的检索方法,其特征在于,所述方法包括以下步骤:S100,获取代码库和代码库之间的依赖信息,得到原始节点;S200,对原始节点进行初始化路径公共交汇指针,得到初始节点;S300,对初始节点标记R节点和B节点,得到初始标记节点;S400,对初始标记节点进行初始化路径公共交汇指针,得到路径节点;S500,指定代码库,在路径节点中检索出指定代码库的所有代码依赖路径;在S100中,获取代码库和代码库之间的依赖信息,得到原始节点的方法为:S101,获取代码库以及代码库之间的依赖信息,记获取的代码库总数量为N,其中,代码库为一个封装的程序文件集合,代码库之间的依赖信息为任意一个代码库依赖与其不同的代码库的信息集合,代码库A依赖代码库B表示代码库A在其内部调用了代码库B,其中,代码库A、代码库B指任意一个代码库,但代码库A与代码库B不为同一个代码库;S102,将N个代码库作为N个节点,节点中保留对应代码库的标识信息和代码库的名称,并为每个节点设置一个路径公共交汇指针,其中,一个代码库的标识信息能够唯一标识一个代码库,路径公共交汇指针用来存储代码库的标识信息的一个变量,节点的路径公共交汇指针指向某个节点表示节点的路径公共交汇指针为某个节点的标识信息,节点的标识信息为该节点对应的代码库的标识信息;S103,根据代码库之间的依赖信息,对N个代码库依次执行S104;S104,将该代码库对应的节点暂时记为ActNode,获取该代码库依赖的所有代码库并将其对应的节点暂时记为DepNode,将所有DepNode的集合暂时记为DepNodes,执行S105;S105,在ActNode中保留DepNodes中所有DepNode中的标识信息,并将这些标识信息称为ActNode的依赖关系,即与ActNode存在依赖关系的节点为DepNodes中的所有DepNode,执行S106;S106,对DepNodes中的所有DepNode依次执行S107;S107,在该节点中保留ActNode的标识信息,并将该标识信息称为该节点的被依赖关系,即与该节点存在被依赖关系的节点为ActNode;S108,执行完S103,得到的N个代码库对应的N个节点为所述原始节点;在S200和S400中,所述初始化路径公共交汇指针的方法具体为:S201,对所有不是B节点的节点,将其路径公共交汇指针设为空,其中,空表示路径公共交汇指针存储的值为None,None表示不指向任意一个节点;S202,将不存在依赖关系的节点的路径公共交汇指针指向节点自身,对不存在依赖关系的节点依次执行S203;S203,检查该节点是否为R节点,若是R节点,则对与该节点存在被依赖关系且路径公共交汇指针指向该节点的节点,设其路径公共交汇指针为该节点的路径公共交汇指针相同,并对其依次执行S204,对与该节点存在被依赖关系的其余节点依次执行S205,若不是R节点,则对与该节点存在被依赖关系的节点依次执行S205,其中,两个节点的路径公共交汇指针相同表示两个节点的路径公共交汇指针指向同一个节点;S204,对与该节点存在被依赖关系的节点依次执行S205;S205,检查该节点的路径公共交汇指针是否为空,若不为空,则该节点执行完毕,若为空,则执行S206;S206,检查与该节点存在依赖关系的节点的总数量是否等于1,若等于1,则设该节点的路径公共交汇指针为与该节点存在依赖关系的节点的路径公共交汇指针相同,执行S203,若不等于1,则执行S207;S207,检查与该节点的存在依赖关系的节点中,是否存在路径公共交汇指针为空的节点,若存在,则该节点执行完毕,若不存在,则执行S208;S208,检查与该节点存在依赖关系的节点的路径公共交汇指针是否都相同,若相同,则设该节点的路径公共交汇指针为与该节点存在依赖关系的节点的路径公共交汇指针相同,执行S203,若不相同,则将该节点的路径公共交汇指针指向节点自身,执行S203;在S300中,所述对初始节点标记R节点和B节点,得到初始标记节点的方法为:S301,对初始节点使用LinearDeterministicGreedypartitioning算法进行分组,得到S个组,其中,S为正整数;S302,计算S个组的分叉率F,第i组的分叉率为Fi=1-PiQi,其中,i为正整数且i小于或等于S,Pi为第i组节点中路径公共交汇指针指向路径公共交汇点的节点总数量,Qi为第i组的节点总数量,路径公共交汇点定义为被一个以上的路径公共交汇指针指向的节点;S303,对S个组中分叉率高于平均交叉率的组,将其划分到SC类中,得到SC类中有SS个组,其中,平均分叉率Favg的计算方法为,SS为大于等于0的整数;S304,对SC类SS个组中所有的路径公共交汇点标记为R节点,对每一个R节点所在组路径公共交汇指针指向同一组R节点的节点,将其标记为B节点,最终得到的N个节点为所述初始标记节点,其中,N个节点包括标记过的节点和未标记过的节点。
全文数据:
权利要求:
百度查询: 佛山科学技术学院 一种代码依赖的检索方法
免责声明
1、本报告根据公开、合法渠道获得相关数据和信息,力求客观、公正,但并不保证数据的最终完整性和准确性。
2、报告中的分析和结论仅反映本公司于发布本报告当日的职业理解,仅供参考使用,不能作为本公司承担任何法律责任的依据或者凭证。