《软件学报杂志》发表论文赏析
作者:沈天琪,王熙灶,宾向荣,卜磊
单位:沈天琪,计算机软件新技术全国重点实验室(南京大学), 江苏 南京 210023;南京大学 计算机科学与技术系, 江苏 南京 21002311,王熙灶,计算机软件新技术全国重点实验室(南京大学), 江苏 南京 210023;南京大学 计算机科学与技术系, 江苏 南京 21002302,宾向荣,计算机软件新技术全国重点实验室(南京大学), 江苏 南京 210023;南京大学 计算机科学与技术系, 江苏 南京 21002303,卜磊,计算机软件新技术全国重点实验室(南京大学), 江苏 南京 210023;南京大学 软件学院, 江苏 南京 21002304
摘要:指针分析是对软件进行编译优化、错误检测的核心基础技术之一. 现有经典指针分析框架, 如Doop, 会将待分析程序和分析算法转化成Datalog评估问题并进行求解, 如程序规模较大, 单次求解分析时间开销较大. 在程序频繁变更发布的情况下, 相关程序分析的开销更是难以负担. 近年来, 增量分析作为一种在代码频繁变更场景下有效复用已有分析结果提升分析效率的技术受到了越来越多的关注. 然而, 目前的增量指针分析技术通常针对特定算法设计, 支持的指针分析选项有限, 其可用性也受到较大限制. 针对上述问题, 设计并实现一种基于差分式Datalog求解的增量指针分析框架DDoop (Differential Doop). DDoop实现增量输入事实生成技术与增量分析规则自动化重写技术, 将多版本程序增量分析问题表达为差分Datalog评估问题, 从而可以充分利用成熟的差分式Datalog求解引擎, 如DDlog, 来实现端到端的增量指针分析, 并最大化兼容复用Doop中已有的指针分析实现, 提供透明的增量化支持. 在广泛应用的真实世界程序上对DDoop进行实验评估, 实验结果显示DDoop相较于非增量的Doop框架具有显著的性能优势, 同时高度兼容Doop中已有的各种指针分析规则.
关键词:指针分析;增量分析;Datalog引擎;增量计算;差分式Datalog
基金资助:国家自然科学基金(62232008, 62172200); 江苏省前沿引领技术基础研究专项(BK20202001); 中央高校基本科研业务费专项资金 (020214380101)