我需要提取已解析的源的确切行以创建R函数,以用于coverage分析。 deparse
不够准确,因为在使用包covr
进行覆盖率分析时,确切的行号很重要。
如果有srcfile,我只需要文件名。如果没有,例如函数是在控制台中创建的,我需要创建一个等效的临时文件,该文件本来可以是该函数的源文件。
我看到了几个从函数中提取src信息的函数,比如getsrcFilename
或getSrcref
,但没有专门用来获取源代码。
getSrclines
看起来很有希望,但不会将函数作为参数。我尝试使用attributes
来访问srcref
并以这种方式获取信息,但似乎并未保持一致 - 显然我遗漏了一些东西。
有时
attributes(body(cover.fun))$srcfile
有效,有时attributes(attributes(cover.fun)$srcref)$srcfile)
有效,srcref
本身我在srcfile$lines
或srcfile$original$lines
找到了来源,当然这些看起来就像实验和不是实现这一目标的正确方法。
我需要使用source
或交互式处理包中创建的函数的东西。如果文件名可用,那就是我所需要的,否则我需要源代码行。感谢