r - 文档中的 Travis CI R 包错误

标签 r package travis-ci roxygen2

问候和问候,

我最近连接了一个 github repo包含 Travis CI 的 R 包。我认为存储库会很好地构建,但是,出现了几个检查错误,我无法在 Windows、OS X 或 Ubuntu 14.04 LTS 的本地安装上复制这些错误。

错误源自具有以下共同点的函数:

  • 拥有使用 @keyword 内部编码的 roxygen2 帮助文档。
  • 使用 Rcpp/RcppArmadillo 编写。

  • 具体来说,我从 Travis CI 收到以下警告:

    Functions or methods with usage in documentation object 'internal function here' but not in code:



    这不是特别成问题,因为它是一个警告。 previous post使用@method 和@export 解决了此示例的不同形式。但是,Rcpp 函数不属于 OO 类 (S3/S4/RR)。

    然而,当 Travis CI 开始评估包的示例时,这个警告就会变成一个错误:

    Error: could not find function "internal function here"



    并导致构建失败。尽管如此,构建本身应该通过检查,因为该函数确实存在。

    Travis CI 是使用 recommended guidelines 配置的以下列方式:
    language: r
    sudo: required
    warnings_are_errors: true
    
    r_packages:
     - ggplot2
     - devtools
     - RcppArmadillo
     - knitr
     - gridExtra
     - grid
    
    r_build_args: "--no-build-vignettes"
    r_check_args: "--no-build-vignettes --as-cran"
    

    备注 添加了 --no-build-vignettes 是因为 Travis 在构建它们时会出错,因为 R 代码调用了文档中列出的内部函数之一。

    这是我相信最新的面向公众的构建:
    Travis CI report (v1.0.1)

    CRAN 上第一个版本的结果:
    CRAN report (v1.0.0)

    任何想法都会受到欢迎。

    最佳答案

    我可以在我的笔记本电脑(运行 OS X)上复制警告/错误。我也很确定,如果您检查存储库,构建 tar 球,然后对其运行 R CMD 检查,您将收到与 Travis CI 相同的警告/错误。 (我假设您只在 R Studio 中检查了您的包。)

    据我所知,问题是您添加了 R/RcppExports.Rsrc/RcppExports.cpp给您的 .gitignore ,这意味着这些文件不在 GitHub 上。 Travis CI 不运行 Rcpp::compileAttributes为你。

    有两个简单的解决方案:

  • 删除 R/RcppExports.Rsrc/RcppExports.cpp从 .gitignore 并将它们与其他所有内容一起提交到 GitHub。这是有道理的,因为这些文件实际上是您的软件包的一部分,您不必期望最终用户在安装您的软件包之前编译它们。我认为这是处理这个问题的正确方法。
  • 在构建包之前向 travis.yml 添加一行以运行 Rcpp::compileAttributes,例如Rscript -e "Rcpp::compileAttributes()" .
  • 关于r - 文档中的 Travis CI R 包错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34585560/

    相关文章:

    npm - travis 是通过运行测试在全局还是本地安装 npm 包?

    r - 如果我希望将 Anaconda 与 R 一起使用,是否需要重新安装 R-Studio?

    r - 使用插入符号库修剪树返回复杂的树

    matlab - 开源 Matlab 打包工具

    python - 如何在 python 包中包含 PyOpenSSL

    python - pypi 包装和 secret : why does a github--intended . travis.yml 持有密码?

    validation - R中的交叉验证

    r - 使用 R "nnet"包的神经网络 - 当使用 SIZE >2 时为 NA

    python - 如何更新包哈希?

    postgresql - 工作停顿(结束)