内容

1BiocCheck

BiocCheck封装Bioconductor包指南和最佳实践,分析包并报告三类问题:

2使用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包跟踪器,因为它几乎总是用于构建已经提交的新包。

3.应该在什么时候BiocCheck运行

运行BiocCheck在运行R CMD检查

请注意,BiocCheck不是代替的吗R CMD检查;它是互补的。它应该被追逐R CMD检查成功完成。

BiocCheck也可以通过Travis-CI(持续集成)系统。该服务允许在受控的构建环境中自动测试R包。

只需将下面的行添加到您的包.travis.yml文件:

bioc_check:真

4安装BiocCheck

BiocCheck应按如下方式安装:

如果(!"BiocManager" %in% rownames(installed.packages())) install.packages("BiocManager") BiocManager::install("BiocCheck")

包加载过程尝试安装名为BiocCheckBiocCheck.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但你完全可以忽略它。

5解释BiocCheck输出

实际BiocCheck输出如下所示大胆的

5.1依赖项检查

检查包依赖关系…

可以使用——no-check-dependencies

检查其他包是否可以导入此包…

  • 检查以确保在另一个包导入您的包时不会出现导入问题(错误).

检查是否理解对象初始化....

  • 如果无法确定对象是如何初始化的,则报告(请注意).

5.2弃用包检查

检查废弃包的使用情况…

可以使用——no-check-deprecated

方法的依赖关系多核包(错误).

我们的建议是使用BiocParallel.注意,“fork”集群不会从Windows上的并行代码中获得任何好处。套接字集群可以在所有操作系统上运行。

也检查弃用Bioconductor发行版和devel版本中当前指定的软件包(错误).

5.3远程使用检查

检查远程包的使用情况…

可以使用——no-check-remotes

Bioconductor只允许托管在CRAN或Bioconductor上的依赖项。使用遥控器:在DESCRIPTION中指定唯一的远程位置是不允许的。

5.4版本检查

可以使用——no-check-version-num而且——no-check-R-ver

检查版本号…

  • 正在检查版本号不匹配…类型的值是否匹配在包压缩包中指定的包版本(如果正在检查压缩包)版本:在你的描述文件。如果没有,通常意味着您没有使用它来构建tarballR CMD构建.(错误
  • 检查新包版本号…检查预发布版本是否存在潜在的Bioconductor包使用99的' y '版本x.y.z版本控制方案(错误).以非零值开始的包版本将被标记为警告。典型的新包提交以零' x匈牙利瑞士比分 '版本开始(例如,0.99 . *警告).只有当——新包提供选项。' x '非零只会在包预先发布或在这种情况下发布时被接受。
  • 检查版本号有效性…检查有效版本,该格式是否正确,版本号是否适合此版本Bioconductor错误).
  • 检查R版本依赖关系…方法中指定R版本取决于:你的领域描述文件,BiocCheck检查以确保指定的R版本与当前使用的版本相匹配Bioconductor.这将阻止在R的早期版本中使用包,这是不建议的,并且经常导致用户混淆(警告).

有关包版本的详细信息,请参见版本编号HOWTO

5.5包和文件大小检查

可以使用——no-check-pkg-size而且——no-check-file-size

  • 检查包装尺寸检查包大小是否满足Bioconductor要求。当前软件包的大小限制为5mb。实验数据和注释包不包括在此检查中。此检查仅在检查源压缩文件时运行。(错误)

  • 检查单个文件大小当前所有单独文件的大小限制是5 MB。(警告)

可能需要从git历史记录中删除大文件;看到删除大数据文件和清洁Git树

5.6biocViews检查

方法可以禁用这些——no-check-bioc-views选项,在检查non-时可能有用Bioconductor包(因为biocViews是一个独特的概念Bioconductor).

检查biocViews……

