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

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

相关文章

C# Basic

文章目录 项目地址一、基础501. What is CIL?2. What is CLR?3. What is the difference betweent value type and reference types?4. what is boxing and unboxing?5. How are exceptions handled in C#?6. What is the difference between a class and a struct?7. Wh…

Java 大视界 -- 5G 与 Java 大数据融合的行业应用与发展趋势(82)

💖亲爱的朋友们,热烈欢迎来到 青云交的博客!能与诸位在此相逢,我倍感荣幸。在这飞速更迭的时代,我们都渴望一方心灵净土,而 我的博客 正是这样温暖的所在。这里为你呈上趣味与实用兼具的知识,也…

四、自然语言处理_08Transformer翻译任务案例

0、前言 在Seq2Seq模型的学习过程中,做过一个文本翻译任务案例,多轮训练后,效果还算能看 Transformer作为NLP领域的扛把子,对于此类任务的处理会更为强大,下面将以基于Transformer模型来重新处理此任务,看…

深入探索JavaCV:功能强大的Java计算机视觉库

🧑 博主简介:历代文学网(PC端可以访问:https://literature.sinhy.com/#/literature?__c1000,移动端可微信小程序搜索“历代文学”)总架构师,15年工作经验,精通Java编程,…

FlutterWeb实战:03-与流行前端框架集成

与流行前端框架集成 前端有非常多的框架、工具、库,这些都要比 Dart Web 成熟、丰富。所以在将 Fluttter 编译成 Web 以后,若能使用现有的前端技术实现 web 端的特殊需求,肯定事半功倍。 搭建框架 在开始之前,确保你已经安装好了…

C++ 中的 cJSON 解析库:用法、实现及递归解析算法与内存高效管理

在现代软件开发中,JSON(JavaScript Object Notation)作为一种轻量级的数据交换格式,因其易于阅读和编写、易于机器解析和生成的特性,被广泛应用于各种场景。C 作为一种强大的编程语言,自然也需要一个高效的…

新一代高性能无线传输模块M-GATEWAY3

M-GATEWAY3是M3系列的通用接口模块,用于接收各种总线信号并将它们集成到一个系统中。该模块通过标准化传输协议XCPonETH进行输出,确保为各种测量应用提供无损信号。此外,M-GATEWAY3支持通过热点、ETH-PC或USB-C传输数据。借助M-GATEWAY3&…

计算机毕业设计——Springboot的旅游管理

📘 博主小档案: 花花,一名来自世界500强的资深程序猿,毕业于国内知名985高校。 🔧 技术专长: 花花在深度学习任务中展现出卓越的能力,包括但不限于java、python等技术。近年来,花花更…

deepseek+“D-id”或“即梦AI”快速生成短视频

1、deepseek生成视频脚本 1.1、第一步:使用通用模板提出需求,生成视频脚本 对话输入示例脚本1: 大年初五是迎财神的日志,帮我生成10秒左右的短视频, 体现一家3口在院子里欢庆新年, 孩子在院子里放鞭炮烟…

aspectFill(填充目标区域的同时保持图像的原有宽高比 (aspect ratio)图像不会被拉伸或压缩变形

“aspectFill” 是一个常用于图像和视频处理的术语,尤其是在用户界面 (UI) 设计和图形编程领域。它描述的是一种图像缩放或调整大小的方式,旨在填充目标区域的同时保持图像的原有宽高比 (aspect ratio)。 更详细的解释: Aspect Ratio (宽高比): 指的是图…

吃瓜教程Day1笔记

主要内容: 1. 什么是机器学习以及 2. 机器学习的相关数学符号,为后续内容作铺垫,并未涉及复杂的算法理论, 因此阅读本章时只需耐心梳理清楚所有概念和数学符号即可。 3. “模型评估与选择” 是在模型产出以后进行的下游工作&…

SpringCloud - Gateway 网关

前言 该博客为Sentinel学习笔记,主要目的是为了帮助后期快速复习使用 学习视频:7小快速通关SpringCloud 辅助文档:SpringCloud快速通关 源码地址:cloud-demo 一、简介 官网:https://spring.io/projects/spring-clou…

律所录音证据归集工具:基于PyQt6与多线程的自动化音频管理解决方案

在律所日常工作中,音频证据的整理与归集是一个高频且复杂的任务。面对大量的案件录音文件,如何实现快速且准确的分类与存档,成为了律所提高效率、降低出错率的关键。本文将通过技术角度解析一款名为律所录音证据归集工具的项目,详…

外贸网站源码 助力企业抢占蛇年市场先机!

在竞争激烈的外贸市场中,蛇年无疑是企业寻求突破与增长的关键一年。外贸网站源码为企业提供了快速搭建专业外贸网站的解决方案,助力企业在新的一年抢占市场先机。 快速上线 时间就是商机,尤其是在蛇年这样充满变数和机遇的年份。外贸网站源码…

什么是 Elasticsearch?

Elasticsearch 是一个非常强大的开源搜索和分析引擎,广泛应用于各种需要全文搜索、结构化搜索、聚合分析以及复杂数据分析的场景。下面我们就一起来揭开 Elasticsearch 的神秘面纱吧! 什么是 Elasticsearch? Elasticsearch 是由 Elastic 公…

PyCharm结合DeepSeek-R1

PyCharm结合DeepSeek-R1,打造专属 AI 编程助手 在程序员的日常工作中,提高编程效率、快速解决代码问题是重中之重。今天给大家分享一个强强联合的组合 ——PyCharm 插件 Continue 与 DeepSeek-R1,它们能帮你打造出强大的个人 AI 编程助手。 …

DeepSeek-Coder系列模型:智能编程助手的未来

文章目录 一、模型架构与核心功能1. 模型架构2. 核心功能 二、多语言支持与代码生成1. Python代码生成2. Java代码生成3. C代码生成4. JavaScript代码生成 三、仓库级代码理解1. 代码结构分析2. 上下文理解 四、FIM填充技术1. 函数自动填充2. 代码补全 五、应用场景1. 代码补全…

Spring Boot从入门到精通:核心知识点+实战指南

目录 一、Spring Boot 是什么?为什么它如此流行? 二、快速创建你的第一个Spring Boot应用 2.1 使用Spring Initializr生成项目 2.2 核心代码示例 三、深度解析Spring Boot核心机制 3.1 自动配置原理揭秘 3.2 自定义Starter实战 四、生产环境必备…

bash shell笔记——循环结构

0 引言 本文主要介绍linux bash shell循环结构的基本使用 1 测试环境 查看系统版本: uname -a : Ubuntu 18.04 查看bash版本: bash -version : GNU bash, version 4.4.20(1)-release 创建.sh文件: vim 00test.sh 修改00test.sh权限&…

C/C++算法竞赛学习书籍

文章目录 C Primer Plus:中文版(第六版)C Primer 中文版(第 5 版)算法竞赛进阶指南 (李煜东)挑战程序设计竞赛 (秋叶拓哉 岩田阳一 北川宜稔)算法竞赛入门经典(第2版) (刘汝佳)啊哈算法 (啊哈磊…