AI编程新时代,CodeBuddy 带你来体验

引言

随着人工智能技术的迭代演进,其带来的技术红利正深度渗透软件开发领域。AI 代码助手从从初期的基础代码补全、注释生成、语法检查等辅助功能,演进至具备智能代码诊断、上下文感知补全、自动化测试用例生成等进阶能力,到如今的开发智能体 Craft、智能代码补全、单元测试、代码诊断等多项高效功能,代码采纳率不断提升,帮助开发者在编码过程中节省时间、提升效率。对于开发者来说,编码效率的不断提升,可以让开发者拥有更多的时间来思考业务,提升系统稳定性,同时关注架构设计与技术债务治理,这种效率跃升不仅加速了功能交付周期,更驱动研发范式从【代码生产】向【价值创造】转型,在不断提升技术效率的同时,也为用户提供了更好的服务。下面请本文主角 CodeBuddy 登场。

我正在参加 CodeBuddy「首席试玩官」内容创作大赛,本文所使用的 CodeBuddy 免费下载链接:腾讯云代码助手 CodeBuddy - AI 时代的智能编程伙伴

CodeBuddy

那么什么是 CodeBuddy?这里的 CodeBuddy ,其实就是我们最初在使用的 腾讯云 AI 代码助手,这里是对原有的 AI 代码助手进行了升级改名。过去叫做 腾讯云 AI 代码助手,从功能上的定位就是说作为开发者的 AI 代码助手来辅助开发者在日常工作提高代码编程效率,同时提高代码质量和规范化开发,强调的是【助手】功能。那么这里改名为 CodeBuddy 就不一样了,CodeBuddy 百度翻译为 【代码伙伴/同伴/搭档(如密友、战友、兄弟般)】。从这个改名来看,一方面是名称更简洁易记忆传播,另一方面个人觉得现在的 AI 代码助手,已经不再是助手了,而是作为开发者的搭档身份出现,亲密度以及身份的对等性就很明显了,也就是说,现在的 CodeBuddy 可以完全胜任大多数场景下的代码编程,以【开发者】人的身份。

插件安装

在正式开始使用 CodeBuddy 之前,如果你是新用户,本地的开发工具还没有安装 CodeBuddy ,那么你需要先按照下面的步骤安装 CodeBuddy 插件或者升级插件。这里我们以 Java 开发者的开发工具 Intellij IDEA 来举例。在安装 CodeBuddy 之前,首先需要确定你本地的开发者工具版本符合 CodeBuddy 对开发者工具版本的最低要求
在这里插入图片描述
如果你本地的开发者工具版本不符合CodeBuddy 对版本的最低要求,那么需要你先升级本地开发者工具后再来尝试安装。这里我讲述通过 Intellij IDEA 插件市场安装 CodeBuddy 的操作,点击【File】-【Settings】,选择插件【Plugins】-【Marketplace】,在搜索框输入【腾讯云】选择【Tencent Cloud CodeBuddy】并点击【Install】安装 CodeBuddy 插件,初次安装的话,可能会需要一段时间,耐心等待即可
在这里插入图片描述
安装完成后重启开发者工具 Intellij IDEA 就可以看到已经安装好的 腾讯云 CodeBuddy ,登录腾讯云账号后就可以开启AI编程新时代了
在这里插入图片描述

业务功能开发

到这里的话,基本的准备工作也就完成了,下面我们就开始今天的业务需求开发。

业务需求

大家都知道,对于任何一家企业官网来说,都会看到类似公告,或者通知这样的专栏。一方面是为了及时的更新信息到官网方便用户知晓,另一方面也可以通过公告或者专栏的方式来宣传公司产品。那么现在有这样一款 CMS 管理系统,我们想要给这个 CMS 管理系统增加一个公告管理的功能,需要这个公告管理功能可以新增,修改,删除,查看,发布等,在公告管理列表页可以点击公告标题跳转到公告详情页等。整体的需求就是这么多,具体的细节在开发过程中再优化。

