通义灵码插件保姆级教学-IDEA(安装及使用)

news2025/3/4 15:31:49

一、JetBrains IDEA 中安装指南

官方下载指南:通义灵码安装教程-阿里云

步骤 1:准备工作

  • 操作系统:Windows 7 及以上、macOS、Linux;

  • 下载并安装兼容的 JetBrains IDEs 2020.3 及以上版本,通义灵码与以下 IDE 兼容:

    • IntelliJ IDEA(旗舰版、社区版、教育版)

    • PyCharm(专业版、社区版、教育版)

    • WebStorm

    • Android Studio

    • CLion

    • GoLand

    • PhpStorm

    • RustRover

    • Rider

    • RubyMine

步骤 2:在 JetBrains IDEs 中安装通义灵码

方法 1:从插件市场安装
  1. 打开 IntelliJ IDEA 设置窗口,在插件市场中搜索 TONGYI Lingma,找到通义灵码后单击安装。

  2. 安装完成后,请重启 IntelliJ IDEA。

image

方法 2:下载安装包安装
  1. 单击下方链接,下载 JetBrains IDEs 的 zip 安装包;

    ⇩ TONGYI Lingma - JetBrains

  2. 下载完安装包后,打开 IntelliJ IDEA 后,打开设置,在插件管理的设置下拉菜单中单击从本地安装插件,选择下载的 zip 文件后安装。image

  3. 安装完成后,请重启 IntelliJ IDEA。

步骤 3:登录并开启智能编码之旅

  1. 重启 IntelliJ IDEA 后,单击侧边导航的通义灵码,在通义灵码助手的窗口单击登录按image

  2. 单击登录后,将前往登录页面,完成登录后可进入 IDE 客户端开始使用。登录相关具体操作,可参考:登录通义灵码插件端。

  3. 退出登录,点击右下角通义灵码图标即可退出登录

  4. 高级设置,点击右下角通义灵码图标-->高级设置

二、JetBrains IDEA 中使用指南

2.1、代码解释

选择需要解释的代码 --> 右键 --> 通义灵码 --> 解释代码

解释代码很详细,感觉很强大有木有,关键还会生成流程图,对程序员理解业务非常有帮忙,基本能做到哪里不懂点哪里。

2.2、生成注释

选择需要注释的代码 --> 右键 --> 通义灵码 --> 生成注释

把生成注释的代码替换掉原代码即可,不爱写注释的程序员有福音了。

2.3、代码优化

选择需要优化的代码 --> 右键 --> 通义灵码 --> 优化代码

通义灵码会对所选的代码进行潜在问题分析及风险提醒,并提供优化后的代码

有些不易发找到的bug搞不好使用通义灵码的代码优化功能就找到了,目前很多项目都有高代码质量的要求,多使用代码优化功能写高质量代码不是问题。

2.4、代码片段补全

把光标移动到未写完的代码后,右键 --> 通义灵码 --> 代码片段补全,也可以使用快捷键ALT + P,会显示灰色的建议代码,按Tab键接受代码。

2.5、生成单元测试

在你需要单元测试的方法上点击:通义灵码的图标 --> 生成单元测试

生成单元测试还有设计说明,整得挺真实的,下面附上完整的代码:


package com.leonse.xxx;


import com.leonse.xxx.UserServiceImpl;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.InjectMocks;
import org.mockito.junit.MockitoJUnitRunner;

import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertThrows;

@RunWith(MockitoJUnitRunner.class)
public class UserServiceImplTest {

    @InjectMocks
    private UserServiceImpl userService;

    @Before
    public void setUp() {
        // 如果需要,可以在此处进行任何设置
    }

    @Test
    public void getGender_NullIdentityCard_ThrowsIllegalArgumentException() {
        assertThrows(IllegalArgumentException.class, () -> userService.getGender(null));
    }

    @Test
    public void getGender_InvalidLength_ThrowsIllegalArgumentException() {
        assertThrows(IllegalArgumentException.class, () -> userService.getGender("12345678901234567"));
    }


    @Test
    public void getGender_ValidMaleIdentityCard_ReturnsMale() {
        String identityCard = "123456199001011235"; // 第17位是5,奇数
        assertEquals("男", userService.getGender(identityCard));
    }

