BiocCheck
BiocCheck
封装Bioconductor包指南和最佳实践,分析包并报告三类问题:
BiocCheck
将继续通过错误
,因此它可能有多个,但如果从操作系统命令行运行,它将退出一个错误代码。)BiocCheck
BiocCheck
是指在R中运行在包含R包或源tarball (gz
文件):
库(BiocCheck) BiocCheck(“packageDirOrTarball”)
BiocCheck
接受以下选项:
##使用方法:R CMD BiocCheck [options]包## ## ##选项:# #——新包# #使检查特定的新包# # # #——no-check-dependencies # #禁用检查坏依赖性# # # #——no-check-deprecated # #禁用检查使用弃用包# # # #——no-check-remotes # #禁用远程包以外的检查使用托管在凹口或Bioconductor # # # #——no-check-version-num # #禁用检查有效版本号# # # #——no-check-R-ver # #禁用检查有效R版本# # # #,no-check-pkg-size # #禁用检查针对包tarball大小## ##——no-check-file-size ##禁用针对单个文件大小的检查## ##——no-check-bioc-views ##禁用针对biocviews的检查(针对非bioc包)## ##——no-check-bbs ##禁用针对bbs的检查(针对非bioc包)。有效描述# # # #——no-check-description文件检查# # # # # #禁用描述——no-check-namespace检查# # # # # #禁用名称空间——no-check-vignettes检查# # # # # #禁用一幕——no-check-library-calls # #禁用检查的使用功能,安装或更新包# # # #——no-check-install-self # #禁用检查要求或图书馆自身的# # # #——no-check-coding-practices # #最好禁用检查一些常见的编码实践# # # #——no-check-function-len # #禁用检查函数长度# # # #——no-check-man-doc # #禁用检查手册页文档# # # #——no-check-news # #禁用检查新闻文件# # # #——no-check-unit-tests # #禁用检查单元测试# # # #——no-check-skip-bioc-tests # #禁用检查测试时跳过bioc # # # #——no-check-formatting # # # # # #禁用检查文件格式——no-check-CRAN # #禁用检查如果包存在于凹口# # # #——no-check-bioc-help # #禁用检查登记Bioconductor邮件列表和支持站点## ##——build-output-file= build-output-file ##包含R CMD构建输出的文件,用于其他分析## ##——quit-with-status ##在执行检查时启用退出代码选项## ## -h,——help ##显示此帮助消息并退出
注意——新包
属性的包构建器中打开Bioconductor包跟踪器,因为它几乎总是用于构建已经提交的新包。
BiocCheck
运行运行BiocCheck
在运行R CMD检查
.
请注意,BiocCheck
不是代替的吗R CMD检查
;它是互补的。它应该被追逐R CMD检查
成功完成。
BiocCheck
也可以通过Travis-CI(持续集成)系统。该服务允许在受控的构建环境中自动测试R包。
只需将下面的行添加到您的包.travis.yml
文件:
bioc_check:真
BiocCheck
BiocCheck
应按如下方式安装:
如果(!"BiocManager" %in% rownames(installed.packages())) install.packages("BiocManager") BiocManager::install("BiocCheck")
包加载过程尝试安装名为BiocCheck
(BiocCheck.bat
在Windows上)进入箱子
贵公司目录R
安装。如果它没有这样做(很可能是由于权限不足),它会告诉你,像这样说:
拷贝“script/BiocCheck”脚本到/Library/Frameworks/R.framework/Resources/bin失败。如果你想能够运行'R CMD BiocCheck',你需要自己复制它到你的路径上的一个目录,确保它是可执行的。有关更多信息,请参阅BiocCheck小插图。
您可以通过遵循这些说明来解决这个问题(注意R
可能位于系统上与上面显示的目录不同的目录中)。
如果您没有权限将此文件复制到箱子
贵公司目录R
如前所述,您可以将其复制到PATH中的任何目录。有关修改PATH的帮助,请参阅此链接(窗户)或这个(Mac / Unix).
如果您手动将此文件复制到PATH中的一个目录,而不是R bin目录,则在(重新)安装时将继续看到上述消息BiocCheck
但你完全可以忽略它。
BiocCheck
输出实际BiocCheck
输出如下所示大胆的.
检查包依赖关系…
可以使用——no-check-dependencies
.
检查其他包是否可以导入此包…
错误
).检查是否理解对象初始化....
请注意
).检查废弃包的使用情况…
可以使用——no-check-deprecated
.
方法的依赖关系多核
包(错误
).
我们的建议是使用BiocParallel.注意,“fork”集群不会从Windows上的并行代码中获得任何好处。套接字集群可以在所有操作系统上运行。
也检查弃用
Bioconductor发行版和devel版本中当前指定的软件包(错误
).
检查远程包的使用情况…
可以使用——no-check-remotes
Bioconductor只允许托管在CRAN或Bioconductor上的依赖项。使用遥控器:
在DESCRIPTION中指定唯一的远程位置是不允许的。
可以使用——no-check-version-num
而且——no-check-R-ver
.
检查版本号…
版本:
在你的描述
文件。如果没有,通常意味着您没有使用它来构建tarballR CMD构建
.(错误
)99
的' y '版本x.y.z
版本控制方案(错误
).以非零值开始的包版本将被标记为警告。典型的新包提交以零' x匈牙利瑞士比分 '版本开始(例如,0.99 . *
;警告
).只有当——新包
提供选项。' x '非零只会在包预先发布或在这种情况下发布时被接受。错误
).取决于:
你的领域描述
文件,BiocCheck
检查以确保指定的R版本与当前使用的版本相匹配Bioconductor.这将阻止在R的早期版本中使用包,这是不建议的,并且经常导致用户混淆(警告
).有关包版本的详细信息,请参见版本编号HOWTO.
可以使用——no-check-pkg-size
而且——no-check-file-size
.
检查包装尺寸检查包大小是否满足Bioconductor要求。当前软件包的大小限制为5mb。实验数据和注释包不包括在此检查中。此检查仅在检查源压缩文件时运行。(错误)
检查单个文件大小当前所有单独文件的大小限制是5 MB。(警告)
可能需要从git历史记录中删除大文件;看到删除大数据文件和清洁Git树
方法可以禁用这些——no-check-bioc-views
选项,在检查non-时可能有用Bioconductor包(因为biocViews是一个独特的概念Bioconductor).
检查biocViews……
可以使用——no-check-bioc-views
biocViews
字段在DESCRIPTION文件(错误
).错误
).警告
).警告
).recommendBiocViews ()
函数biocViews
自动为你的包推荐一些生物视图。有关biocViews的更多信息,请参见使用biocViews HOWTO.
的BioconductorBuild System (BBS)是我们的夜间构建系统,它有一定的要求。不满足这些要求的包可以被BBS悄悄跳过,因此确保每个包都满足要求是很重要的。
可以使用——no-check-bbs
检查构建系统兼容性…
错误
).错误
)警告
如果少于50)警告
如果少于20)请注意
如果少于3)错误
).包
DESCRIPTION文件字段匹配目录或tarball名称(错误
).版本
字段在DESCRIPTION文件(错误
).检查有效的维护者…检查以确保DESCRIPTION文件具有有效的Authors@R
解析为有效的字段维护人员
(错误
).
Authors@R
字段包括:人
.cre
(创造者)的作用。家庭
或鉴于
定义的名字。错误
).将许可证与提供的数据库进行比较file.path (R.home(“分享”,“许可证”、“license.db”))
.数据库中未列出的许可证被标记为请注意
表示无法确定限制使用状态。一个请注意
也会生成许可:
字段格式不正确,或无法定位数据库。可以使用——no-check-namespace
检查描述/命名空间一致性…
BiocCheck
检测在NAMESPACE中导入的包而不是DESCRIPTION,反之亦然,并提供了如何修复此问题的解释(错误
).
检查命名空间导入建议…
如果包裹codetoolsBioC
已安装,BiocCheck
将运行它,看看它是否对包命名空间的“Imports”部分有建议。
codetoolsBioC
是一个实验性的包,目前无法通过BiocManager:安装()
.可以从我们的Subversion存储库凭据为只读/只读。codetoolsbios的输出被打印到屏幕上BiocCheck
不会将其标记为“错误”、“警告”或“注意”。
可以使用——no-check-vignettes
.
检查小插图目录…
仅当您的包是软件包(由您的biocViews),或无法确定包的类型。
小插曲
目录存在(错误
).小插曲
目录只包含小插图源(.Rmd,.Rnw,. rst, .Rhtml, *.Rtex) (错误
).错误
).警告
)错误
)警告
)eval = FALSE
chunk占总量的50%以上(警告
).eval = FALSE
.大部分小插图代码预计将被评估(警告
)检查小插图是否与' R CMD构建'…
只在以下情况下运行——build-output-file
都是确定的。
分析输出R CMD构建
看看是否有小插图。它只是简单地寻找这样的行:
*创建小插图……
如果这条线不存在,这意味着R
未检测到需要构建小插图(错误
).
如果你有小插图来源,但仍然收到这条消息,可能有几个原因:
VignetteBuilder
行描述
文件。VignetteEngine
在小插图源中行。看到knitr
的包小插图页,或Non-Sweave小插曲部分“编写R扩展”以获取更多信息。
可以使用——no-check-library-calls
而且——no-check-install-self
.
请注意
检查安装或更新包的功能的使用情况。的使用安装
,install.packages
,update.packages
或biocLite
.错误
没有必要打电话图书馆()
或要求()
在R目录中的代码或手册页示例中,在您自己的包中。在这些上下文中,您的包已经加载了。可以使用——no-check-coding-practices
.
检查编码实践…
检查是否在R目录中找到了某些编程实践。
我们建议vapp ()
被用来代替酸式焦磷酸钠()
.当X
参数酸式焦磷酸钠()
长度为0;返回类型是a列表()
而不是向量或数组。(请注意
)
我们建议seq_len ()
或seq_along ()
被用来代替1:……
.这是因为案例1:0
创建序列c (1,0)
这可能是一个意想不到或不想要的结果(请注意
).
当用户输入' package:function '而不是使用双冒号('::')来导入函数时,会检查单冒号错别字(错误
).
检查T…检查F…这是不好的做法T
而且F
为真正的
而且假
.这是因为T
而且F
是普通变量,其值可以改变,导致意想不到的结果,而值真正的
而且假
不可更改(警告
).
避免类()= =
而且类()! =
而不是使用是()
.(警告
)
使用系统2 ()
在系统()
.' system2 '是一个比' system '更可移植和灵活的接口。(请注意
)
使用set.seed ()
在R代码中。的set.seed
不应该直接在R函数中设置。用户应该始终拥有该集合的选项。种子并知道它何时被调用。(警告
)
检查R目录中解析的R代码,示例,小插图…
BiocCheck
解析包的R目录中的代码,以及已评估的手册页和小插图示例中的代码,以查找导致不同严重程度问题的各种符号。
浏览器()
导致命令行R调试器被调用,并且不应该在产品代码中使用(尽管如果设置了一些调试选项,可以将这样的调用包装在一个计算为TRUE的条件中)(警告
).<<-
是不好的做法。它可以覆盖用户定义的符号,并引入难以调试的非线性求值路径(请注意
).BiocCheck
检查直接插槽访问(通过@
或槽()
)到S4对象的小插图和示例代码。这段代码应该总是使用访问器与S4类交互。由于您可能正在使用来自另一个包的S4类(不提供访问器),因此严重性仅为请注意
.但是如果S4对象是在包中定义的,那么它就是强制性的为它编写访问器,并在所有小插图和示例代码中使用它们(而不是直接插槽访问)(请注意
).可以使用——no-check-function-len
.
检查函数长度…
BiocCheck
打印关于5个最长函数的长度(以行为单位)的信息消息(这包括R目录中的函数以及已评估的手册页和小插图示例中的函数)。
如果函数长度超过50行,BiocCheck
输出(请注意
).您可能需要考虑将长函数分解为较小的函数。这是一种基本的重构技术,可以使代码更易于阅读、调试、测试、重用和维护。
可以使用——no-check-man-doc
.
检查手册页文档…
使用它生成手册页骨架非常方便提示()
和/或RStudio。这些骨架包含如下注释:
数据集的简洁描述(1-5行)。~~
BiocCheck
要求您删除此类评论(请注意
).
每个手册页必须有一个非空\价值
部分。(错误
)
手册页示例示例
检查导出的对象是否有可运行的示例…
BiocCheck
查看所有记录导出对象的手册页,并列出不包含可运行示例的手册页(因为没有可运行示例)例子
部分或因为其示例被标记为dontrun
或不
).可运行示例是文学式编程的关键部分,有助于确保您的代码实现您所说的功能。
错误
).BiocCheck
列出缺少的实例,并要求您向它们添加可运行的示例(请注意
).dontrun
或不
.不建议使用这些函数,并应加以说明(请注意
).如果有例外,建议使用donttest而不是dontrun (请注意
)因为donttest需要有效的R代码。可以使用——no-check-news
.
检查包新闻…
BiocCheck
查看在' inst '目录或包的顶级目录中是否有一个有效的NEWS文件,并检查它是否被正确格式化(请注意
).
NEWS文件的位置和格式必须与新闻吗?
.这意味着该文件可以是以下四个选项之一:
本月/新闻。理查德·道金斯
。/ NEWS.md
。/新闻
本月/新闻
NEWS文件是一种很好的方法,可以让用户了解包的最新变化。从正确格式的新闻文件摘录将包括在Bioconductor发布公告,告诉用户您的包在上一个发布版中发生了哪些变化。为了实现这一点,您的NEWS文件必须以特定的方式格式化;您可以考虑使用本月/新闻。理查德·道金斯
文件代替,因为格式定义更明确。NEWS文件输出格式错误警告
.
有关新闻文件的更多信息,请参阅帮助主题新闻吗?
.
可以使用——no-check-unit-tests
.
检查单元测试…
我们强烈推荐单元测试,尽管目前还不需要单元测试。有关单元测试是什么,为什么它们是有用的,以及如何实现它们的更多信息,请阅读我们的单元测试.
目前我们只是检查单元测试是否存在,如果没有,敦促您添加它们(请注意
).
在测试中检查skip_on_bioc()…
可以使用——no-check-skip-bioc-tests
.
查找在生物导体环境中跳过测试的标志(请注意
)
可以使用——no-check-formatting
.
检查格式的描述,命名空间,手册页,R源,和小插图源…
没有100%正确的方法来格式化代码。这些检查坚持Bioconductor风格指南(请注意
).
我们认为在代码中避免很长的行是很重要的。请注意,一些文本编辑器不会自动换行文本,需要水平滚动才能阅读。还要注意,R语法非常灵活,空格几乎可以插入表达式中的任何地方,这使得拆分长行变得很容易。
这些检查不仅针对R代码,还针对DESCRIPTION和NAMESPACE文件以及手册页和小插图源文件。所有这些文件都允许拆分长行。
该检查的输出包括前6行有问题的代码;点击查看更多内容BiocCheck::: checkFormatting(“路径/ / YourPackage”,在线=正)
.
有几个有用的包可以用于将R代码格式化为特定的编码标准,例如formatR而且斯泰勒以及“重新格式化代码”按钮RStudio桌面.不过,每种解决方案都有其优点斯泰勒适用于roxygen2
实例,并被积极维护。您可以使用斯泰勒如下图所示:
##安装样式器如果有必要如果(!requireNamespace("styler", quiet = TRUE)) {install.packages("styler")} ##自动重新格式化包中的R代码styler::style_pkg(transformers = styler::tidyverse_style(indent_by = 4))
如果你在和RStudio桌面还可以使用“重新格式化代码”按钮,这将帮助你打破长行代码。另外,使用formatR,但要注意,它会破坏涉及两种类型的引号的有效R代码("
而且'
),不支持重新格式化roxygen2
的例子。一般来说,最好在应用任何自动重新格式化解决方案之前对代码进行版本控制,并实现单元测试,以验证代码在重新格式化代码后按预期运行。
检查是否包已经存在于CRAN…方法可以禁用此功能——no-check-CRAN
选择。具有相同名称的包(忽略大小写差异)不能存在于CRAN (错误
).
检查新包是否已经存在Bioconductor...只在——新包
标志已打开。中不能存在同名(忽略大小写差异)的包Bioconductor(错误
).
检查bioc-devel邮件列表订阅…
这只适用于BiocCheck
运行在Bioconductor构建机器,因为这一步需要特殊的授权。方法可以禁用此功能——no-check-bioc-help
选择。
BiocCheckGitClone
BiocCheckGitClone
提供一些额外的Bioconductor只能在开源目录(原始git克隆)上运行的包检查,而不是tarball。如上所述,在三个类别中类似的报告:
错误.
警告.
请注意.
BiocCheckGitClone
BiocCheckGitClone
意味着在包含R包的目录中运行:
库(BiocCheck) BiocCheckGitClone(“packageDir”)
BiocCheckGitClone
请参见之前的安装BiocCheck
部分。
BiocCheckGitClone
输出实际BiocCheckGitClone
输出如下所示大胆的.
检查有效文件
有许多文件不应该被git跟踪。此检查通知是否存在这些文件(错误
)
当前检查的文件列表如下:
Hidden_file_ext = c("。renviron”、“。rprofile”、“。rproj”、“.rproj。用户”、“。rhistory”、“.rapp。”、“历史。o”、“。sl”、“。所以”、“。dylib”、“。A ", ".dll", ".def", "。ds_store”、“unsrturl。Bst ", ".log", "。辅助”、“。备份”、“。cproject”、“。目录”、“。dropbox”、“。exrc”、“.gdb。”、“历史。gitattributes", ".gitmodules", ".hgtags", ".project", ".seed", ".settings", ".tm_properties")
这些文件可以包含在您的个人目录中,但应添加到.gitignore
文件,这样他们就不会被跟踪。
检查描述
默认的R CMD构建行为将格式化DESCRIPTION文件;在这种情况发生之后,很难确定原始DESCRIPTION文件的某些方面。作者和维护者的指定方式就是一个例子。因此,DESCRIPTION文件以原始形式进行检查。
检查DESCRIPTION格式是否正确DESCRIPTION文件必须被正确格式化,并且能够被读入read.dcf ()
以便在Bioconductor构建机器上正常运行。这个检查尝试read.dcf(“描述”)
如果格式错误,则抛出ERROR。(错误
)
检查有效的维护者虽然在过去使用Author和Maintainer字段是可以接受的,但是R已经转向使用Authors@R
列出包贡献者的标准。这个检查了Authors@R,并且DESCRIPTION中没有Author或Maintainer的实例(错误
)
检查CITATION文件的格式是否正确
BiocCheck
尝试读取所提供的内容引用
文件(即不是由每个包自动生成的文件)readCitationFile ()
-这是
预计会在本月
文件夹(请注意
).readCitationFile ()
需要在没有安装包的情况下正常工作。最常见的失败原因发生在试图使用packageVersion()或packageDate()等helper函数而不是使用meta时\(版本或元\)日期。看到R文档获取更多信息。
BiocCheck
贡献BiocCheck
欢迎和鼓励通过拉请求。请坚持拉请求模板提交您的贡献。
sessionInfo ()
## R正在开发中(不稳定)(2020-11-14 r79432) ##平台:x86_64-pc-linux-gnu(64位)##运行在:Ubuntu 20.04.1 LTS ## ##矩阵产品:默认## BLAS: /home/biocbuild/bbs-3.13-bioc/R/lib/libRblas。所以## LAPACK: /home/biocbuild/bbs-3.13-bioc/R/lib/libRlapack。所以## ## locale: ## [1] LC_CTYPE=en_US。UTF-8 LC_NUMERIC= c# # [3] LC_TIME=en_US。UTF-8 LC_COLLATE= c# # [5] LC_MONETARY=en_US。utf - 8 LC_MESSAGES = en_US。UTF-8 ## [7] LC_PAPER=en_US。UTF-8 LC_NAME= c# # [9] LC_ADDRESS=C lc_phone = c# # [11] LC_MEASUREMENT=en_US。UTF-8 LC_IDENTIFICATION=C ## ##附加的基本包:## [1]stats graphics grDevices utils datasets methods基础## ##其他附加包:## [1]BiocCheck_1.27.2 BiocStyle_2.19.1 ## ##通过命名空间加载(且未附加):[13] Biobase_2.51.0 xfun_0.19 htmltools_0.5.0 ## [16] yaml_2.2.1 RBGL_1.67.0 digest_0.6.27 ## [19] optparse_1.6.6 bookdown_0.21 BiocManager_1.30.10 ## [22] codetools_0.2-18 bitops_1.0-6 stringdist_0.9.6.3 ## [25] RUnit_0.4.32 RCurl_1.98-1.2 evaluate_0.14 ## [28] rmarkdown_2.5 stringi_1.5.3 compiler_4.1.0## [31] stats4_4.1.0 XML_3.99-0.5