covr::package_coverage 报告“没有这样的文件或目录”

nal*_*zok 7 testing code-coverage r package covr

我正在尝试查看sumbose/iRF的代码覆盖率,因此我做了一个git clone,在目录内启动了一个 R 会话,然后

\n\n
> library(covr)\n> package_coverage()\nError in file(con, "r") : cannot open the connection\nIn addition: Warning messages:\n1: In utils::install.packages(repos = NULL, lib = tmp_lib, pkg$path,  :\n  installation of package \xe2\x80\x98/private/tmp/iRF\xe2\x80\x99 had non-zero exit status\n2: In file(con, "r") :\n  cannot open file \'/private/var/folders/ny/f06ns0d568bgf6s559z8j_9m0000gn/T/RtmpAr8dLV/R_LIBS168866d1ef32f/iRF/R/iRF\': No such file or directory\n
Run Code Online (Sandbox Code Playgroud)\n\n

但是, 和 都会R CMD INSTALL iRFinstall.packages(\'iRF\', repos = NULL)预期安装该软件包。

\n

sfc*_*ung 3

我也遇到了这个问题,因为未安装正在开发的软件包。错误消息的路径如下:

... /pkgname/R/pkgname': No such file or directory
Run Code Online (Sandbox Code Playgroud)

pkgname包名在哪里。

我使用 VS Code 并调用covr::package_coverage(),以包文件夹作为工作目录。我可以始终重现该错误,然后我注意到如果我devtools::load_all()先调用就会发生此错误。

我发现,由于未知的原因,如果我启动 R 会话并且没有运行devtools::load_all(). 我不需要(也许不应该)加载该包。covr::package_coverage()在该会话中正常运行而不加载包。

如果我devtools::load_all()在调用之后再调用covr::package_coverage(),然后covr::package_coverage()再次调用,则会在同一会话中失败。

所以我认为解决方案很简单,尽管有点违反直觉:

covr::package_coverage()在没有加载包的会话中调用devtools::load_all()

我可以covr::package_coverage()在这次会议中多次拨打电话,没有任何问题。我对文件所做的更改已正确反映在 的输出中covr::package_coverage(),而无需加载包。

我在Windows中使用covr 3.5.1,R 4.2.0。