V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
爱意满满的作品展示区。
LeslieLeung
V2EX  ›  分享创造

ChatGPT Lint - 让 ChatGPT 来 review 代码

  •  
  •   LeslieLeung · 2023-04-14 16:55:30 +08:00 · 1616 次点击
    这是一个创建于 593 天前的主题,其中的信息可能已经有所发展或是发生改变。

    之前做了一个使用 ChatGPT 来处理纯文本的工具 PTPT ( https://v2ex.com/t/927694 ),最近新添加了一个实用的功能:lint 。传统的 linter 一般只能在特定的语言上使用,而 ChatGPT 能自动适应各种语言,因此萌生了这个想法。

    在实现的过程中,进行了一些思考,也提出了一些解决方法,也一并分享出来,欢迎大家交流。

    存在的问题

    行号问题

    给 ChatGPT 提供一整个代码文件之后,line:char 会出现丢失的情况。猜想是 tokenize 的时候丢失了。如果要解决行号,在每一行开头手动补一个行号即可。char 的问题可能无法解决,但是作为 lint 来说没有 char 也还行。

    输出更有用的建议

    目前经常出现一些没有用的建议或者是对语言的特性不了解、对上下文不了解等,导致模型提出一些无效的建议,需要再加人工去筛选。 猜想目前使用的是 GPT3.5 的模型,在 cursor 中,使用 GPT4 的模型,在一些比较明显的问题上,能够检测出来并给出比较有用的建议。

    经常性输出 undefined/undeclared/unused 等建议

    GPT 是个单向的模型,相比于 BERT ,对上下文理解能力略差。这是 GPT 先天的不足,经过 prompt 的调教暂时还无法解决。

    安装

    go install github.com/leslieleung/ptpt@latest
    

    或从 Release 下载

    使用方法

    > ptpt lint <file>
    > ptpt lint -l zh <file> # 中文建议
    

    项目地址: https://github.com/LeslieLeung/PTPT, 欢迎 star

    4 条回复    2023-04-15 15:11:46 +08:00
    tfdetang
        1
    tfdetang  
       2023-04-14 19:51:16 +08:00
    > GPT 是个单向的模型,相比于 BERT ,对上下文理解能力略差。
    你是怎么得出这个结论的
    LeslieLeung
        2
    LeslieLeung  
    OP
       2023-04-14 21:55:29 +08:00 via iPhone
    @tfdetang #1 GPT 提出了大量 unused/undefined variable 的提示,但明明变量上下文就有定义 /使用。当然“对比”我没有做过,我只是从 GPT 的特点出发作出这个猜测。
    hsir
        3
    hsir  
       2023-04-15 15:02:16 +08:00
    这个会不会代码稍微多一点,就超过 token 限制了
    LeslieLeung
        4
    LeslieLeung  
    OP
       2023-04-15 15:11:46 +08:00 via iPhone
    @hsir #3 的确会。不过目前来看三四百行的代码基本 ok ( lint 的时候是对单个文件)。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   4550 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 10:10 · PVG 18:10 · LAX 02:10 · JFK 05:10
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.