关于业务需求的实现,通常会按照如下的流程进行:

设计表结构–功能开发–本地测试(单元测试)–测试环境部署测试–功能上线

本文主要是讲解的基于 CodeBuddy 来进行业务功能开发操作,因此这里主要进行到本地测试(单元测试)阶段,后面的测试环境及功能上线暂不涉及。

设计表结构

通常情况下,表结构是我们根据具体的业务功能,设计具体的字段及字段属性,那么这里我们来使用 CodeBuddy 设计一下表结构看下体验如何。输入我们的具体需求:【帮我设计一张表 公告相关,主要包含字段:公告标题、公告内容、公告状态、公告类型、是否有效、创建时间、创建人、更新时间、更新人】,以下是具体的生成效果,
在这里插入图片描述
可以看到,CodeBuddy 在帮我们生成业务表的同时,也已经考虑到后面查询效率提升所需要的索引,直接把相应的索引也一起生成了。将生成的表结构复制到 mysql 命令执行工具 navicat 里面新建查询执行建表语句,执行成功,这说明 CodeBuddy 帮我们生成的 mysql 表结构没有任何问题,不用人工修改就可以直接使用
在这里插入图片描述

功能开发

下面我们再继续来生成具体的业务逻辑,包括 controller 控制层、service 接口层、service 实现类、mapper 层、domain 实体类、mybatis 的 xml 语句,那么我们将需要的内容整合后给出我们的需求:【生成 sys_notice 表的 controller 控制类、service 接口类、service 实现类、domain 实体类、mapper 接口类、mybatis 的 xml 查询文件,需要包含 新增、修改、删除、发布功能】,下面我们可以看到 CodeBuddy 对我们需求的分析以及基于 Spring Boot+MyBatis 框架,为您生成完整公告模块代码结构
在这里插入图片描述

依次点击生成的代码文件的操作栏的【新建文件】,会将当前的文件内容新建在一个位置,因为这里也暂时无法指定接受后选择的文件夹目录,所以需要在点击新建文件接收文件内容后,再人工再调整一下位置以适配我们当前项目的代码架构就可以。这里需要说明的是,对于 mapper.xml 文件,在点击【新建文件】后,并没有创建成功新文件,尝试了几次也没建出来,后面再复制吧(还有一个小建议:就是希望后面对于这种一次性对话生成多个文件的情况,可以有一个一键新建多个文件,或者一键接收多个文件的操作,逐个点击新建文件也是有点繁琐了)
在这里插入图片描述

按照实际项目中 controller 、service 等文件的具体目录手工移动到对应的位置后,我们尝试重启本地项目,方面检查一下我们新增后端代码文件后,原来的项目是否可以正常启动。启动项目时看到有这样一个错误提示

D:\2024code\RuoYi-master\ruoyi-system\src\main\java\com\ruoyi\system\domain\SysNotice.java:3:14
java: 程序包lombok不存在

对于在控制台中打印的启动报错问题,我们可以直接选中错误信息,并鼠标右键选择【CodeBuddy:终端解释】,根据 CodeBuddy 的建议我们在 pom.xml 文件中增加如下 jar 包,同时安装 Lombok 插件引入配置后解决问题
在这里插入图片描述

再次启动时,遇到了一个 【不支持 XML 版本 “1.ibatis.org/dtd/mybatis-3-mapper.dtd”, 只支持 XML 1.0。】的问题,这里我们直接点击控制台日志中的【腾讯云 AI 代码助手】,此时在 CodeBuddy 的对话框会自动导入错误信息并分析给出解决方案
在这里插入图片描述

具体的解决方案如下,按照 CodeBuddy 提供的解决方案修改 NoticeMapper.xml 文件头信息后再次尝试启动,启动成功
在这里插入图片描述

