专栏名称: 阿里云云原生
发布云原生技术最新资讯、汇集云原生技术最全内容,定期举办云原生活动、直播,阿里产品及用户最佳实践发布。与你并肩探索云原生技术点滴,分享你需要的云原生内容。
目录
相关文章推荐
孥孥的大树  ·  大跌,牛市没了? ·  昨天  
孥孥的大树  ·  大跌,牛市没了? ·  昨天  
香港商报  ·  升市背后藏隐忧,港股“T+1”势在必行? ·  昨天  
香港商报  ·  升市背后藏隐忧,港股“T+1”势在必行? ·  昨天  
投资眼老A  ·  tmd...出事了! ·  昨天  
51好读  ›  专栏  ›  阿里云云原生

通义灵码实战系列:一个新项目如何快速启动,如何维护遗留系统代码库?

阿里云云原生  · 公众号  ·  · 2024-04-29 19:00

正文

进入 2024 年,AI 热度持续上升,翻阅科技区的文章,AI 可谓是军书十二卷,卷卷有爷名。而麦肯锡最近的研究报告显示,软件工程是 AI 影响最大的领域之一,AI 已经成为了软件工程的必选项,也有研究称开发者每天的事务性工作可能占到了七成左右,比如单侧编写等,而这部分恰好是 AI 所擅长的。让大模型辅助工程师加速编码和提升质量,可以让我们更加聚焦于剩下的 30% 的业务和技术创新。

日常工作中经常听到工程师的一些诉求和痛点。比如说单元测试编写比较费时间;接手了一个新的代码库,一些祖传代码理解成本比较高;排查问题查资料要跳转到一些浏览器,并且很难找到合适的答案,会显得焦头烂额。我作为智能编码研究者,同时也是开发者,这次终于能够华佗打点滴,医者自医了。

总结下来,开发者的主要诉求有三点,1)快速编码,快速解决问题,快速完成需求。2)减少 IDE 跳出,享受沉浸式心流。3)减少重复编码,排除语言限制。

比如我要做一个网页,虽然我不懂前端,但在大模型辅助下,可以帮助我编写 HTML 和 JS 的代码,这样我能够更加聚焦于业务的实现和创新。一句话概括来讲就是开发者来 IDE 只干三件事,写代码,写代码还是写代码, 通义灵码便是以编码助手的形态来帮助开发者提质和提效的。

通义灵码的核心功能有行级/函数级的自动续写、自然语言编码、注释生成、单元测试生成、代码解释、代码优化、异常报错、智能排查、技术文档搜索等等。同时它也提供了企业化个性能力,比如报表展示以及专有云的各种部署形态。

通义灵码支持 Java、Python、Go 等 200 多种主流编程语言,目前已经在 VS Code 和 JetBrains 全家桶 IDE 上的插件市场上架了, 大家诉求很高的 Visual Studio 也即将在下个月上架, 并且这些 IDE 的远程开发模式也都是支持的,比如说 Remote、SSH、WSL 等等。

总体来讲通义灵码是基于通义大模型,结合海量开源知识以及阿里云的文档 SDK 开发的,从而有了上层的代码补全和研发问答的核心能力。再上层便是我们工程侧,比如说有问答意图识别、用户习惯学习、Prompt 工程、跨文件学习等等。从基模到垂直领域的模型,再到端侧核心能力的整体同步建设,支撑了我们在 IDE 上可以使用通义灵码这款产品。

通义灵码能力展示




Cloud Native

有同学会问了,纸上得来终觉浅,来点实战行不行?
01/ 使用 Spring Boot 创建一个新项目
接下来就 使用 Spring Boot 创建一个新项目 作为案例向大家展示通义灵码的能力。首先我们向灵码提问:如何通过 Spring Boot 编写一个照片上传下载的 Web 程序?灵码马上就能反应过来并开始生成,先是编写 Spring Boot 的 XML 文件以及一些数据结构配置文件,接着写 controller 层、service 接口以及 service 的实现类,大家会看到 AI 写代码的速度是很快的,并且思路非常清楚,知道需要哪些文件以及步骤,以及怎么把 Web 服务给部署起来。

我们可以随时随地和灵码通过问答的方式来交互。 如果你对它的回答有任何的不满意,或者是想让灵码扩充一些比较概括性的代码,让它续写一下,再或者是遇到了某种报错或特别的诉求寻找解决方案等等,都可以通过追问的方式进一步和灵码沟通,灵码会很乐意在问答的的过程中为你提供帮助。

比如我提问有没有通过 memory 的内存的数据库来存储的例子,而不是用 mysql 数据库,灵码就可以领会我的意思,并提供一个 redis 的方案来做这个存储。

02/ 维护遗留系统代码库

另外一个比较常见的场景是我们作为工程师会经常去维护别人留下来的一个老旧系统,可能里面也会有一些 祖传代码 。那么灵码解释代码这样一个预知任务的能力就可以更好的得到体现了。

比如说有这样一段代码,if else 非常多,也比较杂乱。我们可以点击方法上方的一个快捷入口,让灵码解释一下。这里我们有一个设计,就是灵码会首先给出一个相对比较简短的 high level 解释,帮助开发者能更快的理解这段代码的意思。如果开发者想要更加具体的一些解释,可以通过我们底下的追问按钮有更详细的回答,英文系统叫 in detail ,灵码会给出更加具体的解释。

单元测试也是个老生常谈的话题,人人都知单测好,但是能真正做到的又不多。单元测试可以提高代码的可维护性,让代码更加健壮,并且其他人来接手的时候也可以更好维护一些,但是工程师的日常开发需求会更大一些。

单测客观上讲,在短期内是肯定是相对费时间的一件事情,但很多开发者就会往往追求短期的 省事 ,而抛弃了远期的利益。而灵码就可以更加快速的帮助工程师来编写单元测试,提高单测的覆盖率,提升代码库的可维护性。

代码优化也是一个高频场景,之前有很多用户的诉求,希望有这样一个能力。用户可以通过框选右键,也可以点击方法上方的快捷入口来触发代码优化。不过客观上讲,代码优化它是一个很宽泛的词,它设计了风格优化、缺陷修复、程序重构、安全性优化等等。所以我们也在尽我们所能来提升代码优化的模型能力,让开发者的代码质量更高。

最后介绍一下我们的运行调试错误排查能力。当 IDE 遇到一些 runtime 报错的时候,灵码会在报错堆栈中提供一键排错的功能,点击一键排错的按钮后灵码会自动的采集报错堆栈,并定位到出错代码的上下文,帮助用户生成一个报错排查的提示词来提问模型,寻求解决方案。这个功能目前在 IDEA 和 Java 中放开,后续也会在各个端侧和各个语言中放出。

通义灵码的产品亮点及优势








请到「今天看啥」查看全文