CN106020848A - 面向c#的函数调用路径生成方法 - Google Patents
面向c#的函数调用路径生成方法 Download PDFInfo
- Publication number
- CN106020848A CN106020848A CN201610397615.1A CN201610397615A CN106020848A CN 106020848 A CN106020848 A CN 106020848A CN 201610397615 A CN201610397615 A CN 201610397615A CN 106020848 A CN106020848 A CN 106020848A
- Authority
- CN
- China
- Prior art keywords
- function
- node
- tree
- call
- program
- 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
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
- G06F8/31—Programming languages or programming paradigms
- G06F8/315—Object-oriented languages
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3604—Software analysis for verifying properties of programs
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3604—Software analysis for verifying properties of programs
- G06F11/3612—Software analysis for verifying properties of programs by runtime analysis
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Computing Systems (AREA)
- Stored Programmes (AREA)
Abstract
本发明提供一种面向C#的函数调用路径生成方法,包括:通过C#程序中与函数相关的信息,所述信息包括:类、命名空间、数据集信息、参数信息;根据每一函数的调用关系,分别生成每一函数的函数调用关系树,其中所述函数调用关系树的每一节点代表一个函数,且每一节点的子节点代表一个分支,且每一节点的兄弟节点与其父节点为并列关系;根据所有函数的函数调用关系树,组合为C#程序的全局的函数调用关系树本发明提供一种面向C#的函数调用路径生成方法,包括:通过C#程序中与函数相关的信息,所述信息包括:类、命名空间、数据集信息、参数信息;根据每一函数的调用关系,分别生成每一函数的函数调用关系树,其中所述函数调用关系树的每一节点代表一个函数,且每一节点的子节点代表一个分支,且每一节点的兄弟节点与其父节点为并列关系;根据所有函数的函数调用关系树,组合为C#程序的全局的函数调用关系树。
Description
技术领域
本发明涉及计算机技术领域,尤其涉及一种面向C#的函数调用路径生成方法。
背景技术
C#作为一种面向对象的高级语言,由于其搭载环境Visual Studio功能强大、可视性强、更新较快,而逐渐成为软件开发中的常用语言。随着微软对Visual Studio的版本更新,其功能越来越强大,C#作为搭载在改坏境下的高级程序设计语言,集成C++和Java的优点,逐渐成为开发过程中一种重要语言,C#作为面向对象语言,具有封装、继承和多态等性质,相较于Java语言,二者在语法上也各有特点。由于VS的功能强大,程序编写过程中已经规避了大多数的语法错误,但逻辑上的错误,需要程序在运行才能找到。函数调用路径的测试方法将函数调用和程序的逻辑结构相结合,将代码的分析粒度扩展到函数,既避免了路径的大规模增长又保证了软件测试充分性[1]。对C语言进行函数调用路径的测试需要通过对源代码进行词法语法分析获得静态函数调用路径。Java语言的函数调用路径测试是在基于Soot的基础上,获取静态函数调用路径。对于C#程序,前者的过程显然过于复杂、繁琐,而后者在C#程序显然不适用。
微软在Visual Studio2010中开始引入DGML(Directed GraphMarkup Language),并且在该语言的基础上自动生成依赖关系图等有向图。DGML即有向图标记语言,是一种完全符合XML格式的语言。随后微软在VS2012版本中引入了代码图功能,代码图可以清晰地显示代码结构。代码图是一种DGML表示的图,在其DGML文件中详细记录了程序中的命名空间、类和成员之间的依赖关系信息,虽然代码图本身能够分析C#程序并生成函数的依赖关系,但是这种依赖关系是包含关系并没有逻辑结构,不能直观的得到程序的执行过程从而无法用于生成测试用例。目前国内外针对C#程序的测试方法较少,对代码图和DGML的研究也相对较少。
由于C#语言包含类、对象、命名空间、重载、委托等多变而又复杂的形态,给C#程序的理解和测试带来了很大困难。
发明内容
针对现有技术中存在的对C#语言多变且复杂导致对C#程序的理解和测试带来了很大困难的问题,本发明要解决的技术问题是提供一种面向C#的函数调用路径生成方法。
为了解决上述问题,本发明实施例提出了一种面向C#的函数调用路径生成方法,包括:
步骤1、通过C#程序中与函数相关的信息,所述信息包括:类、命名空间、数据集信息、参数信息;
步骤2、根据每一函数的调用关系,分别生成每一函数的函数调用关系树,其中所述函数调用关系树的每一节点代表一个函数,且每一节点的子节点代表一个分支,且每一节点的兄弟节点与其父节点为并列关系;
步骤3、根据所有函数的函数调用关系树,组合为C#程序的全局的函数调用关系树。
其中,所述步骤1具体包括:从DGML文件中获取程序所有的类;从DGML文件中获取类的所有函数;将类自动生成构造函数。
其中,所述步骤2中具体包括:
步骤21、对每个成员函数进行分析,获取成员函数的执行语句;
步骤22、对执行语句进行分析以确定判断每条语句是否有函数调用,以确定该执行语句是否存在分支结构;如果存在分支结构,获取分支结构的方法体,然后对方法体里的每条语句进行分析判断是否还存在函数调用,如果是则将被调用函数的信息加入到函数调用关系树中。
其中,所述步骤22具体包括:
步骤221、判断执行语句中是否有函数调用,如果有则将函数调用顺序、调用的函数添加到列表中;
步骤222、判断执行语句中是否有控制关键字,如果有则确定其中的第一个被调用函数以获取函数调用的顺序,并根据函数调用的顺序依次将函数添加到列表中;
步骤23、生成每一函数的三元组T(M,R,S);其中,M表示函数集合;R表示函数的调用顺序关系<顺序节点,当前节点,分支节点>表示顺序结构为树的左孩子,分支结构为树的右孩子;S表示源函数也是函数调用关系树的头节点;
步骤24、根据所述每一函数的三元组生成每一函数的函数调用关系树。
本发明的上述技术方案的有益效果如下:上述方案中提出了一种面向C#的函数调用路径生成方法,其结合VS下的代码图功能得到函数及函数的依赖关系信息对源代码进行分析,采用树结构存储函数的依赖关系和逻辑结构,以此获取每一个函数的函数调用关系树;然后将程序中所有的函数调用关系树进行组合以得到全局的函数调用关系树。同时通过本发明实施例中的举例说明可以看出,本发明实施例的方法是可行的,能够得到C#程序的函数调用路径,有助于开发人员对软件系统的理解以及测试人员进行基于函数调用路径的测试。
附图说明
图1为本发明实施例中的DGML的描述图;
图2为本发明实施例中的一个举例说明的函数调用关系图;
图3为本发明实施例中的另一个举例说明的函数调用关系图;
图4为根据图3所示的函数调用关系生成的函数调用关系树。
具体实施方式
为使本发明要解决的技术问题、技术方案和优点更加清楚,下面将结合附图及具体实施例进行详细描述。
软件系统被修改或扩充后,为了验证对软件的修改是否达到预期的目的,并且没有引入新的错误而重复进行的测试称为回归测试。在实际测试的回归测试中,由于测试人员不了解程序的内部结构,所用的测试方法就是全部重测,但是在大中型软件系统中的路径数目急剧增大,全部重测往往会带来高昂的代价。因此研究人员提出了面向函数调用路径的思想获取函数的调用路径,可以快速获取与该函数相关的路径,从而进行有针对性的测试,有利于生成测试用例。具体请参考:ZHANG Zhihua,MU Yongmin.Based on the path to override thegenerated function calls Research[J].ACTA ELECTRONICA SINICA,2010,138(8):1808-1811。
RegressiontestC1.0作为自主开发的基于函数调用路径的测试工具,通过该工具可以获取C语言的全局静态路径集和动态函数调用路径;具体请参考张志华,牟永敏.基于函数调用的路径覆盖生成技术研究[J].电子学报,2010,38(8):1808-1811。该方法具体为:
首先对被测的源代码进行静态分析,生成包含代码内部控制逻辑的函数调用关系图,从而获取静态的函数调用路径;具体请参考:Yuhui ZHENG,Yongmin Mu,Zhihua ZHANG..Rearch on the StaticFunction Call Path Generating Automcatically[C].The 2nd IEEEInternational Conference on Information Management andEngineering.Chengdu,2010.1~5;
对被测程序进行插装,确定一组测试用例,在程序的执行中获取动态的函数调用序列;具体请参考:牟永敏,姜智荧,张志华.面向C程序插装的路径提取[J].计算机工程与应用.2011(01)。
对于面向对象语言由于其语法特点,使用面向过程的函数调用路径的生成方法:开发词法分析器、语法分析器等来静态分析程序源码,获取函数的函数调用路径,明显会增大工作量。因此在生成Java的函数调用路径时,研究人员提出了基于Soot来生成Java的函数调用路径,具体请参考:朱绪利,牟永敏,张志华.基于Soot控制流图的函数调用路径分析[J].数据通信,2012年第一期。在该方法中,通过Soot编译化框架将Java信息生成Jimple三地址文件,从而确定多态调用点信息,按照多态唯一性静态分析算法,确定多态唯一性信息,提取函数间关联信息,定义函数调用树,并分析单个函数调用关系树与程序函数调用图之间的关系,通过组合算法生成程序的函数调用关系图。
虽然研究人员先后提取了C、C++、Java版本的函数调用路径,但方法不能通用,且因C#语言多变而又复杂,之前没有进行相关研究。
发明人通过研究发现,Visual Studio(简称VS)生成的代码图的DGML文件详细记录了函数之间的依赖关系,这为生成C#的函数调用路径提供了帮助。使用Visual Studio可以生成代码内部的关系图即代码图,直观显示源代码中的复杂关系。其中,得到的代码图就在代码编辑器的右侧,这样就能在编码的时候看到代码的结构。该关系图是用DGML语言描述的,DGML的描述图如图1所示。
在DGML描述语言中,主要描述程序内部信息的标签是Node、Links和IdentifierAliases:
其中IdentifierAliases主要是对函数和类以别名标记,这里的别名对应阿拉伯数字;除此之外还记录了程序的命名空间和数据集以及函数的参数信息,即使是重名的函数也可以区分。函数参数信息一般在Id属性中以OverloadingParameters备注。
区别于IdentifierAliases,Node标签记录的信息函数和类的信息,例如:类(CodeSchema_class)、方法(CodeSchema_Method)、构造函数(IsConstructor=”true”)、接口(CodeSchema_Interface)、委托(CodeSchema_Delegate)、名称(Label)、函数类型(IsPublic)等。Node标签会自动生成类中没有声明的构造成员方法。
Links标签记录函数之间的关系信息,包括:类与成员函数的包含(Contains)、调用(CodeSchema_Calls)、继承(InheritsFrom)、接口的实现(Implements)以及委托等。Source和Target,表示代码图中箭头的起点和终点,也记录了函数中调用与被调用,类与函数包含和被包含的关系,以及继承中的父类与子类被继承与继承的关系,接口中的继承与实现的关系。
VS生成的代码图只有包含关系,没有逻辑结构,对于以下代码:
可以生成如图2所示的函数调用关系图。
针对现有技术中缺少本发明实施例提出了一种面向C#的函数调用路径生成方法,具体包括:
步骤1、以树结构记录函数的调用关系。
在C#程序中,可以树形结构来标识函数的调用关系,称为函数调用关系树。在函数调用关系树中的每一个节点代表一个函数,其孩子代表一个分支;如果函数没有分支,则孩子代表接下来要执行的函数名;节点的兄弟标识与父节点是并列关系,在程序中用来表示多条分支。
在C#程序中,与函数相关的信息包括:类、命名空间、数据集信息、参数信息;而这些信息都存储在代码图的DGML文件中。DGML文件以别名作为索引记录函数,这里也可以使用别名来作为C#函数调用关系树的节点,减少了存储大量的函数信息,可以提高算法的运行效率。
在图3所示的函数调用路径,可以表示为图4所示的函数调用关系树。@6对应函数Test,@7对应函数f0,@8对应函数f1,@9对应函数f2。使用三元组T(M,R,S)来表示调用关系:M表示函数集合;R表示函数的调用顺序关系<顺序节点,当前节点,分支节点>表示顺序结构为树的左孩子,分支结构为树的右孩子;S表示源函数也是函数调用关系树的头节点。那么对于图3相对应的代码:
M={@6,@7,@8,@9};
R={(@8,@6,null),(@7,@8,@9),(@7,@9,null)},
S={@6};
该函数调用关系序列所对应的全局函数调用关系树如图4所示。说明程序中有两条路径:
Path1:@6->@8->@7
Path2:@6->@9->@7;
如前所述的,@9是@8的右孩子也就是兄弟节点;体现的是并列关系。生成的函数调用关系树即表现了这种结构特征。从三元组中也可以看出@6顺序执行了@8,但是@8和@9是并列关系,那么@6和@9也可以是一种顺序结构。而上面程序中的if-else语句正是这种关系。
而针对以下的代码:
对于一个带有继承关系的程序来说在,父类为Contact;Friend和Family为继承了Contact类的子类;main函数中变量con1和con2分别调用了子类的方法;Friend和Family分别对父类方法进行了重写。但是con4调用了Family的构造函数,却调用了父类的方法。在代码图的DGML文件中详细记录了这种函数调用信息,包括@4继承了(InheritsFrom)@3,Family继承了Contact类,@5继承了@3,Friend类继承了Contact类。由此可以看出,如果调用了父类的方法,DGML会记录(Target)调用了父类的方法,但如果子类对父类进行了重写后,调用了这个重写方法,DGML会记录(Target)调用的是子类方法。对于接口,DGML的记录方法类似。
它的函数调用关系树以三元组来表示:
M={@8,@10,@11,@12,@13,@14,@15};其中的@10,@11,@12是C#程序的代码图自动为Contact类、Family类、Friend类生成的构造函数。
R={(@10,@8,null),(@12,@10,null),(@11,@12,null),(@11,@11,null),(@13,@11,null),(@14,@11,null),(@15,@14,null),(@13,@15,null)},
S={(@8)};
这里使用<key,value>字典的数据结构来存储函数调用关系树,key中存储源函数,value存储调用关系。对于上面源码中的Main函数,key中存储函数签名:<@8>;value中存储调用关系,即被调函数集合List<Method>。函数的调用关系以一个Struct结构存储,Struct中以三个变量来记录函数调用关系<ChildID,ID,BrotherID>。当前节点ID,节点的左孩子ChildID用来表示顺序调用,节点的右孩子即兄弟节点BrotherID用来表示分支结构。
函数调用关系树的生成算法如下:
2、生成全局函数调用关系树
获取程序的入口点,从入口点的函数调用关系树开始,将每一个函数的函数调用关系树加入到全局的函数调用关系树中。加入的这棵函数调用关系树的叶子节点的左孩子指向被代替的那个函数的左孩子节点。
全局函数调用关系树的生成算法如下:
在此基础上生成全局的函数调用路径只需要将函数调用关系树中的兄弟节点使用同一父节点。根据别名编号从程序的DGML文件中提取函数的相关信息(读取XML文件的过程)生成带有函数具体信息的函数调用路径。
举例说明:
以下面的源码为例,按照上面的算法进行分析,得到此程序的函数调用路径。如下所示源码是一个用于加减乘除的运算,Computor类是一个计算器,内部定义了加(Add)减(Minus)乘(Multiply)除(Divide)方法,以及警告(Warning)方法,当除数为0时,执行警告。主函数在Program类中,程序的命名空间为Exp,对这个程序进行分析:
利用本发明实施例的方法来对源代码和DGML文件进行处理,则根据各个类的各个函数获取函数调用关系树。以下为Main函数的分析结果:
@7
<@8,@7,null>
<@14,@8,null>
<@16,@14,null>
<@9,@16,null>
<@17,@9,null>
<null,@17,@10>
<null,@10,null>
从上面可以Main函数(即@7)分别调用了@8、@14、@16、@9、@17、@10,其所对应的函数分别是Computor()(代码图自动为Computor类生成的构造函数)、NumA、NumB、Add()、Warning()、divide()。根据本发明实施例中的左孩子为顺序结构、右孩子为分支结构的原则,可以确定@17和@10是兄弟节点;这一点与程序的逻辑结构相同。
进一步的,分析Computor类的Add方法得到函数调用关系树:
@9
<@14,@9,null>
<@16,@14,null>
根据以上现实的可知,Add函数(即@9)调用了@14和@16,分别是属性NumA和NumB,且它们之间是顺序结构;这与程序的内部信息相同。程序中Add、Minus、Multiply、divide的调用结构类似,获取的函数调用关系树类似。
将局部的函数调用关系树组合成全局的函数调用关系树,获取到的函数调用路径如下:
Path1
@7:Exp.Program.CodeSchema_Method<Main(System.StringArrayRank=1)>
@8:Exp.Computor.CodeSchema_Method<Computor()>
@14:Exp.Computor.CodeSchema_Property<NumA>
@16:Exp.Computor.CodeSchema_Property<NumB>
@9:Exp.Computor.CodeSchema_Method<Add()>
@14:Exp.Computor.CodeSchema_Property<NumA>
@16:Exp.Computor.CodeSchema_Property<NumB>
@17:Exp.Computor.CodeSchema_Method<Warning()>
Path2
@7:Exp.Program.CodeSchema_Method<Main(System.StringArrayRank=1)>
@8:Exp.Computor.CodeSchema_Method<Computor()>
@14:Exp.Computor.CodeSchema_Property<NumA>
@16:Exp.Computor.CodeSchema_Property<NumB>
@9:Exp.Computor.CodeSchema_Method<Add()>
@14:Exp.Computor.CodeSchema_Property<NumA>
@16:Exp.Computor.CodeSchema_Property<NumB>
@10:Exp.Computor.CodeSchema_Method<divide()>
@14:Exp.Computor.CodeSchema_Property<NumA>
@16:Exp.Computor.CodeSchema_Property<NumB>
以上是由全局函数调用关系树结合DGML文件中存储的函数信息获取的详细的函数调用路径;从该路径可知程序中有两条函数调用路径这与程序中的分支结构对应。从结果可以看出,此程序准确的提取了程序的函数调用路径。
由于DGML给出的函数信息准确、详细,程序已经基本可以解决简单的包括继承、接口、多态相关的程序。
以上所述是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明所述原理的前提下,还可以作出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
Claims (4)
1.一种面向C#的函数调用路径生成方法,其特征在于,包括:
步骤1、通过C#程序中与函数相关的信息,所述信息包括:类、命名空间、数据集信息、参数信息;
步骤2、根据每一函数的调用关系,分别生成每一函数的函数调用关系树,其中所述函数调用关系树的每一节点代表一个函数,且每一节点的子节点代表一个分支,且每一节点的兄弟节点与其父节点为并列关系;
步骤3、根据所有函数的函数调用关系树,组合为C#程序的全局的函数调用关系树。
2.根据权利要求1所述的面向C#的函数调用路径生成方法,其特征在于,所述步骤1具体包括:从DGML文件中获取程序所有的类;从DGML文件中获取类的所有函数;将类自动生成构造函数。
3.根据权利要求1所述的面向C#的函数调用路径生成方法,其特征在于,所述步骤2中具体包括:
步骤21、对每个成员函数进行分析,获取成员函数的执行语句;
步骤22、对执行语句进行分析以确定判断每条语句是否有函数调用,以确定该执行语句是否存在分支结构;如果存在分支结构,获取分支结构的方法体,然后对方法体里的每条语句进行分析判断是否还存在函数调用,如果是则将被调用函数的信息加入到函数调用关系树中。
4.根据权利要求1所述的面向C#的函数调用路径生成方法,其特征在于,所述步骤22具体包括:
步骤221、判断执行语句中是否有函数调用,如果有则将函数调用顺序、调用的函数添加到列表中;
步骤222、判断执行语句中是否有控制关键字,如果有则确定其中的第一个被调用函数以获取函数调用的顺序,并根据函数调用的顺序依次将函数添加到列表中;
步骤23、生成每一函数的三元组T(M,R,S);其中,M表示函数集合;R表示函数的调用顺序关系<顺序节点,当前节点,分支节点>表示顺序结构为树的左孩子,分支结构为树的右孩子;S表示源函数也是函数调用关系树的头节点;
步骤24、根据所述每一函数的三元组生成每一函数的函数调用关系树。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610397615.1A CN106020848A (zh) | 2016-06-07 | 2016-06-07 | 面向c#的函数调用路径生成方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610397615.1A CN106020848A (zh) | 2016-06-07 | 2016-06-07 | 面向c#的函数调用路径生成方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN106020848A true CN106020848A (zh) | 2016-10-12 |
Family
ID=57089987
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610397615.1A Pending CN106020848A (zh) | 2016-06-07 | 2016-06-07 | 面向c#的函数调用路径生成方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106020848A (zh) |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106528179A (zh) * | 2016-12-08 | 2017-03-22 | 中国科学院软件研究所 | 一种Java类依赖关系的静态识别方法 |
CN107451050A (zh) * | 2017-06-20 | 2017-12-08 | 阿里巴巴集团控股有限公司 | 函数获取方法和装置、服务器 |
CN107704382A (zh) * | 2017-09-07 | 2018-02-16 | 北京信息科技大学 | 面向Python的函数调用路径生成方法和系统 |
WO2019028989A1 (zh) * | 2017-08-09 | 2019-02-14 | 平安科技(深圳)有限公司 | 一种代码分析方法及终端设备 |
CN109656805A (zh) * | 2018-09-28 | 2019-04-19 | 阿里巴巴集团控股有限公司 | 用于业务分析的代码链路的生成方法、装置及业务服务器 |
CN110347573A (zh) * | 2018-04-03 | 2019-10-18 | 北京京东尚科信息技术有限公司 | 应用程序分析方法、装置、电子设备及计算机可读介质 |
CN111290950A (zh) * | 2020-01-22 | 2020-06-16 | 腾讯科技(深圳)有限公司 | 程序测试中测试点获取方法、装置、存储介质和设备 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103593291A (zh) * | 2013-11-18 | 2014-02-19 | 北京邮电大学 | 用于包括多个函数测试模块的单元测试方法及装置 |
US20150106794A1 (en) * | 2013-10-14 | 2015-04-16 | Nec Laboratories America, Inc. | Transparent performance inference of whole software layers and context-sensitive performance debugging |
CN104536895A (zh) * | 2015-01-12 | 2015-04-22 | 牟永敏 | 一种面向Java函数调用路径的测试过程跟踪方法及系统 |
CN104834603A (zh) * | 2015-05-26 | 2015-08-12 | 牟永敏 | 一种面向回归测试的控制流变更影响域分析方法和系统 |
CN105138335A (zh) * | 2015-08-28 | 2015-12-09 | 牟永敏 | 一种基于控制流图的函数调用路径提取方法及装置 |
US20160092350A1 (en) * | 2013-11-19 | 2016-03-31 | Google Inc. | Callpath finder |
-
2016
- 2016-06-07 CN CN201610397615.1A patent/CN106020848A/zh active Pending
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20150106794A1 (en) * | 2013-10-14 | 2015-04-16 | Nec Laboratories America, Inc. | Transparent performance inference of whole software layers and context-sensitive performance debugging |
CN103593291A (zh) * | 2013-11-18 | 2014-02-19 | 北京邮电大学 | 用于包括多个函数测试模块的单元测试方法及装置 |
US20160092350A1 (en) * | 2013-11-19 | 2016-03-31 | Google Inc. | Callpath finder |
CN104536895A (zh) * | 2015-01-12 | 2015-04-22 | 牟永敏 | 一种面向Java函数调用路径的测试过程跟踪方法及系统 |
CN104834603A (zh) * | 2015-05-26 | 2015-08-12 | 牟永敏 | 一种面向回归测试的控制流变更影响域分析方法和系统 |
CN105138335A (zh) * | 2015-08-28 | 2015-12-09 | 牟永敏 | 一种基于控制流图的函数调用路径提取方法及装置 |
Cited By (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106528179A (zh) * | 2016-12-08 | 2017-03-22 | 中国科学院软件研究所 | 一种Java类依赖关系的静态识别方法 |
CN106528179B (zh) * | 2016-12-08 | 2019-06-21 | 中国科学院软件研究所 | 一种Java类依赖关系的静态识别方法 |
CN107451050A (zh) * | 2017-06-20 | 2017-12-08 | 阿里巴巴集团控股有限公司 | 函数获取方法和装置、服务器 |
CN107451050B (zh) * | 2017-06-20 | 2020-07-03 | 阿里巴巴集团控股有限公司 | 函数获取方法和装置、服务器 |
WO2019028989A1 (zh) * | 2017-08-09 | 2019-02-14 | 平安科技(深圳)有限公司 | 一种代码分析方法及终端设备 |
CN107704382A (zh) * | 2017-09-07 | 2018-02-16 | 北京信息科技大学 | 面向Python的函数调用路径生成方法和系统 |
CN107704382B (zh) * | 2017-09-07 | 2020-09-25 | 北京信息科技大学 | 面向Python的函数调用路径生成方法和系统 |
CN110347573A (zh) * | 2018-04-03 | 2019-10-18 | 北京京东尚科信息技术有限公司 | 应用程序分析方法、装置、电子设备及计算机可读介质 |
CN110347573B (zh) * | 2018-04-03 | 2024-05-17 | 北京京东尚科信息技术有限公司 | 应用程序分析方法、装置、电子设备及计算机可读介质 |
CN109656805A (zh) * | 2018-09-28 | 2019-04-19 | 阿里巴巴集团控股有限公司 | 用于业务分析的代码链路的生成方法、装置及业务服务器 |
CN109656805B (zh) * | 2018-09-28 | 2022-01-25 | 创新先进技术有限公司 | 用于业务分析的代码链路的生成方法、装置及业务服务器 |
CN111290950A (zh) * | 2020-01-22 | 2020-06-16 | 腾讯科技(深圳)有限公司 | 程序测试中测试点获取方法、装置、存储介质和设备 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106020848A (zh) | 面向c#的函数调用路径生成方法 | |
US10282181B2 (en) | Source code translation | |
Kondo et al. | Code cloning in smart contracts: a case study on verified contracts from the ethereum blockchain platform | |
McPhillips et al. | YesWorkflow: a user-oriented, language-independent tool for recovering workflow information from scripts | |
US11379497B2 (en) | Data model database | |
Varga et al. | An overview of the OMNeT++ simulation environment | |
US10261760B1 (en) | Systems and methods for tracing performance information from hardware realizations to models | |
US8225276B1 (en) | Shared code management | |
US20130159975A1 (en) | Detecting a broken point in a web application automatic test case | |
CN106557413A (zh) | 基于代码覆盖率获取测试用例的方法和设备 | |
CN107704382A (zh) | 面向Python的函数调用路径生成方法和系统 | |
US8775392B1 (en) | Revision control and configuration management | |
CN106295346A (zh) | 一种应用漏洞检测方法、装置及计算设备 | |
CN114329090A (zh) | 路径寻参的方法、装置、电子设备及存储介质 | |
Schlegel et al. | Extracting Provenance of Machine Learning Experiment Pipeline Artifacts | |
CN110286882B (zh) | 一种基于模型检测的前台系统设计与验证方法 | |
Cuomo et al. | CD-Form: A clone detector based on formal methods | |
US7797677B1 (en) | Using scripts for netlisting in a high-level modeling system | |
Romanov et al. | Representing programs with dependency and function call graphs for learning hierarchical embeddings | |
Lallchandani et al. | Static Slicing of UML Architectural Models. | |
Lyons et al. | Lightweight multilingual software analysis | |
Klein et al. | SystemC-based power evaluation with PowerSC | |
Mathaikutty et al. | Ewd: A metamodeling driven customizable multi-moc system modeling framework | |
Aubert et al. | pymwp: A Static Analyzer Determining Polynomial Growth Bounds | |
Ferenc | Modelling and reverse engineering C++ source code |
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 |
Application publication date: 20161012 |
|
RJ01 | Rejection of invention patent application after publication |