【问题标题】:devtools::check_man() gives error but devtools::check() does notdevtools::check_man() 给出错误但 devtools::check() 没有
【发布时间】:2020-09-01 10:36:53
【问题描述】:

我正在开发一个包 (https://github.com/dpmcsuss/iGraphMatch/)。

我刚开始使用devtools::check() 等来检查问题。目前,我没有收到任何错误、警告或注释 (YAY)。

不幸的是,有时我想使用devtools::check_man() 来检查文档中的问题,因为这样会更快。当我运行它时,我得到以下输出。

> devtools::check_man()
Updating iGraphMatch documentation
Loading iGraphMatch
Writing NAMESPACE
Writing NAMESPACE
Checking documentation...
Error: cannot source package code:
cannot add bindings to a locked environment

我试过分离包,卸载命名空间,确保文件没有被锁定,卸载包,......似乎没有任何区别。

如果我制作一个新包,一切正常。我意识到这远不是一个最小的工作示例,但我不确定从哪里开始寻找。任何建议,将不胜感激。 (我还没有探索过的一件事是事物的顺序是否记录在案。)

【问题讨论】:

    标签: r devtools r-package


    【解决方案1】:

    这看起来像是 R 中的一个错误。如果您删除除 matrix_list.R 中的 setClass 之外的所有代码,您仍然会收到错误消息。如果您删除 matrix_list.R 文件而不删除其他任何内容,则不会。

    如果你使用tools::checkDocStyle(dir = "iGraphMatch"),就会发生这种情况,你根本不需要devtools

    我的结论是 tools::checkDocStyle 函数和 S4 methods::setClass 之间存在一些不兼容。我不知道是否有解决方法。

    编辑添加:这个错误有一个相当简单的解决方法。反而 使用代码

    matrix_list <- setClass("matrix_list", contains = "list")
    

    matrix_list.R 文件中,使用这个几乎等效的代码:

    setClass("matrix_list", contains = "list")
    
    matrix_list <- function(...)
      new("matrix_list", ...)
    

    这样可以避免触发tools::checkDocStyle 中的错误。它并不完全相同,因为原始版本在生成器函数上添加了一些额外的属性,但它可能应该足够接近。

    【讨论】:

      猜你喜欢
      • 2018-03-02
      • 2020-02-18
      • 2017-06-10
      • 2019-08-31
      • 2021-04-29
      • 2019-05-08
      • 2014-03-07
      • 2015-11-14
      • 1970-01-01
      相关资源
      最近更新 更多