事件驱动应用程序的精确数据流分析
Precise Dataflow Analysis of Event-Driven Applications
摘要:
事件驱动编程广泛用于实现用户界面、Web应用程序和非阻塞I/O。事件驱动程序被组织为事件处理程序的集合,其执行由事件触发。传统的静态分析技术无法精确地推理事件驱动代码,因为它们保守地假设事件处理程序可以以任何顺序执行。本文提出了一个自动转换过程间有限分布子集(IFDS)的问题,过程间分布式环境(IDE)的问题作为一个通用的解决方案,以获得精确的静态分析的事件驱动的应用程序,在这两种形式的问题可以解决现有的实现。我们的贡献是展示如何提高分析精度,自动丰富前者的状态信息的事件处理程序过滤掉不可行的路径。我们证明了我们的转换的正确性和报告的实验证明的概念实现的一个子集的JavaScript。
英文摘要:
Event-driven programming is widely used for implementing user interfaces, web applications, and non-blocking I/O. An event-driven program is organized as a collection of event handlers whose execution is triggered by events. Traditional static analysis techniques are unable to reason precisely about event-driven code because they conservatively assume that event handlers may execute in any order. This paper proposes an automatic transformation from Interprocedural Finite Distributive Subset (IFDS) problems to Interprocedural Distributed Environment (IDE) problems as a general solution to obtain precise static analysis of event-driven applications; problems in both forms can be solved by existing implementations. Our contribution is to show how to improve analysis precision by automatically enriching the former with information about the state of event handlers to filter out infeasible paths. We prove the correctness of our transformation and report on experiments with a proof-of-concept implementation for a subset of JavaScript.
机构、总结、中文摘要均由AI分析而来,可能存在错误,请以论文正文为准。