二、通义灵码插件保姆级教学-IDEA(使用篇)

news2025/2/11 23:12:46

一、IntelliJ IDEA 中使用指南

1.1、代码解释

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

解释代码

码解释说明
代码解释说明

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

2.2、生成注释

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

生成注释
生成注释后的代码

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

2.3、优化代码

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

优化代码

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

优化代码说明
优化代码

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

2.4、代码片段补全

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

代码片段补全
建议代码
按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 方法增加身份证号码格式校验,然后按回车即可生成增加身份证号码格式校验的代码,速度还不慢;

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条用例全部通过

5条用例全部通过

@workspace 本地工程问答

     在项目研发的进程中,当你面临如下场景:亟需迅速洞悉一个工程的全貌,精准定位其内部复杂的实现逻辑;或是基于新的业务诉求,迫切需要对代码进行调整优化。此时,通义灵码便能成为你的得力助手。

     只需轻松移步至智能问答窗口,简单地输入 “@”,即可便捷唤起 “@workspace”。完成选中操作后,将你的具体问题或业务诉求逐一输入。通义灵码凭借其卓越的智能,会即刻结合当前所处的代码仓库,展开全方位的工程剖析、精细入微的代码查询,以及精准高效的代码问答服务。

     更为惊艳的是,你甚至无需拘泥于刻板的专业术语,仅用通俗易懂的自然语言描述你的需求,通义灵码便能深度融合当前工程的实际情况,不仅为你生成针对简单需求或潜在缺陷的整体性修改建议,还贴心附上与之紧密相关的建议代码片段,助力你在代码的世界里畅行无阻,高效攻克每一个难题。

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

项目架构说明
@terminal 问答

    在日常的开发与操作过程中,我们难免会遭遇一些指令方面的困扰。或许你正绞尽脑汁,却不知该如何编写一条执行指令;又或许面对某个指令,你满心疑惑,难以参透其确切含义。别担心,通义灵码为你提供了便捷的解决方案。

    只需来到智能问答窗口,轻轻键入 “@”,即可迅速唤起 “@terminal”。选择之后,你无需使用晦涩难懂的专业表述,仅用自然流畅的自然语言,清晰地描述你对指令的需求即可。通义灵码就像一位知识渊博的编程助手,能精准理解你的意图,快速为你生成所需的命令。

    当生成指令后,操作更是简便至极。你只需一键点击,就能将生成的指令插入到 “terminal” 中,立即执行以验证效果。倘若你对生成的指令还有所疑虑,通义灵码也会耐心地继续为你详细解释。

    不仅如此,如果你已经有了特定的指令,也可以在选择 “@terminal” 后将其输入,通义灵码会为你生成详细的指令解释,帮助你深入理解指令背后的逻辑与用途,让你在指令的世界中不再迷茫。

指令生成

2.7、AI程序员

通义灵码 AI 程序员具备多文件代码修改和工具使用能力,可与开发者协同完成编码任务,涵盖需求实现、问题解决等。使用该功能需将通义灵码 IDE 插件升级到 2.0.0 及以上版本。与 AI 程序员对话以完成研发任务时,可参考以下建议:一是清晰描述需求,明确目标并采用步骤式结构化表述;二是指定所需上下文,如代码文件等,结合详细步骤让 AI 精准理解意图;三是明确生成要求,如语言、规范等;四是善用快照功能,在生成内容不符预期或需求变化时回退;五是审查和修改变更,通过变更对比查看视图审查,对局部代码进行操作以确保结果符合预期。

在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 + POption + P
更换生成的结果Alt + ]Option + ]
采纳全部生成的代码TabTab
逐行采纳生成的代码Ctrl + ↓Cmd + ↓
关闭/打开对话面板Ctrl + Shift + LCmd + Shift + L
代码解释Alt + Shfit + P
生成单元测试Alt + Shfit + U
生成注释Alt + Shfit + V
代码优化Alt + Shfit + O
代码片段补全Alt + P

三、总结

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

参考资料:

  • 通义灵码操作指南

一、通义灵码插件保姆级教学-IDEA(安装篇)

– 欢迎点赞、关注、转发、收藏【技术咖啡馆C】,各大平台同名。

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

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

相关文章

HAL库外设宝典:基于CubeMX的STM32开发手册(持续更新)

目录 前言 GPIO(通用输入输出引脚) 推挽输出模式 浮空输入和上拉输入模式 GPIO其他模式以及内部电路原理 输出驱动器 输入驱动器 中断 外部中断(EXTI) 深入中断(内部机制及原理) 外部中断/事件控…

HarmonyOS 5.0应用开发——ContentSlot的使用

【高心星出品】 文章目录 ContentSlot的使用使用方法案例运行结果 完整代码 ContentSlot的使用 用于渲染并管理Native层使用C-API创建的组件同时也支持ArkTS创建的NodeContent对象。 支持混合模式开发,当容器是ArkTS组件,子组件在Native侧创建时&#…

[AI]Mac本地部署Deepseek R1模型 — — 保姆级教程

[AI]Mac本地部署DeepSeek R1模型 — — 保姆级教程 DeepSeek R1是中国AI初创公司深度求索(DeepSeek)推出大模型DeepSeek-R1。 作为一款开源模型,R1在数学、代码、自然语言推理等任务上的性能能够比肩OpenAI o1模型正式版,并采用MI…

群晖NAS如何通过WebDAV和内网穿透实现Joplin笔记远程同步

文章目录 前言1. 检查群晖Webdav 服务2. 本地局域网IP同步测试3. 群晖安装Cpolar工具4. 创建Webdav公网地址5. Joplin连接WebDav6. 固定Webdav公网地址7. 公网环境连接测试 前言 在数字化浪潮的推动下,笔记应用已成为我们记录生活、整理思绪的重要工具。Joplin&…

