【实战】阿里智能编码助手通义灵码

news2024/9/20 16:35:46

文章目录

    • 前言
    • 技术积累
      • 通义灵码是什么?
      • Copilot是什么?
      • 通义灵码主要功能
      • 通义灵码有哪些优势?
      • 通义灵码支持语言/工具
      • 通义灵码接入方式
      • 通义灵码帮助中心
    • 实战演示
      • 安装插件
      • 行/函数级实时续写
      • 自然语言生成代码
      • 代码优化
      • 单元测试生成
      • 代码注释生成
      • 解释代码
      • 研发智能问答,解决问题更轻松
      • 异常报错智能排查(Java IntellJ IDEA 2021版本未开启)
    • 写在最后

前言

AI编码助手(AI Coding Assistant)是一种利用人工智能帮助开发人员更快、更准确地编写代码的软件工具。 它可以通过根据提示生成代码或在你实时编写代码时建议自动完成代码来实现此目的。 以下是AI代码助手可以做的一些事情:
1、与你使用的流行代码编辑器集成,例如 IntelliJ IDEA、Goland、Visual Studio Code等等
2、根据提示或代码注释生成完整的代码片段
3、自动完成实时编写的代码行
4、检测代码中的错误、错误和安全漏洞
5、帮助注释代码,以便方便回头参考
6、代码纠错
7、API查询或学习
8、…

目前市面上几乎所有大厂都有自研AI编码助手,比如Github Copilot、亚马逊CodeWhisper、微软Sketch2Code、华为CodeArts Snap、阿里通义灵码、科大iFlyCode、蚂蚁CodeFuse、京东Deco、商汤代码小浣熊等等。

其实各种的AI编码助手底层都是采用大模型,并在后期经过海量优秀开源代码数据训练而成,今天我们就分享一款国产、社区活跃度高、更新迭代较快的编码助手——阿里通义灵码。

在这里插入图片描述

技术积累

通义灵码是什么?

阿里推出免费AI编程工具,基于通义大模型,国内Copilot平替产品,提供行级/函数级实时续写、自然语言生成代码、单元测试生成、代码注释生成、代码解释、研发智能问答、异常报错排查等能力,并针对阿里云 SDK/OpenAPI 的使用场景调优,助力开发者高效、流畅的编码。

Copilot是什么?

GitHub Copilot是由GitHub与OpenA合作开发的一款革命性的智能代码补全和生成工具,旨在帮助开发人员更高效、更准确、更快地编写代码,这款由人工智能驱动的A|编程助手与程序员常用的代码编辑器无缝集成,超过数百万人在使用,对全球各地的开发者来说都是代码神器和得力助手。

通义灵码主要功能

行/函数级实时续写
自然语言生成代码
代码优化
单元测试生成
代码注释生成
解释代码
研发智能问答,解决问题更轻松
异常报错智能排查(Java)

通义灵码有哪些优势?

跨文件感知让代码生成更贴合业务场景:
客户端和模型层同步优化针对代码跨文件上下文感知能力,生成代码更加贴合当前代码库的业务场景。

阿里云服务使用场景友好:
专门针对阿里云的云服务使用、SDK/OpenAPI 的使用等场景调优,编码时能够更加便捷地使用阿里云服务;在对阿里云使用有疑问时,智能编码助手的回答也将更加有效。

适配多 IDE 的原生设计,符合开发者使用习惯:
适配 IDE 原生主题、交互模式,让开发者感受到 IDE 原生的视觉和交互体验,更符合开发者使用习惯。

研发问答、文档/代码搜索能力,打造沉浸式编码:
无需切换工具,IDE 客户端内即可满足开发者编码场景中的技术资料检索、技术难题解答的诉求,打造开发者沉浸式编码体验。

双模引擎,自由切换:
支持极速本地模型、云端大模型两种代码补全模型,支持一键切换,满足不同网络环境、不同补全强度的场景诉求。

通义灵码支持语言/工具

支持 Java、Python、Go、JavaScript、TypeScript、C/C++、C# 等主流语言,同时兼容 Visual Studio Code、JetBrains IDEs 等主流编程工具。
JetBrains IDEs 兼容的操作系统:Windows 7 及以上、macOS、Linux。
Visual Studio Code 兼容的操作系统:Windows 8.1 及以上、macOS、Linux
在这里插入图片描述

