发布时间:2026-01-06
浏览次数:0
高级设置,点击右下角通义灵码图标-->高级设置
通义灵码高级设置
二、 IDEA 中使用指南2.1、代码解释
选取那需要解释阐释的代码,而后指向右键,接着再点击通义灵码,最后去解释说明代码 。
代码解释
解释说明
流程图
将代码阐释得极为详尽,是不是让人觉着超厉害,重点在于还能够生成流程图,这对于程序员领会业务而言极具助力,大体上能够达成不明白哪处就点击哪处的效果。
2.2、生成注释
挑选出那些要添加注释的代码,然后,用鼠标右键点击,接着,找到通义灵码,随后,实现生成注释的操作 。
生成注释
生成注释后的代码
换掉原代码,用生成注释的代码就行,这对讨厌写注释的程序员来说,可是个好消息呢。
2.3、代码优化
选取那需要进行优化处理的代码 ,而后右键点击 ,接着找到通义灵码 ,随后实施优化代码的操作 。
优化代码
通义灵码会针对所挑选的代码,展开潜在问题的剖析以及风险的提示,并且给出经过优化的代码 。
问题分析及风险提醒
优化后的完整代码截图
优化后的代码
使用通义灵码的这些代码优化功能,有些不太容易被发现找到的bug说不定就能够被找到,当下许多项目对于代码质量都有着比较高的要求,多去运用代码优化功能来编写高质量的代码,这并不是什么问题。
2.4、代码片段补全
把光标移到没写完的代码那儿之后,右键,去找通义灵码,接着进行代码片段的补全,或者也能用快捷键ALT+P去实现,此时会呈现出灰色的建议代码,再按Tab键来接受代码。
代码片段补全
提示代码
接受代码
2.5、生成单元测试
于你所需要进行单元测试的那般方法之上点击,点击通义灵码的那个图标,而后从中生成单元测试intellij idea 快捷键,句号。
生成单元测试
单元测试说明
制造单元测试以及设计说明这下弄得出乎意料地逼真,接下来附上完整的代码:
package com.xxx;
导入,来自,com.xxx这个地方的,UserServiceImpl 。
import org.junit.Before;
import org.junit.Test;
导入,组织,测试,运行器,带,使用,的,包,这里,具体,是,组织,测试,运行器,带的。
引进,那个,组织,.mockito这个,里头的,注入,模拟对象,;。
导入,组织,.mockito,JUnit,运行器,MockitoJUnitRunner;。
把静态的“org.junit.jupiter.api.Assertions”里的“assertEquals”进行导入,用于相等结果判断的这一步骤。
引入静态的,来自,那个 org.junit.jupiter.api.Assertions当中的,assertThrows 这个东西,。
注解为RunWith,括号内是MockitoJUnitRunner类 。
公用的,有关用户服务实现的测试类 ,其中类名为用户服务实现测试 。
@InjectMocks
私有,UserServiceImpl类型的,userService。
@Before
public void setUp() {
// 如果需要,可以在此处进行任何设置
}
@Test
公开的方法 void,它是用于获取性别的,当身份证为空时会抛出非法参数异常 ,这个方法名为,获取性别_身份证为空_抛出非法参数异常 。
宣称抛出非法论证出现的那种异常品类发生的情况,针对进入的是用户服务获取性别的时候在参数为空的状态下的那种事务操作 ,(这里是lambda表达式的形式)。
}
@Test
就这个方法而言,它是一个被声明为公共的 void 类型的方法,其作用是获取性别,但是当出现无效长度的情况时,它会抛出 IllegalArgumentException 异常 .
断言抛出非法ArgumentException类异常,是通过执行(() -> userService.getGender("123456789012345670"))这样的操作来实现的,这里的(() -> userService.getGender("123456789012345670"))呈现了一种特定的功能性书写方式,用于传递特定的操作逻辑 。
}
@Test
定义一个公共的方法,这个方法名为getGender_ValidMaleIdentityCard_ReturnsMale,其作用是当使用有效的男性身份证时,返回男性 。
存在一个字符串,其值为“123456199001011235”,此字符串里边的第17位数字是3,而3是奇数 。
使用 assertEquals 方法,将其第一个参数设置为 "男",测试 userService 中的 getGender 方法,该方法的参数为 identityCard ,。
}
@Test
定义一个公开无效的方法,该方法用于获取性别,使用有效的女性身份证,返回女性标识符,并且所返回的结果只为女性项 。
“12345619900_”,“101”,对于“1244”而言,其中那个数值为“4”的数位,它所处的位数位置是第十七位,这一位上的数字是偶数 。
使用 assertEquals 方法来进行判断,判断的内容是“女”,判断依据是 userService 这个服务里的 getGender 方法,传入的参数是 identityCard 。
}
}
执行单元测试,全部校验通过:
单元测试通过
生成的单元测试中当中,缺少了身份证号格式的合法性校验,业务代码里面没有格式校验所以没生成,并非满足所有场景、需要根据实际情况进行调整或添加,不过已满足大部分场景,对手写单元测试来说提升的效率还是蛮高的,这里缺少的部分能够通过智能问答来补充,下面会说怎么补充。
2.6、智能问答
瞅准右边的通义灵码图标,点击它,进入智能问答范畴intellij idea 快捷键,接着找到并点击“+” ,随后进行选择操作,搞定选择之后,在对话框里面输入:方法增添身份证号码格式校验,输入完毕后按下回车键,如此一来就能生成增添身份证号码格式校验的代码,而且生成速度并非迟缓 。
增加身份证号码格式校验
生成的完整代码如下:
/**
* 给定一个身份证号,计算出该用户的性别
*
* @param identityCard 身份证号
*/
@Override
公开的,用于获取性别的,通过身份证号来获取性别的,字符串类型的方法,名为getGender,其参数为身份证号,即String identityCard,以上。
抛出去一个新的非法参数异常,这个异常是因为“无效的身份证号码” ,有这样一个致使原因才产生的 。
}
// 校验身份证号码格式
如果,并非身份证号码,匹配,由数字组成的十七位,再加上数字零到九或者大写字母X小写字母x所构成的字符组合,那么,怎么样呢 ?
导致或引发,又或者抛出,新一代不符合规定的,表明非法性质的,论证阐释说明,有关证件身份,并且属于规定编号,其格式存在无效情况的,一种异常状况 。
}
首先,声明一个整型变量genderDigit ,然后,将identityCard 从索引位置16开始截取到索引位置17的子字符串,再通过Integer.parseInt 方法把它转换为整型数值,赋值给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
该方法名为,获取性别,无效格式,抛出非法参数异常 ,是一个公共的 void 类型的方法 ,有这样的一个方法 ,存在于某个类中 且是公开的 ,调用该方法去获取性别 ,当格式无效时 ,会抛出非法参数异常 。
在进行相关操作时,要确保抛出非法参数异常类型,也就是IllegalArgumentException.class,通过下面这种方式来测试,即构建一个代码块,在这个代码块里执行userService.getGender("s12345678901234567")这个操作,以此来验证长度正确但格式错误的情况,这里的长度是符合要求的,可格式却是错误的 。此操作的目的在于检查指定条件下是否能正确抛出相应异常 。
断言抛出非法参数异常类,对于获取性别的操作,当传入值为“12345678901234567文”时,通过执行用户服务的获取操作去触发异常,这里长度是正确的但格式是错误的 。
.assertThrows(IllegalArgumentException.class, (() -> userService.getGender("12345678901234567G")), //最后一位不是数字或者X的情况下长度正确)。
}
@Test
public void getGender_ValidMaleIdentityCard_ReturnsMale() {
字符串身份号码等于 "123456199001011235",其中第17位是5,此5为奇数 。
assertEquals("男", userService.getGender(identityCard));
}
@Test
public void getGender_ValidFemaleIdentityCard_ReturnsFemale() {
String identityCard = "123456199001011244"; // 第17位是4,偶数
assertEquals("女", userService.getGender(identityCard));
}
}
执行单元测试,5条用例全部通过
单元测试通过
@ 本地工程问答
当你有这般需求,即要极为迅速地知晓一个工程,寻觅工程里的实现逻辑,又或者遇上了新的诉求,得去开展代码变更之际,可以于智能问答窗口那儿借助 @ 来唤起 @ ,选中之后输入你的问题或者诉求,通义灵码能够快速地结合当下的仓库去进而进行工程理解、代码查询、代码问答等等了,与此同时,还能够凭借自然语言去描述需求,结合当下的工程产出简单需求亦或是缺陷的全面修改建议以及相关的建议代码。
倘若在接手新项目之际,期望能够迅速知晓项目架构,那么可于对话框当中输入:@ 以详尽了解项目架构,如此一来,通义灵码会去详细剖析项目的架构设计,。
智能问答-了解项目架构
@ 问答
当你碰到执行指令不晓得该怎么去书写,又或者弄不明白某个指令所蕴含的意思之际,能够于智能问答窗口里借助@可引发@,挑选之后运用自然语言阐述你的需求指令诉求,通义灵码便能够产出你所需的命令。生成指令之后,你能够一键插进到中开展执行或者让通义灵码持续解释。当然,你同样能够在选择@之后,键入指令让通义灵码生成指令解释。
@指令使用
2.7 AI 程序员
能与开发者为完成编码任务协同,具备多文件代码修改能力,可进行需求实现、问题解决、单元测试用例生成、批量代码修改等事项,还拥有工具使用能力的,是通义灵码AI程序员 。
说明
专为程序员打造的通义灵码 AI,使用时,要把通义灵码 IDE 插件,升级成最新的版本,也就是 2.0.0以及比这个版本更高的版本。
有这样一种情况,AI程序员能够协助开发者,迅速完成一项研发任务内的代码编写工作,而在和AI程序员对话这个进程当中,存在着一些要点,是可以依照以下几点建议来展开的,。
在 AI 程序员对话框输入你要是现在的需求即可生成相关代码
与AI 程序员对话,生成代码
package com.xxx.utils;
import java.time.Duration;
import java.time.Instant;
导入,Java的时间,本地日期时间,类 。
import java.time.ZoneId;
导入,Java,时间,临时,计时单位,ChronoUnit。
引入,来自,爪哇,时间这个范畴里面的,与时间单位相关的,那个TemporalUnit ;。
public class DateTimeUtils {
/**
* 增加时间的方法
*
* @param currentTime 当前时间
* @param amountToAdd 需要增加的时间值
* @param unit ,这是那个需要去增加的时间单位 。
* @return 增加后的时间对象
*/
公共静态的本地日期时间添加时间、(本地日期时间当前时间,长整型要添加的数量,时间单位) 返回本地日期时间 调用该方法 返回计算后的本地日期时间、(当地日期时间当前时间,长整型要添加的数量,时间单位)将当前本地日期时间加上指定数量的时间、(依据所指定的时间单位)通过该时间单位相应规则进行计算、最终返回添加时间后的本地日期时间 、标点符号。
返回与当前时间相加,加上要添加的数量,按照指定的单位来计算后的时间 。
}
/**
* 增加时间的方法(使用Instant)
*
* @param currentInstant 当前时间
* @param amountToAdd,这是那个需要被增加的时间值 。
* @param unit ,这是那个需要去展开增加操作的时间单位哟 。
* @return 增加后的时间对象
*/
在公共静态的情况下,有一个方法叫做 addTime,它接受三个参数,第一个参数是当前的瞬间,第二个参数是要增加的数量,第三个参数是时间单位,其中时间单位是 ChronoUnit 类型,返回值是一个新的瞬间,那就是 Instant 类型 。
}
/**
* 增加时间的方法(使用Duration)
*
* @param currentInstant 当前时间
* @param duration,这是指需要去增加的那个时间间隔 。
* @return 增加后的时间对象
*/
公共的静态的即时时间 添加时间 返回即时时间 传入即时时间 当前即时时间 持续时间 持续时长 作为参数 传入持续时间作为参数 作为参数传入 传入当前即时时间作为参数 作为参数传入当前即时时间 作为参数传入持续时长 作为参数传入持续时间 作为参数。
}
}
三、常用的快捷键
开箱即用的快捷键配备在了通义灵码的多个操作上,以下是几项常用的快捷键被列了出来。
采纳全部生成的代码
Tab
Tab
逐行采纳生成的代码
Ctrl + ↓
Ctrl + ↓
关闭/打开对话面板
Ctrl + Shift + L
Cmd + Shift + L
代码解释
Alt + Shfit + P
生成单元测试
Alt + Shfit + U
生成注释
Alt + Shfit + V
代码优化
Alt + Shfit + O
代码片段补全
Alt + P
四、总结
总的来说,“通义灵码”是国内相当出色的AI插件,其兼容性很强,支持好多IDE,给众多程序员带来了方便。它的核心功能多样丰富,包含代码解释,可使复杂代码逻辑清晰易懂;能精准生成注释,有助于提升代码的可读性和可维护性;能高效进行代码优化,消除冗余、提高性能;能轻松生成单元测试,为代码质量提供保障;还有智能解答疑惑以及模拟AI程序员辅助开发等实用功能。它身为编程领域中颇为得力的助手,具备十足的能力,能够极大程度地提升程序员的开发效率,是极为难得的编程利器。
如有侵权请联系删除!
Copyright © 2023 江苏优软数字科技有限公司 All Rights Reserved.正版sublime text、Codejock、IntelliJ IDEA、sketch、Mestrenova、DNAstar服务提供商
13262879759
微信二维码