    @Test
    public void getGender_ValidFemaleIdentityCard_ReturnsFemale() {
        String identityCard = "123456199001011244"; // 第17位是4,偶数
        assertEquals("女", userService.getGender(identityCard));
    }
}

执行单元测试,全部校验通过:

生成的单元测试中缺少了身份证号格式的合法性校验(业务代码里面没有格式校验所以没生成),并非满足所有场景,需要根据实际情况进行调整或添加,但已满足大部分场景,对手写单元测试来说提升的效率还是蛮高的,这里缺少的部分可以通过智能问答来补充,下面会说怎么补充。

2.6、智能问答

点击右边的通义灵码图标 --> 智能问答 --> + --> 选择 UserServiceImpl,在对话框输入:getGender 方法增加身份证号码格式校验,然后按回车即可生成增加身份证号码格式校验的代码,速度还不慢;

生成的完整代码如下:

    /**
     * 给定一个身份证号,计算出该用户的性别
     *
     * @param identityCard 身份证号
     */
    @Override
    public String getGender(String identityCard) {
        if (identityCard == null || identityCard.length() != 18) {
            throw new IllegalArgumentException("无效的身份证号码");
        }

        // 校验身份证号码格式
        if (!identityCard.matches("\\d{17}[0-9Xx]")) {
            throw new IllegalArgumentException("无效的身份证号码格式");
        }

        int genderDigit = Integer.parseInt(identityCard.substring(16, 17));
        return genderDigit % 2 == 1 ? "男" : "女";
    }

这里还少了验证身份证号码格式的单元测试,在对话框输入:补充一条校验身份证格式的单元测试用例


package com.xxx;


import com.xxx.UserServiceImpl;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.InjectMocks;
import org.mockito.junit.MockitoJUnitRunner;

import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertThrows;

@RunWith(MockitoJUnitRunner.class)
public class UserServiceImplTest {

    @InjectMocks
    private UserServiceImpl userService;

    @Before
    public void setUp() {
        // 如果需要,可以在此处进行任何设置
    }

    @Test
    public void getGender_NullIdentityCard_ThrowsIllegalArgumentException() {
        assertThrows(IllegalArgumentException.class, () -> userService.getGender(null));
    }

    @Test
    public void getGender_InvalidLength_ThrowsIllegalArgumentException() {
        assertThrows(IllegalArgumentException.class, () -> userService.getGender("12345678901234567"));
    }

    @Test
    public void getGender_InvalidFormat_ThrowsIllegalArgumentException() {
        assertThrows(IllegalArgumentException.class, () -> userService.getGender("s12345678901234567")); // 长度正确但格式错误
        assertThrows(IllegalArgumentException.class, () -> userService.getGender("12345678901234567文")); // 长度正确但格式错误
        assertThrows(IllegalArgumentException.class, () -> userService.getGender("12345678901234567G")); // 长度正确但最后一位不是数字或X
    }

    @Test
    public void getGender_ValidMaleIdentityCard_ReturnsMale() {
        String identityCard = "123456199001011235"; // 第17位是5,奇数
        assertEquals("男", userService.getGender(identityCard));
    }

    @Test
    public void getGender_ValidFemaleIdentityCard_ReturnsFemale() {
        String identityCard = "123456199001011244"; // 第17位是4,偶数
        assertEquals("女", userService.getGender(identityCard));
    }
}

执行单元测试,5条用例全部通过

@workspace 本地工程问答
        当你需要快速了解一个工程、查找工程内的实现逻辑,或有新的诉求需要进行代码变更时,可以在智能问答窗口中通过 @ 可唤起 @workspace,选中后输入你的问题或诉求,通义灵码可快速结合当前仓库进行工程理解、代码查询、代码问答等,同时可以通过自然语言描述需求,结合当前工程生成简单需求或缺陷的整体修改建议和相关建议代码。

        如接手新项目时想快速了解项目架构可在对话框输入:@workspace 详细了解项目架构,通义灵码会详细解析项目的架构的设计。