通义灵码接入方式

通义灵码支持 Visual Studio Code(1.75.1 及以上版本)、JetBrains IDEs( 2020.3 及以上版本),
VS Code和Jetbrians插件市场搜索"tongyilingma"即可免费使用。(目前处于公测阶段免费使用)
在这里插入图片描述

安装完成后IDEA工具栏会有通义灵码操作选项,可登录阿里云账号即可开始使用,最新更新版本可用支持远程AK/SK登录使用。
在这里插入图片描述

通义灵码帮助中心

1、产品官网:通义灵码_智能编码助手_AI编程_人工智能-阿里云
2、安装说明:通义灵码_智能编码助手_AI编程_人工智能-阿里云
3、使用指南:通义灵码使用指南_云效-阿里云帮助中心
4、配置指南:通义灵码的快捷键信息,功能配置等_云效-阿里云帮助中心
5、常见问题:通义灵码使用时启动、登录、账号等常见问题。_云效-阿里云帮助中心

实战演示

本次演示采用IntelliJ IDEA编码工具,并采用后端Java代码进行,前端也可采用VS Code工具编写JS代码进行测试。

安装插件

直接在IDEA插件菜单栏进行搜索‘’TONGYI Lingma",选择安装。安装成功后可在工具栏找到并登录阿里云账号,即可开始使用。

如何辨别是否成功启用??
以后端Java语言为例,如果我们编写方法,统一灵码操作按钮会悬浮在方法上部。
在这里插入图片描述在这里插入图片描述

行/函数级实时续写

在编码的过程中,根据上下文和当前语法,为你自动预测和生成建议代码,你只需单击 Tab 键即可采纳。
在这里插入图片描述
在这里插入图片描述

自然语言生成代码

在编辑器中,通过自然语言描述你想要的功能,根据你的描述和上下文,支持在编辑器区直接生成代码及相关注释,编码心流不间断。

冒泡排序算法自动生成
在这里插入图片描述

代码优化

帮你识别代码中的问题,并提供代码优化建议

测试写了一段垃圾代码,我们选择生成代码优化建议
在这里插入图片描述

通义灵码优化建议:

这段代码的目的是根据输入的字符串str,判断它是否包含特定的字母,并输出相应的结果。代码中使用了多个if-else if语句来判断字符串中是否包含不同的字母。如果字符串中包含的字母是"a"、“b”、“c”、“d”、“e”、“f"或"g”,则输出对应的字母,否则输出"over"。
优化建议如下:
使用switch语句代替多个if-else if语句,以提高代码的可读性和维护性。
将字符串"sdfgasef"作为方法的参数传入,以增加代码的灵活性和可复用性。

优化后的代码如下:

/**
 * 代码优化
 * @param str 待判断的字符串
 * @return void
 */
public void codeOptimization(String str) {
    switch (str) {
        case "a":
            System.err.println("a");
            break;
        case "b":
            System.err.println("b");
            break;
        case "c":
            System.err.println("c");
            break;
        case "d":
            System.err.println("d");
            break;
        case "e":
            System.err.println("e");
            break;
        case "f":
            System.err.println("f");
            break;
        case "g":
            System.err.println("g");
            break;
        default:
            System.err.println("over");
            break;
    }
}

这样,调用codeOptimization方法时,只需要传入不同的字符串即可,而不需要修改方法内部的判断逻辑。同时,使用switch语句可以更清晰地表达代码的意图,提高代码的可读性。

单元测试生成

支持根据 JUnit、Mockito、Spring Test、unit test、pytest 等框架生成单元测试以及单元测试相关代码解释。

任意编辑一段代码,我们选中生成单元测试
在这里插入图片描述

通义灵码建议:

为了测试generateUnitTest方法,我们可以使用JUnit 5框架来编写单元测试。首先,我们需要创建一个测试类,然后在该类中编写测试方法。
以下是一个示例:

package com.example.ccedemo;

import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.BeforeEach;
import static org.junit.jupiter.api.Assertions.*;

