paperbot · PL 论文追踪

RSS

A Machine-Learning Algorithm with Disjunctive Model for Data-Driven Program Analysis

TOPLAS 41(2)2019
Minseok Jeon, Sehun Jeong, Sungdeok Cha, Hakjoo Oh

尚未生成 AI 速览(可能缺少 API key 或等待下次运行补跑)。

原文摘要(Abstract)

We present a new machine-learning algorithm with disjunctive model for data-driven program analysis. One major challenge in static program analysis is a substantial amount of manual effort required for tuning the analysis performance. Recently, data-driven program analysis has emerged to address this challenge by automatically adjusting the analysis based on data through a learning algorithm. Although this new approach has proven promising for various program analysis tasks, its effectiveness has been limited due to simple-minded learning models and algorithms that are unable to capture sophisticated, in particular disjunctive, program properties. To overcome this shortcoming, this article presents a new disjunctive model for data-driven program analysis as well as a learning algorithm to find the model parameters. Our model uses Boolean formulas over atomic features and therefore is able to express nonlinear combinations of program properties. A key technical challenge is to efficiently determine a set of good Boolean formulas, as brute-force search would simply be impractical. We present a stepwise and greedy algorithm that efficiently learns Boolean formulas. We show the effectiveness and generality of our algorithm with two static analyzers: context-sensitive points-to analysis for Java and flow-sensitive interval analysis for C. Experimental results show that our automated technique significantly improves the performance of the state-of-the-art techniques including ones hand-crafted by human experts.

链接与引用

DOI 原文 ·

BibTeX
@article{paperbot709,
  title = {A Machine-Learning Algorithm with Disjunctive Model for Data-Driven Program Analysis},
  author = {Minseok Jeon and Sehun Jeong and Sungdeok Cha and Hakjoo Oh},
  journal = {ACM Transactions on Programming Languages and Systems},
  volume = {41},
  number = {2},
  year = {2019},
  doi = {10.1145/3293607}
}