Travis CI 文档中的 R 包错误

Travis CI R package error in documentation

问候和称呼,

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

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

  1. 拥有使用 @keyword internal 编码的 roxygen2 帮助文档。
  2. 使用 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 class (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 代码调用了文档中列出的内部函数之一。

这是我认为最新的 public 面向构建: Travis CI report (v1.0.1)

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

欢迎任何想法。

我可以在笔记本电脑上复制 warnings/errors (运行ning OS X)。我也很确定,如果您查看您的存储库,构建 tar 球,然后 运行 R CMD 检查它,您将获得与 Travis [=] 相同的 warnings/errors 34=]。 (我假设您只在 R Studio 中检查了您的包。)

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

有两个简单的解决方案:

  1. 从 .gitignore 中删除 R/RcppExports.Rsrc/RcppExports.cpp,并将它们与其他所有内容一起提交给 GitHub。这是有道理的,因为这些文件实际上是你的包的一部分,你不应该期望 end-user 在安装你的包之前编译它们。我认为这是处理这个问题的正确方法。
  2. 在构建包之前,在 travis.yml 到 运行 Rcpp::compileAttributes 中添加一行,例如Rscript -e "Rcpp::compileAttributes()"