CN105468509A - 代码稳定性检测方法及装置 - Google Patents
代码稳定性检测方法及装置 Download PDFInfo
- Publication number
- CN105468509A CN105468509A CN201410449768.7A CN201410449768A CN105468509A CN 105468509 A CN105468509 A CN 105468509A CN 201410449768 A CN201410449768 A CN 201410449768A CN 105468509 A CN105468509 A CN 105468509A
- Authority
- CN
- China
- Prior art keywords
- loop
- function
- code
- call
- stability
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Abstract
本申请提供一种代码稳定性检测方法及装置。方法包括:对待检测的代码进行静态分析,以确定代码包含的函数和函数之间的调用关系;根据代码包含的函数和函数之间的调用关系,获得代码中存在的调用环路的个数;根据调用环路的个数,确定代码的稳定性等级。本申请技术方案基于代码中存在的调用环路的个数确定代码稳定性等级,有利于提高检测代码稳定性的准确度。
Description
【技术领域】
本申请涉及计算机技术领域,尤其涉及一种代码稳定性检测方法及装置。
【背景技术】
代码是指程序员利用开发工具所支持的语言编写出来的源文件,是一组由字符、符号或信号码元等以离散形式表示信息的明确的规则体系。随着编程技术的发展,大多数功能都可以通过代码实现。
在实际应用中,为确保代码的稳定性和可用性等,在开发出代码之后,通常还需要对其进行各种检测,如静态代码检测。现有技术存在以代码中的函数为对象,验证每个函数是否存在循环调用语句的静态检测方法。例如,该方法会检测函数中是否存在类似while(true)这样的初始化死循环语句,或者检测是否存在类似for(;;)这样的无限循环语句等,来判断函数是否存在错误。
由于现有这种代码稳定性检测方法仅局限于代码包含的函数内,因此在判定整个代码的稳定性等级时准确度较低。
【发明内容】
本申请的多个方面提供一种代码稳定性检测方法及装置,用以提高检测代码稳定性的准确度。
本申请的一方面,提供一种代码稳定性检测方法,包括:
对待检测的代码进行静态分析,以确定所述代码包含的函数和函数之间的调用关系;
根据所述代码包含的函数和函数之间的调用关系,获得所述代码中存在的调用环路的个数;
根据所述调用环路的个数,确定所述代码的稳定性等级。
本申请的另一方面,提供一种代码稳定性检测装置,包括:
分析模块,用于对待检测的代码进行静态分析,以确定所述代码包含的函数和函数之间的调用关系;
获取模块,用于根据所述代码包含的函数和函数之间的调用关系,获得所述代码中存在的调用环路的个数;
确定模块,用于根据所述调用环路的个数,确定所述代码的稳定性等级。
在本申请中,通过对代码进行静态分析,确定代码包含的函数以及函数之间的调用关系,基于代码包含的函数以及函数之间的调用关系,确定代码中存在的调用环路的个数,根据调用环路的个数确定代码的稳定性等级。与现有函数内这种局部检测方式相比,本申请是从全局角度发现函数之间的调用环路的个数,而不再局限于函数内的检测,函数之间的调用环路可能导致代码在运行时出现死循环,会严重影响代码的稳定性,因此本申请根据调用环路的个数确定代码的稳定性等级,可以极大的提高所确定的稳定性等级的准确度。
【附图说明】
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本申请一实施例提供的代码稳定性检测方法的流程示意图;
图2为本申请一实施例提供的步骤102的一种实施方法的流程示意图;
图3为本申请一实施例提供的第一函数调用图的一种示意图;
图4为本申请一实施例提供的第二函数调用图的一种示意图;
图5为本申请另一实施例提供的代码稳定性检测方法的流程图;
图6为本申请一实施例提供的代码稳定性检测装置的结构示意图;
图7为本申请另一实施例提供的代码稳定性检测装置的结构示意图。
【具体实施方式】
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
图1为本申请一实施例提供的代码稳定性检测方法的流程示意图。如图1所示,该方法包括:
101、对待检测的代码进行静态分析,以确定该代码包含的函数和函数之间的调用关系。
102、根据上述代码包含的函数和函数之间的调用关系,确定代码中存在的调用环路的个数。
103、根据上述调用环路的个数,确定代码的稳定性等级。
本实施例的执行主体可以是代码稳定性检测装置(后续简称为代码检测装置),该装置可以是任何具有一定处理能力的设备,例如可以是用户终端、服务器或者代码检测专用设备等。
本实施例中待检测的代码可以是使用任何编程语言编写的代码,也可以是实现任何功能的代码。编程语言可以是java、C、C++等。
在检测代码的稳定性等级时,代码检测装置首先对代码进行静态分析,以确定代码包含的函数和函数之间的调用关系。静态分析这种方法主要是对代码的语法文件进行分析,具体的,代码检测装置可以使用静态代码扫描工具扫描待检测的代码,获得代码中每一个函数,例如函数Foo(int,int),以及函数之间的调用关系。
可选的,待检测的代码可能位于至少一个代码文件中,代码检测装置可以逐个扫描代码文件,获取代码文件中的代码并进行静态分析。
之后,代码检测装置根据代码包含的函数和函数之间的调用关系,确定代码中存在的调用环路的个数。调用环路是指由至少一个函数形成的循环调用。例如,假设有四个函数,分别为函数A、B、C和D,若A调用B,B调用C,C调用D,而D又调用A,在函数A、B、C和D之间形成一条调用环路。又例如,假设有两个函数,分别为函数F和G,若F调用G,G又调用F,则函数F和G之间形成一条调用环路。
在一可选实施方式中,如图2所示,上述步骤102的一种具体实施方式包括:
1021、根据代码包含的函数和函数之间的调用关系,生成第一函数调用图;
其中,第一函数调用图实际上就是函数调用图,为便于区分在前面冠以“第一”,该“第一”既没有先后的限定,也没有数量的限定。第一函数调用图用于表示代码包含的函数以及函数之间的调用关系。具体的,该第一函数调用图包括节点和有向边,第一函数调用图中的节点表示代码包含的函数,即一个节点对应一个函数,节点的数目与代码包含的函数的个数相同;第一函数调用图中的有向边表示该有向边所连接的两个节点所表示的两个函数之间的调用关系,如果有向边从一个节点指向另一个节点,表示该节点所表示的函数调用另一个节点所表示的函数。如图3所示,为本实施例给出的一种第一函数调用图的结构示意图,图3中的小圆圈表示节点,两个小圆圈之间的有向箭头表示有向边。
1022、对第一函数调用图进行拓扑排序处理,以获得不包括入度为0的节点的第二函数调用图。
例如,一种对第一函数调用图进行拓扑排序处理的过程包括:第一步:判断第一函数调用图中是否存在入度为0的节点,如果存在,则执行第二步,如果不存在,则将第一函数调用图直接作为第二函数调用图,并结束操作;第二步:将入度为0的节点以及由该节点发出的有向边全部删除,并返回继续执行第一步以及第二步,直到不存在入度为0的节点为止,将此时的函数调用图作为第二函数调用图。结合图3所示的第一函数调用图,则得到的第二函数调用图的结构如图4所示,包括两个调用环路。
1023、判断第二函数调用图中是否存在节点;如果是,则执行步骤1024;如果否,则执行步骤1025。
结合图4所示第二函数调用图,该调用图中有节点,包括两个调用环路。
1024、对第二函数调用图进行深度优先搜索(DeepFirstSearch,DFS)遍历,以获得遍历第二函数调用图中所有节点需要的DFS遍历次数,并确定该DFS遍历次数为调用环路的个数。
其中,DFS遍历算法属于现有技术,在此不再赘述。结合图4,需要进行两次DFD遍历,所以调用环路的个数为2。
值得说明的是,DFS遍历出的调用环路之间不存在相同节点。
1025、确定调用环路的个数为0。
采用上述实施方式可以提高确定调用环路的个数的效率,但不限于上述实施方式,也可以直接根据函数以及函数之间的调用关系分析出调用环路进而获得调用环路的个数。
其中,代码中出现调用环路不仅可以反映出代码的分层设计不佳,也可以反映出代码在当前运行时或将来运行时很可能会发生死循环,导致代码稳定性降低,而且调用环路的数量越多意味着代码的稳定性越差。因此,在确定代码中存在的调用环路的个数之后,代码检测装置可以根据调用环路的个数,确定代码的稳定性等级,
在一可选实施方式中,如果代码中不存在调用环路,即调用环路的个数为0,则代码检测装置可以确定代码的稳定性等级为最高等级。如果设置三个稳定性等级,则最高等级就是第三等级;如果设置四个稳定性等级,则最高等级就是第四等级。如果代码中存在调用环路,即调用环路的个数不为0,则代码检测装置可以根据调用环路的个数和预设的个数门限,确定代码的稳定性等级为不同于最高等级的其他等级。
举例说明,假设设置有三个等级,则当调用环路的个数为0时,将代码的稳定性等级确定为最高等级,即第三等级;当调用环路的个数大于0且小于预设个数门限时,则将代码的稳定性等级确定为第二等级;如果调用环路的个数大于或等于预设的个数门限,则将代码的稳定性等级确定为第一等级。值得说明的是,预设个数门限可以设置多个,从而将代码的稳定性划分为多个级别。
在另一可选实施方式中,如果调用环路的个数为0,则代码检测装置可以确定代码的稳定性等级为最高等级。如果调用环路的个数不为0,则代码检测装置还可以确定每个调用环路上的函数数目,并具体根据调用环路的个数和每个调用环路上的函数数据,确定代码的稳定性等级。
结合前述实施方式,代码检测装置具体可以在确定代码中存在的调用环路的个数的同时,确定每个调用环路上的函数数目。例如,代码检测装置在对第二函数调用图进行DFS遍历获得DFS遍历次数的同时,可以获得每次DFS遍历到的节点数目,将每次DFS遍历到的节点数目作为一个调用环路上的函数数目。
进一步,代码检测装置根据调用环路的个数和每个调用环路上的函数数据,确定代码的稳定性等级的一种实施方式包括:
代码检测装置根据每个调用环路上的函数数目,获得所有调用环路上的函数总数,即将每个调用环路上的函数数目相加,获得所有调用环路上的函数总数;之后,根据调用环路的个数和函数总数,确定代码的稳定性等级。结合图4,调用环路的个数为2,函数总数为12。可选的,代码检测装置可以将DFS遍历到的节点总数直接作为所有调用环路上的函数总数。
值得说明的是,根据调用环路的个数和所有调用环路上的函数总数对代码进行稳定等级衡量过程中,调用环路的个数越多,表示代码稳定性等级越低;所有调用环路上的函数总数越多,表示代码稳定性等级越低。并且,调用环路的个数的优先级要高于所有调用环路上的函数总数。
基于上述,在一可选实施方式中,代码检测装置针对调用环路的个数设置多个第一门限,并针对函数总数设置多个第二门限,通过这些门限划分出不同的稳定性等级。则代码检测装置具体可以将调用环路的个数和函数总数分别与对应的门限进行比较,确定代码的稳定性等级。
由上述可见,本实施例从全局角度发现函数之间的调用环路的个数,而不再局限于函数内的检测,函数之间的调用环路可能导致代码在运行时出现死循环,会严重影响代码的稳定性,因此本申请根据调用环路的个数确定代码的稳定性等级,可以极大的提高所确定的稳定性等级的准确度。
图5为本申请另一实施例提供的代码稳定性检测方法的流程图。如图5所示,该方法包括:
501、检测是否还有未扫描的代码文件;如果是,则执行步骤502;如果否,则执行步骤504。
502、获取尚未扫描的代码文件,并使用静态扫描工具对上述未扫描的代码文件进行静态扫描,获得代码文件中代码包含的函数和函数之间的调用关系。
503、根据上述获取的代码包含的函数和函数之间的调用关系,在函数调用图中添加对应的节点和有向边,并返回执行步骤501。
其中,函数调用图包括节点和有向边,每个节点表示一个函数,每个有向边表示该有向边所连接的两个节点所表示的函数之间的调用关系。
504、分析上述函数调用图中是否存在入度为0的节点;如果是,则执行步骤505;如果否,则执行步骤506。
505、获取函数调用图中入度为0的节点,并将所获取的节点以及由该节点发出的有向边删除,并返回执行步骤504。
506、判断此时的函数调用图中是否存在节点,如果是,则执行步骤507;如果否,则执行步骤508。
507、对函数调用图进行DFS遍历,以遍历函数调用图中所有的节点,获得DFS遍历次数,将DFS遍历次数作为代码中存在的调用环路的个数,并将DFS遍历到的节点数作为所有调用环路上的函数总数,并执行步骤509。
508、设置代码中存在的调用环路的个数为0,并设置所有调用环路上的函数总数为0,并执行步骤509。
509、根据代码中存在的调用环路的个数和所有调用环路上的函数总数,确定代码的稳定性等级。
值得说明的是,上述调用环路的个数又可称为环调用链路数,可理解为函数调用图中的连通分支个数。相应的,所有调用环路上的函数总数又可称为环调用影响方法数,可理解为函数调用图中的所有连通分支的节点个数。
进一步,上述代码检测装置还可以给出每个调用环路可能发生的调用顺序,以便于开发人员依据该调用顺序对代码进行改写。
本实施例从全局角度发现函数之间的调用环路的个数和所有调用环路上的函数总数,而不再局限于函数内的检测,函数之间的调用环路可能导致代码在运行时出现死循环,会严重影响代码的稳定性,因此本申请根据调用环路的个数和所有调用环路上的函数总数确定代码的稳定性等级,可以极大的提高所确定的稳定性等级的准确度。
需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本申请并不受所描述的动作顺序的限制,因为依据本申请,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本申请所必须的。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
图6为本申请一实施例提供的代码稳定性检测装置的结构示意图。如图6所示,该装置包括:分析模块61、获取模块62和确定模块63。
分析模块61,用于对待检测的代码进行静态分析,以确定该代码包含的函数和函数之间的调用关系。
获取模块62,与分析模块61连接,用于根据分析模块61确定的代码包含的函数和函数之间的调用关系,获得代码中存在的调用环路的个数。
确定模块63,与获取模块62连接,用于根据获取模块62获得的调用环路的个数,确定代码的稳定性等级。
在一可选实施方式中,如图7所示,获取模块62的一种实现结构包括:生成单元621、拓扑处理单元622和个数获取单元623。
生成单元621,用于根据代码包含的函数和函数之间的调用关系,生成第一函数调用图;该第一函数调用图中的节点表示代码包含的函数,第一函数调用图中的有向边表示该有向边所连接的两个节点所表示的两个函数之间的调用关系。
拓扑处理单元622,与生成单元621连接,用于对生成单元621生成的第一函数调用图进行拓扑排序处理,以获得不包括入度为0的节点的第二函数调用图。
个数获取单元623,与拓扑处理单元622连接,用于在拓扑处理单元622获得的第二函数调用图中存在节点时,对第二函数调用图进行DFS遍历,以获得遍历第二函数调用图中所有节点需要的DFS遍历次数,并确定该DFS遍历次数为调用环路的个数;或者,在拓扑处理单元622获得的第二函数调用图中不存在节点时,确定调用环路的个数为0。
在一可选实施方式中,确定模块63具体可用于在调用环路的个数为0时,确定代码的稳定性等级为最高等级;或者,在调用环路的个数不为0时,根据调用环路的个数和预设的个数门限,确定代码的稳定性等级为不同于最高等级的其他等级。
在另一可选实施方式中,获取模块62还用于在调用环路的个数不为0时,获得每个调用环路上的函数数目。基于此,确定模块63具体可用于在调用环路的个数为0时,确定代码的稳定性等级为最高等级;或者,在调用环路的个数不为0时,根据调用环路的个数和每个调用环路上的函数数目,确定代码的稳定性等级。
更进一步,确定模块63具体可用于在调用环路的个数不为0时,根据每个调用环路上的函数数目,获得所有调用环路上的函数总数;根据调用环路的个数和该函数总数,确定代码的稳定性等级。
本实施例提供的代码稳定性检测装置,从全局角度发现函数之间的调用环路的个数,而不再局限于函数内的检测,函数之间的调用环路可能导致代码在运行时出现死循环,会严重影响代码的稳定性,因此本实施例的代码稳定性检测装置根据调用环路的个数确定代码的稳定性等级,可以极大的提高所确定的稳定性等级的准确度。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。
上述以软件功能单元的形式实现的集成的单元,可以存储在一个计算机可读取存储介质中。上述软件功能单元存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器(processor)执行本申请各个实施例所述方法的部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-OnlyMemory,ROM)、随机存取存储器(RandomAccessMemory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
最后应说明的是:以上实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的精神和范围。
Claims (10)
1.一种代码稳定性检测方法,其特征在于,包括:
对待检测的代码进行静态分析,以确定所述代码包含的函数和函数之间的调用关系;
根据所述代码包含的函数和函数之间的调用关系,获得所述代码中存在的调用环路的个数;
根据所述调用环路的个数,确定所述代码的稳定性等级。
2.根据权利要求1所述的方法,其特征在于,所述根据所述代码包含的函数和函数之间的调用关系,获得所述代码中存在的调用环路的个数,包括:
根据所述代码包含的函数和函数之间的调用关系,生成第一函数调用图;所述第一函数调用图中的节点表示所述代码包含的函数,所述第一函数调用图中的有向边表示所述有向边所连接的两个节点所表示的两个函数之间的调用关系;
对所述第一函数调用图进行拓扑排序处理,以获得不包括入度为0的节点的第二函数调用图;
如果所述第二函数调用图中存在节点,对所述第二函数调用图进行深度优先搜索DFS遍历,以获得遍历所述第二函数调用图中所有节点需要的DFS遍历次数,并确定所述DFS遍历次数为所述调用环路的个数;
如果所述第二函数调用图中不存在节点,确定所述调用环路的个数为0。
3.根据权利要求1或2所述的方法,其特征在于,所述根据所述调用环路的个数,确定所述代码的稳定性等级,包括:
如果所述调用环路的个数为0,则确定所述代码的稳定性等级为最高等级;
如果所述调用环路的个数不为0,则根据所述调用环路的个数和预设的个数门限,确定所述代码的稳定性等级为不同于所述最高等级的其他等级。
4.根据权利要求1或2所述的方法,其特征在于,还包括:
在所述调用环路的个数不为0时,获得每个所述调用环路上的函数数目;
在所述调用环路的个数不为0时,所述根据所述调用环路的个数,确定所述代码的稳定性等级,包括:
根据所述调用环路的个数和每个所述调用环路上的函数数目,确定所述代码的稳定性等级。
5.根据权利要求4所述的方法,其特征在于,所述根据所述调用环路的个数和每个所述调用环路上的函数数目,确定所述代码的稳定性等级,包括:
根据每个所述调用环路上的函数数目,获得所有所述调用环路上的函数总数;
根据所述调用环路的个数和所述函数总数,确定所述代码的稳定性等级。
6.一种代码稳定性检测装置,其特征在于,包括:
分析模块,用于对待检测的代码进行静态分析,以确定所述代码包含的函数和函数之间的调用关系;
获取模块,用于根据所述代码包含的函数和函数之间的调用关系,获得所述代码中存在的调用环路的个数;
确定模块,用于根据所述调用环路的个数,确定所述代码的稳定性等级。
7.根据权利要求6所述的装置,其特征在于,所述获取模块包括:
生成单元,用于根据所述代码包含的函数和函数之间的调用关系,生成第一函数调用图;所述第一函数调用图中的节点表示所述代码包含的函数,所述第一函数调用图中的有向边表示所述有向边所连接的两个节点所表示的两个函数之间的调用关系;
拓扑处理单元,用于对所述第一函数调用图进行拓扑排序处理,以获得不包括入度为0的节点的第二函数调用图;
个数获取单元,用于在所述第二函数调用图中存在节点时,对所述第二函数调用图进行深度优先搜索DFS遍历,以获得遍历所述第二函数调用图中所有节点需要的DFS遍历次数,并确定所述DFS遍历次数为所述调用环路的个数;或者,在所述第二函数调用图中不存在节点时,确定所述调用环路的个数为0。
8.根据权利要求6或7所述的装置,其特征在于,所述确定模块具体用于在所述调用环路的个数为0时,确定所述代码的稳定性等级为最高等级;或者,在所述调用环路的个数不为0时,根据所述调用环路的个数和预设的个数门限,确定所述代码的稳定性等级为不同于所述最高等级的其他等级。
9.根据权利要求6或7所述的装置,其特征在于,所述获取模块还用于在所述调用环路的个数不为0时,获得每个所述调用环路上的函数数目;
所述确定模块具体用于在所述调用环路的个数不为0时,根据所述调用环路的个数和每个所述调用环路上的函数数目,确定所述代码的稳定性等级。
10.根据权利要求9所述的装置,其特征在于,所述确定模块具体用于在所述调用环路的个数不为0时,根据每个所述调用环路上的函数数目,获得所有所述调用环路上的函数总数;根据所述调用环路的个数和所述函数总数,确定所述代码的稳定性等级。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410449768.7A CN105468509A (zh) | 2014-09-04 | 2014-09-04 | 代码稳定性检测方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410449768.7A CN105468509A (zh) | 2014-09-04 | 2014-09-04 | 代码稳定性检测方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN105468509A true CN105468509A (zh) | 2016-04-06 |
Family
ID=55606240
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410449768.7A Pending CN105468509A (zh) | 2014-09-04 | 2014-09-04 | 代码稳定性检测方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105468509A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110399131A (zh) * | 2019-05-23 | 2019-11-01 | 中国平安财产保险股份有限公司 | 提高应用程序稳定性的方法、装置、计算机设备 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101576830A (zh) * | 2009-06-04 | 2009-11-11 | 中兴通讯股份有限公司 | 数据库事务锁机制的死锁检测方法及装置 |
CN103207903A (zh) * | 2013-03-26 | 2013-07-17 | 南京南瑞继保电气有限公司 | 一种可视化图形程序拓扑排序方法 |
US20140130020A1 (en) * | 2012-09-28 | 2014-05-08 | Coverity, Inc. | Static analysis of computer code to determine impact of change to a code component upon a dependent code component |
-
2014
- 2014-09-04 CN CN201410449768.7A patent/CN105468509A/zh active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101576830A (zh) * | 2009-06-04 | 2009-11-11 | 中兴通讯股份有限公司 | 数据库事务锁机制的死锁检测方法及装置 |
US20140130020A1 (en) * | 2012-09-28 | 2014-05-08 | Coverity, Inc. | Static analysis of computer code to determine impact of change to a code component upon a dependent code component |
CN103207903A (zh) * | 2013-03-26 | 2013-07-17 | 南京南瑞继保电气有限公司 | 一种可视化图形程序拓扑排序方法 |
Non-Patent Citations (4)
Title |
---|
乔寓然 等: ""片上网络中基于拓扑排序的死锁检测与恢复方法"", 《上海交通大学学报》 * |
付勇: ""一个带环检测的深度优先搜索拓扑排序算法"", 《电脑编程技巧与维护》 * |
张亦辉 等: "《数据结构(第二版)》", 31 July 2012 * |
李义军 等: ""拓扑排序和强连通算法在源代码分析中的应用"", 《计算机系统应用》 * |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110399131A (zh) * | 2019-05-23 | 2019-11-01 | 中国平安财产保险股份有限公司 | 提高应用程序稳定性的方法、装置、计算机设备 |
CN110399131B (zh) * | 2019-05-23 | 2024-04-26 | 中国平安财产保险股份有限公司 | 提高应用程序稳定性的方法、装置、计算机设备 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9983984B2 (en) | Automated modularization of graphical user interface test cases | |
CN108388514B (zh) | 接口自动化测试方法、装置、设备及计算机可读存储介质 | |
CN105468508A (zh) | 代码检测方法及装置 | |
CN104899147B (zh) | 一种面向安全检查的代码静态分析方法 | |
US8140911B2 (en) | Dynamic software tracing | |
CN111104335B (zh) | 一种基于多层次分析的c语言缺陷检测方法及装置 | |
US8904352B2 (en) | Systems and methods for processing source code during debugging operations | |
WO2019055378A1 (en) | METHOD AND APPARATUS FOR FINDING LONG PROCESSES IN A CODE | |
Walkinshaw et al. | Automated comparison of state-based software models in terms of their language and structure | |
CN105512021A (zh) | 用于软件测试的Diff分析方法及装置 | |
CN111767076A (zh) | 代码重构方法及装置 | |
CN111475164A (zh) | 组件依赖关系检测方法、装置以及电子设备 | |
CN104834759A (zh) | 电子设计的实现方法和装置 | |
CN108897678B (zh) | 静态代码检测方法和静态代码检测系统、存储设备 | |
CN108874656A (zh) | 代码测试方法、装置、可读存储介质及计算机设备 | |
CN104536880A (zh) | 基于符号执行的gui程序测试用例扩增方法 | |
CN105468509A (zh) | 代码稳定性检测方法及装置 | |
CN105912467A (zh) | 一种性能测试方法及装置 | |
CN116629330A (zh) | 一种算子检测方法、装置以及计算机设备 | |
CN115113858A (zh) | 一种类循环依赖的检测方法及系统 | |
CN112699376A (zh) | 源代码逻辑漏洞检测方法、装置、计算机设备及存储介质 | |
CN112015633B (zh) | 测试激励多平台复用方法、装置、设备及存储介质 | |
CN105204997A (zh) | 软件缺陷检测方法及装置 | |
CN115796228B (zh) | 算子融合方法、装置、设备以及存储介质 | |
CN112612471B (zh) | 代码处理方法、装置、设备及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20160406 |