
二、IDE集成AI助手豆包MarsCode保姆级教学(使用篇)
豆包MarsCode是由字节跳动推出的AI编程助手,集成于主流IDE(如VS Code、JetBrains),提供代码补全、错误修复、注释生成等功能,显著提升开发效率。智能补全技术:支持代码补全Pro,可预测用户后续编辑行为(如参数修改),并基于Git提交记录和上下文检索优化推荐准确性。多语言支持:覆盖几十种编程语言,适配传统开发者及跨语言AI编程用户需求。深度集成模型:接入高性能推理模型Deep
各位看官老爷好,如果还没有安装 MarsCode 请查阅前一篇
一、IDE集成AI助手豆包MarsCode保姆级教学(安装篇)
二、JetBrains IDEA 中使用教学
2.1 代码生成
单击右边的MarsCode AI图标 —> 在对话框输入自然语言 —> 单击发送按钮或按下回车键,豆包 MarsCode 编程助手可以根据你的自然语言描述生成对应的代码片段。
完整的代码如下:
public class BubbleSort {
public static void bubbleSort(int[] arr) {
int n = arr.length;
for (int i = 0; i < n - 1; i++) {
for (int j = 0; j < n - i - 1; j++) {
if (arr[j] > arr[j + 1]) {
// 交换 arr[j+1] 和 arr[j]
int temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}
}
public static void main(String[] args) {
int[] arr = {64, 34, 25, 12, 22, 11, 90};
bubbleSort(arr);
System.out.println("排序后的数组:");
for (int num : arr) {
System.out.print(num + " ");
}
}
}
执行结果:
排序后的数组:
11 12 22 25 34 64 90
2.2 代码解释
选中代码片段 —> 右键 —> MarsCode AI —> 解释代码,代码解释可以帮助程序员快速理解业务逻辑,提高代码阅读效率。
2.3 代码编辑
选中代码片段 —> 右键 —> MarsCode AI —> chat —> 在对话框输入编辑需求,MarsCode 可以编辑指定代码,包括重构、优化、修改部分逻辑等。你可以通过自然语言描述代码编辑需求。
完整的代码如下:
public class UnionSetTest {
public static void main(String[] args) {
List<Integer> list = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9, 10);
List<Integer> list2 = Arrays.asList(6, 7, 8, 9, 10, 11, 12, 13, 14, 15);
// 创建一个 HashSet 来存储并集
Set<Integer> unionSet = new HashSet<>(list);
// 将 list2 中的元素添加到并集中
unionSet.addAll(list2);
// 将并集转换为列表
List<Integer> unionList = new ArrayList<>(unionSet);
// 打印并集
System.out.println("两个列表的并集是: " + unionList);
}
}
简单粗暴,直接使用set集合排除重复元素,运行结果如下:
两个列表的并集是: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15]
2.4 代码补全
MarsCode 编程助手可以帮助你自动补全后续代码。
场景一:在对应代码处,敲击回车键换行。MarsCode 编程助手会阅读并理解当前代码,然后自动补全后续代码。
场景二:在对应位置添加注释,然后敲击回车键换行。豆包 MarsCode 编程助手会阅读并理解代码注释,然后直接生成代码。
将鼠标悬浮至自动补全的代码区域,然后按需进行以下后续操作:
- 按下 Tab 键,添加自动补全的所有代码。
- 按下 Shift + Tab,添加自动补全的一行代码,逐行添加可以使用此方法。
最终的代码如下:
public class UnionSetTest {
public static void main(String[] args) {
List<Integer> list1 = Arrays.asList(1, 2, 3, 4, 5);
List<Integer> list2 = Arrays.asList(1, 2,6, 7, 8, 9);
List<Integer> intersection = new ArrayList<>(list1);
intersection.retainAll(list2);
System.out.println("交集:" + intersection);
}
}
2.5 代码注释生成
选中代码片段 —> 右键 —> MarsCode AI —> 注释代码,把生成注释后的代码替换掉原代码即可,不爱写注释的程序员有福音了。
添加注释后的代码如下:
/**
* 定义要读取的 Excel 文件的路径
*/
String fileName = "F:\\demo.xlsx";
/**
* 初始化 ExcelReader 对象,用于读取 Excel 文件
*/
ExcelReader excelReader = null;
try {
// 通过 EasyExcel 库读取指定文件并构建 ExcelReader 对象
excelReader = EasyExcel.read(fileName).build();
// 创建第一个工作表的读取配置
// 指定读取第一个工作表(索引为 0)
// 设置表头对应的实体类为 DemoData.class
// 注册数据读取监听器 DemoDataListener 用于处理读取的数据
// 构建 ReadSheet 对象
ReadSheet readSheet1 =
EasyExcel.readSheet(0).head(DemoData.class).registerReadListener(new DemoDataListener()).build();
// 创建第二个工作表的读取配置
// 指定读取第二个工作表(索引为 1)
// 设置表头对应的实体类为 DemoData.class
// 注册数据读取监听器 DemoDataListener 用于处理读取的数据
// 构建 ReadSheet 对象
ReadSheet readSheet2 =
EasyExcel.readSheet(1).head(DemoData.class).registerReadListener(new DemoDataListener()).build();
// 调用 ExcelReader 的 read 方法,读取指定的两个工作表的数据
excelReader.read(readSheet1, readSheet2);
} finally {
// 确保无论是否发生异常,ExcelReader 对象都会被关闭
// 避免创建的临时文件占用磁盘空间
if (excelReader != null) {
excelReader.close();
}
}
// 返回操作成功的结果
return success();
2.6 单元测试生成
选中代码片段 —> 右键 —> MarsCode AI —> 生成单测
女性身份号码中的17位为7是奇数,应为偶数(2、4、6、8),就这里需要调整下。
最终的代码:
public void testGetGender() {
UserServiceImpl userService = new UserServiceImpl();
// 正常情况,男性身份证号码
String genderMale = userService.getGender("123456789012345678");
assertEquals("男", genderMale);
// 正常情况,女性身份证号码
String genderFemale = userService.getGender("123456789012345689");
assertEquals("女", genderFemale);
// 无效的身份证号码,长度不为 18
assertThrows(IllegalArgumentException.class, () -> userService.getGender("1234567890123456"));
// 无效的身份证号码,格式不正确
assertThrows(IllegalArgumentException.class, () -> userService.getGender("12345678901234567a"));
}
单测运行结果:
2.7 智能修复
当代码中存在错误时,窗口中的代码文件名称会高亮,名称右侧会提示错误数量。
选中有问题代码片段 —> 右键 —> MarsCode AI —> chat —> 在对话框输入 /fix 或修复选中的代码片段,MarsCode 编程助手将为选中的代码片段进行智能修复。
修复后的代码:
/**
* 给定一个身份证号,计算出该用户的性别
*
* @param identityCard 身份证号
* @return 性别,"男" 或 "女"
* @throws IllegalArgumentException 如果身份证号码为空、长度不为 18 或格式不正确
*/
@Override
public String getGender(String identityCard) {
// 检查身份证号是否为空
if (identityCard == null || identityCard.trim().isEmpty()) {
throw new IllegalArgumentException("身份证号码不能为空");
}
// 去除前后空格
identityCard = identityCard.trim();
// 检查身份证号长度是否为 18 位
if (identityCard.length() != 18) {
throw new IllegalArgumentException("身份证号码长度必须为 18 位");
}
// 校验身份证号码格式
if (!identityCard.matches("\\d{17}[0-9Xx]")) {
throw new IllegalArgumentException("无效的身份证号码格式");
}
// 获取第 17 位字符
char genderChar = identityCard.charAt(16);
// 检查第 17 位是否为数字
if (!Character.isDigit(genderChar)) {
throw new IllegalArgumentException("身份证号码第 17 位必须是数字");
}
// 判断性别
return (genderChar - '0') % 2 == 1 ? "男" : "女";
}
}
修复说明
- 去除注释代码:移除了选中代码中被注释掉的部分,使代码更加简洁。
- 逻辑优化:将检查身份证号是否为空、长度是否为 18 位、格式是否正确以及第 17 位是否为数字的逻辑依次进行处理,提高代码的可读性和可维护性。
- 异常处理:对于不符合要求的身份证号输入,抛出 IllegalArgumentException 异常,增强代码的健壮性。
2.8 智能问答
唤起对话框后,你可以在输入框中输入你的问题,然后点击 发送 按钮或敲击回车键,MarsCode 编程助手将回答你的问题。你可以进行多轮问答,不断补充细节,从而使插件的回答更加准确。
演示下,给下面的代码增加一段身份证号码格式验证并对代码进行优化,最后生成单元测试。
源代码(无身份证号码格式验证):
public String getGender(String identityCard) {
if (identityCard == null || identityCard.length() != 18) {
throw new IllegalArgumentException("无效的身份证号码");
}
return Integer.parseInt(identityCard.substring(16, 17)) % 2 == 1 ? "男" : "女";
}
选中代码片段 —> 右键 —> MarsCode AI —> chat —> 在对话框输入:“给getGender方法增加段身份证号码格式验证并对代码进行优化,最后生成单元测试” —> 回车,这里有3个需求,1 增加身份证号码格式,2 优化代码,3 生成单测,这3个需求都是现在了,现在的AI编程插件都挺强大的。
输入需求:
增加身份证号码格式及进行优化代码如下:
/**
* 给定一个身份证号,计算出该用户的性别
*
* @param identityCard 身份证号
* @return 性别,"男" 或 "女"
* @throws IllegalArgumentException 如果身份证号码为空、长度不为 18 或格式不正确
*/
@Override
public String getGender(String identityCard) {
// 检查身份证号码是否为空
if (identityCard == null || identityCard.trim().isEmpty()) {
throw new IllegalArgumentException("身份证号码不能为空");
}
// 去除前后空格
identityCard = identityCard.trim();
// 检查身份证号码长度是否为 18 位
if (identityCard.length() != 18) {
throw new IllegalArgumentException("身份证号码长度必须为 18 位");
}
// 校验身份证号码格式
if (!identityCard.matches("\\d{17}[0-9Xx]")) {
throw new IllegalArgumentException("无效的身份证号码格式");
}
// 获取第 17 位字符
char genderChar = identityCard.charAt(16);
// 检查第 17 位是否为数字
if (!Character.isDigit(genderChar)) {
throw new IllegalArgumentException("身份证号码第 17 位必须是数字");
}
// 判断性别
return (genderChar - '0') % 2 == 1 ? "男" : "女";
}
重新生成的单测如下:
import org.junit.jupiter.api.Test;
import static org.junit.jupiter.api.Assertions.*;
public class UserServiceImplTest {
private UserServiceImpl userService = new UserServiceImpl();
@Test
public void testGetGender_Male() {
String identityCard = "123456199001011234";
String gender = userService.getGender(identityCard);
assertEquals("男", gender);
}
@Test
public void testGetGender_Female() {
String identityCard = "12345619900101124X";
String gender = userService.getGender(identityCard);
assertEquals("女", gender);
}
@Test
public void testGetGender_NullIdentityCard() {
assertThrows(IllegalArgumentException.class, () -> {
userService.getGender(null);
});
}
@Test
public void testGetGender_EmptyIdentityCard() {
assertThrows(IllegalArgumentException.class, () -> {
userService.getGender("");
});
}
@Test
public void testGetGender_InvalidLength() {
assertThrows(IllegalArgumentException.class, () -> {
userService.getGender("123456");
});
}
@Test
public void testGetGender_InvalidFormat() {
assertThrows(IllegalArgumentException.class, () -> {
userService.getGender("12345619900101123A");
});
}
@Test
public void testGetGender_InvalidSeventeenthDigit() {
assertThrows(IllegalArgumentException.class, () -> {
userService.getGender("1234561990010112X4");
});
}
}
这里女性的身份证号码验证单测的17位为4,居然对了,牛逼。
测试用例说明:
- testGetGender_Male:测试男性身份证号码,验证返回结果是否为 “男”。
- testGetGender_Female:测试女性身份证号码,验证返回结果是否为 “女”。
- testGetGender_NullIdentityCard:测试传入 null 时是否抛出 IllegalArgumentException 异常。
- testGetGender_EmptyIdentityCard:测试传入空字符串时是否抛出 IllegalArgumentException 异常。
- testGetGender_InvalidLength:测试传入长度不为 18 的身份证号码时是否抛出 - IllegalArgumentException 异常。
- testGetGender_InvalidFormat:测试传入格式不正确的身份证号码时是否抛出 IllegalArgumentException 异常。
- testGetGender_InvalidSeventeenthDigit:测试传入第 17 位不是数字的身份证号码时是否抛出 IllegalArgumentException 异常。
通过这些单元测试用例,我们可以确保 getGender 方法在各种情况下都能正常工作。
三、快捷健
功能 | Windows快捷键 | macOS快捷键 |
---|---|---|
采用行内自动补全的代码 | Tab | Tab |
逐字采用行内自动补全的代码 | Ctrl + → | Command + → |
舍弃代码建议 | Esc | Esc |
打开侧边 AI 对话框 | Ctrl + U | Ctrl + U |
展示下一行自动补全的代码 | alt + ] | opt + ] |
展示前一行自动补全的代码 | alt + [ | opt + [ |
四、总结
豆包MarsCode是由字节跳动推出的AI编程助手,集成于主流IDE(如VS Code、JetBrains),提供代码补全、错误修复、注释生成等功能,显著提升开发效率。其核心优势包括:
- 智能补全技术:支持代码补全Pro,可预测用户后续编辑行为(如参数修改),并基于Git提交记录和上下文检索优化推荐准确性。
- 多语言支持:覆盖几十种编程语言,适配传统开发者及跨语言AI编程用户需求。
- 深度集成模型:接入高性能推理模型DeepSeek R1,优化复杂任务处理能力,同时提供代码解释与学习辅助,降低非技术用户门槛。
- 评测体系创新:引入CPO指标(每触发补全的平均字符贡献),平衡推荐质量与用户体感。
用户反馈显示,其刷题辅助功能能深化算法理解,并通过个性化推荐提升学习效率。MarsCode兼顾开发者效率提升与编程教育,成为AI时代“人机协作”的典型工具。
参数资料:
上一篇: 一、IDE集成AI助手豆包MarsCode保姆级教学(安装篇)
往期AI编程助手:
– 欢迎点赞、关注、转发、收藏【技术咖啡馆C】,各大平台同名。
更多推荐
所有评论(0)