通义灵码插件保姆级教学-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.mzph.cn/news/893812.shtml

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

相关文章

文献阅读 250125-Accurate predictions on small data with a tabular foundation model

Accurate predictions on small data with a tabular foundation model Accurate predictions on small data with a tabular foundation model | Nature 使用一种基于表格的模型来对小型数据实现准确预测 ## Abstract: 基于其他列来填充标签列中缺失值的基本预测任务对于各种应…

dup2 + fgets + printf 实现文件拷贝

思路 将源文件的内容读取到内存中,然后将这些内容写入到目标文件。 1: 打开源文件、目标文件 fopen() 以读模式打开源文件。 open ()以写模式打开目标文件。 2: 读取源文件、写入目标文件 fgets ()从源文件中读取内容。 printf ()将内容写入目标文件。 printf…

C++——list的了解和使用

目录 引言 forward_list与list 标准库中的list 一、list的常用接口 1.list的迭代器 2.list的初始化 3.list的容量操作 4.list的访问操作 5.list的修改操作 6.list的其他操作 二、list与vector的对比 结束语 引言 本篇博客要介绍的是STL中的list。 求点赞收藏评论…

Charles 4.6.7 浏览器网络调试指南:HTTPS抓包(三)

概述 在现代互联网应用中,网络请求和响应是服务交互的核心。对于开发者和测试人员来说,能够准确捕获并分析这些请求,是保证系统稳定性和性能的关键。Charles作为一个强大的网络调试工具,不仅可以捕获普通的HTTP请求,还…

js手撕 | 使用css画一个三角形 使用js修改元素样式 驼峰格式与“-”格式相互转化

1.使用css画一个三角形 借助 border 实现,在 width 和 height 都为 0 时,设置 border,便会呈现三角形。想要哪个方向的三角形,设置其他三边为 透明即可。同时,可以通过调整不同边的宽度,来调整三角形的高度…

六、深入了解DI

依赖注入是⼀个过程,是指IoC容器在创建Bean时,去提供运⾏时所依赖的资源,⽽资源指的就是对象. 在上⾯程序案例中,我们使⽤了 Autowired 这个注解,完成了依赖注⼊的操作. 简单来说,就是把对象取出来放到某个类的属性中。 关于依赖注…

Doris Schema Change 常见问题分析

1. 什么是 Schema Change Schema Change 是在数据库中修改表结构的一种操作,例如添加列、删除列、更改列类型等。 ⚠️Schema Change 限制⚠️ 一张表在同一时间只能有一个 Schema Change 作业在运行。分区列和分桶列不能修改。如果聚合表中有 REPLACE 方式聚合的…

Qt Designer and Python: Build Your GUI

1.install pyside6 2.pyside6-designer.exe 发送到桌面快捷方式 在Python安装的所在 Scripts 文件夹下找到此文件。如C:\Program Files\Python312\Scripts 3. 打开pyside6-designer 设计UI 4.保存为simple.ui 文件,再转成py文件 用代码执行 pyside6-uic.exe simpl…

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…

数据中台解决方案

数据中台概述 数据中台是数字化转型的基础,它不仅仅是一个平台,而是一套可持续让企业数据用起来的机制。这套机制涵盖了数据的采集、治理、开发到数据服务的全过程,旨在通过数据复用能力的提升,灵活支撑前端业务。数据中台通过“…

Linux——rzsz工具

rzsz这个工具用于 windows 机器和远端的 Linux 机器通过 XShell 传输文件. 安装完毕之后可以通过拖拽的方式将文件上传过去. 安装rzsz工具 rz:从Windows机器上传到远程Linux机器(或者直接把文件托进Xshell中) sz:将文件从Linux远…

SpringBoot基础概念介绍-数据源与数据库连接池

🙋大家好!我是毛毛张! 🌈个人首页: 神马都会亿点点的毛毛张 毛毛张今天介绍的SpringBoot中的基础概念-数据源与数据库连接池,同时介绍SpringBoot整合两种连接池的教程 文章目录 1 数据库与数据库管理系统2 JDBC与数…

MyBatis框架基础学习及入门案例(2)

目录 一、数据库建表(tb_user)以及添加数据。 (1)数据库与数据表说明。 (2)字段与数据说明。 二、创建模块(或工程)、导入对应所需依赖坐标。 三、编写MyBatis核心主配置文件。(解决JDBC中"硬编码"问题) (1&…

js小游戏---2048(附源代码)

一、游戏页面展示 开始游戏: 游戏结束: 二、游戏如何操作 通过监听键盘的操作,进行移动变化 键盘上下左右键控制页面中所有模块同时向键入的方向移动,如果有两块一样的方块,就进行合并,并且在键盘每操作…

美格智能AIMO智能体+DeepSeek-R1模型,AI应用的iPhone时刻来了

导语: 当AI大模型从云端下沉至终端设备,一场关于效率、隐私与智能化的革命悄然展开。作为全球领先的无线通信模组及解决方案提供商,美格智能凭借其高算力AI模组矩阵与端侧大模型部署经验,结合最新发布的AIMO智能体产品&#xff0…

C语言的灵魂——指针(1)

指针是C语言的灵魂,有了指针C语言才能完成一些复杂的程序;没了指针就相当于C语言最精髓的部分被去掉了,可见指针是多么重要。废话不多讲我们直接开始。 指针 一,内存和地址二,编址三,指针变量和地址1&#…

物业巡更系统助推社区管理智能化与服务模式创新的研究与应用

内容概要 在现代社区管理中,物业巡更系统扮演着至关重要的角色。首先,我们先来了解一下这个系统的概念与发展背景。物业巡更系统,顾名思义,是一个用来提升物业管理效率与服务质量的智能化工具。随着科技的发展,传统的…

关于CAN(FD)转以太网详细介绍

一、功能描述 CANFD 完全向下兼容 CAN ,以下统称 CAN(FD) 。 SG-CAN(FD)NET-210 是一款用来把 CANFD 总线数据转为网口数据的设备。 网口支持 TCP Sever 、 TCP Client 、 UDP Sever 、 UDP Client 四种模式。 可以通过软件配置和 Web 网页配置。 两路…

用Python和PyQt5打造一个股票涨幅统计工具

在当今的金融市场中,股票数据的实时获取和分析是投资者和金融从业者的核心需求之一。无论是个人投资者还是专业机构,都需要一个高效的工具来帮助他们快速获取股票数据并进行分析。本文将带你一步步用Python和PyQt5打造一个股票涨幅统计工具,不…

Centos类型服务器等保测评整/etc/pam.d/system-auth

修改服务器配置文件/etc/pam.d/system-auth,但是,把一下配置放在password的配置第一行才会生效 执行命令:配置口令要求:大小写字母、数字、特殊字符组合、至少8位,包括强制设置root口令! sed -i 14a pas…