从函数中可靠地提取srclines和srcfile

从函数中可靠地提取srclines和srcfile,r,function,R,Function,我需要提取被解析为创建R函数的源代码的精确行,以用于覆盖率分析deparse不够准确,因为在使用packagecovr进行覆盖率分析时,准确的行号很重要 如果有src文件,我只需要文件名。如果没有,例如,函数是在控制台中创建的,我需要创建一个等效的临时文件,该文件可能是该函数的源文件 我看到了几个从函数中提取src信息的函数,如getsrcFilename或getSrcref,但没有一个函数专门用于获取源代码 getSrclines看起来很有希望,但没有将函数作为参数。我试图使用attribut

我需要提取被解析为创建R函数的源代码的精确行,以用于覆盖率分析
deparse
不够准确,因为在使用package
covr进行覆盖率分析时,准确的行号很重要

如果有src文件,我只需要文件名。如果没有,例如,函数是在控制台中创建的,我需要创建一个等效的临时文件,该文件可能是该函数的源文件

我看到了几个从函数中提取src信息的函数,如
getsrcFilename
getSrcref
,但没有一个函数专门用于获取源代码

getSrclines
看起来很有希望,但没有将函数作为参数。我试图使用
attributes
来访问
srcref
并以这种方式获取信息,但它的存储似乎并不一致——显然我遗漏了一些东西

有时
attributes(body(cover.fun))$srcfile
可以工作,有时这个
attributes(attributes(cover.fun)$srcref)$srcfile也可以工作,在
srcref
本身中,我在
srcfile$lines
srcfile$original$lines
中找到了源代码,当然这些看起来就像实验,不是实现这一点的正确方法


我需要一些能够处理在包中创建的函数的东西,包括
source
或交互方式。如果文件名可用,这就是我所需要的,否则我需要源代码行。谢谢

那么这真的是关于
covr
的问题吗?还是你只是想看看?为什么
deparse()
不够准确?这将有助于给出更具体的例子。不,covr只是说这来自于一个真实的应用程序,而不是一些愚蠢的好奇心
deparse
不保留换行符。