使用ChatGPT对GitHub项目进行CodeReview
前段时间兴起的 ChatGPT 热,跟风研究了一些应用方向。七月份的时候刚好自己打算写一个简易的 redis sentinel 数据解析的服务端项目,于是想用 ChatGPT 的对话模式来对提交的 git 代码进行 review。将近两个月使用下来,自己觉得 review 效果还不错。
1 实现逻辑
已知 GitHub 自带了 Webhooks
功能,每次 git push 提交代码等操作都会触发钩子函数。这就给了很多的业务发挥空间,例如自动发布等。
Webhooks allow external services to be notified when certain events happen. When the specified events happen, we’ll send a POST request to each of the URLs you provide. Learn more in our [Webhooks Guide](https://docs.github.com/webhooks/).
这里我主要是在自己的服务器上建立了一个 http 服务,接收 Webhooks 触发的 json 通知,然后异步拉取本次 push 的 commit 内容,再使用 ChatGPT 的 gpt-3.5-turbo
模型进行 review,最后把对话结果写入到该 commit 的 comment 中。
2 CodeReview 效果
通过 ChatGPT 的 gpt-3.5-turbo
模型的 review 效果还可以,以其中的一个 commit 的 review 结果为例。本意是判断 https 监听服务创建是否成功,但是代码写成了 NULL == http
判断的是 http 监听服务创建的结果。所以通过 review 可以很快的进行修正,即写成 NULL == https
。
// create https server
struct evhttp *https = EventHttpsServer::instance().createHttpsServer(base);
if (NULL == http) {
return -4;
}
在 github 项目的 commit 记录里面可以看到这里的评论就是 review 的数量。
3 其它
这个 github 项目地址是 GitHub - vfhky/socketRedisSentinel: tcp原生通信从redis的sentinel域名解析数据,大家可以访问看看效果。另外这个 C++项目功能是创建了一个 Linux 服务端来解析 redis sentinel 服务返回的主从分片 redis 分片信息,例如 master
或者 slave
的 redis 的 ip 和端口,然后返回给客户端。主要是通过 Libvent + OpenSSL
库实现的,支持 tcp
、http
和 https
这三种客户端请求方式。
感兴趣的可以一起讨论下。
Comments »