AI 提示 「这代码写的烂」

作为程序员的我们,在换工作的时肯定会经历这样的场景。

不满足现有公司的的情况,从原本自己熟悉的系统进入到新公司。

进入到新公司一看卧槽,这啥东西。

一句注释都没有,心里一万个草泥🐎,接手这样的系统那是非常难受的。

出现上面这种情况的一部分原因还是大家不太喜欢写注释。

有的时候业务忙起来的时候 心里只想着要实现某个功能。

解决某个 Bug,写啥注释啊,浪费时间。

不过话说回来,有的时候我们的工作大部分都是 CRUD, 都写注释 说实话是真的麻烦。

当出现有特别的场景需要特别注释以下的时候,但是因为可能以前我都没写,现在就更不想写了。

于是恶性循环,随着公司人员逐年替换,到最后真的是没有人能看懂这个庞然大物。

AI Doc Writer

看上图 GIF 该方法的自动添加了代码注释

这个就是我们今天介绍的工具 AI Doc Writer

这是 Intellij IDEA 下的一个插件,可以根据方法自动生成注释。

第一次看到是在 Reddit 上看到,刚看到的时候我的两眼直放金光,感觉好东西。

所以下载下来试一下。就录制了一个上面的GIF。

不过我自己还蛮好奇这个插件所能提供什么样的能力。

所以我做了如下的「测试」。

我创建了一个 OrderController 的测试类,并创建了一个 purchase 方法。

执行 AI Doc Writer 插件 得到以下注释

It returns true if the name is "zhangsan"如果名称为“张三”,则返回true

卧槽,可以啊 感觉能直接生成这样的注释感觉很不错的呢。

然后我加了一点改进【忽略上面垃圾代码】,然后得到的结果是。

If the name is "zhangsan", then return true, otherwise return false.如果名称为“张三”,则返回true,否则返回false。

有意思,接着加料。

虽然后面我添加了一个支付方法,直接返回 true ,得到的结果是 It returns true。

 这不是最惊艳的,往下看 name 的注释。

The name of the person who is paying
付款人的姓名

真牛逼啊,根据上下文生成注释咯,我真是爱上这个插件了。

然后我将上方的 购买方法 中调用 支付方法 得到的注释。请大家仔细阅读上面的注释。

Purchase a ticket for a given person, if they are old enough and have enough money.
The function is a bit long, but it's mostly just a lot of boilerplate code.

如果一个人足够大,有足够的钱,就给他买张票。
这个函数有点长,但大部分只是一些样板代码。

这个函数有点长,但大部分只是一些样板代码。????  现在 AI 都能这样玩了吗,我人傻了

我还是有点不信邪,我心里突起一计,我记得之前看 RocketMQ 源码的时候注释特别少,我来看看这个插件能不能自动生成呢?

说干就干,直接 Clone 代码

git clone https://github.com/apache/rocketmq
Cloning into 'rocketmq'...
remote: Enumerating objects: 45842, done.
remote: Counting objects: 100% (1836/1836), done.
remote: Compressing objects: 100% (862/862), done.
remote: Total 45842 (delta 516), reused 1535 (delta 363), pack-reused 44006
Receiving objects: 100% (45842/45842), 12.23 MiB | 9.67 MiB/s, done.Resolving deltas: 100% (18358/18358), done.

哈哈哈哈哈,看上面自动生成的注释,应该是出现了 Bug陷入了某种循环

在实验了上面两种情况之后,我感觉 这个插件在生成代码的时候应该还是会扫描方法里面的代码。所以我决定来试试 Leetcode 上面的题目,第一个先来一个 两数之和

我们来读一下上图中生成之后的结果

Given an array of integers, return indices of the tow numbers such that they add up to a specific target
给定一个整数数组,返回两个数的索引,使它们相加到一个特定的目标

不得不说这个翻译真的是非常准备的。不看代码,就只看这个注释 就能明白这个方法是什么意思了。

我在想会不会是我的方法名写了 twoSum 的原因,给了他提示,所以我尝试着原本的 twoSum 修改为 x,看下图,修改后的结果。

还是给我整出来了

我还是不相信,我又换了一个「动态规划」的题,去掉注释,生成一下,看下图

不仅生成了「注释」,居然还原的这么准确,其实尝试在这里 它给我的感觉就是非常的不错,甚至有点太不错了。

会想他是怎么生成的,我去看了下 Reddit 的作者说法。

实际上是OpenAI (基本上是GPT-3,但用于代码)自己试试看:)

虽然按照 「GPT-3」 协议所描述的那样,实现一个这样的 注释生成器应该不难。

但是毕竟是一个「本地」的插件,应该是不能就凭在本地就能完成这些操作的吧。

所以我猜测它在生成过程中应该是有「接口」调用的。

在 Intellij IDEA 中设置一下 HTTP 的「代理」,然后打开 Charles。

好家伙,果然是这样的。

通过抓包可以发现,每次的注释生成都会调用一次接口。

然后生成建议的注释,细想一下如果不是靠这样的方式,本地肯定不能生成的。

不过知道了还是感觉怪怪的,因为他在上传的参数里面,直接将整个类的内容全部上传了。

不得不说安全上的隐患还是有一点的,而且连电脑「用户名」都上传了。

总的来说 AIDoc 的这个插件 「利弊掺半」吧,利用 GPT-3 实现了注释自动生成。

而且准确率还是挺高的。在一定程度上可以帮助我们阅读源代码。

但是毕竟是要上传本地代码的,所以对于项目比较机密的情况,最好还好还是谨慎一点比较好。

不过如果是用来阅读源码,然后源代码里面也没啥注释的话,那么我认为这个还是挺好的,可以帮助我们理解代码。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,686评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,668评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 158,160评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,736评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,847评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,043评论 1 291
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,129评论 3 410
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,872评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,318评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,645评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,777评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,470评论 4 333
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,126评论 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,861评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,095评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,589评论 2 362
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,687评论 2 351

推荐阅读更多精彩内容