@terminal 问答
        当你遇到执行指令不知道如何写,或者不清楚某个指令的意思时,可以在智能问答窗口中通过 @ 可唤起 @terminal,选择后使用自然语言描述你的需要指令诉求,通义灵码将可以生成你需要的命令。生成指令后,你可以一键插入到 terminal 中进行执行或让通义灵码继续解释。当然,你也可以在选择 @terminal 后,输入指令让通义灵码生成指令解释。


2.7、AI程序员

通义灵码 AI 程序员,具备多文件代码修改(Multi-file Edit)和工具使用(Tool-use)的能力,可以与开发者协同完成编码任务,如需求实现、问题解决、单元测试用例生成、批量代码修改等。

说明

使用通义灵码 AI 程序员,需要将通义灵码 IDE 插件升级到最新版本(2.0.0及以上版本)。

AI 程序员可以帮助开发者快速完成一个研发任务的代码编写工作,在与 AI 程序员对话过程中,可以遵循以下几点建议:

  • 清晰的需求描述:首先需要澄清我们需要 AI 程序员帮我们做什么,建议包含一个明确的目标,并通过步骤式的结构化描述,详细地描述你期望完成的开发任务要求;

  • 指定需要的上下文:选择代码文件、图片、codebase、codeChanges 等上下文,可以帮助 AI 程序员获取需求相关的语境。同时,结合详细执行步骤和要求,AI 程序员更精准地了解你的意图,生成最佳的方案和建议代码;

  • 明确生成要求:告诉 AI 程序员在生成代码修改建议时,你期望它遵循的要求,比如语言、规范、格式、变更目标等,如“生成变更时,同时为每个方法生成英文注释”;

  • 善用快照功能:当 AI 生成内容不符合预期,或你的需求有变化时,可以通过快照功能回退到之前的对话轮次和代码变更,继续重新提问;

  • 审查和修改变更:AI 程序员完成多个文件的代码变更后,开发者可以通过变更对比查看视图(Diff View)进行审查,以及对局部代码片段进行接受、拒绝、修改,保证最后得到符合预期的代码变更。

在AI程序员对话框输入你要是现在的需求即可生成相关代码

package com.xxx.utils;

import java.time.Duration;
import java.time.Instant;
import java.time.LocalDateTime;
import java.time.ZoneId;
import java.time.temporal.ChronoUnit;
import java.time.temporal.TemporalUnit;

public class DateTimeUtils {

    /**
     * 增加时间的方法
     *
     * @param currentTime 当前时间
     * @param amountToAdd 需要增加的时间值
     * @param unit        需要增加的时间单位
     * @return 增加后的时间对象
     */
    public static LocalDateTime addTime(LocalDateTime currentTime, long amountToAdd, TemporalUnit unit) {
        return currentTime.plus(amountToAdd, unit);
    }

    /**
     * 增加时间的方法(使用Instant)
     *
     * @param currentInstant 当前时间
     * @param amountToAdd    需要增加的时间值
     * @param unit           需要增加的时间单位
     * @return 增加后的时间对象
     */
    public static Instant addTime(Instant currentInstant, long amountToAdd, ChronoUnit unit) {
        return currentInstant.plus(amountToAdd, unit);
    }

    /**
     * 增加时间的方法(使用Duration)
     *
     * @param currentInstant 当前时间
     * @param duration       需要增加的时间间隔
     * @return 增加后的时间对象
     */
    public static Instant addTime(Instant currentInstant, Duration duration) {
        return currentInstant.plus(duration);
    }
}

三、常用的快捷键

通义灵码的多个操作均配备了开箱即用的快捷键,以下列出了几项常用的快捷键。

功能

Windows快捷键

macOS快捷键

在任意位置触发补全代码解释

Alt + P

Option + P

更换生成的结果

Alt + ]

Option + ]

采纳全部生成的代码

Tab

Tab

逐行采纳生成的代码

Ctrl + ↓

Cmd + ↓

关闭/打开对话面板

Ctrl + Shift + L

Cmd + Shift + L

代码解释

Alt + Shfit + P

生成单元测试

Alt + Shfit + U

生成注释

Alt + Shfit + V

代码优化

Alt + Shfit + O

代码片段补全

Alt + P