可以使用——no-check-bioc-views

  • 检查biocViews是否存在…检查biocViews字段在DESCRIPTION文件(错误).
  • 基于biocViews检查包类型如果包被标识为软件包、注释包、实验包或工作流包,则给出指示。
  • 检查非平凡的生物视图…检查biocViews比顶级术语Software、AnnotationData或ExperimentData更具体(错误).
  • 检查biocViews有效性…检查有效视图并显示无效视图。注意,biocview是区分大小写的(警告).
  • 检查biocViews来自同一类别…检查所有视图是否来自同一个父视图(Software, AnnotationData, ExperimentData中的一个)(警告).
  • 检查推荐的biocViews…使用recommendBiocViews ()函数biocViews自动为你的包推荐一些生物视图。

有关biocViews的更多信息,请参见使用biocViews HOWTO

5.7构建系统兼容性检查

BioconductorBuild System (BBS)是我们的夜间构建系统,它有一定的要求。不满足这些要求的包可以被BBS悄悄跳过,因此确保每个包都满足要求是很重要的。

可以使用——no-check-bbs

检查构建系统兼容性…

  • 检查DESCRIPTION中的空行…检查以确保DESCRIPTION文件中没有空行(错误).
  • 检查DESCRIPTION是否格式正确…检查DESCRIPTION是否可以用read进行解析。dcf (错误
  • 检查描述:字段长度…检查Description文件中的Description字段是否有最小值
    • 字符数(警告如果少于50)
    • 字数(警告如果少于20)
    • 句子数(请注意如果少于3)
  • 检查DESCRIPTION字段名中是否有空格…检查以确保DESCRIPTION文件字段名中没有空白(错误).
  • 检查Package字段是否与dir/tarball名称匹配…检查以确保DESCRIPTION文件字段匹配目录或tarball名称(错误).
  • 正在检查版本字段…检查以确保版本字段在DESCRIPTION文件(错误).
  • 检查有效的维护者…检查以确保DESCRIPTION文件具有有效的Authors@R解析为有效的字段维护人员错误).

    一个有效的Authors@R字段包括:
    • 类的有效R对象
    • 只有一个人有cre(创造者)的作用。
    • 此人必须有一个语法上有效的电子邮件地址。
    • 那个人肯定有家庭鉴于定义的名字。
    • (可选)一个语法上有效的ORCID ID,如果不是,结果在注释中。

5.8描述检查

  • 检查许可证:限制使用…检查以确保DESCRIPTION文件中的License:不限制使用,例如仅用于学术用途(错误).将许可证与提供的数据库进行比较file.path (R.home(“分享”,“许可证”、“license.db”)).数据库中未列出的许可证被标记为请注意表示无法确定限制使用状态。一个请注意也会生成许可:字段格式不正确,或无法定位数据库。

5.9名称空间检查

可以使用——no-check-namespace

检查描述/命名空间一致性…

BiocCheck检测在NAMESPACE中导入的包而不是DESCRIPTION,反之亦然,并提供了如何修复此问题的解释(错误).

检查命名空间导入建议…

如果包裹codetoolsBioC已安装,BiocCheck将运行它,看看它是否对包命名空间的“Imports”部分有建议。

codetoolsBioC是一个实验性的包,目前无法通过BiocManager:安装().可以从我们的Subversion存储库凭据为只读/只读。codetoolsbios的输出被打印到屏幕上BiocCheck不会将其标记为“错误”、“警告”或“注意”。

5.10装饰图案的检查

可以使用——no-check-vignettes

检查小插图目录…

