[指北]如何正确地提issue

Feng, Xi 发布于 2023-10-20 1,444 次阅读


什么是issue

issue译为“问题”,即“提问题”。

为什么要提issue

提供意见,这是最主要的。

issue主要是2类,一种是“Bug report”另一种是“Feature request”。前者是反馈bug,即这个程序应该如此工作,但它没有;后者是请求添加某个功能,即你希望这个这个程序如此工作,但它并没有。

一般根据不同的项目,项目的开发者会对其进行细分类,但大体上就是这两种(也有没分类的)

如何提issue

提issue之前,先养成一个习惯,那就是去搜一下有没有人和你提了类似的issue,并看看开发者对类似的issue的回复,这样你才知道自己发的issue是不是有意义的了,即不是重复的。以免浪费你和开发者的时间精力

Bug report

说清楚这是个什么bug,以及尽可能地给出一个复现方式,不要提个issue就直接说这玩意不工作。这对于开发者来说很难定位到问题出在了哪。

对于不明显的bug一定要解释清楚,为什么你认为它是个bug?

版本,很容易被忽略。提issue时得把你使用的版本加上去,因为你的bug可能在某些特定版本上才会出现,开发者不知道版本就难以复现bug。Bug report最重要的就是复现,复现才是基础,所以提bug时把你的环境描述得越清楚越好,比如,对于某些app的bug,你得把你的操作系统、操作系统版本、app的版本等或者对于某些网站的bug,就得描述用的是什么浏览器、浏览器版本等。总之,就是要把环境描述清楚。

Feature request

核心就两点:
1. 解释清楚要加什么功能
2. 说服开发者为什么要加这功能

一定要明白开发者又不欠你。所有的新功能都是要开发者花费时间精力。你得说服开发者这功能对这项目是有帮助的。或者你自己去把这功能实现了,这样就减少了开发者所花的时间,通过你的issue可能性就更大些。对于一些大的功能,还是建议先去提issue,再去干,避免浪费你自己的时间。

生命周期

issue是有生命周期的,倘若你的bug被修好了或者feature实现了,自己去看一下这个issue是否被close,尽管大部分的开发者解决了你的issue后会直接close掉,但有些开发者会等你自己去close,也有些开发者也不知道自己是不是应该close,如开发者给了你一个回复,他并不知道这个回复能不能让你满意,就放那了,你认为这个issue已经结束了,没有额外问题,就把它close掉。