一句话:提出自动生成并复用 k-object-sensitive 库摘要的方法,在几乎不损失应用代码精度的前提下显著加速 Java 指针分析。
现代软件大量复用库,导致指针分析难以扩展。库摘要化有望缓解这一问题,但前提是:基于摘要的分析既要更快,又不能显著牺牲应用代码的精度,而已有方法无法同时满足这两点。本文针对 Java 提出一种新方法:以 k-object-sensitive 指针分析(k-obj)为基础,结合一组基于摘要的推理规则,自动生成 k-object-sensitive 库摘要;随后用该摘要替换程序中的原始库,再对应用代码运行 k-obj。这样既可大幅提升分析效率,又能保持应用代码上几乎相同甚至更好的精度。作者在 Soot 中实现了该方法,并在代表性 Java 程序上进行了评估。
The extensive use of libraries in modern software impedes the scalability of pointer analysis. To address this issue, library summarization can be beneficial, but only if the resulting summary-based pointer analysis is faster without sacrificing much precision in the application code. However, currently, no library summarization approaches exist that meet this design objective. This paper presents a novel approach that solves this problem by using k-object-sensitive pointer analysis, k-obj, for Java. The approach involves applying k-obj, along with a set of summary-based inference rules, to generate a k-object-sensitive library summary. By replacing the program's library with this summary and applying k-obj, the efficiency of the program can be significantly improved while maintaining nearly the same or better precision in the application code. We validate our approach with an implementation in Soot and an evaluation using representative Java programs.
@inproceedings{LuHLGX23,
title = {Automatic Generation and Reuse of Precise Library Summaries for Object-Sensitive Pointer Analysis},
author = {Jingbo Lu and Dongjie He and Wei Li and Yaoqing Gao and Jingling Xue},
booktitle = {ASE},
year = {2023},
doi = {10.1109/ase56229.2023.00039}
}