【发布时间】:2011-06-15 07:45:16
【问题描述】:
我收到了一大块格式不正确的带有大量函数的单片 R 代码,我想弄清楚哪些函数调用了哪些函数。
我以为我可以使用 roxygen 的 @callGraph 东西,但是 a) 代码需要放在一个包中,这对这段代码来说会让人头疼,并且 b) 当我运行它时它甚至似乎都不起作用在我的一个简单的包装上。我看到一位 Roxygen 作者的帖子说,由于 Rgraphviz 依赖关系,调用图生成被禁用,但代码在那里。无论如何。
谁有更好的方法来快速计算出 foo 调用 bar、baz 和 qux,而 qux 调用 quux?
编辑:基于 R 分析系统的解决方案很棒,假设您可以实际运行代码...文件中的一半内容没有运行,我不知道它做了什么...静态分析我想,希望太大了。
编辑 2:Roxygen 的调用图的东西似乎做了静态分析,基于函数表达式的递归下降并检查 is.callable。能够在任何功能上运行它会很可爱......我明天可能会玩这个......
【问题讨论】:
-
您可以查看 CRAN 上“mvbutils”包中的“foodweb”功能。这是一篇描述其用法的文章的链接:r-bloggers.com/r-function-of-the-day-foodweb-2 免责声明:这是我的网站,我写了那篇文章。
-
我在考虑写一个函数来做这样的事情。那是您发布上述博客文章的时间。英雄所见略同? :)
-
几乎就是我所追求的。现在将输出转换为点格式,或者将其加载到其他 R 图形包中......
-
多语言静态调用图生成器见这篇文章,也支持R:stackoverflow.com/a/67692928/251947
标签: r call-graph