import java.io.File;

public class TongYiLingMaTestTest {

    private TongYiLingMaTest tongYiLingMaTest;

    @BeforeEach
    public void setUp() {
        tongYiLingMaTest = new TongYiLingMaTest();
    }

    @Test
    public void testGenerateUnitTest() {
        // 假设文件存在
        File mockFile = new File("D:\\test\\test.jpg");
        try {
            // 使用Mockito框架模拟File类的exists方法
            Mockito.when(mockFile.exists()).thenReturn(true);

            // 调用待测试的方法
            tongYiLingMaTest.generateUnitTest();

            // 验证方法是否按预期执行
            // 由于HttpUtil.generatePresignedUrl是一个静态方法,我们不需要mock它
            // 可以直接验证输出结果是否符合预期
            // 例如,我们可以验证url是否被正确打印出来
            // 由于我们没有HttpUtil.generatePresignedUrl方法的实现,这里我们只是假设它返回一个有效的URL
            // 如果需要,可以添加对URL的验证
            // assertEquals(expectedUrl, System.out.toString());
        } catch (Exception e) {
            fail("generateUnitTest should not throw any exception");
        }
    }
}

请注意,上述代码中使用了Mockito框架来模拟File类的exists方法。这是因为我们不需要真正检查文件是否存在,我们只需要确保方法能够正常执行。如果需要,你也可以添加对URL的验证。
在编写测试用例时,我们通常会使用@BeforeEach注解来设置测试环境,例如创建测试对象。然后,在测试方法中,我们模拟必要的对象和行为,调用待测试的方法,并验证其行为是否符合预期。
请注意,由于generateUnitTest方法中使用了System.out.println来打印信息,我们无法直接验证输出。如果需要验证输出,可以考虑使用System.setOut来捕获输出流,或者使用其他测试框架的特性来捕获输出。

代码注释生成

一键生成方法注释及行间注释,节省写代码注释的时间,有效提升代码可读性和注释覆盖率。
在这里插入图片描述

通义灵码注释:

  /**
     * 代码注释生成
     * @author senfel
     * @date 2024/2/4 11:32
     * @return void
     */
    public void codeNote(){
        int[] arr = new int[]{1, 2, 10, 4, 5, 6, 7, 8, 9,3,0}; // 创建一个整型数组
        for (int i = 0; i < arr.length; i++) { // 外层循环控制比较的轮数
            for (int j = 0; j < arr.length - 1 - i; j++) { // 内层循环控制每轮比较的次数
                if (arr[j] > arr[j + 1]) { // 如果当前元素大于下一个元素
                    int temp = arr[j]; // 交换两个元素
                    arr[j] = arr[j + 1];
                    arr[j + 1] = temp;
                }
            }
        }
    }

解释代码

支持 30 多种语言的识别,选中代码后可自动识别编程语言并生成代码解释。跨越语言的边界。
**加粗样式**

这个函数的功能是将给定的整型数组按照从小到大的顺序进行排序。它使用了冒泡排序算法,通过比较相邻的元素并交换位置,将较大的元素逐渐往后移动,从而实现排序。

研发智能问答,解决问题更轻松

基于海量研发文档、产品文档、通用研发知识、阿里云的云服务文档和 SDK/OpenAPI 文档等进行问答训练,为你答疑解惑,助你轻松解决研发问题。

插件对话框直接输入问题
在这里插入图片描述

异常报错智能排查(Java IntellJ IDEA 2021版本未开启)

在这里插入图片描述

当运行出现异常报错时,一键启动报错排查的智能答疑,可结合运行代码、异常堆栈等报错上下文,快速给出排查思路或修复建议代码。

写在最后

阿里智能编码助手通义灵码提供行级/函数级实时续写、自然语言生成代码、单元测试生成、代码注释生成、代码解释、研发智能问答、异常报错排查等能力。在实际的开发过程中对我们代码质量和异常排查也有着良好的支持,可以大大节省编码时间。

⭐️路漫漫其修远兮,吾将上下而求索⭐️

⭐️三人行,必有我师焉,与君共勉!⭐️

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

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

相关文章

Unity根据落点和抛物线运行时间,求初始力

