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

一、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 {@InjectMocksprivate UserServiceImpl userService;@Beforepublic void setUp() {// 如果需要,可以在此处进行任何设置}@Testpublic void getGender_NullIdentityCard_ThrowsIllegalArgumentException() {assertThrows(IllegalArgumentException.class, () -> userService.getGender(null));}@Testpublic void getGender_InvalidLength_ThrowsIllegalArgumentException() {assertThrows(IllegalArgumentException.class, () -> userService.getGender("12345678901234567"));}@Testpublic void getGender_ValidMaleIdentityCard_ReturnsMale() {String identityCard = "123456199001011235"; // 第17位是5,奇数assertEquals("男", userService.getGender(identityCard));}@Testpublic void getGender_ValidFemaleIdentityCard_ReturnsFemale() {String identityCard = "123456199001011244"; // 第17位是4,偶数assertEquals("女", userService.getGender(identityCard));}
}

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

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

2.6、智能问答

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

生成的完整代码如下:

    /*** 给定一个身份证号,计算出该用户的性别** @param identityCard 身份证号*/@Overridepublic 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 {@InjectMocksprivate UserServiceImpl userService;@Beforepublic void setUp() {// 如果需要,可以在此处进行任何设置}@Testpublic void getGender_NullIdentityCard_ThrowsIllegalArgumentException() {assertThrows(IllegalArgumentException.class, () -> userService.getGender(null));}@Testpublic void getGender_InvalidLength_ThrowsIllegalArgumentException() {assertThrows(IllegalArgumentException.class, () -> userService.getGender("12345678901234567"));}@Testpublic void getGender_InvalidFormat_ThrowsIllegalArgumentException() {assertThrows(IllegalArgumentException.class, () -> userService.getGender("s12345678901234567")); // 长度正确但格式错误assertThrows(IllegalArgumentException.class, () -> userService.getGender("12345678901234567文")); // 长度正确但格式错误assertThrows(IllegalArgumentException.class, () -> userService.getGender("12345678901234567G")); // 长度正确但最后一位不是数字或X}@Testpublic void getGender_ValidMaleIdentityCard_ReturnsMale() {String identityCard = "123456199001011235"; // 第17位是5,奇数assertEquals("男", userService.getGender(identityCard));}@Testpublic 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.rhkb.cn/news/9056.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

工业级 RAG 实现 - QAnything

文章目录 1. QAnything简介2. QAnything 安装教程2. 1 安装软件包2.2 运行QAnything框架2.3 访问前端页面 3. QAnything 简单使用3.1 创建知识库3.2 创建聊天机器人3.3 关联知识库3.4 测试 4. QAnything 的分析:4. 1 QAnything 架构4. 2 两阶段检索4. 2.1 一阶段检索…

Cross-Resolution知识蒸馏论文学习

TPAMI 2024:Pixel Distillation: Cost-Flexible Distillation Across Image Sizes and Heterogeneous Networks 教师模型使用高分辨率输入进行学习,学生模型使用低分辨率输入进行学习 学生蒸馏损失:Lpkd和Lisrd Lpkd:任务损失lo…

Versal - 基础3(AXI NoC 专题+仿真+QoS)

目录 1. 简介 2. 示例 2.1 示例说明 2.2 创建项目 2.2.1 平台信息 2.2.2 AXI NoC Automation 2.2.3 创建时钟和复位 2.3 配置 NoC 2.4 配置 AXI Traffic 2.5 配置 Memory Size 2.6 Validate BD 2.7 添加观察信号 2.8 运行仿真 2.9 查看结果 2.9.1 整体波形 2.9…

【PostgreSQL内核学习 —— (WindowAgg(一))】

WindowAgg 窗口函数介绍WindowAgg理论层面源码层面WindowObjectData 结构体WindowStatePerFuncData 结构体WindowStatePerAggData 结构体eval_windowaggregates 函数update_frameheadpos 函数 声明:本文的部分内容参考了他人的文章。在编写过程中,我们尊…

RubyFPV开源代码之系统简介

RubyFPV开源代码之系统简介 1. 源由2. 工程架构3. 特性介绍(软件)3.1 特性亮点3.2 数字优势3.3 使用功能 4. DEMO推荐(硬件)4.1 天空端4.2 地面端4.3 按键硬件Raspberry PiRadxa 3W/E/C 5. 软件设计6. 参考资料 1. 源由 RubyFPV以…

MySQL(单表访问)

今天是新年,祝大家新年快乐,但是生活还是得继续。 后面也会持续更新,学到新东西会在其中补充。 建议按顺序食用,欢迎批评或者交流! 缺什么东西欢迎评论!我都会及时修改的! 大部分截图和文章采…

汇编的使用总结

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

汇编基础语法及其示例

1.汇编指令 1.1汇编指令的基本格式 <opcode>{<cond>}{s} <Rd> , <Rn> , <shifter_operand> <功能码>{<条件码>}{cpsr影响位} <目标寄存器> , <第一操作寄存器> , <第二操作数> 注&#xff1a;第一操作寄存器…

FLTK - FLTK1.4.1 - 搭建模板,将FLTK自带的实现搬过来做实验

文章目录 FLTK - FLTK1.4.1 - 搭建模板&#xff0c;将FLTK自带的实现搬过来做实验概述笔记my_fltk_test.cppfltk_test.hfltk_test.cxx用adjuster工程试了一下&#xff0c;好使。END FLTK - FLTK1.4.1 - 搭建模板&#xff0c;将FLTK自带的实现搬过来做实验 概述 用fluid搭建UI…

基于物联网设计的疫苗冷链物流监测系统

一、前言 1.1 项目开发背景 随着全球经济的发展和物流行业的不断创新&#xff0c;疫苗和生物制品的运输要求变得越来越高。尤其是疫苗的冷链物流&#xff0c;温度、湿度等环境因素的控制直接关系到疫苗的质量和效力&#xff0c;因此高效、可靠的冷链监控系统显得尤为重要。冷…

JVM对象分配内存如何保证线程安全?

大家好&#xff0c;我是锋哥。今天分享关于【JVM对象分配内存如何保证线程安全?】面试题。希望对大家有帮助&#xff1b; JVM对象分配内存如何保证线程安全? 1000道 互联网大厂Java工程师 精选面试题-Java资源分享网 在JVM中&#xff0c;对象的内存分配是通过堆内存进行的。…

移动光猫怎么自己改桥接模式?

环境&#xff1a; 型号H3-8s 问题描述&#xff1a; 家里宽带用的是H3-8s 光猫&#xff0c;想改桥接模式。 解决方案&#xff1a; 1.默认管理员账号和密码&#xff1a; 账号&#xff1a;CMCCAdmin 密码&#xff1a;aDm8H%MdAWEB页面我试了登陆不了&#xff0c;显示错误 …

大数据Hadoop入门3

第五部分&#xff08;Apache Hive DML语句和函数使用&#xff09; 1.课程内容大纲和学习目标 2.Hive SQL-DML-load加载数据操作 下面我们随机创建文件尝试一下 先创建一个hivedata文件夹 在这个文件夹中写一个1.txt文件 下面使用beeline创建一张表 只要将1.txt文件放在t_1文件…

2025.1.26机器学习笔记:C-RNN-GAN文献阅读

2025.1.26周报 文献阅读题目信息摘要Abstract创新点网络架构实验结论缺点以及后续展望 总结 文献阅读 题目信息 题目&#xff1a; C-RNN-GAN: Continuous recurrent neural networks with adversarial training会议期刊&#xff1a; NIPS作者&#xff1a; Olof Mogren发表时间…

基于物联网的火灾报警器设计与实现(论文+源码)

1 总体方案设计 本次基于物联网的火灾报警器&#xff0c;其系统总体架构如图2.1所示&#xff0c;采用STM32f103单片机作为控制器&#xff0c;通过DS18B20传感器实现温度检测&#xff1b;通过MQ-2烟雾传感器实现烟雾检测&#xff1b;.通过火焰传感器实现火焰检测&#xff0c;当…

ResNeSt: Split-Attention Networks论文学习笔记

这张图展示了一个名为“Split-Attention”的神经网络结构&#xff0c;该结构在一个基数组&#xff08;cardinal group&#xff09;内进行操作。基数组通常指的是在神经网络中处理的一组特征或通道。图中展示了如何通过一系列操作来实现对输入特征的注意力机制。 以下是图中各部…

模糊综合评价

模糊综合评价的特点主要体现在以下几个方面&#xff1a; 一、系统性强 模糊综合评价法能够综合考虑多种因素的影响&#xff0c;将定性指标和定量指标相结合&#xff0c;对评价对象进行全面、系统的分析。这种方法避免了单一指标评价的片面性&#xff0c;提高了评价的准确性和…

宫本茂的游戏设计思想:有趣与风格化

作为独立游戏开发者之一&#xff0c;看到任天堂宫本茂20年前的言论后&#xff0c;深感认同。 游戏研发思想&#xff0c;与企业战略是互为表里的&#xff0c;游戏是企业战略的具体战术体现&#xff0c;虚空理念的有形载体。 任天堂长盛不衰的关键就是靠简单有趣的游戏&#xf…

deepseek-r1 本地部署

deepseek 最近太火了 1&#xff1a;环境 win10 cpu 6c 内存 16G 2: 部署 1>首先下载ollama 官网&#xff1a;https://ollama.com ollama 安装在c盘 模型可以配置下载到其他盘 OLLAMA_MODELS D:\Ollama 2>下载模型并运行 ollama run deepseek-r1:<标签> 1.5b 7b 8…

electron typescript运行并设置eslint检测

目录 一、初始化package.json 二、安装依赖 1、安装electron 2、安装typescript依赖 3、安装eslint 三、项目结构 四、配置启动项 一、初始化package.json 我的&#xff1a;这里的"main"没太大影响&#xff0c;看后面的步骤。 {"name": "xlo…