作为技术同学,你是否想成为大型开源项目的贡献者,但却不知道该从何下手?最近,我们从社群试点,发起了几期灭虫计划。从文档到代码,吸引了不少小伙伴参加。现在我们将这些“虫”梳理一下,进一步降低门槛,便于大家更好地参与到该项计划中来。
在哪里可以找到这些“虫”
TDengine 团队以 issue(标签为 good first issue)的形式放虫,在 GitHub 上访问 TDengine 仓库,找到带有该标签的 issue 或点击底部“阅读原文”,即可查看挂出的“虫”。
都是什么类型的“虫”
我们列出了一些常见的“虫”的类型。
1) 字符串缺少结束符
上 图 第 348 行
strncpy(TSDB_FILE_FULL_NAME(pDFile), aname, TSDB_FILENAME_LEN);
在目标数组 pDFile->f.an ame 上 使用了最大参数大小(128 字节)调用 strncpy 可能会使目标字符串缺少结束符。
建议修改方式
在该语句下增加一行,将该字符串最后一位置为 0
TSDB_FILE_FULL_NAME(pDFile)[TSDB_FILENAME_LEN-1] = 0;
2) 内存泄漏
上图中,变量 jsonAvroSchema 在使用过程中会分配内存,但是最后没有释放,可能会造成内存泄 漏。
建议修改方式
在最后添加
free(jsonAvroSchema);
3) 代码冗余
第 317 行,在 else if 语句中,因为 iv <= 9223372036854775807L 恒为真,不存在 !IS_VALID_UBIGINT(_t: (unit64_t)iv) 的情况,该条件语句冗余。
建议修改方式:
删掉 else if 代码块中的内容
这就是目前我们发布的代码小“虫”的情况。除了这些,也欢迎大家多阅读代码,帮忙发现并修改一些单词拼写错误之类的小“虫”。
如何领取“虫”?
每周初,我们都有 5~8 个小“虫”的放出。大家可以认领自己感兴趣的“虫”,在挂有此“虫”的 issue 下回复「pick up challenge」,收到「assigned it to you」回复后,视为领“虫”成功,就可以开始干活啦!请在认领后及时提交 PR,如果一周内该任务未完成,此 issue 会被释放,恢复成「待认领」的状态。
认领“虫”后,如何成为贡献者?
1) 认领后,理清修改需求(如果觉得需求描述模糊,可以在 issue 下留言与放“虫”者沟通交流),按照需求修改代码,及时提交 PR。
2) 提交 PR 后,将会有两位 Reviewer 对代码进行审查。如果修改正确,Reviewer 会点击 Approve 来同意这个提交;如果修改不正确,请按照 Reviewer 的评论再次修改,直到两位 Reviewer 均同意为止。
3) 但 Reviewer 同意提交,并不意味着代码会被合并。该提交还需要通过TDengine内置的CI测试,直到提示:This commit looks good后,代码才会被合并。
代码合并后,你就能成为TDengine的正式Contributor啦!前200位Contributor会收到官方颁发的贡献者证书哦~