一句话:研究 Datalog 推理的 lifting 理论,并在 Soufflé 引擎中实现,将分析从单个产品提升到整个产品线。
软件产品线(SPL)上的程序分析是产品线工程与软件分析交叉的核心问题,已有工作尝试将特定产品级分析“提升”到整个产品线运行。本文针对基于 Datalog 的分析(如指针分析与污点分析),研究 Datalog 推理提升的理论性质,并在 Soufflé Datalog 引擎中实现了一个提升推理算法,使其能直接在整个产品线上执行分析。作者在一组基准产品线上进行了评估,与对每个产品逐一暴力分析相比,该方法在处理时间和事实数据库规模上均取得显著节省,在其中一个基准上速度提升达数十亿倍。
Applying program analyses to Software Product Lines (SPLs) has been a fundamental research problem at the intersection of Product Line Engineering and software analysis. Different attempts have been made to ”lift” particular product-level analyses to run on the entire product line. In this paper, we tackle the class of Datalog-based analyses (e.g., pointer and taint analyses), study the theoretical aspects of lifting Datalog inference, and implement a lifted inference algorithm inside the Soufflé Datalog engine. We evaluate our implementation on a set of benchmark product lines. We show significant savings in processing time and fact database size (billions of times faster on one of the benchmarks) compared to brute-force analysis of each product individually.