Code Review 这件事,AI 比人类强 10 倍

news2025/1/23 22:31:50

1.引言

代码审查,也就是 Code Review(以下简称 CR),一直是 IT 行业讨论的热门话题,因为它在很大程度上决定了公司的工程质量。

但是,人工 CR 的成本的是很高的,所以在实际落地场景,很少有公司把 CR 这件事做得很好。

不过,最近,某知名互联网公司的 CR 比赛结果出炉,AI 队伍的得分第一,让所有新老程序员队伍黯然失色。

在这次 CR 比赛中,AI 队伍的得分远远高于人类队伍。这不仅仅是一个简单的数字游戏,它背后反映的是 AI 在编程领域的潜力和效率。

一众高级工程师组队的参赛队伍平均得分只有 30 分,但是 AI 大模型的得分高达 80 分。

CR 代码,AI 比普通程序员强 10 倍,真不是盖的。

2.传统代码审查的挑战

传统人工 CR 代码的方式,不仅人工成本高,而且对 CR 的技术人员要求也很高,及其依赖高阶员工,而高阶员工的时间成本是很高的。

另外,实际 CR 的效果很不理想,花费大量时间,最终提升的项目质量也不达预期。

AI 时代,低成本完成 CR 这件事是非常容易的。

AI 可以快速分析大量代码,基于互联网海量的代码库,学习到正确的代码写法,找出潜在的错误和优化点,这是人类程序员很难做到的。

3.AI在代码审查中的应用

介绍一个真实例子

曾经在公司的代码库中见过这样一段代码,我们让 AI 帮我们分析一下,是否有 bug。

我们可以看到 AI 能很好的帮我们分析代码中的 bug,并提出解决方案。

那么具体如何在公司进行落地呢?

对于有一定基础的公司,公司都会有基础组建,提供 CR 链接,我们可以直接在 CR 链接上嵌入 AI 能力,实际开发人员可以很容易根据 AI 的建议,进行代码修改,提升代码质量。

如果公司缺少基建,那么可以在 gitlab 这样的代码仓库中增加一个钩子(hook),开发人员在提交代码的时候,将有变更的代码发给 AI 进行 CR,然后把 CR 意见发给开发人员。

4.AI 与传统代码审查的对比

相比于传统的人工 CR 代码,AI 速度快、准确率高、成本低。

还能免于人工代码 CR 过程中导致的沟通问题,比如有的开发人员不认可 reviewer 的意见,可能还会造成争执。

此外,人工 CR,可能还在存在时间冲突问题,导致 CR 不及时,影响功能上线,导致效率问题。

上层领导如果不认可的话,根据不会认可 CR 这件事,最终导致部门代码质量逐步下降,开发人员「只能在屎山上继续拉屎」。

4.结语

不过,AI 也有它的局限性。它缺乏人类的创造力和直觉,无法像人类程序员那样在遇到问题时进行灵活的思考和创新。

AI 虽然在 cr 代码,写单元测试,编写复杂算法有能很大程度上超过广大程序员,但是在企业级别的业务场景开发来说,AI 当前阶段还远未达到人类的水平。

所以,我们在使用 AI 的同时,也要不断提升自己的能力,与 AI 形成互补,这样才能适应时代发展。

此外,AI 在编程领域的应用,也给我们的职业生涯带来了新的机遇。程序员们可以学习如何与 AI 合作,利用 AI 的优势来提升自己的工作。这不仅能够提高个人的竞争力,也能推动整个行业的发展。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1975825.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

latex换行\left[和\right]编译报错-解决方案