抛物线运行时长为2秒&#xff1a; 抛物线运行时长为4秒&#xff1a; 原理就是&#xff1a; 在竖直方向只受重力&#xff0c;做匀加速直线运动&#xff0c;水平不受力&#xff0c;做匀速直线运动。 代码&#xff1a; public void Update(){if (Input.GetKeyDown(KeyCode.Space)…

生物素 PEG4 甲基四嗪,Biotin-PEG4-methyltetrazine,用于标记、追踪和分离特定的分子或细胞

生物素四聚乙二醇甲基四嗪&#xff0c;生物素 PEG4 甲基四嗪&#xff0c;Biotin-PEG4-methyltetrazine&#xff0c;用于标记、追踪和分离特定的分子或细胞 您好&#xff0c;欢迎来到新研之家 文章关键词&#xff1a;生物素四聚乙二醇甲基四嗪&#xff0c;生物素 PEG4 甲基四嗪…

前端vue/react项目压缩图片工具@yireen/squoosh-browser

想要在前端项目中压缩图片&#xff0c;然后再上传到后端保存&#xff0c;就需要一个压缩工具的帮助&#xff0c;暂时有两个依赖库可以选择&#xff1a;image-conversion和yireen/squoosh-browser&#xff0c;看了官方仓库地址和更新时间等详情&#xff0c;发现还是yireen/squoo…

2.04作业

1.请编程实现双向链表的头插&#xff0c;头删&#xff0c;尾插&#xff0c;尾删。 头插&#xff1a; 尾插&#xff1a; 头删&#xff1a; 尾删&#xff1a; 2.请编程实现双向链表按任意位置插入&#xff0c;删除&#xff0c;修改&#xff0c;查找。 插入&#xff1a; 删除&am…

贪心算法篇

“靠漫步&#xff0c;将生趣填饱~” 贪心算法简介&#xff1f; 贪心算法&#xff08;Greedy Algorithm&#xff09;&#xff0c;也称为贪婪算法&#xff0c;是一种在解决问题时采取贪心策略的方法。其基本原理是很简单的&#xff1a; “在每个决策点上都选择当下看似最好的选项…

STM32F407移植OpenHarmony笔记9

继上一篇笔记&#xff0c;已经完成liteos内核的基本功能适配。 今天尝试启动OHOS和XTS兼容性测试。 如何启动OHOS&#xff1f; OHOS系统初始化接口是OHOS_SystemInit(void)&#xff0c;在内核初始化完成后&#xff0c;就能调用。 extern void OHOS_SystemInit(void); OHOS_Sys…

异步解耦之RabbitMQ(二)_RabbitMQ架构及交换机

异步解耦之RabbitMQ(一)-CSDN博客 RabbitMQ架构 RabbitMQ是一个基于AMQP&#xff08;Advanced Message Queuing Protocol&#xff09;协议的消息代理中间件&#xff0c;它通过交换机和队列实现消息的路由和分发。以下是RabbitMQ的架构图&#xff1a; Producer&#xff08;生产…

HubSpot营销自动化如何优化营销流程?

HubSpot营销自动化在优化营销流程、减少手动工作以及提高效率方面发挥着关键作用。以下是一些具体的方法和策略&#xff1a; 1. 自动化电子邮件营销&#xff1a; 利用HubSpot的电子邮件自动化功能&#xff0c;设置触发条件&#xff0c;使邮件发送根据用户行为或阶段自动进行。…

爬虫(二)使用urllib爬取百度贴吧的数据

下一期我就不用urllib来抓取数据了&#xff0c;因为urllib现在已经很少人用&#xff0c;大部分人用得是requests&#xff0c;requests也是基于底层urllib的一个模块。 首先我先来讲一下关于如何使用动态的UA&#xff01; 动态UA就是指在自己创建的一个列表里随机选择一个UA当做…

【C/C++ 11】贪吃蛇游戏

一、题目 贪吃蛇游戏机制是通过控制蛇上下左右移动并吃到食物得分。 蛇头碰到墙壁或者碰到蛇身就游戏结束。 食物随机生成&#xff0c;蛇吃到食物之后蛇身变长&#xff0c;蛇速加快。 二、算法 1. 初始化游戏地图并打印&#xff0c;地图的边缘是墙&#xff0c;地图的每个坐…

