System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技术实现步骤摘要】
本专利技术属于软件工程技术、计算机软件维护领域,具体涉及一种代码依赖的检索方法。
技术介绍
1、在现代化软件开发的时代背景下,通过依赖其他代码库,开发人员得以实现代码的重用和共享,从而避免了不必要的重复工作,并显著提高了开发效率与代码质量。如今的软件开发项目都依赖着大量的代码库,相互之间的调用复杂。当一个代码库出现安全或缺陷等问题时,其他依赖或间接依赖该代码库的代码库会受其影响,我们需要检索出一个代码库依赖或间接依赖的所有代码库,从而及时发现问题并维护。因此,在建立代码库之间庞大的依赖关系后,代码依赖的检索技术是其中的关键问题,但是现有的方法,如深度优先遍历方法和广度优先遍历等方法,它们时间复杂度会受节点数量的影响,对于代码依赖的检索问题来说需要耗费大量的时间,因此需要一种减少节点数量对检索时间影响并且能够准确找到所有依赖或间接依赖代码库的方法。
技术实现思路
1、本专利技术的目的在于提出一种代码依赖的检索方法,以解决现有技术中所存在的一个或多个技术问题,至少提供一种有益的选择或创造条件。
2、本专利技术提供一种代码依赖的检索方法,获取代码库和代码库之间的依赖信息,得到原始节点;对原始节点进行初始化路径公共交汇指针,得到初始节点;对初始节点标记r节点和b节点,得到初始标记节点;对初始标记节点进行初始化路径公共交汇指针,得到路径节点;指定代码库,在路径节点中检索出指定代码库的所有代码依赖路径。
3、为了实现上述目的,根据本专利技术的一方面,提供一种代码依赖的检
4、s100,获取代码库和代码库之间的依赖信息,得到原始节点;
5、s200,对原始节点进行初始化路径公共交汇指针,得到初始节点;
6、s300,对初始节点标记r节点和b节点,得到初始标记节点;
7、s400,对初始标记节点进行初始化路径公共交汇指针,得到路径节点;
8、s500,指定代码库,在路径节点中检索出指定代码库的所有代码依赖路径。
9、进一步地,在s100中,获取代码库和代码库之间的依赖信息,得到原始节点的方法为:
10、s101,获取代码库以及代码库之间的依赖信息,记获取的代码库总数量为n,其中,代码库为一个封装的程序文件集合,代码库之间的依赖信息为任意一个代码库依赖与其不同的代码库的信息集合,代码库a依赖代码库b表示代码库a在其内部调用了代码库b,其中,代码库a、代码库b指任意一个代码库,但代码库a与代码库b不为同一个代码库;
11、s102,将n个代码库作为n个节点,节点中保留对应代码库的标识信息和代码库的名称,并为每个节点设置一个路径公共交汇指针,其中,一个代码库的标识信息能够唯一标识一个代码库,路径公共交汇指针用来存储代码库的标识信息的一个变量,节点的路径公共交汇指针指向某个节点表示节点的路径公共交汇指针为某个节点的标识信息,节点的标识信息为该节点对应的代码库的标识信息;
12、s103,根据代码库之间的依赖信息,对n个代码库依次执行s104;
13、s104,将该代码库对应的节点暂时记为actnode,获取该代码库依赖的所有代码库并将其对应的节点暂时记为depnode,将所有depnode的集合暂时记为depnodes,执行s105;
14、s105,在actnode中保留depnodes中所有depnode中的标识信息,并将这些标识信息称为actnode的依赖关系,即与actnode存在依赖关系的节点为depnodes中的所有depnode,执行s106;
15、s106,对depnodes中的所有depnode依次执行s107;
16、s107,在该节点中保留actnode的标识信息,并将该标识信息称为该节点的被依赖关系,即与该节点存在被依赖关系的节点为actnode;
17、s108,执行完s103,得到的n个代码库对应的n个节点为所述原始节点。
18、进一步地,在s200和s400中,所述初始化路径公共交汇指针的方法具体为:
19、s201,对所有不是b节点的节点,将其路径公共交汇指针设为空,其中,空表示路径公共交汇指针存储的值为none,none表示不指向任意一个节点;
20、s202,将不存在依赖关系的节点的路径公共交汇指针指向节点自身,对不存在依赖关系的节点依次执行s203;
21、s203,检查该节点是否为r节点,若是r节点,则对与该节点存在被依赖关系且路径公共交汇指针指向该节点的节点,设其路径公共交汇指针为该节点的路径公共交汇指针相同,并对其依次执行s204,对与该节点存在被依赖关系的其余节点依次执行s205,若不是r节点,则对与该节点存在被依赖关系的节点依次执行s205,其中,两个节点的路径公共交汇指针相同表示两个节点的路径公共交汇指针指向同一个节点;
22、s204,对与该节点存在被依赖关系的节点依次执行s205;
23、s205,检查该节点的路径公共交汇指针是否为空,若不为空,则该节点执行完毕,若为空,则执行s206;
24、s206,检查与该节点存在依赖关系的节点的总数量是否等于1,若等于1,则设该节点的路径公共交汇指针为与该节点存在依赖关系的节点的路径公共交汇指针相同,执行s203,若不等于1,则执行s207;
25、s207,检查与该节点的存在依赖关系的节点中,是否存在路径公共交汇指针为空的节点,若存在,则该节点执行完毕,若不存在,则执行s208;
26、s208,检查与该节点存在依赖关系的节点的路径公共交汇指针是否都相同,若相同,则设该节点的路径公共交汇指针为与该节点存在依赖关系的节点的路径公共交汇指针相同,执行s203,若不相同,则将该节点的路径公共交汇指针指向节点自身,执行s203。
27、由此,通过初始化路径公共交汇指针的方法能为节点的路径公共交汇指针指定一个合适的节点,通过节点的路径公共交汇指针,检索能够跳到该节点所有代码依赖路径都要经过的一个节点,而且跳到的目标节点离该节点的路径长度最大,其中路径长度指一条代码依赖路径上节点的数量。
28、有益效果:通过节点的路径公共交汇指针,代码依赖路径的检索减少了当前线程或进程(即主线程或主进程,相对于并行的新线程或新进程)要检索的节点数量,并且通过节点的路径公共交汇指针,能够让代码依赖路径的部分节点并行地处理,从而缓解了时间复杂度受节点数量影响的问题,提高了检索代码依赖路径的效率。
29、进一步地,在s300中,所述对初始节点标记r节点和b节点,得到初始标记节点的方法为:
30、s301,对初始节点使用linear deterministic greedy partitioning算法进行分组,得到s个组,其中,s为正整数;
31、s302,计算s个组的分叉率f,第i组的分叉率为fi=本文档来自技高网...
【技术保护点】
1.一种代码依赖的检索方法,其特征在于,所述方法包括以下步骤:
2.根据权利要求1所述的一种代码依赖的检索方法,其特征在于,在S100中,获取代码库和代码库之间的依赖信息,得到原始节点的方法为:
3.根据权利要求1所述的一种代码依赖的检索方法,其特征在于,在S200和S400中,所述初始化路径公共交汇指针的方法具体为:
4.根据权利要求1所述的一种代码依赖的检索方法,其特征在于,在S300中,所述对初始节点标记R节点和B节点,得到初始标记节点的方法为:
5.根据权利要求1所述的一种代码依赖的检索方法,其特征在于,在S500中,所述代码依赖路径为将与节点存在依赖关系的节点相互连接而成的线路,并且该线路是连续的,有方向的,即与线路外的节点存在依赖关系的节点在线路中,或者线路中的节点与线路外的节点存在依赖关系,线路外的节点才能够与该线路相连。
6.根据权利要求1所述的一种代码依赖的检索方法,其特征在于,在S500中,所述指定代码库,在路径节点中检索出指定代码库的所有代码依赖路径的方法具体为:
7.一种代码依赖的检索
...【技术特征摘要】
1.一种代码依赖的检索方法,其特征在于,所述方法包括以下步骤:
2.根据权利要求1所述的一种代码依赖的检索方法,其特征在于,在s100中,获取代码库和代码库之间的依赖信息,得到原始节点的方法为:
3.根据权利要求1所述的一种代码依赖的检索方法,其特征在于,在s200和s400中,所述初始化路径公共交汇指针的方法具体为:
4.根据权利要求1所述的一种代码依赖的检索方法,其特征在于,在s300中,所述对初始节点标记r节点和b节点,得到初始标记节点的方法为:
5.根据权利要求1所述的一种代码依赖的检索方法,其特征在于,在s500中,所述代码依赖路径为将与节点存在依赖关系的节点相互连接而成的线路...
【专利技术属性】
技术研发人员:孔蕾蕾,黄智键,齐浩亮,韩咏,易宇声,
申请(专利权)人:佛山科学技术学院,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。