返回
Statically Analyzing the Dataflow of R Programs
DOI:10.1145/3763087.png)
摘要
En 中文
R编程语言主要设计用于统计计算,主要由无计算机科学背景的研究者使用。R提供了广泛且难以进行静态分析的动态特性和特点,例如动态作用域和具有动态副作用的存在性评估。同时,R生态系统缺乏支持研究者理解并改进其代码的复杂分析工具。本文介绍了一种新颖的静态数据流分析框架,适用于R编程语言,能够处理R程序的动态特性,并生成给定R程序的数据流图。该图对于一系列分析至关重要,包括程序切片,我们将其作为概念验证加以实现。核心分析作为有状态折叠应用于R程序抽象语法树的归一化版本,跟踪(再)定义、值、函数调用、副作用、外部文件和动态控制流,以生成每个程序的数据流图。我们通过在手动整理的包含779个合理切片点的可执行真实世界R脚本数据集上进行输出等价性测试,评估了分析的正确性。此外,我们基于R语言能力和R解释器实现,使用一组系统性测试用例,并在R的包管理器CRAN上可用的4,230个真实世界R脚本和20,815个包的集合上测量运行时间和内存消耗。此外,我们评估了程序切片器的召回率、通过缩减实现的准确性及其对现有技术的改进。在等价测试套件中,我们正确分析了几乎所有程序,对于99.7%的手动整理切片点保持了相同的输出。平均而言,我们分析数据流需要576毫秒,存储一个研究脚本图约需213 KB。这表明我们的分析能够快速且正确地分析真实世界源代码。我们的切片器平均减少了84.8%的标记,表明其改善程序理解的潜力。
Keyword:
Static Analysis
Dataflow Analysis
R Programming Language
期刊
P
IF:
2.8
论文数:
308
被引数:
4.7K
机构
引用论文
Comprehensive Evaluation of Static Analysis Tools for Their Performance in Finding Vulnerabilities in Java Code
IEEE ACCESS
IF3.6