移动Web——less

1、less-简介 less是一个CSS预处理器&#xff0c;Less文件后缀是.less。扩充了CSS语言&#xff0c;使CSS具备一定的逻辑性、计算能力注意&#xff1a;浏览器不识别Less代码&#xff0c;目前阶段&#xff0c;网页要引入对应的CSS文件VS code插件&#xff1a;Easy LESS&#xff…

初始数据库

华子目录 什么是数据库DBMS&#xff08;数据库管理系统&#xff09;数据库系统和文件系统的区别文件系统数据库系统对比区别优缺点总结 常见数据库关系型数据库ACID原则关系型数据库的优缺点优点缺点 非关系型数据库存储方式常见的非关系型数据库非关系型数据库的优缺点优点缺点…

OpenSSL:configure: error: OpenSSL library not found解决方案

大家好,我是爱编程的喵喵。双985硕士毕业,现担任全栈工程师一职,热衷于将数据思维应用到工作与生活中。从事机器学习以及相关的前后端开发工作。曾在阿里云、科大讯飞、CCF等比赛获得多次Top名次。现为CSDN博客专家、人工智能领域优质创作者。喜欢通过博客创作的方式对所学的…

MATLAB计算多边形质心/矩心

前言&#xff1a;不规则四边形的中心 不规则四边形的出心有多种定义&#xff0c;以下是最常见的三种&#xff1a; 1.重心&#xff1a;重心是四边形内部所有顶点连线交点的平均位置。可以通过求解四个顶点坐标的平均值来找到重心。 2.质心&#xff1a;质心是四边形内部所有质点…

网络原理-TCP/IP(5)

TCP协议 延迟应答 它也是基于滑动窗口,提高效率的一种机制,结合滑动窗口以及流量控制,能够以延迟应答ACK的方式,把反馈的窗口,搞大.核心在于允许范围内,让窗口尽可能大. 如果接收数据的主机立刻返回ACK应答,这时候返回的窗口可能比较小. 1.假设接收端缓冲区为1M.一次收到了5…

一站式SpringBoot学习平台:让编程变得轻松有趣!

介绍&#xff1a;Spring Boot是一个开源的Java框架&#xff0c;旨在简化Spring应用程序的开发和部署过程。 Spring Boot由Pivotal团队设计并推出&#xff0c;它的核心优势在于极大地简化了传统Spring应用的初始搭建和开发流程。具体来说&#xff0c;Spring Boot的主要特点包括&…

git 合并多条提交记录

我要合并多条提交记录&#xff08;合并前7条为一条&#xff09;&#xff0c;实现如下效果&#xff1a; 使用git rebase // 查看前10个commit git log -10 // 将7个commit压缩成一个commit&#xff1b;注意&#xff1a;vim编辑器 git rebase -i HEAD~4 // add已经跟踪的文件 g…

C++11多线程:线程的创建及启动

文章目录 启动线程传递函数对象为参数传递成员函数为参数传递全局函数为参数传递lambda函数为参数也可调用std::thread的无参构造 join()、joinable()、detach() 等函数Join函数detach 函数joinable函数 Join函数到底干了什么&#xff1f;必须join或者detach吗&#xff1f;线程…

AI少女/HS2甜心选择2 仿碧蓝航线人物卡全合集打包

AI少女/HS2甜心选择2 仿碧蓝航线人物卡全合集打包 内含&#xff1a;埃吉尔 女仆装花园 新泽西 白雪之仪库尔斯克信浓泳装埃吉尔风纪委员大凤路易九世旗袍能代夜响的绝园英仙座 护士 下载地址&#xff1a; https://www.changyouzuhao.cn/13366.html

springboot153相亲网站

简介 【毕设源码推荐 javaweb 项目】基于springbootvue 的 适用于计算机类毕业设计&#xff0c;课程设计参考与学习用途。仅供学习参考&#xff0c; 不得用于商业或者非法用途&#xff0c;否则&#xff0c;一切后果请用户自负。 看运行截图看 第五章 第四章 获取资料方式 **项…