arrow
返回

Statically Analyzing the Dataflow of R Programs

delete2025-10-01
delete0
PRE
AI
F
Florian Sihler *
M
Matthias Tichy
DOI:10.1145/3763087delete
delete原文链接
delete原文求助
delete分享
delete收藏
摘要

摘要

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
Proceedings of the ACM on Programming Languages-PACMPL
IF:
2.8
论文数:
308
被引数:
4.7K

机构

U
ulm university
学者数:
1.9W
论文数: 1.4W
被引数: 57
引用论文

引用论文

err分享
err收藏
Promises are made to be broken: migrating R to strict semantics
err2021-10-20
err0
PREAI
errGoel,Aviral; Ječmen,Jan; Krynski,Sebastián; Flückiger,Olivier; Vitek,Jan
err分享
err收藏
err分享
err收藏
学者 查看更多内容