哎李博,你上周跟我说Cursor出1.0了,我这两天终于抽空看了一下,有个东西挺有意思的。
BugBot对吧?我猜你要说这个。
对对对!就是那个能自动审查PR代码的AI工具。我第一反应是,这不就是把Code Review的活儿交给AI了吗?
嗯,但它比你想的要更进一步。你想啊,以前我们有ESLint、SonarQube这些静态分析工具,但那些本质上是规则匹配——你告诉它什么是错的,它才能查出来。
BugBot不一样,它是基于大语言模型的,能理解代码语义。不是看你格式对不对,是看你逻辑对不对。
等会儿,我消化一下。你意思是它能看懂代码想干嘛,然后判断你干得对不对?
没错。举个例子,它能看出来一个JWT签名操作后面应该有错误处理,如果你没写,它就会报出来。传统工具做不到这个。
那它实际用起来怎么样?我看你发了个测试的截图,好像还挺能发现问题的?
我跟你说,我专门拿了一个Google Jules自动生成代码的PR来测。就在评论区@BugBot Run,两分钟,它给我报了三个Bug。
两分钟三个Bug?!
货真价实的Bug。第一个最经典——JWT签名的回调函数里throw了一个error,但外面的try/catch根本接不住。
啊这个我知道一点,是不是因为回调在不同的调用栈里执行?
哟,可以啊小雨,进步了。
得了吧,我们组之前上线炸过一次就是这个原因,血泪教训好吧。
哈哈,那你更能体会这个Bug的严重性。这要是上了生产环境,未处理异常直接把Node进程搞崩,整个服务就挂了。
第二个Bug是什么?
竞态条件。数据库清理函数里,resolve()在异步DELETE操作完成之前就执行了,Promise提前resolved。
后果就是测试可能在数据还没清干净的时候就跑起来了,产生假通过。本地跑没问题,CI上偶尔炸。
这种Bug最恶心了,偶发性的,复现不了,查半天查不出来。
对,而且这是AI生成的代码。你想想,现在越来越多代码是Copilot、Gemini写的,人工Review的带宽根本跟不上。
所以本质上是AI监督AI?
就是这个意思。AI写代码,AI查代码,形成闭环。
那一键修复呢?我看到它还能直接在Cursor里帮你改?
这个体验确实丝滑。点一下「在Cursor中修复」,它自动打开文件、高亮问题行、启动Agent聊天。一分钟出修复方案。
而且你猜怎么着,我只点了一个Bug的修复,它同时把注册和登录两个函数里的同类问题都改了。
这个产品设计可以啊,省得用户重复操作。从产品经理角度看,这闭环做得挺好的。
但也不是没毛病。
说说,哪里不行?
它对环境变量的条件分支理解不好。比如代码里根据NODE_ENV判断是否开启CSRF保护,测试环境关、生产开。BugBot看不懂这个逻辑,直接报了个误报。
嗯,这就是纯静态分析的天然局限了,它没有运行时上下文。
对。还有一个问题,它每次最多报三个Bug。修完推上去再跑,又报三个新的。
哈?那问题多的PR岂不是要来回好几轮?
是的,可能是为了避免信息过载吧,但体验上确实有点割裂。
而且运行的时候没进度条是吧?两分钟干等着也挺焦虑的。
你们产品经理就是对交互细节敏感哈哈。
那是基本功好吧!不过整体来看,你觉得它值得用吗?
如果你团队本来就用GitHub PR流程,而且代码里有不少AI生成的部分,我觉得挺值得试的。七天免费,够你评估了。
嗯,我在想如果以后AI写代码越来越多,这种工具可能真的会变成流水线标配。就像现在没人会不跑单测就上线一样。
对,未来可能是AI写、AI查、AI修,人类就负责最后拍板。代码质量的保障方式正在被重新定义。