简而言之:\\ 换成 \right.\\ , & 换成 &\left. 来个例子就知道了: 原本的公式是: \begin{align}\label{up_critic} L_Q(\theta) & \mathbb{E}\left[\frac{1}{2}(Q_\theta(\mathcal{S}_{k,t}^m, {A}_{k,t}^m) - ({R}_{k,t}^m …

07030405复杂可编程逻辑器件CPLD现场可编程阵列FPGA

复杂可编程逻辑器件CPLD&现场可编程阵列FPGA 7.3 复杂可编程逻辑器件CPLD7.3.1CPLD的结构 7.4现场可编程门阵列FPGA7.4.1FPGA实现逻辑功能的基本原理7.4.2FPGA结构简介1.可编程逻辑块2.I/O块3.可编程连线资源CPLD与FPGA的区别 7.5可编程逻辑器件开发过程简介编程条件 7.3 复…

细说文件操作

你好!感谢支持孔乙己的新作,本文就结构体与大家分析我的思路。 希望能大佬们多多纠正及支持 !!! 个人主页:爱摸鱼的孔乙己-CSDN博客 目录 1.什么是文件 1.1.程序设计文件 1.1.1.程序文件 1.1.2.数据文件…

使用EntityFramework8的学习和开发过程中一些经验

前言: 本篇文章主要记录自己在EF8的学习和使用过程中的碰到一些坑和自己琢磨的一些解决问题的方法以及过程。 问题汇总: 一、Code First 模式下生成表中字段的没有按照我们想要的次序排列 实体上增加注解 [Column(Order 0)] 可以通过Order来控制字段…

[CISCN2019 华北赛区 Day1 Web1]Dropbox 1

目录 题目分析功能测试代码读取index.phpdownload.phpdelete.phpclass.php 关键代码审计user类FileList类File类思路 解题步骤php脚本解题 题目分析 功能测试 注册登录后来到上传文件界面,通过改后缀,改文件头,改content-type,上…

如何养护我们的头发一

正常头发含水量10-13% 头发含水量低 头发就会干燥 受到损伤 头发保水能力弱 保养头发,最重要的是防止头发头发的流水. 正确的洗涤方法 干性头发,一般3天洗一次 油性头发,一般1天洗一次 中性头发,一般2天洗一次 (2)正确的洗发步骤 选择好梳子建议选用木梳或牛角梳 按摩头皮…

释疑 803-(2)物理层 整理总结

目录 2-01 物理层要解决哪些问题?物理层的主要特点是什么? 2-02 规程与协议有什么区别? 2-03 试给出数据通信系统的模型并说明其主要组成构件的作用。 2-04 试解释以下名词:数据、信号、模拟数据、模拟信号、基带信号、带通信号、数字数据、数字信号、码元、…

PHP智能问诊导诊平台-计算机毕业设计源码75056

摘 要 智能问诊导诊平台作为一种智能化医疗服务工具,利用PHP语言开发,旨在为用户提供便捷的在线问诊和导诊服务。该平台集成了智能算法和医疗数据,实现了智能化的病情诊断和治疗建议,帮助用户更快速地获取医疗信息和建议。用户可…

未授权访问

一、Redis 未授权访问 redis-cli -h 192.168.4.176-p6379 (使用这个连接) 连接成功后使用info测试 二、MongDB 未授权访问 使用fofa搜mongdb端口复制ip到Navicat,连接 】 三、Zookeeper未授权访问漏洞 使用fofa 搜索2181端口使用下面命令在kali在…

5、SystemC行为级建模

1、sc_port关联sc_interface和channel。sc_module聚合sc_module、var、process和sc_port。sc_cthread和sc_method继承sc_thread。 sc_interface中声明很多虚函数,作为接口函数实现接口功能,如send()、recv()等。可以通过发送和接收模块的端口调用(sc_in…

CCF编程能力等级认证GESP—C++3级—20240629

CCF编程能力等级认证GESP—C3级—20240629 单选题(每题 2 分,共 30 分)判断题(每题 2 分,共 20 分)编程题 (每题 25 分,共 50 分)移位寻找倍数 单选题(每题 2 分,共 30 分…

【基础篇】MySQL数据库详解:基础知识详解

一、SQL分类 1.DDL2.DML3.DQL4.DCL二、函数 1.字符串函数2.数值函数3.日期函数4.流程函数三、约束 1.概述2.约束演示3.外键约束四、多表查询 1.多表关系2.多表查询表述3.内连接4.外连接5.自连接6.子查询五、事务 1.事务简介2.事务操作3.事务四大特性4.并发事务问题5.事务隔离级…

C语言——求阶乘的两种方法

第一种方法使用了递归思想 #include <stdio.h> int fun(int N) {if (N 0){return 1;}else{return (fun(N - 1) * N);} } int main() {int N 0;scanf_s("%d", &N);printf("%d",fun(N)); } 第二种方法用的for循环 #include <stdio.h> i…

如何开启idea中的断言功能?

目录 一、什么是断言&#xff1f; 二、Java断言的语法 三、开启断言 一、什么是断言&#xff1f; 断言&#xff08;assert&#xff09;是 Java 中的一条语句&#xff0c;一种在程序中的逻辑&#xff08;如一个结果为真或假的逻辑判断式&#xff09;&#xff0c;目的是验证软…

Unity Shader unity文档学习笔记(十八):unity雾效原理

看很多文章用近平面远平面组成矩阵后转到裁剪空间下通过Z值来解&#xff0c;实际更简单的方式可以直接通过判断距离来实现 FogMgr控制远近面 public class TestFog : MonoBehaviour {public int startDis 0;public int endDis 50;public Vector4 fogParam;public void Awak…

springboot宠物宿舍管理系统-计算机毕业设计源码74795

目录 摘要 1 绪论 1.1 选题背景与意义 1.2国内外研究现状 1.3论文结构与章节安排 2系统分析 2.1 可行性分析 2.2 系统流程分析 2.2.1系统开发流程 2.2.2 用户登录流程 2.2.3 系统操作流程 2.2.4 添加信息流程 2.2.5 修改信息流程 2.2.6 删除信息流程 2.3 系统功能…

javascript:判断输入值是数字还是字母

1 代码示例 要判断输入值是数字还是字母&#xff0c;我们可以通过JavaScript获取输入框的值&#xff0c;然后使用isNaN函数来检查输入值是否为数字。 <!DOCTYPE html> <html><head><meta charset"UTF-8"><title></title><s…

第一阶段面试问题(后半部分)

1. c语言中const *p的用法 &#xff08;1&#xff09;const int *p; 或 int const *p; 指向常量整数的指针&#xff0c;通过这个指针不能修改它所指向的整数值&#xff0c;但可以修改指针本身来指向其他地址 const int a 10; const int *p &a; // *p 20; // 错误&…

商家拒单业务

文章目录 概要整体架构流程技术细节小结 概要 商家拒单是电子商务、外卖平台、在线零售等多个行业中可能出现的情况&#xff0c;指的是商家拒绝接受或完成某个订单。这种情况的发生可能由多种原因引起&#xff0c;同时也涉及到商家、平台和消费者的利益平衡。 需求分析以及接…

CTFHUB-XSS-反射型

开启题目&#xff0c;页面如下 先输入以下语句测试一下&#xff0c;发现页面弹出窗口显示“flag”&#xff0c;说明这里存在 XSS 漏洞 <script>alert("flag")</script> 验证存在 XSS 漏洞后&#xff0c;使用 document.cookie 语句在弹窗和控制台中输出当…