论文标题
JavaScript调用图中缺少边缘的自动根本原因量化(扩展版)
Automatic Root Cause Quantification for Missing Edges in JavaScript Call Graphs (Extended Version)
论文作者
论文摘要
由于许多难以分析的语言功能,用于现实世界的JavaScript应用程序的构建声音和精确的静态呼叫图提出了巨大的挑战。此外,这些功能的相对重要性可能会根据所使用的呼叫图算法以及所分析的应用程序类别而有所不同。在本文中,我们提出了一种技术,可以自动量化呼叫图的不同根本原因对一组目标应用程序的相对重要性。该技术是通过识别与静态分析所缺少的每个调用边缘相关的动态功能数据的工作来工作的,并正确处理具有多个根本原因和相互依赖性调用的情况。我们采用我们的方法来对一组基于框架的Web应用程序的最先进的呼叫图构造技术进行详细研究。该研究产生了许多有用的见解。我们发现,虽然动态属性访问是基准跨基准边缘的最常见根本原因,但其他根本原因的重要性因基准而异,对于分析设计师来说可能是有用的信息。此外,通过我们的方法,我们可以在我们研究的呼叫图构建器中迅速识别并解决召回问题,并快速评估最新的基于Node.js的应用程序的分析技术是否对基于浏览器的代码有所帮助。我们的所有代码和数据都可以公开可用,我们技术的许多组成部分都可以重新使用以促进未来的研究。
Building sound and precise static call graphs for real-world JavaScript applications poses an enormous challenge, due to many hard-to-analyze language features. Further, the relative importance of these features may vary depending on the call graph algorithm being used and the class of applications being analyzed. In this paper, we present a technique to automatically quantify the relative importance of different root causes of call graph unsoundness for a set of target applications. The technique works by identifying the dynamic function data flows relevant to each call edge missed by the static analysis, correctly handling cases with multiple root causes and inter-dependent calls. We apply our approach to perform a detailed study of the recall of a state-of-the-art call graph construction technique on a set of framework-based web applications. The study yielded a number of useful insights. We found that while dynamic property accesses were the most common root cause of missed edges across the benchmarks, other root causes varied in importance depending on the benchmark, potentially useful information for an analysis designer. Further, with our approach, we could quickly identify and fix a recall issue in the call graph builder we studied, and also quickly assess whether a recent analysis technique for Node.js-based applications would be helpful for browser-based code. All of our code and data is publicly available, and many components of our technique can be re-used to facilitate future studies.