CSS3+动画

浏览器内核以及其前缀 css标准中各个属性都要经历从草案到推荐的过程,css3中的属性进展都不一样,浏览器厂商在标准尚未明确的情况下提前支持会有风险,浏览器厂商对新属性的支持情况也不同,所有会加厂商前缀加以区分。如果某个属性…

C++ list介绍

文章目录 1. list简介2. list的实现框架2.1 链表结点2.2 链表迭代器2.3 链表 3. list迭代器及反向迭代器设计3.1 list迭代器3.2 list反向迭代器3.3 list迭代器失效 4. list与vector比较 1. list简介 list,即链表。 链表的种类有很多,是否带头结点&#…

Java - 在Linux系统上使用OpenCV和Tesseract

系统环境 确保Linux系统安装了cmake构建工具,以及java和ant(这两者如果没有,可能会影响到后面编译opencv生成.so和.jar文件)。 sudo apt-get update sudo apt-get install build-essential sudo apt install cmake build-essen…

自有服务与软件包

—— 小 峰 编 程 目录 ​编辑 一、自有服务概述 二、systemctl管理服务命令 1、显示服务 2、查看启动和停止服务 3、服务持久化 三、常用自有服务(ntp,firewalld,crond) 1、ntp时间同步服务 1)NTP同步服务器原理 2)到哪里去找NPT服务…

Python 鼠标轨迹 - 防止游戏检测

一.简介 鼠标轨迹算法是一种模拟人类鼠标操作的程序,它能够模拟出自然而真实的鼠标移动路径。 鼠标轨迹算法的底层实现采用C/C语言,原因在于C/C提供了高性能的执行能力和直接访问操作系统底层资源的能力。 鼠标轨迹算法具有以下优势: 模拟…

chrome-mojo C++ Bindings API

概述 Mojo C 绑定 API 利用C 系统 API提供一组更自然的原语,用于通过 Mojo 消息管道进行通信。结合从Mojom IDL 和绑定生成器生成的代码,用户可以轻松地跨任意进程内和进程间边界连接接口客户端和实现。 本文档通过示例代码片段提供了绑定 API 用法的详…

java: framework from BLL、DAL、IDAL、MODEL、Factory using oracle

oracel 21c sql: -- 创建 School 表 CREATE TABLE School (SchoolId CHAR(5) NOT NULL,SchoolName NVARCHAR2(500) NOT NULL,SchoolTelNo VARCHAR2(8) NULL,PRIMARY KEY (SchoolId) );CREATE OR REPLACE PROCEDURE addschool(p_school_id IN CHAR,p_school_name IN NVARCHAR2,p…

Ubuntu22.04部署deepseek大模型

Ollama 官方版 Ollama 官方版: https://ollama.com/ 若你的显卡是在Linux上面 可以使用如下命令安装 curl -fsSL https://ollama.com/install.sh | shollama命令查看 rootheyu-virtual-machine:~# ollama -h Large language model runnerUsage:ollama [flags]ollama [comman…

Redis数据库(二):Redis 常用的五种数据结构

Redis 能够做到高性能的原因主要有两个,一是它本身是内存型数据库,二是采用了多种适用于不同场景的底层数据结构。 Redis 常用的数据结构支持字符串、列表、哈希表、集合和有序集合。实现这些数据结构的底层数据结构有 6 种,分别是简单动态字…

网络安全溯源 思路 网络安全原理

网络安全背景 网络就是实现不同主机之间的通讯。网络出现之初利用TCP/IP协议簇的相关协议概念,已经满足了互连两台主机之间可以进行通讯的目的,虽然看似简简单单几句话,就描述了网络概念与网络出现的目的,但是为了真正实现两台主机…

BS架构(笔记整理)

楔子.基本概念 1.在网络架构中: 服务器通常是集中式计算资源,负责处理和存储数据;客户机是请求这些服务的终端设备,可能是个人电脑或移动设备;浏览器则是客户机上用来与服务器交互的工具,负责展示网页内容…

06排序 + 查找(D2_查找(D2_刷题练习))

目录 1. 二分查找-I 1.1 题目描述 1.2 解题思路 方法:二分法(推荐使用) 2. 二维数组中的查找 2.1 题目描述 2.2 解题思路 方法一:二分查找(推荐使用) 3. 寻找峰值 3.1 题目描述 3.2 解题思路 方…

C++ 设计模式 - 访问者模式

一:概述 访问者模式将作用于对象层次结构的操作封装为一个对象,并使其能够在不修改对象层次结构的情况下定义新的操作。 《设计模式:可复用面向对象软件的基础》一书中的访问者模式因两个原因而具有传奇色彩:一是因为它的复杂性&a…

海云安开发者智能助手(D10)全面接入DeepSeek,赋能开发者安全高效编码新范式

海云安正式宣布完成与DeepSeek(深度求索)的深度技术融合,旗下核心产品D10开发者智能助手全面接入DeepSeek R1模型。此次合作标志着海云安在"AI驱动开发安全"领域实现重要突破。数据显示,通过DeepSeek R1模型的优化与蒸馏…

分布式id探索

一、为什么要使用分布式id? 随着数据量增加,数据需要进行水平拆分,但表自增id无法满足唯一性; 二、分布式id的特点 1唯一性 2 趋势递增、单调递增(数据库中存放的数据结构数据从小到大有序排列)&#xff0…

【Linux系统】—— 简易进度条的实现

【Linux系统】—— 简易进度条的实现 1 回车和换行2 缓冲区3 进度条的准备代码4 第一版进度条5 第二版进度条 1 回车和换行 先问大家一个问题:回车换行是什么,或者说回车和换行是同一个概念吗?   可能大家对回车换行有一定的误解&#xff0…