四、总结

        总体而言,“通义灵码” 堪称国内极为出色的 AI 插件,它具备强大的兼容性,支持众多 IDE,为广大程序员提供了便利。其核心功能丰富多元,涵盖代码解释,能让复杂代码逻辑一目了然;精准生成注释,助力代码的可读性与可维护性;高效代码优化,去除冗余、提升性能;轻松生成单元测试,为代码质量保驾护航;还有智能答疑解惑以及模拟 AI 程序员辅助开发等实用功能。作为编程领域的得力助手,它完全有能力大幅提升程序员的开发效率,是不可多得的编程利器。

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

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

相关文章

利用双指针一次遍历实现”找到“并”删除“单链表倒数第K个节点(力扣题目为例)

Problem: 19. 删除链表的倒数第 N 个结点 文章目录 题目描述思路复杂度Code 题目描述 思路 1.欲找到倒数第k个节点,即是找到正数的第n-k1、其中n为单链表中节点的个数个节点。 2.为实现只遍历一次单链表,我们先可以使一个指针p1指向链表头部再让其先走k步…

2025美赛倒计时,数学建模五类模型40+常用算法及算法手册汇总

数学建模美赛倒计时,对于第一次参加竞赛且没有相关基础知识的同学来讲,掌握数学建模常用经典的模型算法知识,并熟练使用相关软件进行建模是关键。本文将介绍一些常用的模型算法,以及软件操作教程。 数学建模常用模型包括&#xf…

前端【10】jQuery DOM 操作

目录 jquery捕获查取 获得内容 - text()、html() 以及 val() 获取属性 - attr() ​编辑 jQuery 修改/设置内容和属性 设置内容 - text()、html() 以及 val() 设置属性 - attr() jQuery添加元素 jQuery - 删除元素 前端【9】初识jQuery:让JavaScript变得更简…

汇编的使用总结

一、汇编的组成 1、汇编指令(指令集) 数据处理指令: 数据搬移指令 数据移位指令 位运算指令 算术运算指令 比较指令 跳转指令 内存读写指令 状态寄存器传送指令 异常产生指令等 2、伪指令 不是汇编指令,但是可以起到指令的作用,伪…

想品客老师的第七天:闭包和作用域

