最新资讯
stackoverflow.blog 欢迎来到芯片时代:半导体制造、AI 数据中心与芯片设计的未来 www.youtube.com AI Agent 总犯同样的错:CentralAgent AI 将记忆重构为经验系统 pub.towardsai.net Netflix 科学家建议重采样 LLM 评判:5 次仅将误差棒缩小 13% pub.towardsai.net Jev 作为 LLM 前的静默层:构建提示感知的模型路由器 reddit.com OpenAI 称 Astra 仅满足 10% 安全任务标准 dev.to FreeToken:在自有 GPU 上运行前沿 MoE 模型及其内存需求 dev.to 当 AI Agent 说“完成”时,究竟完成了什么? dev.to 部署 Underdog Bark 3.0 Pro:逐字转写、自定义后端与分块设置 dev.to 为艰难对话构建 AI:五个 Agent、一条安全正则与一位盲评监督者 techcrunch.com Palo Alto Networks 洽谈以 5 亿美元收购 AI Agent 安全初创公司 Clutch theinformation.com 黄仁勋被要求就涉华间谍指控向国会作简报 www.infoq.com Edera 推出 Object Capability Bounded Authority,试图将凭证与 AI Agent 工作负载隔离
多元动态
登录 注册
开源工具 wechat · @极客之家

26k Star,又一大厂的 AI 代码审查神器开源了!

原文 我的收藏
未提供

正文

