devtools :: check_man()给出错误,但devtools :: check()没有给出

问题描述 投票:0回答:1

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

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

[不幸的是,有时我想使用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个回答
1
投票

这看起来像R中的错误。如果删除setClass中的matrix_list.R以外的所有代码,仍然会收到错误。如果您删除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中的错误。它并不完全相同,因为原始对象在生成器函数上添加了一些额外的属性,但可能应该足够接近。

© www.soinside.com 2019 - 2024. All rights reserved.