mcpField
R
r-package-development

r-package-development

github.com/posit-dev开发551821 次安装今天更新
代码仓库

关于 r-package-development

面向 R 包开发的实践规则与命令参考,涉及代码风格、测试、文档和 NEWS.md。适合在开发过程中统一实现、检查与发布说明的处理方式。

主要功能

  1. 01执行包代码与测试的命令
  2. 02代码格式与管道风格约定
  3. 03测试编写和断言规则
  4. 04roxygen2 与 pkgdown 文档规范
  5. 05NEWS.md 条目编写规则

适用场景

  1. 01运行包代码或指定测试
  2. 02为新代码补充并组织测试
  3. 03更新导出函数文档与 NEWS.md

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/posit-dev/skills --skill r-package-development

安装后在 Claude Code 中输入/r-package-development确认已加载。

详细介绍

R 包开发

关键命令

# Run code in the package
Rscript -e "devtools::load_all(); code"

# Run all tests
Rscript -e "devtools::test()"

# Run all tests for files starting with {name}
Rscript -e "devtools::test(filter = '^{name}')"

# Run all tests for R/{name}.R
Rscript -e "devtools::test_active_file('R/{name}.R')"

# Run a single test "blah" for R/{name}.R
Rscript -e "devtools::test_active_file('R/{name}.R', desc = 'blah')"

# Redocument the package
Rscript -e "devtools::document()"

# Check pkgdown documentation
Rscript -e "pkgdown::check_pkgdown()"

# Check the package with R CMD check
Rscript -e "devtools::check()"

# Format code
air format .

编码

  • 生成代码后,始终运行 air format .。
  • 使用基础管道运算符(|>),不要使用 magrittr 管道(%>%)。
  • 单行匿名函数使用 \() ...。其他情况均使用 function() {...}。

测试

  • R/{name}.R 的测试放在 tests/testthat/test-{name}.R 中。
  • 所有新增代码都应附带测试。
  • 如果已有测试,请将新测试放在相似的现有测试旁边。
  • 尽量让测试保持精简,少写注释。
  • 避免使用 expect_true() 和 expect_false(),改用能提供更明确失败消息的具体断言。
  • 测试错误和警告时,不要使用 expect_error() 或 expect_warning()。错误应使用 expect_snapshot(error = TRUE),警告应使用 expect_snapshot(),因为这样用户可以查看输出的完整文本。

文档

  • 每个面向用户的函数都应导出,并附有 roxygen2 文档。
  • roxygen 注释每行不超过 80 个字符。
  • 内部函数不应有 roxygen 文档。
  • 每当新增文档主题(非内部主题)时,也要将该主题添加到 _pkgdown.yml。
  • 修改 roxygen2 注释后,始终重新生成包文档。
  • 使用 pkgdown::check_pkgdown() 检查所有主题是否都包含在参考索引中。

NEWS.md

  • 每项面向用户的更改都应在 NEWS.md 中添加一条项目符号。小型文档更改或内部重构不必添加。
  • 每条项目符号都应简要说明该更改对最终用户的影响。
  • 如果更改与某个函数相关,请在项目符号开头附近写出函数名称。
  • 如果项目符号与 GitHub issue 或拉取请求相关,请在句号前用括号注明编号:(#123).。
  • 按函数名称的字母顺序排列项目符号。未提及函数名称的项目符号放在最前面。

评论

支持 Markdown