在解决了后端生成代码的问题后,我们需要生成这次功能需要用到的前端页面,其实对于 Java 开发者来说,画页面往往是最费劲的,毕竟不是专业的前端,如果 CodeBuddy 可以直接生成前端的 新增页面、修改页面、列表页面就会方便很多了,开发效率也会大大提升。这里我直接输入我们的需求:【基于 sys_notice 生成 新增、修改、列表 的 html 页面】。在生成页面后,同样的操作我们点击三个页面右上角操作栏的【新建文件】保存页面内容,但是这里新建文件按钮和在操作 mapper.xml 文件时的现象一样也是点击了没反应,那么同样只能采用逐个手动新建文件并复制代码内容的方法了。直接新建并复制文件到对应的目录下
在这里插入图片描述

这里我们直接在浏览器中输入当前生成页面的本地文件的具体路径可以看到页面的样式,整体上来说风格上和原有系统的风格有一定的出入,原来系统的风格有统一的样式以及按钮等,就像这样的效果
在这里插入图片描述

但是在我们通过 CodeBuddy 生成的 sys_notice 公告管理的列表页面确实下面的效果,风格,样式以及页面的效果展示上,都有一定差异
在这里插入图片描述

考虑到为了页面风格的统一,那么我可以采取先选择参考文件,然后基于参考文件 的方式来生成页面,比如这里我首先生成 公告管理的 notice-list.html,那么我选择项目中原有 post 岗位 的 post.html ,这里交给大家一个小窍门,可以点击选择文件的【@add】,
在这里插入图片描述

在弹出的搜索框中输入需要搜索的文件名,然后选择文件,同样的方法我再选择我们生成的公告管理的 domain 实体类,然后输入需求:【参考这个 post 页面生成一个 sysNotice 对象的 notice 页面】
在这里插入图片描述

生成效果就像这样
在这里插入图片描述

这里不再使用最初生成的 notice-list.html 页面,直接新建统一命名规则统一风格的 notice.html 页面来保存当前生成的页面内容。同样的办法,我们重新更换参考页面,这次参考页面改为 add.html ,同样的选择公告管理的 domain 实体类对象 SysNotice.java 作为参考来生成 公告管理的 add 页面,输入我们的需求:【参考这个 add 页面生成一个 SysNotice 实体类的 add 页面】
在这里插入图片描述

新建 add 页面后,同时复制生成的代码到文件中并保存后,更换参考页面改为 edit.html ,同样的选择公告管理的 domain 实体类对象 SysNotice.java 作为参考来生成 公告管理的 edit 页面,输入我们的需求:【参考这个 edit 页面生成一个 SysNotice 实体类的 edit 页面】
在这里插入图片描述

那么到这里,整个公告管理的功能基本上都已经开发完了,第一步生成所有的后端代码文件,第二步参考系统现有的 add、edit、list 页面的风格生成新功能公告管理对应的页面,这个操作也就是通过与 CodeBuddy 的几句对话就全部完成了,对于后端代码来说,代码生成完成之后放入项目,微调后就直接可以采纳使用,代码采纳率以及开发效率都大大提升了。剩下的就是配置菜单,然后进行一些功能或者页面的优化调整,后面将继续进行功能优化。

功能优化

配置菜单的步骤这里不再细说,不同的项目配置菜单的方式也不太一样,另外这也不属于 CodeBuddy 本次关注的内容,CodeBuddy 主要是关注功能开发。这里我们来逐个验证我们的 CodeBuddy 伙伴帮我们生成的类的代码是否符合业务需求。那么我们先来看一下 controller 控制层的代码,这里我们对比项目原有的 SysPostController 与 CodeBuddy 生成的 公告管理的 NoticeController controller 方法可以看到,生成的 NoticeController 方法和上面没有参考生成页面时情况比较类似,与现有的业务流程,风格都有一定的差异,就像下面这样
在这里插入图片描述

