The following text is a partial translation of the original English article, performed by ChatGPT (gpt-3.5-turbo) and this Jekyll plugin:
当你在使用的开源库中发现一个bug时,你会怎么做?你会提交一个GitHub问题(或者他们使用的任何问题追踪系统)。在问题中,你要以最佳方式描述问题,最好提供一个可工作的代码示例,以便库的作者可以在本地运行以重现这个bug。如果你没有提供可执行的代码片段,他们很可能会要求你提供,除非这个bug非常微不足道。我建议简化工作流程,直接在拉取请求中给他们想要的东西:以禁用的单元测试的形式发送bug。
假设有一个Rust库提供了一个 fibo()
函数,可以用以下方式计算 斐波那契数:
你运行它,它会打印出17711
,这是错误的,实际上是第22个斐波那契数,而不是第23个。这绝对是一个bug。你提交了一个工单,内容大致如下:
他们会回复:“你能证明一下吗?请给我们看看代码!”而你可能会将这段代码添加到工单中。
然后,如果他们是有纪律的程序员,他们将创建一个新的单元测试,并修复fibo()
函数。此外,如果他们非常有纪律,他们将在单独的拉取请求中提交此测试,并禁用它。然后,在第二个拉取请求中,他们会进行修复。
为什么不能直接帮助他们并跳过问题提交步骤呢?只需自己创建第一个拉取请求,其中包含禁用的测试和一个”谜题”。
这样的PR既可以作为一个错误报告(一旦PR被合并,这就是谜题文本将被转换成的形式),也可以作为一个重现问题的测试。它将受到仓库维护团队的热烈欢迎。这种PR可以节省他们用于创建单元测试的时间。此外,它还可以为您节省创建错误报告的时间,因为谜题发现工具会自动创建报告。
顺便说一句,这篇博文是受到jcabi/jcabi-xml库中的this pull request的启发,该库专门添加了一个禁用的单元测试来重现错误。除了测试之外,还添加了一个谜题,导致了一个new ticket,一个new pull request,最终发布了一个new release的库。
Translated by ChatGPT gpt-3.5-turbo/42 on 2023-12-27 at 10:42