You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

R包提交CRAN时\donttest和\dontrun的适用场景咨询

CRAN R包示例代码包裹规则说明

首先明确两个标记的核心适用差异:

  • \dontrun:标注的代码无论什么场景都不会被自动运行,仅用于逻辑展示
  • \donttest:标注的代码会在用户主动运行示例时执行,但不会在CRAN的R CMD check自动测试环节运行

以下是你提到的几个不确定场景的处理规则:

  • 第2类:ggplot2生成静态图形的示例
    不需要加任何包裹标记。CRAN的测试环境内置无界面图形设备(如png、pdf),静态绘图代码可以正常运行无报错,符合CRAN对示例可运行的要求,只要你的绘图代码没有额外特殊依赖或者超时问题,直接公开即可。

  • 第3类:plotly生成JavaScript交互图形的示例
    单纯生成plotly对象的代码不需要加包裹标记。plotly的静态渲染逻辑在CRAN无界面环境下可以正常执行,不会抛出运行错误,生成的html控件对象可以正常输出,不会影响check结果。如果你的代码里包含调用浏览器预览plotly图形的逻辑,这部分额外代码需要用if(interactive()){}包裹。

  • 第4类:涉及文件系统读写操作的示例
    分两种情况处理:

    • 如果你示例中的读写路径都指向R会话临时目录(即tempdir()返回的路径),完全不需要包裹,临时目录的内容会在会话结束后自动清除,CRAN环境允许读写该目录,比如写入电子表格的示例写成writexl::write_xlsx(df, file.path(tempdir(), "test.xlsx"))就完全符合要求。
    • 如果你必须读写用户当前工作目录的文件,这种情况需要加\donttest包裹,同时建议加注释说明操作影响,避免CRAN检查时修改工作目录文件触发报错。

额外补充注意点:

所有示例代码单条运行时长不能超过5秒,整个包所有示例总运行CPU时长不能超过2分钟,如果有符合上述可运行规则但运行速度极慢的代码,也可以加\donttest包裹避免CRAN检查超时。非必要不要随意使用\dontrun标记,CRAN政策要求尽可能多的示例可以被用户直接运行。

内容的提问来源于stack exchange,提问作者Will

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 07:48:01