通义灵码用户说:“人工编写测试用例需要数十分钟,通义灵码以毫秒级的速度生成测试代码,且准确率和覆盖率都令人满意”
通过一篇文章,详细跟大家分享一下我在使用通义灵码过程中的感受。
一、定义
通义灵码,是一个智能编码助手,它基于通义大模型,提供代码智能生成、研发智能问答能力。
在体验过程中有任何问题均可点击下面的连接前往了解和学习。
通义灵码官网
通义灵码安装教程
通义灵码产品手册
二、入门
当下市面上主流的智能编码助手有很多,下表是我工作中使用过的。
助手名称 | 是否免费 | 起步价格 | 简介 |
GitHub Copilot | 否,有免费计划 | 4美元/月 | 由 OpenAI Codex 语言模型驱动,迄今为止市场上最好的智能编码助手之一。 |
Amazon CodeWhisperer | 否,有免费计划 | 19美元/月 | 由机器学习提供支持的创新的代码生成器,经过大量开源代码数据集的训练,可以根据注释和现有代码提出从片段到完整功能的任何建议。 |
Tabnine | 否,有免费计划 | 15美元/月 | 基于海量开源代码数据集的智能代码补全,通过提供智能完成建议和识别潜在错误来帮助提高工作效率并提高代码质量。 |
Replit | 否,有免费计划 | 7美元/月 | 基于浏览器的 IDE 而闻名,该 IDE 允许在文档和本机托管中进行共同编码。 |
AskCodi | 否,有免费计划 | 7.99美元/月 | 由 OpenAI Codex 提供支持,可以生成代码、回答你的编程问题,甚至提供有用的代码建议。 |
Codiga | 否,有免费计划 | 14美元/月 | 基于 AI 的静态代码分析工具,可帮助开发人员编写更好、更快、更安全的代码。 |
Bugasura | 否,有免费计划 | 5美元/月 | 一款人工智能驱动的错误跟踪工具,旨在简化你的错误管理流程。 |
AI Helper Bot | 否,无免费计划 | 5美元/月 | 一款强大的、人工智能驱动的 SQL 查询生成器。 |
Android Studio Bot | 是 | 免费 | 是 Android Studio 中内置的AI驱动的编码助手。 |
TONGYI Lingma | 是 | 免费 | 基于通义大模型,提供代码智能生成、研发智能问答能力。 |
在开始入门操作前,需要准备好环境,也就是程序的安装。当前通义灵码兼容在两大主流编程工具Visual Studio Code、JetBrains IDEs下进行直接安装,后面新增了 Visual Studio 端。下面就分别介绍如何一步一步完成安装。
- Visual Studio Code
点击前往官方下载Visual Studio Code,如果你已经安装过该工具,此步可忽略。为了在使用中产生不必要的异常,这里直接下载官网最新稳定版。如图:
安装程序完成下载后,直接点击运行,安装完成后效果如图:
软件默认界面纯英文显示,如想更换成中文,官方提供了插件,只需点击应用——搜索chinese,选择安装即可。如图:
完成安装后,重启客户端。你就拥有了一个中文显示的界面了。如图:
安装通义灵码同样的需要点击应用,搜索通义灵码或者TONGYI Lingma。点击安装即可。如图:
安装完成后及时生效,无需重启。软件导航栏多出了一个通义灵码的图标。如图:
这里有一点非常好,就是如果你电脑上有其他的编码工具并且已登录过通义灵码对应的阿里云账号,此时完成安装通义灵码后也同时完成了登录,免去了再次登录的麻烦。
- JetBrains IDEs
点击前往官网下载IntelliJ IDEA,如果你已经安装过该工具,此步可忽略。为了在使用中产生不必要的异常,这里直接下载官网最新稳定版。如图:
完成下载后,直接点击运行安装,步骤很简单,一直点下一步即可,这里就不赘述。完成安装后的效果如图:
软件界面默认是全英文的,如果你想换成中文,只需要安装一个插件即可。软件左侧导航栏点击Plugins,搜索Chinese,选择语言包那个,点击install。如图:
完成安装后,点击界面上的 Restart IDE,重启客户端即可。这样一个中文菜单显示的界面就配置好了。如图:
回到正题,同样是插件市场,搜索通义灵码或者TONGYI Lingma,点击安装即可。如图:
完成安装后,同样需要重启客户端。上面演示的是在线安装,官方同时提供了ZIP离线安装包,工具上点击导航-插件,点击设置图标,下拉菜单中单击从本地安装插件,选择下载的 zip 文件后安装。
下图是安装完插件后,通义灵码显示的效果。
三、测评
1、功能使用维度
1)代码智能生成:行/函数级代码续写、行间描述生成代码、生成单元测试、生成代码注释、解释代码
- 解释代码
VS Code中在代码中点击快捷指令按钮便可实现解释代码功能,速度非常快,基本就是点击即生成,解释也准确。如图:
JetBrains中需要选定解释的代码而后右键,通过选择功能实现。如图:
从图上比较可以看出,稍微有点差异的地方是,VS Code首先给出的是精简的解释,而JetBrains给出的是详细的解释。
- 生成注释
在生成注释方面,两者基本一致,注释都准确。
- 生成单元测试
在生成单元测试中,两者也没有什么差异,都是准确的。但从显示效果来看,VS Code的代码更美观。
- 代码补全
在JetBrains中,可以通过快捷键Alt+P实现代码的补全,非常方便且准确。如图:
但有一说一,当下代码补全还不太智能,甚至有点臃肿。虽然补全的代码是对的,但会出现过多的日志。如图:
2)研发领域问答:调试和排查建议、研发领域智能问答
在回答同一个问题时,两者给出了完全不同的答案。VS Code的回答基本满足需求,即给出了实例也顺带简略了下步骤;JetBrains中的回答就有点完全照搬产品手册内容了,不甚了解产品的新人看到这里多少会有点蒙。如图:
3)灵码独有特异功能:对阿里云的资源 SDK/OpenAPI、对阿里云帮助文档有很好的支持
任选一个代码段,通过Ctrl+Shift+S进行搜索,可以很快速的找到50个代码实例以及参考文档,当然,这里选取的是阿里云的资源API,可以看到示例还是非常丰富的。从数据范围可以看出,这些示例均来自Github和StackOverflow,还是非常具有代表性的。如图:
参考文档方面数据量就显得很少了,虽然数据范围大了,但结果却很少。这里建议增加搜索引擎搜索,不仅限于阿里云论坛内部。如图:
2、产品设计维度
1)视觉体验:非常友好,整个界面清爽。
2)交互形式:交互方式很智能,比如检测到未登录,就会在右下角友情提示并提供了登录按钮。如图:
此外,当此时浏览器已登录了阿里云账号,点击登录时会自动关联,无需额外再次登录,很方便快捷。如图:
3)快捷键:产品首页对快捷键标识很清晰。智能问答 Ctrl+Shift+L、搜索Ctrl+Shift+S。有点差异的地方是,VS中搜索的快捷键被另存为占用,如需保持同JetBrains一致,需要自定义。
4)快捷入口:非常好地设计了快捷图标作为入口。图一是VS的,显示导航栏左侧;图二是JetBrains的,显示在右侧。
此外,VS Code中还内嵌了一个非常方便的快捷指令,通过点击可一键实现解释代码、生成单元测试、生成注释功能。如图:
3、交互体验维度
1)触发时机:整体的生成动作还是蛮自然的,能够根据用户的输入和上下文理解,自动生成相应的代码片段。
2)响应延时:基本没有延时,遇到回答问题时可能会有1-2s的思考时间。
3)按键数量:typing的次数将大大减少,尤其对于代码补全,通过一个快捷键即可完成很多次的typing。通过自动补全和代码片段生成,用户可以更快地完成输入,从而提高效率。
4)接受量:有多少内容(可以是字符数)被采纳
目前测试对于JAVA的内容采纳会多一些,对Python、C#等其他语言采纳会少,这个差异也许跟当下版本有关,后续优化肯定是可以解决的。
4、内容生成维度
1)生成的长度:生成的内容需要相对完整,并易于判断。
其实这个要根据不同的场景来综合评判,单一场景下的结论容易不准确。当前版本的通义灵码对于代码解释准确度可以到99%,内容长度略长,可以做精简;同时内容易读性很高。比如下图:
2)生成的正确性:是否有模型幻觉,出现答非所问
目前测试没有出现答非所问的情况,虽然偶尔一两次会出现回答不准确,但整体正确性还是蛮高的。比如下图:
3)生成的代码的优良率:生成的代码,需要符合几个特点:易读、可复用性、可扩展性、健壮性
简单用python实现了石头剪刀布的小游戏,运行没问题。如图:
但在实现画五星红旗的程序中,出现了未定义的方法。其实是多写了一个字母,应该是drawStar()。如图:
4)补全的“智能”程度:代码的智能程度、问题回答智能程度、生成出来的单元测试的有效性
这部分测试如果用数据来表示,那就是代码的智能程度为90%、问题回答智能程度88%、单元测试有效性92%。
四、总结
在体验通义灵码的过程中,我们发现它的续写代码功能非常强大。它能够根据当前的代码上下文,预测出可能的代码走向,给出合适的代码片段,极大地提高了编程效率。同时,它也能自动识别编程语言,并给出相应的代码解释,对于学习编程的新手来说非常有帮助。
除了续写代码功能,通义灵码的生成测试代码功能也十分出色。相较于人工编写测试用例需要数分钟甚至数十分钟的时间,通义灵码可以以毫秒级的速度生成测试代码,且准确率和覆盖率都令人满意。
在兼容性方面,通义灵码支持 JetBrains 全家桶和 Visual Studio Code 等多种开发工具,同时也支持 Java、Python、JavaScript、TypeScript、C/C++ 等30多种主流编程语言,可自动识别编程语言并生成代码解释。
在体验过程中,我们也发现通义灵码的一些潜在优点。例如,它可以打通阿里云开发工具和云资源的使用场景,提供代码智能化评审和软件构建问题智能排查能力。此外,基于持续迭代的通义大模型,通义灵码的未来版本还将不断提升开发者体验和研发效率。
但是,体验过程中还可以发现存在的一些不足之处,比如:
- 通义灵码可以生成测试代码,但其测试代码的覆盖率和准确率可能不如人工编写测试代码。这需要开发者具备一定的测试经验,才能正确地使用和指导通义灵码进行测试用例的生成。
- 在某些情况下可能会出现误判或理解错误的情况。例如,在处理复杂的代码逻辑或特殊的编程语法时,通义灵码可能会出现错误或无法完全理解上下文信息,从而导致生成的代码不准确或存在错误。
- 在不同编码工具上呈现出来的效果存在差异,明明是同一个问题或者需求,在不同的编码工具上可能出现完全不同的答案。
- 参考文档数据范围有限,为了更好地帮助开发者们解决实际问题,应增加搜索引擎根据关键字来进行搜索,提升文档数量的同时更好地满足解决问题需求。
总之,非常推荐大家体验一下通义灵码,随着使用时间的增加,通义灵码会越来越懂你,成为你的专属AI编码助手,很不错!
下载体验通义灵码:通义灵码_智能编码助手_AI编程-阿里云
相关文章:

