目录

二IDE集成AI助手豆包MarsCode保姆级教学使用篇

二、IDE集成AI助手豆包MarsCode保姆级教学(使用篇)

各位看官老爷好,如果还没有安装 MarsCode 请查阅前一篇

单击右边的MarsCode AI图标 —> 在对话框输入自然语言 —> 单击发送按钮或按下回车键,豆包 MarsCode 编程助手可以根据你的自然语言描述生成对应的代码片段。 https://i-blog.csdnimg.cn/direct/df26febd126a42bea63b2cd6ad450d76.png 完整的代码如下: 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

选中代码片段 —> 右键 —> MarsCode AI —> 解释代码,代码解释可以帮助程序员快速理解业务逻辑,提高代码阅读效率。 https://i-blog.csdnimg.cn/direct/c8e0965621274107b713e38e316e07c9.png https://i-blog.csdnimg.cn/direct/5754fec41c8b41d7b533c69c6152a1e6.png

选中代码片段 —> 右键 —> MarsCode AI —> chat —> 在对话框输入编辑需求,MarsCode 可以编辑指定代码,包括重构、优化、修改部分逻辑等。你可以通过自然语言描述代码编辑需求。 https://i-blog.csdnimg.cn/direct/23c1a217c02346fa8372700c804db3ce.png https://i-blog.csdnimg.cn/direct/d3bc2f897c6646549633e7d3539f76ea.png 完整的代码如下: public class UnionSetTest { public static void main(String[] args) { List list = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9, 10); List list2 = Arrays.asList(6, 7, 8, 9, 10, 11, 12, 13, 14, 15); // 创建一个 HashSet 来存储并集 Set unionSet = new HashSet<>(list); // 将 list2 中的元素添加到并集中 unionSet.addAll(list2); // 将并集转换为列表 List unionList = new ArrayList<>(unionSet); // 打印并集 System.out.println(“两个列表的并集是: " + unionList); } } 简单粗暴,直接使用set集合排除重复元素,运行结果如下:

两个列表的并集是: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15]

MarsCode 编程助手可以帮助你自动补全后续代码。 场景一 :在对应代码处,敲击回车键换行。MarsCode 编程助手会阅读并理解当前代码,然后自动补全后续代码。 https://i-blog.csdnimg.cn/direct/f6c81b0cd8da42d2b05084c3e9e1d3e7.png 场景二 :在对应位置添加注释,然后敲击回车键换行。豆包 MarsCode 编程助手会阅读并理解代码注释,然后直接生成代码。 https://i-blog.csdnimg.cn/direct/bf8511851ec846a58322838091f4e683.png 将鼠标悬浮至自动补全的代码区域,然后按需进行以下后续操作:

  • 按下 Tab 键,添加自动补全的所有代码。
  • 按下 Shift + Tab,添加自动补全的一行代码,逐行添加可以使用此方法。 最终的代码如下: public class UnionSetTest { public static void main(String[] args) { List list1 = Arrays.asList(1, 2, 3, 4, 5); List list2 = Arrays.asList(1, 2,6, 7, 8, 9); List intersection = new ArrayList<>(list1); intersection.retainAll(list2); System.out.println(“交集:” + intersection); } }

选中代码片段 —> 右键 —> MarsCode AI —> 注释代码,把生成注释后的代码替换掉原代码即可,不爱写注释的程序员有福音了。 https://i-blog.csdnimg.cn/direct/fc1ca8fdaeaa4f3ca782856a58d680b2.png 添加注释后的代码如下: /**

  • 定义要读取的 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();

选中代码片段 —> 右键 —> MarsCode AI —> 生成单测 https://i-blog.csdnimg.cn/direct/09ab9fd1652d4cd0857939830371ef90.png https://i-blog.csdnimg.cn/direct/256212be5a8e4a42af946305eee9ee6e.png 女性身份号码中的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”)); } 单测运行结果: https://i-blog.csdnimg.cn/direct/1a714ed2a8994e55b7a0e04e33a5b9ae.png

当代码中存在错误时,窗口中的代码文件名称会高亮,名称右侧会提示错误数量。 选中有问题代码片段 —> 右键 —> MarsCode AI —> chat —> 在对话框输入 /fix 或修复选中的代码片段,MarsCode 编程助手将为选中的代码片段进行智能修复。 https://i-blog.csdnimg.cn/direct/b0688f0804774846860386fae530bc3d.png https://i-blog.csdnimg.cn/direct/adbe4048acae4fb78b50dc522b235d0a.png 修复后的代码: /**

  • 给定一个身份证号,计算出该用户的性别
  • @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 ? “男” : “女”; } } 修复说明
  1. 去除注释代码:移除了选中代码中被注释掉的部分,使代码更加简洁。
  2. 逻辑优化:将检查身份证号是否为空、长度是否为 18 位、格式是否正确以及第 17 位是否为数字的逻辑依次进行处理,提高代码的可读性和可维护性。
  3. 异常处理:对于不符合要求的身份证号输入,抛出 IllegalArgumentException 异常,增强代码的健壮性。

唤起对话框后,你可以在输入框中输入你的问题,然后点击 发送 按钮或敲击回车键,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编程插件都挺强大的。 输入需求: https://i-blog.csdnimg.cn/direct/f0fc19a1d2544e4ea1f07d9efa1d00a6.png 增加身份证号码格式及进行优化代码如下: /**

  • 给定一个身份证号,计算出该用户的性别
  • @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快捷键
采用行内自动补全的代码TabTab
逐字采用行内自动补全的代码Ctrl + →Command + →
舍弃代码建议EscEsc
打开侧边 AI 对话框Ctrl + UCtrl + U
展示下一行自动补全的代码alt + ]opt + ]
展示前一行自动补全的代码alt + [opt + [

豆包MarsCode是由字节跳动推出的AI编程助手,集成于主流IDE(如VS Code、JetBrains),提供代码补全、错误修复、注释生成等功能,显著提升开发效率。其核心优势包括:

  • 智能补全技术:支持代码补全Pro,可预测用户后续编辑行为(如参数修改),并基于Git提交记录和上下文检索优化推荐准确性。
  • 多语言支持:覆盖几十种编程语言,适配传统开发者及跨语言AI编程用户需求。
  • 深度集成模型:接入高性能推理模型DeepSeek R1,优化复杂任务处理能力,同时提供代码解释与学习辅助,降低非技术用户门槛。
  • 评测体系创新:引入CPO指标(每触发补全的平均字符贡献),平衡推荐质量与用户体感。 用户反馈显示,其刷题辅助功能能深化算法理解,并通过个性化推荐提升学习效率。MarsCode兼顾开发者效率提升与编程教育,成为AI时代“人机协作”的典型工具。 参数资料:
  • 上一篇: 往期AI编程助手:
  • – 欢迎点赞、关注、转发、收藏【技术咖啡馆C】,各大平台同名。