TypeCodes

使用ChatGPT对GitHub项目进行CodeReview

前段时间兴起的 ChatGPT 热,跟风研究了一些应用方向。七月份的时候刚好自己打算写一个简易的 redis sentinel 数据解析的服务端项目,于是想用 ChatGPT 的对话模式来对提交的 git 代码进行 review。将近两个月使用下来,自己觉得 review 效果还不错。

使用ChatGPT进行CodeReview

1 实现逻辑

已知 GitHub 自带了 Webhooks 功能,每次 git push 提交代码等操作都会触发钩子函数。这就给了很多的业务发挥空间,例如自动发布等。

Webhooks allow external services to be notified when certain events happen. When the specified events happen, well 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 中。 使用 ChatGPT 进行 CodeReview

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;
}

使用 ChatGPT 进行 CodeReview 在 github 项目的 commit 记录里面可以看到这里的评论就是 review 的数量。 使用 ChatGPT 进行 CodeReview

3 其它

这个 github 项目地址是 GitHub - vfhky/socketRedisSentinel: tcp原生通信从redis的sentinel域名解析数据,大家可以访问看看效果。另外这个 C++项目功能是创建了一个 Linux 服务端来解析 redis sentinel 服务返回的主从分片 redis 分片信息,例如 master 或者 slave 的 redis 的 ip 和端口,然后返回给客户端。主要是通过 Libvent + OpenSSL 库实现的,支持 tcphttphttps 这三种客户端请求方式。

感兴趣的可以一起讨论下。

打赏支持

Comments »