如何及时了解R包中已知错误和错误修复情况?

15

是否有一个标准的 R 社区资源用于跟踪已知软件包错误或 bug 修复?我的目前方法相当手动。 (注:我将此限制为 CRAN-请参见注1。)

我的使用案例基本上是 bug 监控和软件包更新管理。我已经平均每个月发现了几个 bug(我会认真向作者报告;-))。由于我大部分工作都是在虚拟机上完成的,因此我倾向于在必要的软件包的 bug 状态得到很好的掌握后更新 VM 映像。当一堆 bug 被修复时,我可以删除我的解决方法,这很棒,并更新映像。当我发现 bug 疫情时,我不会创建新的映像。

以下是我目前正在使用的来源:

  • NEWS 文件:许多但不是所有软件包都有 NEWS 文件。这肯定是一个有用的起点。
  • 软件包主页:一些软件包在 CRAN 上没有 NEWS 文件,但在作者的网站上单独发布更改日志。
  • R 项目托管的邮件列表
  • 谷歌群组的软件包
  • 与软件包作者的个人通信
  • 软件包的 bug 跟踪(例如,开发人员可能会使用 Bugzilla)
这里有一点需要澄清,发现一个bug是一回事(我承认我们所有人都会遇到bug),但是迟迟才发现已知的或者更好的是已经修复的bug就另外一回事了。这两种情况都会拖慢我的编程速度,但更好的bug监控(也许我们需要一个cdc4R包:))将显著减少影响。如果没有标准的更新提示系统(例如扩展到update.packages()的插件,报告可以更新哪些软件包并链接到更改信息),那么用户就需要寻找这些信息。
作为这样的用户,试图寻找这些信息,我是否在上面的列表中忽略了某些标准资源?例如,是否有一个R邮件列表,开发人员经常在其中发布他们的更改和错误修复?或者是否有一个聚合这些帖子、发布测试(CRAN发布R CMD CHECK输出,似乎如此)或提供其他反馈的网站?

以下是其他资源的一些额外说明,供他人参考:

  • 我发现CRANberries对于软件包有一个简洁的diff摘要,这对我来说是新的。(我被启发去考虑在diff输出中使用bugfix进行grep。)
  • R中的bug.report()是向R Core或软件包维护者的电子邮件地址发送消息的好方法。
  • 值得考虑的几个测试软件包是:testthat, RUnit, 和 svUnit
  • 我的个人“快速测试”是简单地使用digest来验证结果是否匹配,而不必测试非常大的对象的等式。

注意1:我将此标记为,因为管理所有 R包的宇宙是不可能的。对于一个个体包的作者,他们可以在任何地方分发包,使用任何邮件列表或错误跟踪系统等。但是,这已经超出了R的“主流”。如果我发布一个软件包并提醒用户更改、漏洞和漏洞修复,我会选择CRAN+ NEWS+ Bugzilla+ Google Groups+ R-Forge(和/或RForge)等,但还有其他标准报告机制缺失吗?
某种程度上,这个注释也是为了询问开发者是否被鼓励使用某种机制。我怀疑没有标准,因为R核心成员的软件包在错误和更改报告方面做了许多不同的事情。
注意2:我也正在添加 (尽管其他内容可能更合适),因为这也涉及到管理R。对于可重复性,包的管理非常重要;当有多个用户或更多移动的部分时,保持对错误和修复的认识成为一项管理任务,同时也是依赖于外部包的开发的重要考虑因素。如果另一个标签,例如更合适,则我可以进行更改。

1
这应该是CRAN的一个功能,不是吗?CRAN必须知道更新情况,所以我觉得它应该有一些RSS频道!向CRAN提出功能请求!或者问题在于区分更新是否包含错误修复? - Tomas
@Tomas 我对漏洞很感兴趣;检查软件包是否已更新很容易。但是漏洞是另一回事,需要关注:如果它们影响我的工作,我可能会升级到新版本、回退到早期版本或绕过它们。在一个已经运行的系统中,其他代码更改,如性能或接口更改,要求的关注度较低。 - Iterator
我认为您没有遗漏任何重要的内容。我使用 GitHub 存储所有的程序包,因此 NEWS 和 GitHub 的 issues 页面是查找信息的最佳途径。 - hadley
1
我现在有点困,不太想去查找参考资料,但是你提到了svUnit,我想让你知道svUnit可以很好地集成在Jenkins中。它可以报告编写为单元测试的脚本的结果,还可以在报告中包括传统的R示例。 - mariotomo
1个回答

3

这不是完整的答案,但以下是一些想法。

data.table的情况下,我们跟踪错误(和功能请求) 在R-Forge上。我想你可以以编程方式查询R-Forge的跟踪器,以获取托管在那里的所有软件包。无论如何都要添加到您的列表中。那个网络跟踪器就是bug.report(package="data.table")指向的地方(不仅仅是维护者的电子邮件地址)。

此外,任何人都可以订阅任何<pkgname>-commits@lists.r-forge.r-project.org邮件列表,以接收每个R-Forge项目的统一差异和提交消息(在提交时)。虽然我不知道是否存在涵盖任何R-Forge项目的提交的普通邮件列表。

?data.table的顶部有一个链接最新的新闻。这是我们向用户传达最新版本(和正在开发中的版本)的方式,如果他们进行升级。该链接实时更新;即,“最新的”字面意思就是更新到分钟级别。但是,他们必须要去检查那里!

提交的电子邮件必须由项目启用,不是吗?我认为并非每个R-Forge项目都启用了它。但也许情况已经改变了... - Dirk Eddelbuettel
@Dirk 我认为-commits默认是创建的,但项目管理员可以关闭它(可能是错误的)。我不认为任何人都会自动订阅它,即使是管理员。因此,对于没有人订阅-commits的项目,它可能不会发送任何消息,因此存档直到第一次订阅后的第一次提交才会建立。只是猜测。 - Matt Dowle
感谢您提供的建议!您对data.table的开发和报告以及更改的管理非常出色,我们非常感激。这是我所依赖的软件包之一,还有您使用的报告和追踪功能。我意识到我在其他软件包中没有同样的资源,并想知道如何在我的端解决这个问题。 - Iterator

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接