【技术实现步骤摘要】
一种针对泛型编程的类型敏感指针分析方法及装置
[0001]本申请涉及软件测试
,具体涉及一种针对泛型编程的类型敏感指针分析方法及装置。
技术介绍
[0002]程序静态分析(Program Static Analysis)是指在不运行代码的方式下,通过词法分析、语法分析、控制流、数据流分析等技术对程序代码进行扫描,验证代码是否满足规范性、安全性、可靠性、可维护性等指标的一种代码分析技术。
[0003]指针分析是程序静态分析中的一种,回答了程序中的指针指向哪个内存的问题。一方面,以Java语言为例,Java语言中的指针分析指的是一个指针指向程序中的哪个对象(Object)的问题,通常指针分析是一个可能性分析,分析的结果通常是一个指针可能指向哪些对象。而另一方面,泛型编程被广泛采纳入现代编程方式中,使用泛型可以使用类型变量作为参数来定义类和方法,然后通过赋予它们特定的实际类型来实例化这些类或者方法。
[0004]而现有技术中并未有针对泛型编程的指针分析方法,导致常规的指针分析方式对泛型编程得到的代码的分析效果 ...
【技术保护点】
【技术特征摘要】
1.一种针对泛型编程的类型敏感指针分析方法,其特征在于,所述方法包括:获取待分析的目标程序代码;将所述目标程序代码中的泛型编程语句中的类型变量,映射至所述类型变量的实际类型,并将所述类型变量与所述实际类型的映射放入所述泛型编程语句的上下文;基于所述泛型编程语句的上下文,对所述目标程序代码进行上下文敏感指针分析,以获得所述目标程序代码中各个指针之间的指向关系。2.根据权利要求1所述的方法,其特征在于,所述将所述目标程序代码中的泛型编程语句中的类型变量,映射至所述类型变量的实际类型,包括:根据所述泛型编程语句的类型,将所述目标程序代码中的泛型编程语句中的类型变量,映射至所述类型变量的实际类型。3.根据权利要求2所述的方法,其特征在于,所述根据所述泛型编程语句的类型,将所述目标程序代码中的泛型编程语句中的类型变量,映射至所述类型变量的实际类型,包括:当所述泛型编程语句类型为NEW语句时,根据类型更新函数,对所述目标程序代码中的泛型编程语句中的类型变量进行处理,以将所述类型变量映射至所述实际类型;所述类型更新函数用于根据所述NEW语句中的实例化类型,对所述类型变量进行映射,以确定所述类型变量的实际类型。4.根据权利要求3所述的方法,其特征在于,所述根据类型更新函数,对所述目标程序代码中的泛型编程语句中的类型变量进行处理,以将所述类型变量映射至所述实际类型,包括:当检测到NEW语句中以类型变量将对象实例化时,查找所述类型变量的映射的初始化点,并将所述初始化点处的类型参数确定为所述实际类型。5.根据权利要求2所述的方法,其特征在于,根据所述泛型编程语句的类型,将所述目标程序代码中的泛型编程语句中的类型变量,映射至所述类型变量的实际类型,包括:当所述泛型编程语句类型为CALL语句时,根据类型追加函数,对所述目标程序代码中的泛型编程语句中的类型变量进行处理,以将所述类型变量映射至所述实际类型;所述类型追加函数用于根据所述C...
【专利技术属性】
技术研发人员:李昊峰,高琳,李炼,
申请(专利权)人:北京中科天齐信息技术有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。