基于CFL可达性的k-CFA选择性上下文敏感指针分析方法
1. 研究背景与实验设置
在指针分析领域,有一些常见的实践方法。对于Java反射问题,使用动态反射分析工具TamiFlex来解决;对于本地代码,利用Soot中提供的方法摘要。字符串和类似异常的对象按动态类型区分,并进行上下文不敏感分析。在分析Java标准库时,使用JRE1.6.0 45对11个程序进行分析。
实验在配备256GB RAM的Xeon E5 - 1660 3.2GHz机器上进行,每个程序的分析时间取3次运行的平均值。
为了便于研究和比较,定义了以下几种分析方法:
- 对于每个考虑的k∈{2, 3},kcs作为基线方法。
- z - kcs是由Zipper加速的kcs版本。
- s - kcs是由Selectx加速的kcs版本。
- 同时给出了Spark(记为ci)的结果用于对比。
kcs通过动态构建调用图来计算程序的指向信息。在异常分析方面,使用Spark内置的机制处理Java异常,但异常处理方式不影响评估结果。在忽略异常处理语句的情况下,对11个程序的kcs、z - kcs、s - kcs和ci四种分析方法的精度和效率比率几乎相同。
2. kcs与s - kcs的比较
2.1 效率比较
指针分析的效率通过分析程序完成所需的时间来衡量,每个程序的分析时间预算设定为24小时,所有指标都是数值越小越好。
- 当k = 2时,s - 2cs平均比2cs快11.2倍。例如,对于hsqldb程序,2cs分析需要244.2秒,而s - 2cs仅需10.4秒,加速比达到23.5倍;对于fi
超级会员免费看
订阅专栏 解锁全文
1254

被折叠的 条评论
为什么被折叠?



