参与TDengine代码灭虫计划,快速融入开发者社区_tdengine


作为技术同学,你是否想成为大型开源项目的贡献者,但却不知道该从何下手?最近,我们从社群试点,发起了几期灭虫计划。从文档到代码,吸引了不少小伙伴参加。现在我们将这些“虫”梳理一下,进一步降低门槛,便于大家更好地参与到该项计划中来。


在哪里可以找到这些“虫”

TDengine 团队以 issue(标签为 ​good first issue​)的形式放虫,在 GitHub 上访问 TDengine 仓库,找到带有该标签的 issue 或点击底部“阅读原文”,即可查看挂出的“虫”。



都是什么类型的“虫”

我们列出了一些常见的“虫”的类型。


1) 字符串缺少结束符

参与TDengine代码灭虫计划,快速融入开发者社区_tdengine_02


上 图 第 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) 内存泄漏


参与TDengine代码灭虫计划,快速融入开发者社区_github_03


上图中,变量 jsonAvroSchema 在使用过程中会分配内存,但是最后没有释放,可能会造成内存泄 漏。


建议修改方式

在最后添加

free(jsonAvroSchema);




3) 代码冗余


参与TDengine代码灭虫计划,快速融入开发者社区_字符串_04


第 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代码灭虫计划,快速融入开发者社区_字符串_05



代码合并后,你就能成为TDengine的正式Contributor啦!前200位Contributor会收到官方颁发的贡献者证书哦~


参与TDengine代码灭虫计划,快速融入开发者社区_json_06