Travis CI 文档中的 R 包错误
Travis CI R package error in documentation
问候和称呼,
我最近将一个包含 R 包的 github repo 连接到 Travis CI。我认为存储库可以很好地构建,但是,出现了几个检查错误,我无法在 Windows、OS X 或 Ubuntu 14.04 LTS 的本地安装上复制这些错误。
错误源于具有以下共同点的函数:
- 拥有使用 @keyword internal 编码的 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 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.R
和 src/RcppExports.cpp
添加到 .gitignore
,这意味着这些文件不在 GitHub 上。 Travis CI 不会 运行 Rcpp::compileAttributes
适合你。
有两个简单的解决方案:
- 从 .gitignore 中删除
R/RcppExports.R
和 src/RcppExports.cpp
,并将它们与其他所有内容一起提交给 GitHub。这是有道理的,因为这些文件实际上是你的包的一部分,你不应该期望 end-user 在安装你的包之前编译它们。我认为这是处理这个问题的正确方法。
- 在构建包之前,在 travis.yml 到 运行 Rcpp::compileAttributes 中添加一行,例如
Rscript -e "Rcpp::compileAttributes()"
。
问候和称呼,
我最近将一个包含 R 包的 github repo 连接到 Travis CI。我认为存储库可以很好地构建,但是,出现了几个检查错误,我无法在 Windows、OS X 或 Ubuntu 14.04 LTS 的本地安装上复制这些错误。
错误源于具有以下共同点的函数:
- 拥有使用 @keyword internal 编码的 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 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.R
和 src/RcppExports.cpp
添加到 .gitignore
,这意味着这些文件不在 GitHub 上。 Travis CI 不会 运行 Rcpp::compileAttributes
适合你。
有两个简单的解决方案:
- 从 .gitignore 中删除
R/RcppExports.R
和src/RcppExports.cpp
,并将它们与其他所有内容一起提交给 GitHub。这是有道理的,因为这些文件实际上是你的包的一部分,你不应该期望 end-user 在安装你的包之前编译它们。我认为这是处理这个问题的正确方法。 - 在构建包之前,在 travis.yml 到 运行 Rcpp::compileAttributes 中添加一行,例如
Rscript -e "Rcpp::compileAttributes()"
。