查看原文
其他

基于 ChatGPT 的 code review!来 Curve 开源社区体验

CNCF 2023-05-17

The following article is from OpenCurve Author Curve 开源社区

前言

Curve 是云原生计算基金会 (CNCF) Sandbox 项目,是网易主导自研和开源的高性能、易运维、云原生的分布式存储系统。

今年来,ChatGPT 几乎出现在每个程序员的朋友圈,具有「魔法」的 ChatGPT,如何能在程序员日常 coding 中发挥「魔力」,Curve 开源社区已集成基于 ChatGPT 的 code review 机器人,欢迎大家来体验~ ⏰ 


部署配置

参考[1]

  • 安装 bot 的 GitHub APP;

  • 安装好之后,在APP页面设置 Configure;

  • 选择你要应用到的账号及代码仓库(tip. 需要目标代码库的管理员权限);

  • 之后进入到代码库的主页,选择 Settings;

  • 进入 Secrets and variables -- Actions;

  • 注意切换到 variables tab,再进行 New repository variable;

  • 填入 name 和 value


    • name 是 OPENAI_API_KEY;


    • value 就是 openai 的key;


ps. 社区目前用的是 GitHub app 方案,不是GitHub action(试了action 方案没跑起来,欢迎懂行的大佬指导~)


试用效果

创建一个 pull request,如下:

  • Curve代码库(C++): 
  • https://github.com/opencurve/curve/pull/2285



  • CurveAdm代码库(golang):

  • https://github.com/opencurve/curveadm/pull/194


PR 创建完成后,稍等片刻,就可以看到 cr-bot 开始 review 代码了。单就 review 效率来说,比人工评审代码要快太多倍了,cr-bot 即刻就给反馈了,人工的话估计得花些时间还不一定 review 的很细致。
review 效果感受

大家可以在 GitHub 上自行查看 PR 的 review 效果,这里截图几个觉得有代表意义的代码 review 结果:

→ https://github.com/opencurve/curveadm/pull/191/files

这个 pr 是去年提交的(只看过 golang 基本语法,第一次写实际代码,请忽略粗鄙的编码)这次重新提交一下看看 ChatGPT code review bot 的效果,可以看出,他指出了代码里很多问题,其中第3条,是有一个 Curve 社区用户实际遇到过的偶发问题(执行命令卡很久才返回),当时怎么测都跑不出来,但用户几乎必现,后来组内 golang 高手小伙伴重构了这段代码才解决。其他几点问题也都是非常有参考价值的。
https://github.com/aspirer/curveadm/pull/1/files#r1123991358

这个评审意见不需要解释,还是比较有效的。

https://github.com/aspirer/curve/pull/3/files#r1124018613
配置项也能 review。
https://github.com/aspirer/curve/pull/3/files#r1124017844

增加简单功能的 commit 可以理解代码意图,这一点还是很不错的。

总体来说是有不少帮助作用的,至少可以让人工评审节省不少时间,bot 可以辅助解释新提交代码,指出常见错误,给出改进建议等。如果配合 ChatGPT 的交流窗口,把有问题的代码片段再次单独交给他评审,可能会有更多的收获:

不足之处:

  • 多次提交同样的代码,每次给出的 review 结果是不相同的,可能某次的评审建议是相对更合理且全面的,其他的几次不一定,或许需要让他多 review 几次,然后再综合几次的评审意见进行代码评估;

  • 无法完整的理解某个大的功能特性的设计方案和实现思路,举个形象的栗子,组内A同学从来没有参加过功能点X的方案设计和评审工作(主要由B同学负责),让A同学直接去 review B 同学提交的代码,就有类似的效果,只能理解函数或代码片段,没有全局意识;

  • 个别 review 建议不一定正确,需要再进行人工判断,这一点也类似人工 review,代码评审人提的建议也不一定是正确的;

  • 太长的新增的源文件,好像会无法 review;

  • 如果没有别的建议,bot 会给出一堆通用建议,比如增加 UT 用例、lint 检查、注释、log等(这一点也不能说是不足

其他:

Curve 开源社区虽已支持 ChatGPT 做 code review,但社区准则当前仍是以两位负责 review 的意见为主,bot只做协助参考~⏰

相信不少同学对 ChatGPT 在协同 coding 领域有自己奇妙的想法,欢迎来 Curve 开源社区实践。


参考[1]:

https://github.com/anc95/ChatGPT-CodeReview#usage



------ END. ------

🔥 推荐用户案例阅读:
Curve 文件存储在 Elasticsearch 冷热数据存储中的应用实践
扬州万方:基于申威平台的 Curve 块存储在高性能和超融合场景下的实践
创云融达:基于 Curve 块存储的超融合场景实践 
🔥 推荐硬核技术解析阅读:
ChunkServer 优化使用 bthread 的思考
通过 Samba 来使用 CurveFS 
Curve 块存储 IO 链路零拷贝


关于 Curve 

Curve 是一款高性能、易运维、云原生的开源分布式存储系统。可应用于主流的云原生基础设施平台:对接 OpenStack 平台为云主机提供高性能块存储服务;对接 Kubernetes 为其提供 RWO、RWX 等类型的持久化存储卷;对接 PolarFS 作为云原生数据库的高性能存储底座,完美支持云原生数据库的存算分离架构。

Curve 亦可作为云存储中间件使用 S3 兼容的对象存储作为数据存储引擎,为公有云用户提供高性价比的共享文件存储。

  • GitHub:https://github.com/opencurve/curve
  • 官网https://opencurve.io/
  • 用户论坛:https://ask.opencurve.io/
    微信群:搜索群助手微信号 OpenCurve_bot

文章转载自OpenCurve点击这里阅读原文了解更多

CNCF概况(幻灯片)

扫描二维码联系我们!




CNCF (Cloud Native Computing Foundation)成立于2015年12月,隶属于Linux  Foundation,是非营利性组织。 

CNCF云原生计算基金会)致力于培育和维护一个厂商中立的开源生态系统,来推广云原生技术。我们通过将最前沿的模式民主化,让这些创新为大众所用。请长按以下二维码进行关注。

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存