devtools::check_man() 给出错误,但 devtools::check() 没有
devtools::check_man() gives error but devtools::check() does not
我正在开发一个包 (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 中的错误。如果您删除 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
中的错误。它并不完全相同,因为原始版本在生成器函数上添加了一些额外的属性,但它应该足够接近了。
我正在开发一个包 (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 中的错误。如果您删除 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
中的错误。它并不完全相同,因为原始版本在生成器函数上添加了一些额外的属性,但它应该足够接近了。