通义灵码用户说:“人工编写测试用例需要数十分钟,通义灵码以毫秒级的速度生成测试代码,且准确率和覆盖率都令人满意”
通过一篇文章,详细跟大家分享一下我在使用通义灵码过程中的感受。 一、定义 通义灵码,是一个智能编码助手,它基于通义大模型,提供代码智能生成、研发智能问答能力。 在体验过程中有任何问题均可点击下面的连接前往了解和学习。 …...

MySQL中的约束
约束概述 1.1 为什么需要约束 数据完整性(Data Integrity)是指数据的精确性(Accuracy)和可靠性(Reliability)。它是防止数据库中存在不符合语义规定的数据和防止因错误信息的输入输出造成无效操作或错误信…...

Leetcode 寻找重复数
可以使用 位运算 来解决这道题目。使用位运算的一个核心思想是基于数字的二进制表示,统计每一位上 1 的出现次数,并与期望的出现次数做比较。通过这种方法,可以推断出哪个数字重复。 class Solution { public:int findDuplicate(vector<i…...

大一新生以此篇开启你的算法之路
各位大一计算机萌新们,你们好,本篇博客会带领大家进行算法入门,给各位大一萌新答疑解惑。博客文章略长,可根据自己的需要观看,在博客中会有给大一萌新问题的解答,请不要错过。 入门简介: 算法…...

【AI大模型】ChatGPT模型原理介绍(上)
目录 🍔 什么是ChatGPT? 🍔 GPT-1介绍 2.1 GPT-1模型架构 2.2 GPT-1训练过程 2.2.1 无监督的预训练语言模型 2.2.2 有监督的下游任务fine-tunning 2.2.3 整体训练过程架构图 2.3 GPT-1数据集 2.4 GPT-1模型的特点 2.5 GPT-1模型总结…...

基于UE5和ROS2的激光雷达+深度RGBD相机小车的仿真指南(五):Blender锥桶建模
前言 本系列教程旨在使用UE5配置一个具备激光雷达深度摄像机的仿真小车,并使用通过跨平台的方式进行ROS2和UE5仿真的通讯,达到小车自主导航的目的。本教程默认有ROS2导航及其gazebo仿真相关方面基础,Nav2相关的学习教程可以参考本人的其他博…...

C++竞赛初阶L1-15-第六单元-多维数组(34~35课)557: T456507 图像旋转
题目内容 输入一个 n 行 m 列的黑白图像,将它顺时针旋转 90 度后输出。 输入格式 第一行包含两个整数 n 和 m,表示图像包含像素点的行数和列数。1≤n≤100,1≤m≤100。 接下来 n 行,每行 m 个整数,表示图像的每个像…...

无线领夹麦克风哪个牌子好?西圣、罗德、猛犸领夹麦克风深度评测
如今短视频和直播行业蓬勃发展,无线领夹麦克风成为了许多创作者不可或缺的工具。然而,市场上的无线领夹麦克风品牌众多、质量参差不齐,为了帮助大家挑选到满意的产品,我作为数码测评博主,对无线领夹麦克风市场进行了…...

React Native 0.76,New Architecture 将成为默认模式,全新的 RN 来了
关于 React Native 的 New Architecture 概念,最早应该是从 2018 年 RN 团队决定重写大量底层实现开始,因为那时候 React Native 面临各种结构问题和性能瓶颈,最终迫使 RN 团队开始进行重构。 而从 React Native 0.68 开始,New A…...

Java并发:互斥锁,读写锁,Condition,StampedLock
3,Lock与Condition 3.1,互斥锁 3.1.1,可重入锁 锁的可重入性(Reentrant Locking)是指在同一个线程中,已经获取锁的线程可以再次获取该锁而不会导致死锁。这种特性允许线程在持有锁的情况下,可…...

客户端负载均衡Ribbon实例
文章目录 一,概述二,实现过程三,项目源码1. 源码放送:2. 部署方式 四,功能演示五,其他 一,概述 一般来说,提到负载均衡,大家一般很容易想到浏览器 -> NGINX -> 反…...

MySQL数据库负载均衡
数据库负载均衡是通过将数据库请求分散到多个数据库服务器上,以提高数据库的处理能力和可用性。在高并发的场景下,使用数据库负载均衡器可以有效避免单点故障,提高系统的整体性能和可靠性。 数据库负载均衡器 数据库负载均衡器可以是硬件设…...

达梦CASE_SENSITIVE参数解析
1. 参数含义 标识符大小写敏感,默认值为 Y。 当大小写敏感时,小写的标识符应用双引号括起,否则被转换为大写;当大小写不敏感时,系统不自动转换标识符的大小写,在标识符比较时也不区分大小写。 CASE_SENS…...

酒店智能轻触开关工作原理
在现代化酒店中,智能轻触开关已成为提升宾客居住体验的重要设备之一。这些开关不仅操作便捷,而且功能丰富,能够实现对灯光、窗帘、空调等设备的精准控制。本文将深入探讨酒店智能轻触开关的工作原理。 一、智能轻触开关的基本概念 智能轻触开…...

web基础之RCE
简介:RCE称为远程代码执行漏洞;是互联网的一种安全漏洞;攻击者可以直接向后台服务器远程注入操作系统命令;从而操控后台系统;也是CTF比较常考的一个方面 1、eval执行 (1)分析后端代码…...

c语言--水仙花数,求Sn的前五项和
用C语言实现输出水仙花数 什么是“水仙花数”? 所谓“水仙花数”是指一个n位数,其各位数字n次方之和等于该数本身。 例如:1531 ^3 5 ^3 3 ^3 如何求解水仙花数? 思路: 步骤1:先计算出数i的位数&#x…...

SpringBoot教程(二十八) | SpringBoot集成Elasticsearch(Java High Level Rest Client方式)
SpringBoot教程(二十八) | SpringBoot集成Elasticsearch(Java High Level Rest Client方式) 前言添加maven依赖yml配置ElasticsearchConfig 连接配置类EsUtil 工具类开始测试 前言 由ES官方提供,代码语法和DSL语法相似…...

【Vue3】常用的响应式数据类型
ref 定义基本类型 <template><div>{{ sum }}</div> </template><script setup> import { ref } from vuelet sum ref(10)const btn () > {sum.value 200 } </srcipt>reactive 定义复杂类型 <template><div>{{ sum }…...

搭建本地DVWA靶场教程 及 靶场使用示例
1. DVWA简介 DVWA(Damn Vulnerable Web Application)一个用来进行安全脆弱性鉴定的PHP/MySQL Web 应用平台,旨在为网络安全专业人员测试自己的专业技能和工具提供合法的环境,帮助web开发者更好的理解web应用安全防范的过程。 DVW…...

60. n 个骰子的点数【难】
comments: true difficulty: 简单 edit_url: https://github.com/doocs/leetcode/edit/main/lcof/%E9%9D%A2%E8%AF%95%E9%A2%9860.%20n%E4%B8%AA%E9%AA%B0%E5%AD%90%E7%9A%84%E7%82%B9%E6%95%B0/README.md 面试题 60. n 个骰子的点数 题目描述 把n个骰子扔在地上,所…...

高性能编程:无锁队列
目录 1. 无锁队列 1.1 无锁 1.1.1 阻塞(Blocking) 1.1.2 无锁(Lock-Free) 1.1.3 无等待(Wait-Free) 1.2 队列 1.2.1 链表实现的队列 1.2.2 数组实现的队列 1.2.3 混合实现的队列 1.3 多线程中的先…...

word标题排序编号错误
1.问题:word中有时会出现当前编号是2.1、3.1、4.1,下级编号却从1.1.1开始的情况,类似情况如下: 2.原因:此问题多为编号4.1、4.2和编号4.1.1使用的多级编号模板不一样,可以选中4.2,看下使用的多级…...

力扣---80. 删除有序数组中的重复项 II
给你一个有序数组 nums ,请你 原地 删除重复出现的元素,使得出现次数超过两次的元素只出现两次 ,返回删除后数组的新长度。 不要使用额外的数组空间,你必须在 原地 修改输入数组 并在使用 O(1) 额外空间的条件下完成。 说明&…...

一篇文章,讲清SQL的 joins 语法
SQL 中的不同 JOIN 类型: 1. (INNER)JOIN(内连接):返回两个表中具有匹配值的记录。 2. LEFT(OUTER)JOIN(左外连接):返回左表中的所有记录&#…...

设计模式之建造者模式(通俗易懂--代码辅助理解【Java版】)
文章目录 设计模式概述1、建造者模式2、建造者模式使用场景3、优点4、缺点5、主要角色6、代码示例:1)实现要求2)UML图3)实现步骤:1)创建一个表示食物条目和食物包装的接口2)创建实现Packing接口的实体类3&a…...

