对于 R 包,如何有效地将包从 Depends 移动到 Imports
For an R package, how to efficiently move a package from Depends to Imports
假设我有一个包,在描述文件的 Depends
中有 5 个包,我刚刚意识到由于不可避免的导入,在 Depends
中有这么多包不是一个好习惯随着函数导入数量的增加,冲突开始出现。我想移动,只说包 pkg
到 Imports
但我不知道我的包中使用了 pkg
的哪些功能。理想情况下,我应该进行完全覆盖包源代码的单元测试,并且通过简单地从依赖项中删除 pkg
,我将从 could not find function "foo"
的测试错误中识别特定于 pkg
的导入.但不幸的是,我没有那么广泛的测试范围。我想知道是否有比遍历所有包代码更有效的方法来识别这些导入。
这很简单。变化
Depends: pkgA, pkgB, pgC
至
Imports: pkgA, pkgB, pgC
并将其添加到 NAMESPACE
文件:
import("pkgA")
import("pkgB")
import("pkgC")
这将全局导入所有导出的符号,因此您可以像以前一样继续。
您也可以通过
有选择地导入
importFrom("pkgA", "func1", "func2", "func3")
如果你 运行 R CMD check
它实际上会(非常有帮助)告诉你哪些功能需要这个。第二种方法更精确一些,但设置起来要多一些工作。
而且我认为我们没有删除 'spurious imports' 的工具。查找哪些导入可能未使用可能是您必须手动检查的事情(但尝试删除一个并查看它是否仍然构建 + 检查正常)。
假设我有一个包,在描述文件的 Depends
中有 5 个包,我刚刚意识到由于不可避免的导入,在 Depends
中有这么多包不是一个好习惯随着函数导入数量的增加,冲突开始出现。我想移动,只说包 pkg
到 Imports
但我不知道我的包中使用了 pkg
的哪些功能。理想情况下,我应该进行完全覆盖包源代码的单元测试,并且通过简单地从依赖项中删除 pkg
,我将从 could not find function "foo"
的测试错误中识别特定于 pkg
的导入.但不幸的是,我没有那么广泛的测试范围。我想知道是否有比遍历所有包代码更有效的方法来识别这些导入。
这很简单。变化
Depends: pkgA, pkgB, pgC
至
Imports: pkgA, pkgB, pgC
并将其添加到 NAMESPACE
文件:
import("pkgA")
import("pkgB")
import("pkgC")
这将全局导入所有导出的符号,因此您可以像以前一样继续。
您也可以通过
有选择地导入importFrom("pkgA", "func1", "func2", "func3")
如果你 运行 R CMD check
它实际上会(非常有帮助)告诉你哪些功能需要这个。第二种方法更精确一些,但设置起来要多一些工作。
而且我认为我们没有删除 'spurious imports' 的工具。查找哪些导入可能未使用可能是您必须手动检查的事情(但尝试删除一个并查看它是否仍然构建 + 检查正常)。