闭包之前的内容写在这里 环境、作用域、回收 首先还是数据的回收问题,全局变量一般都是通过关闭页面回收的;而局部变量的值不用了,会被自动回收掉 像这种写在全局里的就不会被主动回收捏: let title 荷叶饭function fn() {ale…

速通Docker === Docker 镜像分层存储机制

目录 分层存储的概念 分层存储的实现 镜像层 容器层 分层存储的优势 1. 镜像轻量化 2. 快速构建与部署 3. 高效的镜像共享 4. 版本控制 分层存储的示例 容器层的临时性与数据持久化 总结 Docker 的分层存储机制是其核心特性之一,它使得镜像的构建、共享和…

开源智慧园区管理系统对比五款主流产品探索智能运营新模式

内容概要 在这个数字化迅速发展的时代,园区管理也迎来了全新的机遇和挑战。众所周知,开源智慧园区管理系统作为一种创新解决方案,正逐步打破传统管理的局限性。它的开放性不仅使得系统可以根据具体需求进行灵活调整,也为用户提供…

非根目录部署 nextjs 项目,资源文件 请求404 的问题

最近在学习next项目编写的代码放到服务器上静态资源404 先分析问题 到服务器上查看是有资源目录的是不是项目配置有问题是不是nginx配置有问题 经过排查1和2是没有问题的目前来看只有3 检查一下nginx配置 尝试着把静态资源的配置禁用 问题解决 我的next项目用的是pm2管理…

mysql 学习5 mysql图形化界面DataGrip下载 安装 使用

一、下载和安装 下载: 其他版本 - DataGrip PS:安装目录最好不要有中文。 C:\Program Files\JetBrains\DataGrip 2023.3.4 二、 夸克网盘分享 当前电脑是下载到 :D:\Ctool\mysql\datagrip2023_3_4\datagrip2024\jetbra-datagrip\scripts …

读写和解析简单的 nc 文件

NetCDF 文件格式在气象数据工程领域占据着举足轻重的地位,其结构灵活、强兼容性等优势使其成为该领域的一个标准。无论是从事学术研究还是工程实践,掌握这种数据格式变得越发重要。其次,我注意到目前社区中气象编程大多数课程都聚焦于某个特定…

LLM:BERT or BART 之BERT

文章目录 前言一、BERT1. Decoder-only2. Encoder-only3. Use of Bidirectional Context4. Masked Language Model (MLM)5. Next Sentence Prediction (NSP)6. Fine-tune1、情感分析2、句对分析3、命名实体识别(NER) 7. BERT总结 总结 前言 NLP选手对这…

【力扣:新动计划,编程入门 —— 题解 ③】

—— 25.1.26 231. 2 的幂 给你一个整数 n,请你判断该整数是否是 2 的幂次方。如果是,返回 true ;否则,返回 false 。 如果存在一个整数 x 使得 n 2x ,则认为 n 是 2 的幂次方。 示例 1: 输入:…

Centos7系统php8编译安装ImageMagick/Imagick扩展教程整理

Centos7系统php8编译安装ImageMagick/Imagick扩展教程整理 安装php8安装ImageMagick1、下载ImageMagick2、解压并安装3、查看是否安装成功 安装imagick扩展包 安装php8 点我安装php8 安装ImageMagick 1、下载ImageMagick wget https://www.imagemagick.org/download/ImageMa…

android的gradle

Gradle User Manual gradle官网 这里有个gradlew很有用,因为这个可以在窗口中运行gradlew脚本 gradlew 和 gradlew.bat 都是 Gradle Wrapper(Gradle 包装器) 的一部分,它们的作用是让项目可以使用 Gradle 而无需提前在系统中…

2025美赛MCM数学建模A题:《石头台阶的“记忆”:如何用数学揭开历史的足迹》(全网最全思路+模型)

✨个人主页欢迎您的访问 ✨期待您的三连 ✨ 《石头台阶的“记忆”:如何用数学揭开历史的足迹》 目录 《石头台阶的“记忆”:如何用数学揭开历史的足迹》 ✨摘要✨ ✨引言✨ 1. 引言的结构 2. 撰写步骤 (1)研究背景 &#…

【S32K3 RTD LLD篇7】K344中心对齐PWM中心点触发ADC BCTU采样

【S32K3 RTD LLD篇7】K344中心对齐PWM中心点触发ADC BCTU采样 一,文档简介二,中心对齐PWM中心点触发ADC原理2.1 如何生成中心对齐的PWM2.2 如何生成PWM中心点触发标志 三, 软件配置与实现3.1 Demo CT 模块配置3.1.1 引脚配置3.1.2 时钟配置3.…

14-6-3C++STL的list

&#xff08;一&#xff09;list的插入 1.list.insert(pos,elem);//在pos位置插入一个elem元素的拷贝&#xff0c;返回新数据的位置 #include <iostream> #include <list> using namespace std; int main() { list<int> lst; lst.push_back(10); l…

unity学习20:time相关基础 Time.time 和 Time.deltaTime

目录 1 unity里的几种基本时间 1.1 time 相关测试脚本 1.2 游戏开始到现在所用的时间 Time.time 1.3 时间缩放值 Time.timeScale 1.4 固定时间间隔 Time.fixedDeltaTime 1.5 两次响应时间之间的间隔&#xff1a;Time.deltaTime 1.6 对应测试代码 1.7 需要关注的2个基本…

HarmonyOS:创建应用静态快捷方式

一、前言 静态快捷方式是一种在系统中创建的可以快速访问应用程序或特定功能的链接。它通常可以在长按应用图标&#xff0c;以图标和相应的文字出现在应用图标的上方&#xff0c;用户可以迅速启动对应应用程序的组件。使用快捷方式&#xff0c;可以提高效率&#xff0c;节省了查…

mysql 学习6 DQL语句,对数据库中的表进行 查询 操作

前期准备数据 重新create 一张表 create table emp(id int comment 编号,workno varchar(10) comment 工号,name varchar(10) comment 姓名,gender char comment 性别,ager tinyint unsigned comment 年龄,idcard char(18) comment 身份证号,workaddress varchar(10) c…