1、前言

大模型到底该以一种什么方式落地,从而嵌入我们的工作当中,助力我们工作效率的提升,其实最好的方式也许就是虚拟助手的方式,就像钢铁侠的"贾维斯"一样,随叫随到能回答问题,能自动的解决一些问题。

【IDEA+通义灵码插件】实现属于你的大模型编程助手_bc

阿里开源出了自己的编程大模型“通义灵码”之后,我们可以通过IDEA插件的方式轻松打造一个自己的编程“贾维斯”。

2、下载安装

直接去插件市场里面搜索TONGYI Lingma就可以搜索出对应插件:

【IDEA+通义灵码插件】实现属于你的大模型编程助手_单元测试_02

安装好之后需要我们用自己的阿里云账号来登录,点击登录会转跳登陆界面,用支付宝或者淘宝扫码即可:

【IDEA+通义灵码插件】实现属于你的大模型编程助手_bc_03

3、解释代码

解释代码,这功能就太好用了。我说几种情况,大家要是中招的,可以把"真实"二字打在评论区里。

情况一:

祖传代码我相信大家目前所在的团队都会是有的,目前博主所在的团队手里就有大量的祖传代码,其中一个后端的controller类有接近一万行代码。这些沉重的“历史包袱”往往是阻碍我们开发的罪魁祸首。真不是写不出来,而是读不懂。

情况二:

作为后端的我们对前端代码其实没有那么熟悉,但有些时候我们是需要去碰一下前端代码做一些小修小改的。这种时候代码读起来真的是连蒙带猜。

情况三:

一些开源组件或框架的底层源码其实写的不一定就是很规范的,源码简直就是一片汪洋大海,很容易在里面迷路。

真实吧?ok,那找个帮手来帮我们一下就行了,交给通义灵码给我们翻译成人话就行了。

选中要翻译的代码,解释代码即可。

【IDEA+通义灵码插件】实现属于你的大模型编程助手_单元测试_04

4、生成单元测试

但凡是对质量有一定要求的团队,在实际的生产中,单元测试是必然逃不过的一环,并且还会要求很高的覆盖率。关于单元测试博主前面有专门的文章讲解,有需要的话可以移步:

关于单元测试,是既重要又繁琐,它需要自己去手动写代码来构建测试用例,但既然是手动的活儿就有几率写的不好,覆盖不全面的情况发生。交给通义灵码,它可以自动帮我们生成单元测试。选中我们想要生成单元测试的方法:

 

【IDEA+通义灵码插件】实现属于你的大模型编程助手_单元测试_05

来看一下它生成的单元测试对不对:

可以看到是很正确的,该用mock的方式注入JDBC,它是注入了的,改声明主启动类从而给出一个IOC环境,它也是正确声明了的。

package com.eryi.service;

import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
import org.mockito.InjectMocks;
import org.mockito.Mock;
import org.mockito.junit.jupiter.MockitoExtension;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.test.context.junit.jupiter.SpringExtension;

import static org.mockito.Mockito.*;
import static org.junit.jupiter.api.Assertions.*;

@ExtendWith(MockitoExtension.class)
@ExtendWith(SpringExtension.class)
public class UserServiceTest {

    @Mock
    private JdbcTemplate jdbcTemplate;

    @InjectMocks
    private UserService userService;

    @BeforeEach
    public void setUp() {
        // 初始化测试环境
    }

    @Test
    public void testTransfer() {
        // 设置预期行为
        when(jdbcTemplate.update(anyString(), anyVararg())).thenReturn(1);

        // 调用待测试的方法
        userService.transfer();

        // 验证方法调用
        verify(jdbcTemplate, times(1)).update("update user set balance = balance - ? where id = ?", 100, 1);
        verify(jdbcTemplate, times(1)).update("update user set balance = balance + ? where id = ?", 100, 2);

        // 验证事务是否回滚
        try {
            userService.transfer();
            fail("Expected an exception to be thrown");
        } catch (RuntimeException e) {
            // 异常应该被抛出
        }
    }
}

5、生成注释

【IDEA+通义灵码插件】实现属于你的大模型编程助手_ide_06

6、智能补全

写代码写一半补全另一半已经很强了是吧?

【IDEA+通义灵码插件】实现属于你的大模型编程助手_java_07

通义灵码还能通过注释直接生成代码,写完注释后回车,然后会智能提示出可补全的内容,按tab键可以采纳智能补全。