AI辅助工具-通义灵码

目录

一、插件安装

方式一下载离线包

[方式二 IDEA 安装插件](#方式二 IDEA 安装插件)

二、在项目中使用

[1. 单元测试](#1. 单元测试)

2.协助编码


"通义灵码"是一款基于阿里云通义代码大模型打造的智能编码助手,它是阿里云出品的一款基于通义大模型的智能编码辅助工具,提供行级/函数级实时续写、自然语言生成代码、单元测试生成、代码注释生成、代码解释、研发智能问答、异常报错排查等能力,并针对阿里云 SDK/OpenAPI 的使用场景调优,助力开发者编码

官网: 通义灵码_你的智能编码助手-阿里云

一、插件安装

方式一下载离线包

下载安装-通义灵码

方式二 IDEA 安装插件

File ->setting 找到 GONGYI Lingma

二、在项目中使用

1. 单元测试

将鼠标方到方法名上就可以看到通义灵码提供的功能:注释代码、生成单元测试、生成注释、优化代码等功能,

个人觉得生成单元测试是最常用也提高工作效率的功能。毕竟手敲单元测试从编写用例到测试执行都会花费大量时间

2.协助编码

选择AI程序员让他帮忙完成一些工作中的编码。举个例子

需求:接口中的字段需要实现数据加密后再调用第三方处理

AI程序员吧对话:

对象属性上增加gwEncryptSwitch注解,EncryptSwitchUtils实现反射对象属性,如果属性有gwEncryptSwitch注解则对属性值加密

经过分析后通义灵码可以自动生成实现代码, 如下图

生成源码如下:

java 复制代码
package com.boss.annotation;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

@Target(ElementType.FIELD)
@Retention(RetentionPolicy.RUNTIME)
public @interface GwEncryptSwitch {

}
java 复制代码
package com.boss.utils;

import com.boss.annotation.GwEncryptSwitch;

import java.lang.reflect.Field;

public class EncryptSwitchUtils {

    public static void encryptFields(Object obj) throws IllegalAccessException {
        if (obj == null) {
            return;
        }

        Class<?> clazz = obj.getClass();
        for (Field field : clazz.getDeclaredFields()) {
            if (field.isAnnotationPresent(GwEncryptSwitch.class)) {
                field.setAccessible(true);
                Object value = field.get(obj);
                if (value != null && value instanceof String) {
                    String encryptedValue = encrypt((String) value);
                    field.set(obj, encryptedValue);
                }
            }
        }
    }

    private static String encrypt(String value) {
        // 这里使用一个简单的加密方法作为示例,实际应用中请使用更安全的加密算法
        StringBuilder encrypted = new StringBuilder();
        for (char c : value.toCharArray()) {
            encrypted.append((char) (c + 1));
        }
        return encrypted.toString();
    }

    public static void main(String[] args) {
        try {
            // 示例对象
            ExampleClass example = new ExampleClass();
            example.setSensitiveData("sensitiveValue");

            System.out.println("Before encryption: " + example.getSensitiveData());
            encryptFields(example);
            System.out.println("After encryption: " + example.getSensitiveData());
        } catch (IllegalAccessException e) {
            e.printStackTrace();
        }
    }
}

class ExampleClass {
    @GwEncryptSwitch
    private String sensitiveData;

    public String getSensitiveData() {
        return sensitiveData;
    }

    public void setSensitiveData(String sensitiveData) {
        this.sensitiveData = sensitiveData;
    }
}

运行执行结果

bash 复制代码
Task :proxy:c-service:EncryptSwitchUtils.main()
Before encryption: sensitiveValue
After encryption: tfotjujwfWbmvf

从生成代码看,基本实现了要求,简单改动后就可以在项目中使用

相关推荐
无限进步_5 分钟前
C++ 继承机制完全解析:从基础原理到菱形继承问题
java·开发语言·数据结构·c++·vscode·后端·算法
sunneo12 分钟前
专栏A-AI原生产品设计-06-AI原生产品的未来展望(专栏A终篇)
人工智能·产品运营·产品经理·ai编程·ai-native
SamDeepThinking17 分钟前
适合中小型企业的出口入口网关微服务
java·后端·架构
不知名的忻18 分钟前
并查集(QuickUnion)
java·数据结构·算法·并查集
likerhood25 分钟前
Java实现选择题选项乱序算法
java·开发语言·算法
我登哥MVP31 分钟前
【SpringMVC笔记】 - 11 - SpringMVC 执行流程
java·spring boot·笔记·spring·tomcat·intellij-idea
AI砖家32 分钟前
解剖 Claude Code:如何搭建一个企业级的私有化 AI 编程助手
前端·人工智能·ai编程
笨蛋不要掉眼泪1 小时前
面试篇-java基础上
java·后端·面试·职场和发展
itzixiao1 小时前
L1-054 福到了(15 分)[java][python]
java·python·算法
Flittly1 小时前
【SpringSecurity新手村系列】(7)基于资源权限码(Authority)的接口权限控制实战
java·spring boot·安全