文生视频算法
文生视频 Sora解决问题:解决思路: CogVideoX解决问题:解决思路: Stable Video Diffusion(SVD)解决问题:解决思路: 主流AI视频技术框架: Sora Sora: A Review on Backg…...

LoRA: Low-Rank Adaptation Abstract
LoRA: Low-Rank Adaptation Abstract LoRA 论文的摘要介绍了一种用于减少大规模预训练模型微调过程中可训练参数数量和内存需求的方法,例如拥有1750亿参数的GPT-3。LoRA 通过冻结模型权重并引入可训练的低秩分解矩阵,减少了10,000倍的可训练参数…...

正点原子阿尔法ARM开发板-IMX6ULL(二)——介绍情况以及汇编
文章目录 一、裸机开发(21个)二、嵌入式Linux驱动例程三、汇编3.1 处理器内部数据传输指令3.2 存储器访问指令3.3 压栈和出栈指令3.4 跳转指令3.5 算术运算指令3.6 逻辑运算指令 一、裸机开发(21个) 二、嵌入式Linux驱动例程 三、…...

Unreal Engine——AI生成高精度的虚拟人物和环境(虚拟世界构建、电影场景生成)(一)
一、Unreal Engine 介绍 Unreal Engine(虚幻引擎)是由Epic Games开发的强大3D游戏开发引擎,自1998年首次发布以来,已经历了多个版本的迭代。虚幻引擎主要用于制作高品质的3D游戏,但也广泛用于电影、建筑、仿真等其他领…...

Emlog程序屏蔽用户IP拉黑名单插件
插件介绍 在很多时候我们需要得到用户的真实IP地址,例如,日志记录,地理定位,将用户信息,网站数据分析等,其实获取IP地址很简单,感兴趣的可以参考一下。 今天给大家带来舍力写的emlog插件:屏蔽…...