仅当您的包是软件包(由您的biocViews),或无法确定包的类型。

  • 根据DESCRIPTION中的biocViews检查包类型。
  • 检查小插曲目录存在(错误).
  • 检查小插曲目录只包含小插图源.Rmd,.Rnw,. rst, .Rhtml, *.Rtex) (错误).
  • 在检查目录(不是压缩文件)时,检查inst/doc中是否存在小插图(错误).
  • 检查vignetteBuidler/vignetteEngine是否至少列在DESCRIPTION文件的建议字段中(警告
  • 检查DESCRIPTION中的vignetteBuilder和vignette中的VignetteEngine是否兼容(错误
  • 检查小插图标题是否仍然使用模板值(警告
  • 的数目是否eval = FALSEchunk占总量的50%以上(警告).
  • 检查全局小插图代码选项是否设置为eval = FALSE.大部分小插图代码预计将被评估(警告

检查小插图是否与' R CMD构建'…

只在以下情况下运行——build-output-file都是确定的。

分析输出R CMD构建看看是否有小插图。它只是简单地寻找这样的行:

*创建小插图……

如果这条线不存在,这意味着R未检测到需要构建小插图(错误).

如果你有小插图来源,但仍然收到这条消息,可能有几个原因:

  • 缺失或无效VignetteBuilder描述文件。
  • 缺失或无效VignetteEngine在小插图源中行。

看到knitr包小插图页,或Non-Sweave小插曲部分“编写R扩展”以获取更多信息。

5.11检查R代码中的安装或更新包调用

可以使用——no-check-library-calls而且——no-check-install-self

  • 检查图书馆调用…请注意检查安装或更新包的功能的使用情况。的使用安装install.packagesupdate.packagesbiocLite
  • 检查库/需要的(您的包名)...错误没有必要打电话图书馆()要求()在R目录中的代码或手册页示例中,在您自己的包中。在这些上下文中,您的包已经加载了。

5.12编码实践检查

可以使用——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对象是在包中定义的,那么它就是强制性的为它编写访问器,并在所有小插图和示例代码中使用它们(而不是直接插槽访问)(请注意).

5.13函数长度检查

可以使用——no-check-function-len

检查函数长度…

BiocCheck打印关于5个最长函数的长度(以行为单位)的信息消息(这包括R目录中的函数以及已评估的手册页和小插图示例中的函数)。

如果函数长度超过50行,BiocCheck输出(请注意).您可能需要考虑将长函数分解为较小的函数。这是一种基本的重构技术,可以使代码更易于阅读、调试、测试、重用和维护。

5.14手册页检查

可以使用——no-check-man-doc

检查手册页文档…

  • 检查手册页中的罐装注释

使用它生成手册页骨架非常方便提示()和/或RStudio。这些骨架包含如下注释:

数据集的简洁描述(1-5行)。~~

BiocCheck要求您删除此类评论(请注意).

  • 每个手册页必须有一个非空\价值部分。(错误

  • 手册页示例示例

检查导出的对象是否有可运行的示例…

BiocCheck查看所有记录导出对象的手册页,并列出不包含可运行示例的手册页(因为没有可运行示例)例子部分或因为其示例被标记为dontrun).可运行示例是文学式编程的关键部分,有助于确保您的代码实现您所说的功能。

  • 检查至少80%的手册页必须有可运行的示例(错误).
  • 检查,如果超过80%的手册页有可运行的示例,但仍有一些缺失,BiocCheck列出缺少的实例,并要求您向它们添加可运行的示例(请注意).
  • 检查使用情况dontrun.不建议使用这些函数,并应加以说明(请注意).如果有例外,建议使用donttest而不是dontrun (请注意)因为donttest需要有效的R代码。

5.15新闻检查

可以使用——no-check-news

检查包新闻…

BiocCheck查看在' inst '目录或包的顶级目录中是否有一个有效的NEWS文件,并检查它是否被正确格式化(请注意).

NEWS文件的位置和格式必须与新闻吗?.这意味着该文件可以是以下四个选项之一:

  • 本月/新闻。理查德·道金斯
  • 。/ NEWS.md
  • 。/新闻
  • 本月/新闻

NEWS文件是一种很好的方法,可以让用户了解包的最新变化。从正确格式的新闻文件摘录将包括在Bioconductor发布公告,告诉用户您的包在上一个发布版中发生了哪些变化。为了实现这一点,您的NEWS文件必须以特定的方式格式化;您可以考虑使用本月/新闻。理查德·道金斯文件代替,因为格式定义更明确。NEWS文件输出格式错误警告

有关新闻文件的更多信息,请参阅帮助主题新闻吗?

5.16单元测试检查

可以使用——no-check-unit-tests

检查单元测试…

我们强烈推荐单元测试,尽管目前还不需要单元测试。有关单元测试是什么,为什么它们是有用的,以及如何实现它们的更多信息,请阅读我们的单元测试

目前我们只是检查单元测试是否存在,如果没有,敦促您添加它们(请注意).

在测试中检查skip_on_bioc()…

可以使用——no-check-skip-bioc-tests

查找在生物导体环境中跳过测试的标志(请注意

5.17格式检查

可以使用——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的例子。一般来说,最好在应用任何自动重新格式化解决方案之前对代码进行版本控制,并实现单元测试,以验证代码在重新格式化代码后按预期运行。

5.18重复检查

  • 检查是否包已经存在于CRAN…方法可以禁用此功能——no-check-CRAN选择。具有相同名称的包(忽略大小写差异)不能存在于CRAN (错误).

  • 检查新包是否已经存在Bioconductor...只在——新包标志已打开。中不能存在同名(忽略大小写差异)的包Bioconductor错误).

5.19bioc-devel订阅支票

检查bioc-devel邮件列表订阅…

这只适用于BiocCheck运行在Bioconductor构建机器,因为这一步需要特殊的授权。方法可以禁用此功能——no-check-bioc-help选择。

  • 检查在维护者(或)已订阅bioc-devel邮件列表(错误).

    所有维护人员都必须订阅bio -devel邮件列表,邮件地址为“DESCRIPTION”文件中的邮件地址。你可以订阅在这里

5.20支持网站注册检查

检查支持站点注册…

  • 检查包维护人员是否在我们的注册支持网站的电子邮件地址维护人员他们的包装领域描述文件(错误).方法可以禁用此功能——no-check-bioc-help选择。

    人们问问题的主要地方Bioconductor软件包是支持站点。请注册的列表中包含您的(小写)包名看标签.当一个问题被提出并标记上您的软件包名称时,您将收到一封电子邮件。(如果您没有将您的包添加到监视标记列表中,这将自动为您完成)。

6BiocCheckGitClone

BiocCheckGitClone提供一些额外的Bioconductor只能在开源目录(原始git克隆)上运行的包检查,而不是tarball。如上所述,在三个类别中类似的报告:

7使用BiocCheckGitClone

BiocCheckGitClone意味着在包含R包的目录中运行:

库(BiocCheck) BiocCheckGitClone(“packageDir”)

8安装BiocCheckGitClone

请参见之前的安装BiocCheck部分。

9解释BiocCheckGitClone输出

实际BiocCheckGitClone输出如下所示大胆的

9.1错误文件检查

检查有效文件

有许多文件不应该被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文件,这样他们就不会被跟踪。

9.2描述检查

检查描述

默认的R CMD构建行为将格式化DESCRIPTION文件;在这种情况发生之后,很难确定原始DESCRIPTION文件的某些方面。作者和维护者的指定方式就是一个例子。因此,DESCRIPTION文件以原始形式进行检查。

  • 检查DESCRIPTION格式是否正确DESCRIPTION文件必须被正确格式化,并且能够被读入read.dcf ()以便在Bioconductor构建机器上正常运行。这个检查尝试read.dcf(“描述”)如果格式错误,则抛出ERROR。(错误

  • 检查有效的维护者虽然在过去使用Author和Maintainer字段是可以接受的,但是R已经转向使用Authors@R列出包贡献者的标准。这个检查了,并且DESCRIPTION中没有Author或Maintainer的实例(错误

9.3引用检查

检查CITATION文件的格式是否正确

BiocCheck尝试读取所提供的内容引用文件(即不是由每个包自动生成的文件)readCitationFile ()-这是
预计会在本月文件夹(请注意).readCitationFile ()需要在没有安装包的情况下正常工作。最常见的失败原因发生在试图使用packageVersion()或packageDate()等helper函数而不是使用meta时\(版本或元\)日期。看到R文档获取更多信息。

10扩大BiocCheck

贡献BiocCheck欢迎和鼓励通过拉请求。请坚持拉请求模板提交您的贡献。

SessionInfo

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