如何加快R CMD检查(e.例如,通过省略检查依赖性)?

1cklez4t  于 2023-05-04  发布在  其他
关注(0)|答案(2)|浏览(142)

我必须检查是否可以安装一个软件包(我们称之为foo)。像往常一样,我使用R CMD check foo并等待检查到达* checking whether package "foo" can be installed...导致错误(或不导致错误)的阶段,然后导航到00install.out以查看错误。不幸的是,R CMD check在开发过程的这一点上花费了大量的时间在我不感兴趣的事情上,例如:例如,* checking package dependencies ...。这是可以避免的吗?(例如,通过指定省略检查依赖项的选项?)或者有没有其他方法来检查软件包是否安装?
注意:我只对加速检查 * 在 * 检查包是否可以安装执行之前感兴趣。此后的一切我都不在乎,因为这是一个)快;B)不需要经常运行,并且c)无论如何都可以中止(在开发的这一点上)。

goucqfw6

goucqfw61#

我很确定没有办法在不检查和安装任何包依赖项的情况下安装一个包(另请参阅Possible to install a package without installing dependencies?)。
如果你只是想知道这个软件包是否可以安装,你可以尝试安装这个软件包(不运行R CMD检查),看看它是否出错(e.例如,通过运行install.packages(".", repos=NULL, type="source")。如果您的软件包存在重大问题(例如缺少NAMESPACE文件),安装将失败。当然,这将不会运行R CMD检查中包含的任何附加检查(例如:例如,检查包中的函数没有引用不存在的变量)。
或者,如果您想运行R CMD检查,但跳过软件包的安装,您可以使用--no-install参数。这将跳过任何涉及实际运行代码的测试(例如:例如,直接运行测试文件,示例和小插图),但仍将执行许多正确的包结构和文档的基本检查。在使用我的一个R包进行测试时,包括--no-install参数将R CMD检查的运行时间缩短了一半。您也可以通过运行devtools::check(args = "--no-install")在devtools中使用此选项。

gcuhipw9

gcuhipw92#

扩展Ethan Bass的答案,可以通过使用传递给R CMD check的命令行参数和环境变量来排除包的检查-安装-测试中的瓶颈。
下面的操作取消 * 检查包依赖项 *,当互联网连接不佳时,可能需要2-3个时间,直到超时。它模仿了devtools::check风格的工作流程:
1.在后台运行job
1.运行R CMD检查而不安装
1.尝试在临时.Library中安装
1.运行测试(此处为tinytest API,如果需要,请替换)

t <- function(pkg) {
    job::job({
        path <- tempdir()
        rcmdcheck::rcmdcheck(args = "--no-install")
        tryCatch({
            cat("Installing package\n")
            install.packages(".",  repos = NULL, type = "source", quiet = TRUE, lib = path)
        }, warning = \(w) stop("package installation failed."))
        suppressPackageStartupMessages(tinytest::test_package(pkg, lib.loc = path))
        job::export("none")
    })
}

t("mypkg")

相关问题