Skip to main content

Command Palette

Search for a command to run...

用 ChatGPT 评审 PR

Published
•1 min read•View as Markdown

前些天写了个脚本,用 ChatGPT 给 FloMesh 的 Pipy 项目做了个代码评审,生成的结果还挺有意思的,例如下面这段结果:

评价:

1. 代码没有明确的介绍具体的功能和作用,缺乏注释和文档说明。
2. 使用了一些不必要的注释,如版权声明和许可条款,应该将这些内容放入独立的文档中。
3. 引用了一些外部库文件,在没有说明的情况下建议在头文件中添加相关介绍。
4. 没有遵循统一的命名规范,建议遵循某种命名规范,如 Google C++ Style Guide。
5. 代码风格和排版统一,清晰易读。

改进意见:


#ifndef THREAD_HPP
#define THREAD_HPP

#include "pjs/pjs.hpp"
#include "worker-thread.hpp"

namespace pipy {

// 在代码开头添加注释,介绍文件的作用和功能
// ...

// 添加版本信息或其他相关说明
// ...

// 可以将所有依赖的外部库文件进行汇总说明
// ...

// 建议统一的命名规范,如使用 Google C++ Style Guide。
class Thread : public pjs::ObjectTemplate<Thread> {
public:
  // 在函数上添加注释,说明函数的功能和参数含义
  auto index() const -> int { return m_worker_thread->index(); }

private:
  // 在变量上添加注释,说明变量的作用和类型
  Thread(WorkerThread *worker_thread) : m_worker_thread(worker_thread) {}

  WorkerThread* m_worker_thread;

  friend class pjs::ObjectTemplate<Thread>;
};

} // namespace pipy

// 添加结尾注释
// ...

// 推荐加上 #endif 前的空格
#endif // THREAD_HPP

自然而然就产生了个想法——如果项目每个 PR 都能这样自动 Review 一下岂不妙哉?结果——好点子总会有人比你先想到,已经有人编写了一个 Github Action 了,于是试用了一下,记录一下这个试用过程。

首先在目标项目的设置中加入 OpenAI 的 API_KEY,也就是在项目的 Settings->Security->Secrets and variables->Actions 菜单中,加入 Repository Secret,Key 设置为 OPENAI_API_KEY。

接下来,在 Github Action 中加入如下代码:

name: Code Review

permissions:
  contents: read
  pull-requests: write

on:
  pull_request:
    types: [opened, reopened]

jobs:
  test:
    runs-on: ubuntu-latest
    steps:
      - uses: anc95/ChatGPT-CodeReview@v1
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
          OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }}
          LANGUAGE: Chinese

上面代码尝试在创建 PR 时候对变更内容进行评审动作。

我们尝试给项目新建一个 PR,其中包含一段新的输出代码,并删除了一行注释,结果收到了如下的评审记录:

从结果看来,ChatGPT 对 PR 的目的进行了识别,并给出了讲解和建议。不过前面 Action 定义的语言并没有生效,应该后续还会有提升空间——或者用这个思路再做一个也是不错的想法。

另外,受到 Token 上限的影响,代码文件只能接受 4K 以下的文件,传说新的 GPT 4.0 API 能够支持更大的 Token 上限,也许就能支持更大的代码文件了。

More from this blog

AI Agent 的“莫兰迪时刻”

一个新范式真正走向大众,往往不是从所有人都正确理解它开始,而是从它开始被反复引用、简化、误读,甚至滥用开始。 今天的 AI Agent,可能正走到这样一个时刻。 这篇文章的念头,来自我最近收听《大内密谈》vol.1434《审美升级or消费主义?从莫兰迪在中国聊起》时的一些联想。节目从莫兰迪色在中国的走红,谈到作品价格、知识产权、商业流量与消费主义。[9] 我听着听着想到另一个熟悉的技术史问题:为

Oct 5, 20263 min read

FDE 是传统运维产品厂商的出路吗?

很多传统运维产品厂商,已经不缺产品了。 从 ITSM、CMDB、监控、自动化,到 IAM、数据中心管理和各类大屏,一个成熟厂商往往都能拿出一张很完整的产品地图。销售材料上看,客户运维部门的日常工作几乎都被覆盖了。 但项目一落地,味道就变了。 产品越多,集成越重;模块越全,边界越模糊;客户越大,定制越深。到了后期,项目成功本身也会变成麻烦:现场改出来的东西回不到主干,配置越来越像黑箱,谁都不敢轻易升

Jun 29, 20263 min read

绵里藏针才是 AIOps 的本质?

Agent 让运维编排变得柔性、可变、甚至自演进;但真正敢进入生产环境的 AIOps,仍然离不开坚实、受控、可审计、可回退的自动化底座。 从 Gartner 提出 AIOps 概念到现在,也大概有十年了。这么多年来,这个领域好像发生了很多变化,又好像没什么“本质”的变化。技术上,我们经历了传统机器学习、深度学习和神经网络、以及大模型和智能体这样“翻天覆地”的变化;业务上,我们面对的是更多品种、更大

May 31, 20263 min read

龙虾恐慌:AIOps 又要改名了?

ChatGPT 开始,把 AI 拉近到普罗大众的面前,让无数人感受到 AI 的亲民魅力。而龙虾,则把大模型驱动的自动化能力,突然间变得水灵灵、活泼泼地走进千家万户。它不只是“风口上的猪”,而是风口本身。热度高到让 Mac mini 一度断货,不知道这在不在库克的预料之内。 每代人都有每代人的鸡蛋,春节期间,我就领了我的鸡蛋。翻出古老的 MacBook Air M1,充值各种大模型。当然了,这个工具

Mar 9, 20261 min read
【

【伪】架构师

346 posts