hen*_*ber 7 reflection parsing static-analysis r
在一个或多个R脚本中提取函数调用及其出现的行的正确方法是什么?是否有允许我这样做的解析基础函数或包,还是应该使用正则表达式构建解决方案?
例如:
function_calls("project1/exploratory_analysis.R")
Run Code Online (Sandbox Code Playgroud)
应输出如下数据帧:
## function line filename
## 1 tapply 35 exploratory_analysis.R
## 2 qplot 80 exploratory_analysis.R
Run Code Online (Sandbox Code Playgroud)
我最终想要实现的是在一个或多个R脚本中构建函数调用和加载包的反向索引,用于教育和参考目的.(例如,用作具有使用示例的存储库).例如:
--------------------------------------------------------
| function | source_file | line | package |
|:--------:|:----------------------:|:-----:|:--------:|
| tapply | exploratory_analysis.R | 35 | base |
| qplot | exploratory_analysis.R | 80 | ggplot2 |
| cor | regression.R | 15 | stats |
| cor | regression.R | 27 | stats |
| tapply | regression.R | 12 | base |
| fromJSON | load_dataset.R | 5 | jsonlite |
| %>% | transformation.R | 10 | magrittr |
--------------------------------------------------------
Run Code Online (Sandbox Code Playgroud)
可以使用一些正则表达式来提取函数调用,但我想知道是否存在支持此任务的解析,静态代码分析或反射工具.
我想结合parse(),substitute(),getParseData(),deParse(),srcfile()(或者在包装功能mvbutils,codetools)将有可能,但我不符合他们的使用不够熟悉的数字出来我自己.