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

一、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 {@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 方法增加身份证号码格式校验,然后按回车即可生成增加身份证号码格式校验的代码,速度还不慢;

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

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.rhkb.cn/news/15737.html

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

相关文章

Python----PyQt开发(PyQt基础,环境搭建,Pycharm中PyQttools工具配置,第一个PyQt程序)

一、QT与PyQT的概念和特点 1.1、QT QT是一个1991年由The Qt Company开发的跨平台C图形用户界面应用程序开发 框架,可构建高性能的桌面、移动及Web应用程序。也可用于开发非GUI程序,比如 控制台工具和服务器。Qt是面向对象的框架,使用特殊的代…

【数据结构】双向链表(真正的零基础)

链表是一种物理存储单元上非连续、非顺序的存储结构。数据元素的逻辑顺序是通过指针的链接来实现的!在上篇我们学习了单向链表,而单向链表虽然空间利用率高,插入和删除也只需改变指针就可以达到!但是我们在每次查找、删除、访问..…

pip3命令全解析:Python3包管理工具的详细使用指南

pip3命令全解析:Python3包管理工具的详细使用指南 一、基本使用二、升级和更新三、其他常用命令四、换源操作五、注意事项六、帮助信息pip3命令使用说明 pip3 是 Python 3 的包管理工具,用于安装、升级和卸载 Python 3 的包。以下是 pip3 的常用命令及详细说明: 一、基本使…

开启对话式智能分析新纪元——Wyn商业智能 BI 携手Deepseek 驱动数据分析变革

2月18号,Wyn 商业智能 V8.0Update1 版本将重磅推出对话式智能分析,集成Deepseek R1大模型,通过AI技术的深度融合,致力于打造"会思考的BI系统",让数据价值触手可及,助力企业实现从数据洞察到决策执…

使用PyCharm创建项目以及如何注释代码

创建好项目后会出现如下图所示的画面,我们可以通过在项目文件夹上点击鼠标右键,选择“New”菜单下的“Python File”来创建一个 Python 文件,在给文件命名时建议使用英文字母和下划线的组合,创建好的 Python 文件会自动打开&#…

第三个Qt开发实例:利用之前已经开发好的LED驱动在Qt生成的界面中控制LED2的亮和灭

前言 上一篇博文 https://blog.csdn.net/wenhao_ir/article/details/145459006 中,我们是直接利用GPIO子系统控制了LED2的亮和灭,这篇博文中我们利用之前写好的LED驱动程序在Qt的生成的界面中控制LED2的亮和灭。 之前已经在下面两篇博文中实现了LED驱动…

【Unity】性能优化:UI的合批 图集和优化

目录 前言一、合批测试二、图集 前言 注意:DC指的是Draw Call。 温馨小提示:Frame Debugger 窗口(菜单:Window > Analysis > Frame Debugger)会显示绘制调用信息,并允许您控制正在构建的帧的“回放”…

【安当产品应用案例100集】037-强化OpenVPN安全防线的卓越之选——安当ASP身份认证系统

在当前数字化时代,网络安全已成为企业发展的重要组成部分。对于使用OpenVPN的企业而言,确保远程访问的安全性尤为重要。安当ASP身份认证系统凭借其强大的功能和便捷的集成方式,为OpenVPN的二次登录认证提供了理想的解决方案,特别是…

表单与交互:HTML表单标签全面解析

目录 前言 一.HTML表单的基本结构 基本结构 示例 二.常用表单控件 文本输入框 选择控件 文件上传 按钮 综合案例 三.标签的作用 四.注意事项 前言 HTML&#xff08;超文本标记语言&#xff09;是构建网页的基础&#xff0c;其中表单&#xff08;<form>&…

python卷积神经网络人脸识别示例实现详解

目录 一、准备 1&#xff09;使用pytorch 2&#xff09;安装pytorch 3&#xff09;准备训练和测试资源 二、卷积神经网络的基本结构 三、代码实现 1&#xff09;导入库 2&#xff09;数据预处理 3&#xff09;加载数据 4&#xff09;构建一个卷积神经网络 5&#xff0…

防御保护-----前言

HCIE安全防御 前言 计算机病毒 ​ 蠕虫病毒----->具备蠕虫特性的病毒&#xff1a;1&#xff0c;繁殖性特别强&#xff08;自我繁殖&#xff09;&#xff1b;2&#xff0c;具备破坏性 蠕虫病毒是一种常见的计算机病毒&#xff0c;其名称来源于它的传播方式类似于自然界中…

java和vue开发的图书馆借阅管理系统小程序

主要功能&#xff1a; 学生借书还书&#xff0c;管理员管理图书管理学生借书还书。系统显示在馆数量和图书总数量&#xff0c;借书时借书数量不可超过在馆数量&#xff0c;还书时需要输入归还数量&#xff08;可借2本书&#xff0c;归还的时候一本一本归还&#xff0c;可查看归…

【R】Dijkstra算法求最短路径

使用R语言实现Dijkstra算法求最短路径 求点2、3、4、5、6、7到点1的最短距离和路径 1.设置data&#xff0c;存放有向图信息 data中每个点所在的行序号为起始点序号&#xff0c;列为终点序号。 比如&#xff1a;值4的坐标为(1,2)即点1到点2距离为4&#xff1b;值8的坐标为(6,7)…

Oracle的学习心得和知识总结(三十三)|Oracle数据库数据库的SQL ID的底层计算原理分析

目录结构 注&#xff1a;提前言明 本文借鉴了以下博主、书籍或网站的内容&#xff0c;其列表如下&#xff1a; 1、参考书籍&#xff1a;《Oracle Database SQL Language Reference》 2、参考书籍&#xff1a;《PostgreSQL中文手册》 3、EDB Postgres Advanced Server User Gui…

将DeepSeek接入Excel实现交互式对话

引言 将DeepSeek接入Excel&#xff0c;为你带来前所未有的交互体验&#xff01;“哪里不懂&#xff0c;选中哪里”&#xff0c;然后直接在侧边栏对话框向DeepSeek发问&#xff0c;非常地方便&#xff01; 案例演示 设置接入方式 既可以通过本地部署的DeepSeek接入Excel&#…

在npm上传属于自己的包

最近在整理代码&#xff0c;上传到npm方便使用&#xff0c;所以学习了如何在npm发布一个包&#xff0c;整理写成一篇文章和大家一起交流。 1、注册npm账号 npm | Home 2、确保是登录状态 &#xff08;在包目录下&#xff0c;终端执行 npm login) 按enter键自动打开页面&…

JS宏进阶:XMLHttpRequest对象

一、概述 XMLHttpRequest简称XHR&#xff0c;它是一个可以在JavaScript中使用的对象&#xff0c;用于在后台与服务器交换数据&#xff0c;实现页面的局部更新&#xff0c;而无需重新加载整个页面&#xff0c;也是Ajax&#xff08;Asynchronous JavaScript and XML&#xff09;…

【快应用】多语言适配案例

【关键词】 多语言,$t 【问题背景】 快应用平台的能力会覆盖多个国家地区,平台支持多语言的能力后,可以让一个快应同时支持多个语言版本的切换,开发者无需开发多个不同语言的源码项目,避免给项目维护带来困难。使用系统默认的语言,开发者配置多语言的方式非常简单,只…

PyQt学习记录

0. 安装配置 0.1 安装相关库 首先打开你的PyCharm程序&#xff0c;然后新建一个目录用于学习&#xff0c;其次在terminal中输入 pip install pyqt5如果你不具有科学上网能力&#xff0c;请改为国内源 pip install pyqt5 -i https://pypi.douban.com/simple然后安装pyqt相关…

【多模态大模型】系列3:语义分割(LSeg、GroupViT)

目录 1 LSeg2 Group ViT 1 LSeg LANGUAGE-DRIVEN SEMANTIC SEGMENTATION LSeg是第一篇将CLIP应用于语义分割的论文。它的分割的效果拔群&#xff0c;容错能力也很高&#xff1a; 模型总览图跟CLIP很像&#xff1a; 对于图像链路&#xff1a;输入一张图片&#xff0c;进入分割…