考虑到上面我们生成页面时参考项目中现有页面的方法,这里我们也可以基于 SysPostController 来对 NoticeController 进行优化,输入我们的需求:【参考 SysPostController 的风格给 NoticeController 补充 缺失的页面跳转方法】这里我们可以看到 CodeBuddy 为我们生成了对应的页面跳转方法
在这里插入图片描述

这里需要说明的是,虽然 CodeBuddy 已经参考我们给出的示例类补充了对应的跳转方法,但是跳转页面的返回还是有一点小差异,但是效果上是一样的。从这里也可以看出,对于 CodeBuddy 来说,在生成代码之前,并不会自动整体阅读一遍项目代码,理解当前项目的风格之类的,而是需要你在实际使用的过程中,针对你需要开发的功能提供一个参考 demo,让 CodeBuddy 在生成代码之前可以先了解参考 demo 的风格以及业务流程内容,这样生成的代码准确性就会有很大提升了。

另外就是生成的代码在一些小细节上也会有一些不太一致的地方,比如项目原来返回页面内容时放入 ModelMap ,而上面我们生成的页面跳转方法则是放入 Model。还有就是对于初始生成的一些 controller 方法 ,也需要做一些调整,正常是需要支持分页返回的列表,但是目前生成的列表返回方法却是这样
在这里插入图片描述

调整后的页面方法应该是下面的效果,另外就是初始生成的方法还都没有代码功能注释,这也是需要补充内容的地方
在这里插入图片描述

这些都需要人工修复,同一个项目的代码,注释以及编码风格尽可能的和过去保持一致,方便维护。对于代码中缺少的代码注释、小范围的代码补全等,我们也可以通过 CodeBuddy 来进行补全
在这里插入图片描述

启动项目之后访问公告管理页面,最终的效果就像这样
在这里插入图片描述

体验建议

这里想要说的是,对于新版的 CodeBuddy,相对于过去初版的 AI 代码助手来说,对于代码智能生成,以及对于自然语言的理解准确度都有了很大的提升。并且可以根据你的需求描述来生成对应的 sql 表结构,以及基础的 controller 层、service 层 、dao 层、domain 实体类层生成代码,生成的代码准确度也有 90%以上。但是并不是说 CodeBuddy 代码生成的功能就很完美或者说可以直接用了。通过上面大家可以看到,CodeBuddy 帮我生成的代码是没有问题,基本上都是直接采纳,但是就像我们看到的一样,对于完整业务功能来说,生成的代码并不能直接投入到业务操作中,而是需要再进行一轮人工的整理调整。也就是说 CodeBuddy 生成代码的能力是 OK 的,生成的代码符合逻辑,不会报错。但是能不能用于具体的业务场景,这个还需要看具体的业务场景。就像我生成的代码,没有页面跳转方法一样。同样在生成 html 页面时,第一次生成的也确实是符合语法的页面,但是与现有的系统代码风格,页面风格完全不一样,不能直接用。而是要采用第二次基于当前项目中其他页面来生成当前的页面,这样才能有一个大致的可以用的页面。

另外这里想说的是,对于新功能,如果当前项目的基础代码有直接的代码生成工具,建议还是使用代码生成工具来生成,更能符合当前工程项目的风格和功能。而基于已有工程进行功能迭代的话,此时我们可以利用 CodeBuddy 进行基于部分代码的生成,这样代码生成的准确度会更高一些,也能更符合你的业务场景需求。

代码评审

腾讯云 CodeBuddy 同时提供了代码评审功能,支持:评审文件 (指定单个或多个文件)、评审变更(当前暂存区代码变更)、评审编辑区(指定编辑区内容)。通过代码评审功能,开发者能够在项目开发过程中及时发现并解决本地代码变更可能引入的问题,从而提高代码质量,加速开发流程
在这里插入图片描述

比如这里我们选择我们开发的 NoticeController 全部内容后,点击鼠标右键选择【CodeBuddy】-【代码评审】
在这里插入图片描述

