Arrow R 包使用一些额外的开发工具
-
lintr用于代码分析 -
styler用于代码样式 -
pkgdown用于构建网站 -
roxygen2用于文档包- R 文档使用
roxygen27.1.2 版本中引入的@examplesIf标签
- R 文档使用
您可以通过运行以下命令安装所有这些额外的依赖项
install.packages(c("lintr", "styler", "pkgdown", "roxygen2"))arrow/r 目录包含一个 Makefile,可帮助完成命令行中的一些常见任务(例如 make test、make doc、make clean 等)。
重新构建文档
R 文档使用 roxygen2 7.1.2 版本中引入的 @examplesIf 标签。
remotes::install_github("r-lib/roxygen2")您可以使用 devtools::document() 和 pkgdown::build_site() 重新构建文档并预览结果。
# Update roxygen documentation
devtools::document()
# To preview the documentation website
pkgdown::build_site(preview=TRUE)样式和 linting
样式和 linting 可以完全使用 pre-commit 工具进行设置和执行
pre-commit run --show-diff-on-failure --color=always --all-files r另请参阅以下关于 R 和 C++ 代码的样式和 lint 详细信息的子章节。
R 代码
包中的 R 代码遵循 tidyverse 样式。在 PR 提交(和推送)时,我们的 CI 将运行 linting,并会在拉取请求上用注释标记可能的错误。
您可以使用 styler 包自动更改包中代码的格式。
styler 包将修复许多样式错误,但并非所有 lintr 错误都可以用 styler 自动修复。我们有意不进行样式设置的文件列表在 r/.styler_excludes.R 中。
如上所述使用 pre-commit 进行 linting 和样式设置是确保您的更改得到正确检查的最佳方式,但如果您愿意,也可以单独运行这些工具
lintr::lint_package() # for linting
styler::style_pkg() # for styling注意:要运行 lintr,我们要求首先安装 cyclocomp 包。
C++ 代码
Arrow 包在 cpp11 之上使用了一些定制工具来准备其 src/ 中的 C++ 代码。这是因为有些功能仅在构建时有条件地启用和构建。如果您更改 R 包中的 C++ 代码,您需要将 ARROW_R_DEV 环境变量设置为 true(可选地,将其添加到您的 ~/.Renviron 文件中以在会话之间保持),以便使用 data-raw/codegen.R 文件进行代码生成。Makefile 命令也会自动处理此问题。
我们的 C++ 代码使用 Google C++ 样式。最简单的方法是使用能够为您格式化代码的编辑器/IDE。许多流行的编辑器/IDE 都支持在保存 C++ 文件时运行 clang-format。安装/启用适当的插件可以为您省去很多麻烦。
运行测试
可以使用 devtools::test() 或 Makefile 替代方案运行测试。
# Run the test suite, optionally filtering file names
devtools::test(filter="^regexp$")# or the Makefile alternative from the arrow/r directory in a shell:
make test file=regexp一些测试根据包构建中某些功能的可用性有条件地启用(S3 支持、压缩库等)。其他测试通常默认跳过,但可以通过环境变量或其他设置启用
如果包在没有 C++ libarrow 的情况下构建,则所有测试都会在 Linux 上跳过。要使构建在 libarrow 不可用时失败(即测试 C++ 构建是否成功),请设置
TEST_R_WITH_ARROW=true除非
ARROW_R_DEV=true,否则一些测试会被禁用除非
ARROW_LARGE_MEMORY_TESTS=true,否则需要分配 >2GB 内存来测试大型类型的测试会被禁用除非在
AWS_ACCESS_KEY_ID和AWS_SECRET_ACCESS_KEY中设置了凭据,否则针对真实 S3 存储桶的集成测试会被禁用;这些可根据请求提供如果在运行
minio server进程时,使用 MinIO 进行本地 S3 测试会启用。如果您使用自定义设置运行 MinIO,您可以设置MINIO_ACCESS_KEY、MINIO_SECRET_KEY和MINIO_PORT来覆盖默认值。
运行检查
您可以使用 devtools::check() 运行包检查,并使用 covr::package_coverage() 检查测试覆盖率。
# All package checks
devtools::check()
# See test coverage statistics
covr::report()
covr::package_coverage()要进行完整的包验证,您可以在终端中运行以下命令。
R CMD build .
R CMD check arrow_*.tar.gz --as-cran运行扩展 CI 检查
在拉取请求上,您可以通过评论 PR 来触发一些操作。这些扩展 CI 检查每晚运行,也可以使用名为 crossbow 的内部工具按需请求。下面显示了一些重要的 GitHub 评论命令。
运行特定任务
@github-actions crossbow submit {task-name}
请参阅 crossbow 配置开头附近的 r: 组定义,以获取与下面 tasks: 列表中的项目名称匹配的 glob 表达式模式列表。