今年五月的时候,阿里把一个内部工具开源了,叫 Open Code Review,听名字就知道是干什么的,用 AI 做代码审查。这个工具不是开源的时候才做出来的,它在阿里集团内部已经跑了两年,是内部的官方代码审查助手,官方说法是几万名开发者用过,识别出来的代码缺陷有数百万个。 现在用 AI 写代码的人越来越多了,写得也快,但代码多了以后审查就跟不上,让同事帮忙看吧,大家都很忙,顾不上那么细。让 Claude Code 这类通用助手顺便审一下,我用着总觉得差点意思。 这篇我们就来聊聊这个工具。 它和直接把代码丢给 AI 有什么区别 先说下我平时遇到的情况,拿 Codex 这类助手配上一段提示词去审代码,用一段时间下来,会发现几个挺烦人的问题。 改动一多它就容易漏,一堆文件摆在那,它只挑其中一部分看,没看的那些到底有没有问题,没人知道。报出来的问题位置也经常对不上,它说某一行有空指针风险,我点过去一看,那一行是空的。还有就是结果不太稳定,提示词稍微动一动,审出来的东西就变样了,这次能发现的问题,下次再审可能就漏了。 Open Code Review 的做法不太一样,它的思路大概是,能用工程代码保证正确的环节,就不交给模型去决定。哪些文件要审、文件怎么分组、每种文件套什么规则、评论落在哪一行,这些都是程序做的。模型在里面负责的事情其实不多,就是看代码,然后判断有没有问题。 它能干什么 审改动:ocr review 平时用得最多的应该就是这条命令了,在项目目录下跑 ocr review,它会把暂存的、没暂存的、还没跟踪的改动都审一遍。想审某个分支相对主分支的改动,就用 ocr review --from main --to feature-branch。只想看某一个提交的话,ocr review --commit abc123。 另外有个参数我自己挺喜欢的,--background,举个例子,这次改动是为了实现手机号登录验证,把这句话带上,模型就能分出来哪些是你故意这么写的,哪些是真的有问题,误报会少不少。 全量扫描:ocr scan review 是用来审改动的,scan 不太一样,它审的是完整文件,不依赖 Git 历史。什么时候用呢,比如刚接手一个不熟悉的项目,或者想把某个核心目录整体检查一遍,ocr scan --path 目录名 就行,不是 Git 仓库的目录也能扫。 扫之前可以先用 ocr scan --preview 看看它会处理哪些文件,这一步不调模型,不花 token。仓库比较大、担心花太多钱的话,还能用 --max-tokens-budget 设个上限。 评论能落到具体的代码行 定位这件事我觉得值得单独说一下。它没有让模型自己去报行号,因为模型对数字本来就不敏感,报的经常不准。 它换了个办法,让模型把有问题的那段代码片段给出来,然后程序拿着这个片段去 diff 里找准确位置,找不到就扫一遍全文件,再不行才让模型重新定位一次。这样一层层处理下来,内部版本评论位置的准确率超过了 97%。 自带规则库,也能加自己团队的规矩 工具里面内置了一套规则,按语言和文件类型分的。Java 文件重点查空指针、线程安全这些,前端文件查 XSS,MyBatis 的 XML 查 SQL 注入,开箱就有,不用自己配。 团队如果有自己的要求,可以在仓库里放一个 .opencodereview/rule.json,比如规定金额计算必须用 BigDecimal,对外接口必须加鉴权注解之类的。项目规则、个人规则、命令行临时规则之间有四层优先级,哪条会覆盖哪条,文档里都写清楚了。 可以接进 Claude Code、Codex 这些编码助手 平时就在用 Claude Code 或者 Codex 写代码的话,可以把 OCR 装成插件,在对话里直接调起审查。还有一种委托模式,OCR 只负责挑文件和匹配规则,真正审查的动作交给你自己的编码助手去做,这样连模型 key 都不用单独配了。 能挂到 CI 流水线上 官方给了 GitHub Actions 和 GitLab CI 的现成例子,配上 --format json --audience agent 这两个参数,输出的就是标准 JSON,CI 脚本拿去直接解析就行,每次 PR 都能自动过一遍。 有个网页界面回看审查记录 跑 ocr viewer 会在本地起一个网页,能看到之前的审查会话,处理掉的评论标记成已修复或者忽略就可以,下次不用从头再看一遍。 快速开始 安装很简单,就一条命令: npm install -g @alibaba-group/open-code-review 装完全局就有 ocr 命令了,有一点提前说下,它依赖 Git 做 diff 和代码搜索,Git 版本要 2.41 以上,机器上 Git 太老的话记得先升一下。 装完接着配模型,跑 ocr config provider,它有个交互式的界面,里面内置了不少供应商,国内的阿里云百炼直接可选,把 key 填进去它会自己测一下连通性。配完用 ocr llm test 确认没问题就行了。 然后就是进到项目里跑 ocr review,等它出结果。第一次用的话,我建议先跑 ocr review --preview,看看它选了哪些文件、过滤掉了哪些,心里有个数再正式审。 效果到底怎么样 这个项目开源四个多月了,现在 Star 过了两万六,在 GitHub Trending 上也待过好几天。官方那边放了一些数据,内部版本在阿里集团的月活用户有两万,累计跑了 370 万次真实评审,用户采纳率超过 30%。 开源版他们还专门建了一个评测集,从 50 个热门开源仓库里挑了 200 个真实 PR,覆盖 10 种语言,找了 80 多位资深工程师来标注,一共标出 1505 个问题。测下来的结果是,在同样的底层模型下,OCR 的准确率和 F1 都比通用助手高不少,token 消耗只有通用助手的大概九分之一,速度也更快。 有一点得说清楚,它的召回率比通用助手要低,也就是说会有一些问题没被发现。这是官方刻意做的取舍,宁愿少报几个,也不想拿一堆误报来烦人。日常审 PR 我觉得这个取舍没什么问题,但如果是安全审计这种不能漏的场景,光靠它不够,还得搭配别的工具一起用。 官方基准测试结果 最后说两句 这个工具我觉得最有价值的地方,是它把审查这件事的流程固定住了。比如文件要一个不漏地审完,评论的位置得准确,每次用的规则得是一样的,这些听起来都是很基础的事情,但通用助手恰恰容易在这些地方出问题,阿里这波相当于是把内部踩了两年的坑,打包一起开源出来了。 现在 AI 生成的代码越来越多,审查这个环节靠人去盯,肯定是盯不住的。OCR 当然也有它自己的问题,召回率摆在那里,不能指望它兜住所有事。但能让每个 PR 都先被稳定地过一遍,我觉得就挺值得装来用用了,感兴趣的可以去仓库看看。 开源地址 https://github.com/alibaba/open-code-review

来源报道 · 1 篇 · 以下链接均前往原始媒体

← 返回精选动态 原文

更多内容