【问题标题】:How to keep abreast of known bugs and bug fixes in R packages?如何及时了解 R 包中的已知错误和错误修复?
【发布时间】:2012-02-16 14:10:04
【问题描述】:

是否有标准的 R 社区资源来及时了解软件包的已知错误或错误修复?我目前的方法是相当手动的。 (注意:我将其限制为 CRAN - 请参阅注 1。)

我的用例基本上是错误监视和包更新管理。一段时间以来,我平均每个月都会发现几个错误(我会及时向作者报告;-))。由于我的很多工作都是使用虚拟机完成的,所以当我很好地处理了必要软件包的错误状态时,我倾向于更新 VM 映像。当一堆错误被修复时,我可以删除我的解决方法,这很棒,我更新了图像。当我发现 bug 爆发时,我不会创建新图像。

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

  • NEWS 文件:许多(但不是全部)包都有 NEWS 文件。这些当然是一个有用的起点。
  • 包主页:有些包在CRAN上没有NEWS文件,但在作者网站上单独发布了一个更改日志。
  • R 项目托管的邮件列表
  • Google 组包
  • 与包作者的个人交流
  • 包的错误跟踪(例如,开发人员可能使用 Bugzilla)

第一个发现 bug 是一回事(我承认 bug 会发生在我们所有人身上),迟到发现已知的 bug 或者更好的是已经修复的 bug 是另一回事。两者都减慢了我自己的编码速度,但更好的错误监控(也许我们需要一个cdc4R 包:))会显着减少影响。如果没有标准的更新警报系统(例如,update.packages() 的扩展,它报告哪些软件包可以更新并链接到有关更改的信息),用户的工作就是寻找这些信息。

作为一个试图寻找这些信息的用户,我在上面的列表中是否忽略了一些标准资源?例如,是否有一个 R 邮件列表,开发人员可以在其中发布他们的更改和错误修复?或者是否有一个网站可以汇总这些帖子、发布测试(CRAN 发布 R CMD CHECK 输出,似乎),或者提供一些其他反馈?


关于其他资源的一些额外说明,以帮助他人:

  • 我看到CRANberries 有一个简洁的diff 包摘要,这对我来说是新的。 (我受到启发考虑在 diff 输出中为 bugfix 使用 grep。)
  • R 中的bug.report() 是向 R Core 或包维护者的电子邮件地址发送消息的好方法。
  • 值得考虑的几个测试包是:testthatRUnitsvUnit
  • 我个人的“快速测试”是简单地使用digest 来验证结果是否匹配,而无需测试非常大的对象的相等性。

注意 1:我标记了这个 ,因为不可能管理 所有 R 包的世界。对于个人包作者,可以在任何他们喜欢的地方分发包,使用他们喜欢的任何邮件列表或错误跟踪系统等。但是,这超出了 R 的“主流”。我是否要发布一个包并提醒用户对于更改、错误、错误修复,我会选择 CRAN + NEWS + Bugzilla + Google Groups + R-Forge(和/或 RForge)等,但是此列表中是否缺少另一种标准报告机制?

从某种意义上说,此注释还用于询问是否存在鼓励开发人员使用的机制。我怀疑没有标准,因为 R Core 成员的包似乎在错误和更改报告方面做了很多不同的事情。

注意 2:我还添加了(尽管其他内容可能更合适),因为这也与管理 R 相关。为了重现性,包的管理非常重要;当有多个用户或更多移动部件时,了解错误和修复成为一项管理任务,以及依赖于外部包的开发的重要考虑因素。如果另一个标签,例如 更合适,我愿意改变。

【问题讨论】:

  • 这应该是 CRAN 的一个特性,不是吗? CRAN 必须知道更新,所以我觉得它应该为他们提供一些 RSS 频道!向 CRAN 提出功能请求!还是区分更新是否包含错误修复的问题?
  • @Tomas 我对错误感兴趣;很容易检查软件包是否已更新。错误是另一回事,需要注意:如果它们影响我的工作,我可能会更新到较新的版本、恢复到较早的版本或解决它们。对代码的其他更改,例如性能或界面更改,在已经运行的系统中不需要立即关注。
  • 我认为你没有错过任何重要的东西。我所有的包都使用 github,所以 NEWS + github issues 是最好的地方。
  • 我有点太困了,无法寻找参考资料,但你提到了 svUnit,我想你可能想知道 svUnit 很好地集成在 Jenkins 中。它可以报告编写为单元测试的脚本的结果,但也可以在报告中包含传统的 R 示例。

标签: cran administration system-administration r bug-tracking administration cran


【解决方案1】:

不是一个完整的答案,但这里有一些想法。

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

此外,任何人都可以订阅任何<pkgname>-commits@lists.r-forge.r-project.org 邮件列表,以接收 R-Forge 上每个项目的统一差异和提交消息(在提交时)。不过,我不知道包含对任何 R-Forge 项目的任何提交的一般邮件列表。

?data.table 的顶部有一个指向up to the minute NEWS 的链接。如果用户升级,这就是我们与用户沟通最新版本(和开发中)的方式。该链接实时更新;即,“最新”是字面意思。但是,他们必须检查那里!

【讨论】:

  • 提交电子邮件必须由项目启用,不是吗?我不认为它适用于每个 R-Forge 项目。但也许这改变了......
  • @Dirk 我认为 -commits 是默认创建的,但项目管理员可以将其关闭(很可能是错误的)。不过,我认为没有人会自动订阅它,即使是管理员也是如此。因此,也许对于没有人订阅的项目 -commits 它不会发送任何消息,因此存档在第一次订阅后的第一次提交之前不会建立。只是猜测。
  • 感谢您的建议!您对data.table 的开发以及对报告和更改的管理非常出色,非常感谢。它是我所依赖的软件包之一,以及您使用的报告和跟踪工具。我意识到我在其他软件包中没有相同的资源,并想知道如何最终解决这个问题。
猜你喜欢
  • 2019-07-17
  • 1970-01-01
  • 2013-06-26
  • 2021-10-16
  • 2014-09-18
  • 2020-10-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多