代码评审结束后,会对我们选中的文件内容给出评审反馈,我们就可以根据具体的评审反馈对代码内容进行优化修改,从而提升代码质量
在这里插入图片描述

错误排查

在日常开发过程中,肯定会遇到各种报错,或者是没有报错但是也没有获取正常数据,总的来说就是程序非正常响应,那么对于有明显的控制台错误的情况,就像我们上面提到的一样,我们可以通过在控制台点击【腾讯云 AI 代码助手】从而跳转到 CodeBuddy Chat 对话框来分析具体错误原因
在这里插入图片描述

或者选择【CodeBuddy:终端解释】来跳转到 CodeBuddy Chat 对话框分析错误原因,在经过对错误原因的分析之后,CodeBuddy 也同样会给与我们相应的解决方案
在这里插入图片描述

对于错误信息 Invalid bound statement (not found): com.ruoyi.system.mapper.NoticeMapper.selectList 的原因分析,CodeBuddy 会提示我们先确认 NoticeMapper.xml 的文件位置是否正确,同时确认 NoticeMapper.xml 中是否有 selectList 的方法
在这里插入图片描述

同时在报错原因分析的最后还会给出完整的验证流程,以及遇到这种类似情况时,根据不同的现象来排查可能原因,以及对应原因的解决方案
在这里插入图片描述

就这一点上来说,对于开发者编码效率的提高就会再一次上升一个台阶。对于开发者来说,业务功能的开发,代码编写是一个方面,而在代码编写完成之后,本地测试阶段如何提高测试效率,以及在测试遇到报错问题时如何快速定位并解决问题,都是一个大工程。在程序员行业,经常会遇到这样的奇葩情况,排查寻找问题耗费一整天,真正改代码解决问题只需几分钟。有了 CodeBuddy 的错误问题分析之后,对于开发者来说,可以按照 CodeBuddy 提供的排查思路,逐步进行尝试,从而大大缩短找问题的时间,这在另一个角度来看同样是提升了开发效率。

CodeBuddy 总结

对于 CodeBuddy 的功能介绍,其实远不止这些,本文是基于 CodeBuddy 进行的一次业务功能开发的尝试,整体体验下来的效果还是不错的,就像文中说到的一样,代码采纳率可达 90%,这里需要注意的是,如果你想要保持与现有项目开发风格,业务调用流程的一致,那么在生成代码时尽量提供参考文件,从而大大提高代码生成的准确率。

另外对于 CodeBuddy 的 Chat 模式,CodeBuddy 同样支持内置模型的任意切换以及自定义模型的个性化配置,大家可以很方便的根据自己的需要进行模型的切换
在这里插入图片描述

并且升级版本的 CodeBuddy 同样提供了 @Add 功能,正如我们在上面用到的一样,当单纯的依靠自然语言进行代码生成无法适配当前项目风格或者是页面 css,js 等页面属性参数时,我们可以通过 @Add 来选择添加上下文内容,从而让 CodeBuddy 的代码生成有据可依,从而在保证代码质量的前提下适配当前项目的风格及静态文件等内容的引入
在这里插入图片描述

对于单元测试,在日常开发过程中也会用到,这里没有详细描述是因为当下的业务功能可以通过页面调用的方式来全流程的验证功能的问题,而不需要通过后端代码生成单元测试的方式进行。一般情况下,在为外部系统提供接口时,对于编写完成的接口方法,受限于没有外部页面的调用,通常会通过单元测试的方式来测试接口的返回以及响应。

对于错误排查,这个在功能开发的过程中也用到过,总的来说错误排查及修复,也是很不错的功能,只要你能给出具体的错误信息,CodeBuddy 就能帮你快速分析定位问题,并解决问题。可以说错误排查的功能,相对于前面的代码生成,代码调优、单元测试等,重要性同样不容忽视,甚至在遇到棘手问题时,错误排查的贡献往往更大。

CodeBuddy,你的代码搭子来了,快来一起 Fighting 吧!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

csdn565973850

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值